yamaguchi.txt

開発日記。備忘録代わりだよ。

CERNでの仕事と生活

日本を離れる日、成田空港の国際線ターミナルCPU実験の記事を投稿してからあっという間に7ヶ月が経ちました。

日本人の知り合いが一人もいない状態でジュネーブに単身移住しアゼルバイジャン人とシェアハウスしながらヨーロッパ人しかいないCERNのソフトウェアチームでブルガリア人の上司を持ちC++標準化委員のリーダーと働くとはどういう感じなのかが伝われば幸いです。

ちょっと前ですが類さんに関連する話を収録していただきました。
15. CERNでのソフトウェアエンジニアリング (高橋祐花)

仕事編

f:id:yamaguchi_1024:20181009071808j:plain
ウェブが生まれたところがそこら辺にある。

なんの仕事してるの?

答えるのがめんどくさい時の返答
物理解析に使うROOTというソフトウェアを開発しています!

中くらいの返答
CERNで研究開発のインターンをしています。検出器で検出された大量のデータを解析するためにROOTという物理解析ツールがあります。ROOTは巨大ライブラリ群みたいなものなのですが、そのバックエンドでClang/LLVMを用いたClingというC++インタープリターが動いており、その最適化や結果として発生するメンテナンスやバグフィックスもしています。

ちゃんとした返答
ジュネーブにあるCERNという研究機関でAssociate Memberとして1年間研究開発をしています。最初の半年はCincinnati大学、後の半年はPrinceton大学の所属としてCERNとUS FundingのDIANA-HEPというところからお給料を頂いています。CERNにはLHCという加速器の他にAtlas, CMS, LHCb, Alice等々のexperiment(用語)があり、それらが検出したデータを解析するためにROOTというオープンソースのソフトウェアが使われています。ROOTとはインタラクティブに動くソフトウェアかつライブラリで、Math, Graphics, Machine Learning, Python bindings, Fittingなど解析者に便利な機能が提供されHEP(High Energy Physics)界隈ではスタンダードなツールです。かの有名なHiggs粒子の解析ももちろんROOTを使って行われ、有名なHiggsのグラフもROOTのヒストグラムを使って描かれました。ROOTのバックエンドではClingというC++ Interpreterが動いており、これはInteractive Promptと実行時のReflection Informationを提供するために使われています。ROOTの全ての機能はこのインタプリタを通して提供されるため、インタプリタのパフォーマンスはROOT全体のパフォーマンスに直結します。データセンターでもROOTは動いているのでそれを効率よくすることは費用的にも利があります。私の仕事はC++ Modulesという技術を用いてClingのパフォーマンスを最適化することです。バックで使用されているClang/LLVMやClingといったコンパイラインタプリタは大変な複雑さを持つもので、分かっている人は少ないためその辺りが壊れた際のバグフィックスやユーザー(この場合はインタプリタの関数を使っているROOTの開発者)をサポートしたりもしています。これ以上の技術的な話に興味がある方はぜひROOT Users workshopで発表したスライドを見て下さい。

仕事は"どう?"

楽しいですよ。もちろん仕事なので楽しくないこともありますけど。

技術的にはC++コンパイラインタプリタはとても複雑で面白いしオープンソースに貢献出来ているというのは嬉しいです。C++ ModulesはGoogleAppleが最大の開発者でありユーザーなのでその人たちと隔週でミーティングしているのも産業界と繋がっている気がして悪くないです。一番自分の為になったのはコンパイラという超巨大なソフトウェアも所詮ただの関数の集まりでしか無くて、ASTやシンボルなどというものもそういうクラスがあってインスタンスが関数の中を飛び回っているだけなんだという事を知れた事です。それが分かったことで、コンパイラやOSなどの巨大ソフトウェアに対する恐怖心がほぼ無くなりました。巨大ソフトウェアは何か怖いもので読んでも分からないしプロしか触れないものでは無いのです。本当にただの関数の集まりなので怖がらずに一つ一つ紐解いていけば誰でも分かるという事を学びました。

