第4章: 憧れと情熱
大学院
どんな学問でも言えることだとは思いますが、コンピュータ・サイエンスはあまりにも深淵で、学べば学ぶほど、わからないことが増えていきます。大学4年間でやっと基礎的なことが理解できる程度です。コンピュータ・サイエンスを学ぶ人のほとんどは大学卒業後、大学院に進学します。地元から出たいと思った僕は東京の大学院に進学することを決めました。大学院への進学は通常、研究室を決めて、そこに所属することになります。それゆえ、どこの大学院へ行くか以上に、どこの研究室へ行くかが重要です。いろいろな研究室について調べたところ、東京工業大学の松岡聡教授の研究室に行き当たりました。松岡先生はスーパーコンピュータ(スパコン)研究の第一人者であり、東京工業大学が運営するスーパーコンピュータ・TSUBAMEの責任者・設計者でもあります。スパコンといえば、民主党政権下当時の蓮舫議員に「世界一になる理由は何があるんでしょうか?2位じゃダメなんでしょうか?」と言われて、予算を削減されたことで話題になった分野でもあります。ファミコンが進化し、スーパーファミコンになったように、コンピュータを進化させたものがスパコンです。スパコンに興味を持った僕は松岡研究室へ入ることを決めました。大学院も大学と同じように受験が必要ですが、大学受験とは違い、試験は専門科目のみです。専門科目は好きでずっと勉強してきたので、試験は難なく合格しました。
こうして2009年5月、晴れて目黒区大岡山にある東京工業大学大学院情報理工学研究科数理・計算科学専攻という極めて長い名称の専攻の学生となりました。東京に住むのは日本に移住してきたとき以来です。僕は勝海舟のお墓がある大田区の洗足池のすぐそばにアパートを見つけ、そこから僕の大学院生活が始まりました。
【コラム】 スーパーコンピュータとは
スーパーコンピュータはその名が示すとおり、通常のコンピュータよりも遥かに高性能な、つまり「スーパー高性能な」コンピュータのことを指します。スパコンはパーソナルなコンピュータ、パソコンで数百年かかるような計算を数分でこなすことができます。スパコンが利用される分野は多岐にわたりますが、例を挙げると、地震や台風などの気象予測、タンパク質の構造の解析、航空機のシミュレーション、核爆発のシミュレーションなどがあります。スパコンの性能を競うTOP500ランキング1の2016年11月版では1位は中国の「神威・太湖之光」、2位は同じく中国の「天河二号」、3位から5位はアメリカ、6位、7位には日本の富士通の「Oakforest-PACS」と理化学研究所の「京」が並んでいます。この分野での競争は各国、まさに国を挙げてしのぎを削り合っています。1996年11月のランキング2を見ると、トップ3位はすべて日本、トップ10位ではなんと6つのスパコンが日本製でした。現在上位に名を連ねる中国は当時、298位が最上位で、それもIBM製のスパコンでした。1位を目標にせず、2位を狙っていたのではあっという間にランキングの外に追いやられてしまいます。
スパコンの性能は通常FLOPS (フロップス)という単位で測られます。これは単位時間内にどれだけの小数の計算3を何回できるかを示した数値です。1996年当時、世界最速だった航空宇宙技術研究所のNSシステムはピーク時の性能がおよそ370ギガフロップスでした。プレイステーション3の性能は約2テラフロップス4なので、NSシステムの5倍以上の性能です。2016年11月時点での世界最速のスパコン「神威・太湖之光」はピーク時の性能が125ペタフロップスなので、プレイステーションの6万倍、NSシステムの30万倍の性能です。1964年にスーパーコンピュータの父シーモア・クレイが作った世界初のスパコンCDC6600のピーク性能は3メガフロップス5だったので、スーパーコンピュータは登場以来実に41兆倍も性能を上げたことになります。
パソコンにしても、スパコンにしても、その性能は頭脳であるCPU6の性能に大きく依存します。CPUにはクロックと呼ばれる信号に合わせて動きます。例えば僕が初めて買ったパソコンのソーテックPC STATION M250は500メガヘルツというクロック速度でした。これは1秒間に電気信号のオンオフが500万回切り替わることを意味します。一方でファミコンのCPUは2メガヘルツほどで動作していました。クロック速度を上げていくと単純にCPUの性能が向上していきます。これはエンジンの回転数を上げると車のスピードが速くなることによく似ています。クロック数を上げていくほど大量の熱を放出してしまうところも同じです。2000年代半ばまではいかにクロック数を上げていくかが性能向上の鍵でした。しかし、発熱の問題や電気の伝播速度などの物理的な壁が立ちはだかり、4ギガヘルツまで速くなったクロック数をそれ以上上げることが難しくなっていきます。ここから、1つのCPUの性能を上げる代わりに、複数のCPUコアを束ねて1つのCPUと見立てる技術が発展していきます。いわゆるマルチコアCPUと呼ばれる技術です。1つのCPUの性能を上げていく方法を「スケールアップ」といい、複数のCPU、CPUコアをまとめることで性能を上げる方法を「スケールアウト」といいます。今の時代はいかにスケールアウトをするかの勝負です。現在のスパコンは複数のCPUコアにとどまらず、複数のマシンを束ねて使うことで性能向上を果たしています。僕は大学院でスパコンのスケールアウトに関する研究をしていました。
グーグルはまさにスケールアウトに成功し、今日まで成長してきた企業と言えます。創業当時、一般的な企業が高性能なマシンで行っていた計算を、グーグルは多数の安いマシンに置き換えることでコストを抑えながら応用範囲を広げていきました。大学院時代に勉強したことは就職してからも大いに役に立ちました。
憧れ
僕が東京に引っ越してきたのと時を同じくして、学部時代に研究室の先輩だった岩崎さんも上京しました。大学院を卒業した岩崎さんはグーグルの日本法人グーグルジャパンにソフトウェアエンジニアとして就職したのです。普段から親しくしてくれていたのですが、岩崎さんの話を聞いているうちに、次第にグーグルに興味を持つようになりました。ある日、岩崎さんから一通のメールが届きます。
「5月17日(日)にインターン(東京オフィスかな?)の説明会があるから、興味があるならおいで」
2009年5月17日、当時渋谷のセルリアンタワーにあったグーグルジャパンのオフィスには30人ほどの学生が集まっていました。この日は社員からインターンシップの説明とオフィスツアーが行われました。カラフルなオフィスはバランスボールやビリヤード台、『電車でGO!』などのゲーム機が置いてあり、働くところとは思えないような場所でした。「ここで働いてみたい」その思いを胸に、その日は名残を惜しむようにグーグルのオフィスをあとにしました。
インターンシップの応募には履歴書の他に、ファミコン開発のことを書いたエッセイを添付しました。応募を出してから1カ月弱経過し、ほとんど諦めかけていたところに書類選考通過の知らせを受けました。通知を受け、小躍りしましたが、勝負はここからです。このあと数回の面接が待ち受けているのです。グーグルのソフトウェアエンジニアの面接は極めて実務的で、与えられたプログラミングの問題をホワイトボードの上に書いて、解きます。実際にコンピュータを使うことはなく、ホワイトボードだけでプログラムがどう動くべきかを説明しながら問題を解いていきます。与えられた問題は1つの絶対的な正しい解法があるわけではないので、答えの正否以上に、受験者がどのように考えて、その解法に至ったのかが問われます。この面接を4、5回行い、さらに社内の採用委員会で審議して、初めて採用が決まります。それはインターン生の面接でも変わりません。面接では慣れないホワイトボードでのプログラミングに苦労しました。最後の面接では呆気ないほど簡単な問題が出されたので、これならいけると思いました。しかし、いざ問題を解いて、面接官が質問を始めると、僕が考えていなかった問いについてはうまく答えが出ません。簡単な問題だと高をくくっていた僕の顔から少しずつ血の気が引いていきます。面接官にヒントを出されながらなんとか問題を解きますが、面接官は「大丈夫ですよ、そこは引っかかりやすいところですから」と慰めるように言いました。その日、僕はほとんど諦めに近い心境で家路につきました。
インターンシップ
面接から1カ月ほど経ち、インターンに応募したことを忘れてしまおうと自分に言い聞かせていた僕に、運命の知らせが届きます。
2009/07/13
野村様
お世話になっております。
本日インターンの内定を決定いたしました!
近日中に改めて日程等も含めてご相談させていただきます。
取り急ぎご連絡まで。
〈採用担当者名〉
このメールを受け取ったとき、僕は天にも昇る気持ちでした。インターンシップとはいえ、ついに憧れのグーグルで働くことができることになったのです。
グーグルのインターンシップは大学院の夏休み期間を利用して、2~3カ月間の長期間にわたって行われます。この間、正社員と同じようにオフィスに通い、健康保険や年金などの福利厚生も社員と同じように付き、決して少なくない給料も支払われます。数人のインターン生は各自別々のチームに配属され、上司から研究課題が与えられました。僕は岩崎さんのいるグーグルマップチームに配属され、上司は最後の面接官だった若狭さんでした。グーグルマップは世界各地に散らばった開発チームが共同して開発しており、日本にもチームがあります。各国のチームがそれぞれの地域の地図を作っているというわけではなく、機能ごとにチームが分かれているのです。日本のグーグルマップチームで作られる機能も世界中で使われています。また、公用語というわけではないですが、社内のコミュニケーションは英語が基本です。もちろん日本人同士の会話は日本語が基本ですが、会議に一人でも日本語がわからない人がいれば、その会議は英語で行われ、議事録は参加者が日本人しかいない場合でも英語で書かれます。日本人同士のメールも英語でやり取りするのが基本でした。「グローバルな会社とはこういうことか」と思いました。アメリカや中国にいるチームとも頻繁にテレビ会議でやり取りをしました。もちろん、英語に関する苦労話も多く、ある人からはこんなエピソードを聞きました。
その人がアメリカに出張したときに、レストランに行ったそうです。メニューの13番目のピザを注文しようと「ピザ、サーティン」と言いました。しかしウェイターに伝わらず、何度も「サーティン」と繰り返しました。やっとのことでウェイターは理解して、彼はホッとしました。いざ、注文のピザが運ばれてくると、頼んでいたピザとはまったく違う、いわしのピザが運ばれてきたそうです。いわし、つまりSardine(サーディン)のピザだとウェイターは勘違いしたのです。
冗談のようですが、本当にあった話だそうです。
僕がインターンシップ中に担当していた機能についての詳細を語ることはできませんが、「マップ・リデュース」と呼ばれる技術を使ったものでした。「マップ・リデュース」とはグーグルの伝説的なエンジニアのジェフ・ディーンとサンジェイ・ゲマワットが2004年に発表した7数千台から数万台のサーバーを同時に使い、いわゆる「ビッグデータ」を処理するための技術です。ジェフやサンジェイを始め、グーグルにはコンピュータ・サイエンスの教科書に登場するような伝説的な人物が大勢在籍していました。グーグルジャパンにも著名なエンジニアが多数いました。同僚のエンジニアは天才的な人ばかりで、話すたびに新しいことを学ぶことができました。この刺激的な環境に、僕はすっかり虜になっていきました。もともと就職をするか、博士課程に進むか迷っていた僕は、インターンシップが終わる頃にはすっかり進学の気持ちはなくなり、グーグルへの就職を考えるようになっていました。そして、インターンシップが終わった後、さらに数回の面接を経てグーグルの内定をもらいました。周りが苦労している中、幸運にも僕は就職活動をせずに済みました。
学生最後の1年
2010年、僕は大学院2年生になり、学生最後の1年を迎えました。この1年間は勉強も遊びも充実した1年でした。
大学院に入ってからというもの、僕の遊び相手はもっぱら留学生でした。研究室の留学生から他の研究室の留学生に輪が広がり、そのうち他校の留学生とも遊ぶようになりました。もともと苦手だった英語は留学生と遊んでいるうちに次第にうまく話せるようになっていきました。そのおかげで、就職後に英語で困ることはほとんどありませんでした。
勉強の方はというと、僕の研究テーマは「ステンシル計算を対象とした大規模GPUクラスタ向け自動並列化フレームワーク」というものでした。平易な言葉で説明すると、スパコンで効率よく科学計算を行うための研究です。指導担当の丸山助教に助けられながら、100ページほどの修士論文を書き上げ、無事に卒業を迎えました。修士論文発表後、学生最後の記念に一人で3週間ほどヨーロッパを旅することにしました。短い時間の中でロシアはモスクワ、トルコはイスタンブール、ギリシャはアテネ、スペインはバルセロナとマドリード、イタリアはレッジョ・カラブリアを現地にいる友人に案内してもらいました。
3月11日、僕はアテネにいました。その日の観光を終え、1泊20ユーロ(日本円で約2500円)の宿に戻った僕はいつものようにパソコンを開きました。インターネットのニュースをチェックしていると、ヘッドラインはどれも東日本大震災に関することでした。初めはさほど重大なことではないと考えていましたが、ニュースを読み進めるうちに、次第に事態の深刻さを理解していきました。動画サイトで次々に共有される津波に流されていく家屋、車、そして人々の映像に恐怖を感じました。インターネットを通じて家族や友人に電話をし、みんな無事だと知り、僕は胸をなでおろしました。日本への帰国はまだ2週間先だったし、東京は交通機関が麻痺していると知っていたので、僕はそのまま旅を続けることにしました。日本の状況はインターネットで随時チェックしました。公共交通機関が止まってしまったため、徒歩で家に向かう帰宅者や、食料を買うためにコンビニに長蛇の列をなした人たち、大災害の最中にもかかわらず、秩序を保つ日本人の姿に勇気づけられました。
残りの旅程を終え、最後の帰りの飛行機に乗り遅れてしまった僕はイタリア・ミラノのマルペンサ空港のベンチで一夜を明かし、3月31日に日本に帰りました。16年間続いた僕の学生生活はこの日、幕を閉じました。
英語勉強法
第3章のところで書いたように、僕は高校最後の英語テストで100点満点中17点という落第点を取るほど英語が苦手でした。大学に入学したとき受けたTOEICは990点満点中400点に達しませんでした。TOEICはマークシートで選択式なので、鉛筆を転がしても取れるような点数です。その僕が今では日々英語でチームをまとめ、講演もこなせるほど英語が上達したのは大学、大学院時代に実践した勉強法によるところが大きいです。その勉強法は大きく4つのステップに分けられます。
その1、話すこと。英語ができないのに、話すことは矛盾しているようですが、そんなことはありません。いくら英語が苦手でも、カタカナに囲まれた日本で生活していれば、たくさんの英単語を知らないうちに身につけているはずです。大学時代、僕は拙い英語でよく留学生や外国人の先生に話しかけていました。文法はもちろん間違っていたし、語彙力もありませんでした。しかし、話してみると、正しい英語が話せなくても、単語を並べるだけでも伝わるものです。一生懸命話していれば相手も理解しようとしてくれるし、「こんなことが言いたいのかな」と聞いてくれるので、生きた英語が学べます。僕たちが外国人に片言の日本語で話しかけられたときに、なんとか相手のことを理解してあげようとするのとまったく同じです。相手の日本語が下手だと馬鹿にする人はいません。なので、僕は間違った英語でも遠慮せず話すようにしました。大学院になってからは特に、遊び相手がほとんど留学生だったので、日々下手な英語を話すことで少しずつ英語力を鍛えました。
その2、映画を見ること。僕は映画が好きで、いろいろな映画を見ていました。大学院のときは英語の勉強のために同じ映画を繰り返し見ていました。このとき、ポイントは内容をすでに知っている映画を英語音声、英語字幕で見ることです。そして、わからない単語が出てくるたびに一時停止し、その単語をメモしました。内容を知っている映画なので、知らない単語でも意味の見当がつくことが多いのです。初めのうちは一時停止を繰り返すので、映画が進みませんが、根気よく続けていくと、後半の方になるほど一時停止の回数が減っていきます。これを1つの映画で何回も続け、セリフを覚えるくらい繰り返すと、その映画に出てくる言い回しを自分のものにすることができます。好きな映画で、英語であれば何でも構いませんのでやってみてください。
その3、本を読むこと。僕は映画の他にも、英語の小説を読みました。本は時間がかかるので、映画のときとは逆で、知らない単語は読み飛ばしました。わからなくても無理して読み続ければ、ストーリーは何となくわかるものです。このとき、Sidney Sheldon著の「Master of the Game」「The other side of midnight」、John Verdon著「Think of a number」、Louis Sachar著「Holes」、Philip K. Dickの短編をいろいろ読みました。こうして何冊か小説を読み、語彙を増やしました。
その4、文法を学ぶこと。大学院で留学生に揉まれながら、日常的に英語がある程度話せるようになった頃、ふと自分が話している英語の文法がデタラメだと気づきました。これではだめだと思い、英語の文法書を一冊買ってきました。どの文法書だったか今ではもう思い出せませんが、書店に置いてあった薄い、手頃なものを買いました。この文法書は問題集形式になっていたので、繰り返し何回も解きました。日頃から英語を話していたので、学んだことはすぐに実践に活かすことができました。3、4回同じ問題を繰り返し解いた頃にはすっかり自分が正しい英語を話せるようになったと感覚的にわかりました。
もちろん、人それぞれ自分にあった勉強法を実践すべきですが、もし読者が英語を話せるようになりたいと思いつつ、どこから始めたらいいかわからないのであれば、僕の勉強法を参考にしてみてください。その1の「話すこと」は何よりも大事です。今の時代、身の回りに英語を話せる人がいないとしても、インターネットを使えばいくらでも見つけられるはずです。「話したいことがあること」が勉強のモチベーションになります。間違った英語を気にすることはありません、それは恥ずかしいことではなく、それどころか間違えることは上達するための一番の近道なのです。
情熱を追いかけること
大学や大学院のときは、実はあまり先のことは考えていませんでした。就職をどうするのか、進学するのかなど全然決めていませんでした。それよりもただ単純に、その時々に夢中になっていたことに情熱を燃やしていました。論理回路の勉強もそうですし、ファミコンを作ったのも自分の興味が向かうところに身を任せていたのです。大学院に入ったのはコンピュータのことをもっと勉強したい、スーパーコンピュータはすごく面白そうだと思ったからでした。これを勉強すれば就職に有利だとか、将来の給料がいくらになるだとかはまったく考えていませんでした。こうして今でも自分の好きなことを続けられているのは、半分は幸運に恵まれていたからだと思いますが、もう半分はいつも本気で目の前のことに取り組んでいたからだと思います。もしあなたが将来のことで悩んでいるのなら、まず自分の好きなことを見つけ、一生懸命取り組むことが大切だと思います。その頑張りがきっと未来につながる日がやってくると思います。
-
トップ500プロジェクトの公式ホームページ(https://www.top500.org/lists/2016/11)より ↩
-
トップ500プロジェクトの公式ホームページ(https://www.top500.org/list/1996/11)より ↩
-
小数の計算……正確には浮動小数点演算の回数 ↩
-
株式会社ソニー・インタラクティブエンタテインメント公式ホームページ(http://www.jp.playstation.com/info/release/nr_20050517_ps3.html)より ↩
-
エンサイクロペディア ブリタニカの公式ホームページ(https://www.britannica.com/topic/CDC-6600)より ↩
-
頭脳であるCPU……GPUの場合もあり ↩
-
J.Dean, S. Ghemawat (2004) MapReduce: Simplified Data Processing on Large Clusters ↩