ドイツ留学記録

2016年4月から半年間、ドイツ留学した。ミュンヘン工科大学のProf. Gordon Chengの研究室で、Marie Curie奨学金を受け取りながら触覚系のプロジェクトに採用して頂いた。リーディングプログラムから旅費も出る。この待遇は、金銭的にもキャリアパスとしても、とてつもなく良い。リーディング大学院の海外インターン要件3ヶ月も、余裕で達成できる。外国での研究経験もできる。幸運にも、至れりつくせりの支援を受けることができた。

財源はMarie Curie奨学金GCLだった。Marie Curie奨学金は、EUが全世界に募集をかけている奨学金である。このうち、Initial Training Networksという、博士学生向けの教育プログラムを利用していた。これは、奨学金の申請を学生が行うのではなく、指導教員が書類を書くのが特徴である。また、奨励金の金額が非常に多いことで有名である。具体的には、月収38万円(115円/ユーロ)だった。

 

事の発端は、M1の終わり頃に行った、卒論の英語デモだった。これが、その時の聴衆にいたアジア系の人にめっちゃウケた。この人がProf. Gordon Chengその人だったのだが、そのことは当時知らなかった。その後、M2の9月くらいにボスに呼び出されて、僕がProf. Gordon Chengから半年ドイツで研究をしないかと誘われている、と伝えられた。この時点で、留学のための奨励金も、東大のリーディングプログラムとの連携も万全、という状態だった。僕の知らないところで全てが整えられていた。正直、何が起きているのか全くわからなかった。

 

留学前の2015年9月から3ヶ月間、英会話をRare Jobで2日に1回学んでいた。修士論文と被りまくっていたが、英語の訓練は避けてはいけないと思って、修論提出2ヶ月前まで英会話を続けた。この効果はかなり大きく、留学直後の事務作業で、英会話で問題を起こすようなことはなかった。しかし、研究のディスカッションとなると全く話は別だった。深い議論ができなくて困るというだけではなく、色々な国籍の人の英語の「癖」に翻弄された。ロシア人の英語は今も全く聞き取れない。口語的に大量のリエゾンを混ぜてくるメキシコ人も、すみませんがゆっくり喋ってくださいと言わざるを得なかった。

 

研究そのものは、本当に冷や汗ものだった。初めはロボットを使って一発芸+解析をしようとしたのだが、いろいろな理由で無理だったので、6月から路線変更を強いられた。その後、修士論文から興味があった、動力学+制御の論文をひたすら読み漁っていた。古典かつ最高成績を誇る論文が分割統治法を利用していることもあり、競技プログラミングアルゴリズムを勉強することに決めた。しかし、この路線変更がうまく行かない可能性を考えて、ロボットはキープしていた。ロボットをずっと専有していることもあって、本来なら結果が出ていなければならない7月(3ヶ月目)での研究会では、周囲からの目が非常に厳しかった。

この後、2016/8/15くらいに、個人的に実用的で良さそうなアイディアがやっと出た。その後サーベイで先行研究と応用先を洗い出して、2016/8/25から2種類の手法の実装をし始めた。この後、2016/9/2に日本のボスに報告した。そうしたら、違う人からかなりネガティブな意見をもらって、やる気を消失し、ラスト1ヶ月の重要な時間を1週間くらい呆然と過ごしていた。その後、やる気を取り戻して2016/9/10に2つの結果をProf. Gordon Chengに見せたら、気に入ったと言われて、そのうち1つを2016/9/15締切の査読付き国際学会のICRAへ出すように指示された。その後、日本のボスにすぐ投稿許可を投げた。そうしたら、違う人からかなりネガティブな意見をもらって、やる気を消失し、投稿5日前の重要な時間を2日くらい呆然と過ごしていた。その後、やる気を取り戻して、頑張って論文を書いて投稿した。その後1週間くらい頑張ったら、A4にして22ページくらいの研究報告書が書けるくらいの分量の伝えたいことができた。

研究発表は、触覚系プロジェクトが主催するワークショップと最終ミーティングで行った。7月にロンドンのImperial Collegeで行われたEuro Haptics 2016のWorkshopで修士論文の報告をした。9月29日には、スコットランドのGlasgow Universityでドイツで行った研究を発表した。実は9/30に日本に発つつもりだったので、このミーティングには参加できないはずだった。しかし、このミーティングにはとにかく参加したかったので、飛行機の日程変更をしたり急にミーティング参加人数を増やしてもらったり、とにかく色んな人に迷惑をかけて何とか参加できることになった。

 