人間関係は悪くないです。同じ上司を持つウクライナ人の妹みたいなポジションになっており、オフィスでも常に一緒、昼ごはんも常に一緒、カンファレンスに行ったら同じ部屋に泊まりトイレ以外常に一緒にいてついでの旅行も一緒に行くみたいな居心地の良い感じになっています。上司は東欧人男性あるあるのツンデレですがいい人で、チームリーダーは本当にめちゃくちゃ優秀で尊敬しています。他のメンバーに比べて圧倒的に年下かつ非ヨーロッパ人なので多少不審な挙動をしても多めに見られている気がします。先日リーダーにファンディング探してくるからもっと長くいない?と言われたので働いてない訳ではないようです。大学に戻らないといけないので断りました。

給料はシリコンバレーインターンなどと比べると安いですがそれでも高い家賃と食費と旅行に行きまくっているのを差し引いてもまあまあ貯まりそうです。アカデミアあるあるですが、予算が限られているのでポジション争いが激しくほぼ全員が任期付き雇用だし昼ごはんは無料じゃないし、単純に給料や福祉のことだけを考えるなら企業に行った方が良さそうです。CERNで働いている人はソフトウェアチームでも全員が当たり前にPhDを持っていて、学会で成果を発表することが要求されるのでプログラミングだけではなく発表したりジャーナルに出したりしたい!という人には向いていそうです。

海外出張や発表が多いこともユニークな点です。今年は7月にCHEPという学会で発表して9月にROOT Users workshopでまた二つ発表、10月のLLVM dev meetingも行くことになっていて10月末にはジャーナルの締め切りもあります。大きめのもの以外にもインターナルなミーティングで発表などはしょっちゅうあり、スライドを作るのに費やされる時間が多いです。発表が多いことは慣れる点ではとても良いですが、あまりそれに時間を費やしすぎると普段の開発に支障が出るのでバランスが大事です。概ね、開発をする->焦ってスライドを作って練習する->発表する->開発をする->..というサイクルで動いている気がします。

生活編

生活が落ち着くまでに苦労したこと

住むところが見つからない。出国前の1月は毎分CERNマーケットのウェブページをリロードして新着の物件がないか探していました。ここでのアパート探しは気に入った物件がある->大家に自分がどれだけ信頼に値する人間かメールする->大家が選ぶ というプロセスなので何十通も仕事に応募するようなメールを書くことになります。今住んでいるアパートは見た瞬間これだと思い、日本にいるので下見は当然出来ませんが即決しました。今ではかなり気に入っていて、これ以上いいところはなかなか無いんじゃないかなと思います。シェアメイトは博士課程の男性なので心配されたりするのですが逆に男性の方がキッチン使わないしお風呂も短いし部屋に籠っているしで気楽です。

料理が本当に不味い。これには本当に驚愕しました。CERNの食堂で昼ごはん一食1500円くらいするのに不味すぎて喉を通らなかった・・。電子レンジと炊飯器と米を頑張って買って来て餓死を免れました。

最初は結構孤独でした。社交的でも無いのでオフィスに行ってコンパイラと格闘して家に帰って掃除して料理して寝るしかしてませんでした。当時は誰にも弱音を吐いていなかったと思うんですが思い返すといきなり涙が出て来たりしてた覚えがあるので実は辛かったんだと思います。つらいことはすぐ忘れるタイプなのであまり覚えてないですが、当時はこれ私じゃなきゃ心折れてるよなみたいな事を思っていた気がします。よく頑張ったなあ。

平均的な平日

朝遅めに起きて遅めにCERNに行く。メールなどが来たら返信してコードレビューが来ていたらなんとかする。Nightly buildやIncremental buildが故障してないかとかも確認して壊れていたらなんとかする。同じ机に座っている仲のいい同僚が話をしたいムードの時は話をしながら仕事をする。CERNの食堂は普通のランチタイムだと飽和状態になるため先の同僚と11:30くらいに食堂に行き毎回メニューがいかに酷いかを嘆く。パスタは往往にしてマシなのでパスタに10CHF払いさっさとランチを食べエスプレッソを飲んでオフィスに戻る。忙しくなければだいたいそこで話が弾み1時間くらい話をする。午後はまあ普通にプログラミングをしたりミーティング行ったり誰かを説得したりして気付いたら夜になる。家に帰ってもしょうがないからオフィスで仕事をしながら関係ない大学の研究したりロシア語の勉強したり趣味の開発をしたりして結局帰るのは21時だとかなり早いくらいになる。家に帰って家族や彼氏に日本から持って来てもらったレトルトカレーを食べて寝る。
f:id:yamaguchi_1024:20181009075220j:plain
毎日カレーしか食べていない