留学前後での、英語力の上がり方は微妙だった。スピーキングは頭をフル回転させれば言いたいことがほぼ言えるようになった。しかし、やはり脳内で構文解析しないといけないし、英語での議論はどうしても浅くなる。リスニングは「綺麗なQueen's English」以外の英語の癖に少し慣れた。綺麗な英語のリスニング能力もかなり上がった。どちらかというと、大量のメールを処理しなければならないので、Writingのスピードがめちゃくちゃ早くなったと感じている。もしかするとタイピングの速度が上がっているだけかもしれない。

リスニングの方が大変かつ重要だと感じた。聞こえないとコミュニケーションにならず、意味不明な返答をしてしまう。特に、質疑で英語がわからないと本当に困る。どうしても、自分がしゃべる英語から遠い英語は全然聞き取れない(逆に僕はアメリカ英語を喋っているので、MITの研究者とかはものすごく聞き取りやすい)。速いのも無理。自分が使わない慣用表現が入ると、聞き取れても意味不明なので、知らない単語は使っていくしかないなと感じた。今後はリスニングを重視していこうと決意した。

 

宿は2016年3月に、全てAirbnbで確保した。大量のトラブルがあったが、結果的にこれは良い選択だった。最大のメリットは、水道代電気代インターネット代支払いや生活必需品管理その他もろもろの管理を外注できることである。賃貸の相場より1万円程度高いが、完全にこれらのメリットが上回っていると感じた。あと、人と話せる。

 

研究者の間での日本のイメージは悪化してきている。最近のロボットのイニシアティブはアメリカ・韓国・中国に奪われている、という話をロシアのD1学生がしていた。逆にイギリスでは、日本は電気系とゲームとロボットが強い、と思われていてびっくりした。

アジア人っぽいなーと思うとほとんど中国人という感じで、月並みだが危機感を感じた。例えばエラスムス・ムンドゥス奨学金では、中国人が101人/1950人通っているのに対し、日本人は5人/23人しか通っていない、というかそもそも申請していない。さすがに申請率1%はどうなの。

 

ドイツは治安が非常に良く、人も優しかった。いいところ。

ドイツは親日的で、日本人はレアキャラ扱いされた。アニメが好きな人が多いらしく、酒場で3人くらい進撃の巨人の話をされた。始めAttack of Titanって何の話だと思っていた。どうやら、名前をドイツ人の名前から取ってきているのが好感らしい。

ドイツ料理はかなりパワフルで、繊細さのあるものは少ないが、美味しいものは美味しい。肉や調理法でオリジナリティを出す店は少なく、グレービーソースにこだわっているところが多かった。個人的にはHofbraue houseのBearbratelという料理がおすすめ。あとLoewen Braueはソースがおいしく、スペシャリティはおすすめ。

yukicoder 423-426 作問記録

投稿型プログラミングコンテストであるyukicoderで、僕が作った4問でコンテストが開かれた。yukicoderは最近勢いのあるコンテスト基盤で、気軽に皆が問題を投稿できることが特徴である。16世紀のルネサンスのような、問題を出し合って解き合う雰囲気が楽しい。作問時のyukicoderの管理人とテスターとのやりとりは、自分の勉強にもなった。

 

作問の流れは、以下のようになっている。

  • 問題を作る
  • テスト入力を作る
  • 解説を書く
  • テスターと呼ばれる人とやりとりし、問題が正しく作られていることを確認する。問題のより良い解法を一緒に模索する。
  • 実際に問題を出す
  • コンテスト中の質問に答える
  • 最終的な問題の不備を修正する

作問の練習用に、AからCまではやるだけという感じの問題を作った。D問題は自分で作っておきながら難しすぎたので、らてさんと相談しながら{O(\sqrt{n})} 解を実装した。のちに、りあんさんと相談していたら{O(\log n})解が爆誕した。

 

テスターとのやりとりが非常に勉強になった。

C問題では難易度見積もりでテスターと議論があった。僕の難易度見積もりは★2だったのだが、確率問題なので★3とした。一方、テスターのbtkさんは数学的厳密解を出そうとしたために★4と見積もった。このテスター解(確率を行列演算で求める方法)が面白かったのだが、制約がキツいので誤差の問題でこれが通らない。テスター解を通すために、制約を緩和したのだが、それでも通らなかったのでテスター解を想定解とするのを諦めた。