週2くらいで友達と家で料理を作ったり外に食べに行ったり観劇しに行ったりといったイベントがある。

週末は何してるの?

旅行・カンファレンス・何かのイベントで家の外にいるのが70%くらい、家に引きこもってカタカタしているのが30%くらいです。親や友達や彼氏が結構頻繁に来るので案内したり、学会のついでに旅行をしていたり、バーベキューみたいなイベントがあったり様々です。最初の2ヶ月くらいは友達もいないし一人で旅行していたんですが、最近はずっと誰かと一緒に旅行している気がします。

この7ヶ月で行ったところ
3月 チュニジア(旅行)
5月 バルセロナ(旅行)
6月 ウィーン(旅行)
7月 ブルガリア(CHEPという学会)
7月 日本(CHEPからの一時帰国)
8月 バンクーバー(SIGGRAPHという学会)
8月 オランダ(SIGGRAPHのついでの旅行)
9月 ボスニア・ヘルツェゴビナ(ROOT Users workshop)
9月 クロアチア(ROOT Users workshopのついでの旅行)
9月 ブダペスト(ROOT Users workshopのついでの旅行)
9月 ミラノ(ROOT Users workshopのついでの旅行)
9月 ウクライナ(旅行)

この他にも家族が友人や彼氏が来た時にスイス国内や近隣の国に色々行ったり山に登ったりしているのでちょっと遊びすぎですね。

ジュネーヴぐらし!