D問題では、想定解は平方分割で{O(\sqrt{n})}解法だったが、テスターのりあんさんがO(\log n)解を出してくれた。これを想定解とするように制約をキツくする調整を行った。さらに、りあんさんはテストケースの追加指示・解説のミス指摘など、多くの貢献をしてくれた。考察が終わってみると実装も比較的軽く、綺麗なコードになるのでいい問題になったと思う。勉強にもなったし、いい問題になったと思うが、問題完成がコンテストの10時間前だった。

 

AがWA祭りになった。コーナーケースの問題を出そうとしていたから、予想していたのだが、さすがに一発ACが10%しかいないのは、問題がダメだったなあと思った。leading zerosの厳密な定義を書いていなかったのもよくなかった。

 

Dはコンテスト中に★4から★5に格上げされた。★4にしたのは、解答を聞いてみればただのsegment treeなのと、この解答を出してくれたテスターが黄色だったから。黄色上位なら解けるだろうと思っていた。甘かった。実際には、btkさんと、LGMレベルのantaとyosupoさんの3人しかコンテスト中に解けなかった。

 

Dの非想定解{O(q^2})が出た。初期値が単位行列であることと、クエリ数が小さいので疎であることを利用した解答だった。やはり作問に自分のアルゴリズム力が重要であることを再確認した。

 

Dのリアクティブの設定が上手く言っていなかった。コンテスト後に管理人に指摘され、リアクティブを問題文から消す羽目になった。クエリ先読みしても大して解法が増えなそうだったので、コンテスト後に問題文から全削除した。

 

D問題の解説が間違っており、数人の時間を無駄にした。数学的にきちんと書いたつもりだったが、一箇所添字が間違っていた。コンテスト後、解説をそのまま忠実に実装したkmjpさんとpekempeyさんがWAを出しまくっていて申し訳なかった。

 

総じて、楽しくやりとりしながら作問できた上、勉強になったので良い経験だった。

CODE FESTIVAL 2016 qual A 参加記録

日本最大のオンサイトプログラミングコンテスト、CODE FESTIVALの予選に参加した。プログラミングコンテストと言うが、実際にはアルゴリズムコンテストという感じ。このコンテストは、大学生・大学院生・未就業者を220人(!)集めて開催される。人数が多いので、予選突破が容易である。むしろ普通の人間がこれ以外でオンサイトに参加するのは困難だと思う。

 

code-festival-2016-quala.contest.atcoder.jp

 

日本人学生100人が通過する中で、社会人を含めた順位で115位だった。通ってるかどうか怪しい。問題は5問で120分。A, B, Cまで13分で解けた。Cはかなりどうでもいいバグを埋め込んで時間を5分近くロスした。Dは提出したが間違いだった。とてもUnion-Find Treeっぽいなあと思いながら、ゴリゴリ場合分けしたので、アルゴリズム力不足だった。残念。

 

火曜日(予選3日後)に、予選通過のメールが届いた。

ブログの目的

今後、イベント参加の記録にブログを使う。最近、オンサイトのプログラミングコンテストハッカソン運営や、博士課程教育リーディングプログラムフォーラム、その他さまざまなイベントに参加する予定がある。今までも、IMPACT学生討論やらロボコンやらロボコンやらロボット系のテレビ出演が多数あった。TOYOTAハッカソンに出たり、Engadget Fesのハッカソンにも出た。ちょうど今、ドイツ留学が終わろうとしている。これらの記録・発信をしないのは、機会と人生の損失に思えるので、このブログを立ち上げる。

 

今まで、自鯖Wordpressを運営してきたが、テーマの編集性が低かった上に管理が絶望的に困難だったので、はてなブログに移行することにした。 

 

勉強記録は、ブログでは情報集約性が低いので、リンクを張るだけに留めたい。僕はプログラミングコンテストの記録、チャレンジの記録、CTFの記録、論文の記録、レストランの記録などをGoogle Driveにつけている。これをブログに書くのが薄まるので、リンクを張るためだけの投稿をする。

 

技術や生活は、Wikiに全部まとめているので、はむこのスキルセットに興味があればこっちを見てね。