ジュネーヴはお世辞にも暮らしやすい場所とは言えません。個人的にはかなり最悪に近いです。(注 私が好きな街はウクライナキエフとブラジルのサンパウロです

物価が高いです。東京の3倍くらいする気がします。アイス買ったり水買ったりするのもお金の無駄だなあと思いながらなので精神的にあまり良くないです。おまけにご飯がとても不味いです。
f:id:yamaguchi_1024:20181009075022j:plain
おととい食べた牡蠣一皿で70CHF(8000円)

ジュネーブには何もないです。劇を見たかったら下北に行って美術館に行きたかったら上野に行って当日思い立って渋谷に映画を見に行ける贅沢にどっぷり浸かった東京生まれ東京育ちには厳しいです。本当に何もない。遠くにモンブランが見えます。

スイス人、特にフランス系スイス人は優しくないです。もちろん例外は存在しますが、スーパーや街で見かける普通の人間の質は高くないです。でもフランス語圏あるあるの人とすれ違ったらBonjourというのは良い文化ですね。

学びと友人

CERNは友達がたくさん出来る場所とは言えません。成熟した研究機関なので、大学のようにクラスでグループワークみたいな事もないし若い人で集まって騒ぐみたいなイベントもあまり無いです。やろうと思えば家とオフィスの往復だけで同僚以外と話さずに終える事もできます。自分から話しかけに行くか自然に仲良くなるのを待つか話しかけてもらうかしないと友達は出来なさそうです。

私は何人か友達が出来ました。二人のウクライナ人は元と現オフィスメイトで、イタリア人は日本語教えて!って出国前にメール来たのがきっかけで、スイス側日本人グループは私がトラムで話しかけたのがきっかけでした。友達とは言えないまでも色々な国籍の知り合いが増えました。広く浅く知り合いになるよりはひとりの人とずっと一緒にいたいタイプなので最後までこんな感じでいたい。

人間として成長した部分もあります。ここに来る前はちょっと引いていた他文化の行動・考え(友達や同僚の集まりに彼女や彼氏を連れて来る、日本では許容されないくらい国粋主義的・差別的な発言をする、子供が何歳になっても結婚せず事実婚カップル、告白という文化がなくセックスしてから付き合う、日曜日は家族で過ごさないといけないという脅迫観念、ありえないほど長い休暇を取る、イスラム教の女性のヒジャブハラール、そもそも一神教を信じている、などなどなどなど・・)を受け入れるとまではいかないものの、直ちに反感を持つことは無くなりました。

自分に馴染みのない意見を持っていたり行動を取る人でもとても優秀で尊敬できてすごく仲良くなれる人はいて、よくよく話を聞くと「なるほどそういう背景があったのか。自分も同じ立場だったらそうするなあ」と納得できる事が多いです。先進国じゃなかったりする環境で育って自分の想像もしなかった世界を見て育った人がいるかもしれない、そういう人とすごく仲良くなれるかもしれない、彼・彼女の価値観をもっと理解したいと思うかもしれない。外国で暮らしているだけでこんなに自分の人生が豊かになるなんてなんてお得なんだろうと思います。



何か質問やコメントがあればどうぞ。

追記

コメントなど色々ありがとうございます。外国で暮らしている人の話って面白いですよね、私も人のブログ読むのは好きです。

外国ぐらし!はアクシデントとハプニングの連続ですが(リュック盗まれそうになったり家のオートロックにパジャマ一枚で弾き出されてフランスの友達の家までヒッチハイクしたり)、日本にいては出会えないような人と会えて思ってもいなかった人生の変化があります(語学やったりウクライナ移住が人生の目標になったり)。まだ5ヶ月頑張るのでよろしくお願いします。

> どうやってそのポジションにたどり着いたのでしょうか?
なんてことはない、去年のGSoCのメンターが今の上司です。

> 全然関係ないがブリュッセルNATO本部の食堂が化学兵器並みにマズいという話を思い出した。https://www.politico.eu/article/nato-under-attack-from-bad-food-cafeteria-aramark-catering/
めっちゃ笑いました。

> シェアハウスについて
最初は若干ビビりましたがなんてことはないです。シェアハウスってしてみると分かるのですがお互い忙しすぎて週一でまともに会話できれば多い方くらいになってしまうので、あまり関わりがありません。家賃が高すぎるので友人たちもみんな男女混合でシェアハウスしてますね。

> 大変そう(イージーモードロサンゼルスから視線)
アメリカにはアメリカなりの大変さがありそう、興味あります。

> エル プサイ コングルゥ
シュタゲ、後半面白くなると聞いていてのですが前半のノリが無理で途中で見るのをやめてしましました。

> CERNのネットワークに侵入してLHCをリモート操作するのは可能でしょうか。それやったら命狙われますか。
コントロールルームは隔離されているのでネットワークに侵入するだけでは厳しいと思います。Europolとかに捕まるかもですね。

> 困ったときの中華料理屋ってわけにもいかない環境なのか
ジュネーブにも中華料理屋はあり比較的安いので日本人とご飯いくかーみたいな時は行ったりします。ヨーロッパではケバブがファーストフードとしての地位を確立しているのでケバブやシャワラマは安くて美味しいご飯です。

> 私の記憶が正しければ、CERNで採用されたC++インタプリタは日本人の後藤さんが作製したもの。だよね?
昔のC++インタプリタCINTは後藤さんが開発したもののようです。ROOT Version 6から後はClingというLLVMバックエンドの新しいインタプリタが使われています。

私が海外で暮らしている・これからも暮らしたいと思っているのは日本が嫌だからではありません。日本(東京しか住んだことないけど)はすごく住みやすい国だしご飯は美味しいし人は優しいし文化的な活動が色々あるし私を20年間育ててくれた訳だしで、文句は全くありません。私が例えばスイスで生まれ育ったら東京に住んでみたいと思うと思います。なぜ海外に住むのが好きかというと、その方が刺激的だし東京に20年間住んでいるので流石に飽きてきたというだけです。

一人称の揺れは気分です。

> 去年のGsoCのメンターがCernでの上司とのことですが、物理学の人じゃない場合そういうコネが無いとやっぱりそのポジションを得るのは厳しいですか?あと大学を休学して仕事しているんでしょうか?
私は物理学の人ではなく、去年LLVMGoogle Summer of Codeに参加した情報系の学生です。CERNで情報系の職を日本人が得たいなら、コネというか実力を認めてくれて引っ張ってくれる人は必要です。なぜなら、ヨーロッパ等のMember Stateと呼ばれる国の学生ならSummer StudentやTechnical StudentといったオフィシャルなCERNのプログラムに応募する資格がありますが、日本はMember Stateではないので他のFundingを探さないといけないからです。もし興味があるならCERN HSF Google Summer of Codeに応募し、頑張ってメンターに実力を認めてもらってその後の機会に繋げるのが良いと思います。大学はそうですね、話すとちょっと長くなるのですがCERNにいる間はお休みしています。