大規模データと格闘するサマーインターンのすすめ

id:naoya さんの日記で「大規模サービス技術入門」

を知ったので読んでみる。

はてなのサマーインターン向けというだけあり、分かりやすい。こんなに自然言語処理機械学習のいい入門書はないだろう。それでいて、大規模にするとなんでアルゴリズムやデータ構造といった計算機科学の基礎知識が必要になってくるのか、という点が押さえてあって、とてもよい。

また、単に理論が書いてあるだけではなく、疑似コードや実際に動作する Perl のコードも書かれているし、「以前はてなはこんな運用をしていて、行き当たりばったりで破綻したので教訓を学んでこうしている」という話が随所にあって参考になる。ちなみに、自分も以前 ChaIME を公開していたとき、辞書ファイルを一度キャッシュに入れないと遅かったので、起動時に辞書ファイルを cat > /dev/null していた。たぶん大規模データを使う人は多かれ少なかれいろんな似たようなことをやっているのであろう。

こういう(他ではあまり読めないような)話を、それなりの規模の企業の一線で活躍されている方々が一般向けに書くというのは画期的である。本当に自分で大規模データを使わないといけない人は一握りだと思うが、潜在的にこういう話も分かるエンジニアの数を増やしておくことはとても重要。

「妻(曾野綾子)は二次方程式の解き方を人生で使ったことはないと言っている」ので数学は不要、という三浦朱門(知らない人のために補足しておくと、彼は有名な作家で、当時教育課程審議会長であり、後の文化庁長官)の発言で中学校の教育課程から「二次方程式の解の公式」が必修でなくなったのだが、情報系でも油断していると「アルゴリズム知っていても自分のプログラミング生活で困ったことはない」から大学に行って(いや、大学は必須ではないが)体系的にアルゴリズムやデータ構造を学ぶ必要はない、なんてことになりかねない。ちゃんと必要性を理解して(実際必要だし)教え続けないと、気がついたら勤勉なんて言われていた日本人はどこにもいなくなった、というのも現実的にありうると思う。

はてさて、上記の本は理論と実践のバランスの取れた良書だが、お話的に合わせて読みたいのは

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

で、こちらは Google の中でどういう技術が使われているか、という話。ここからさらに最近は負荷が上がったらデータセンターごと電源を切ったりとか、にわかには信じがたいことをいろいろしているようなのだが、大規模データ処理というのは実際やってみないと信じられないことがいろいろある。

はてなのサマーインターンシップ (7月12日〆切)や PFI のサマーインターンシップ (7月10日〆切)もあり、こういう大規模データを使った開発を体験してみたい学生さんたちはぜひ挑戦してみるとよろしいかと。PFI のことも何回か前掲書で言及されているし、1-2ヶ月開発現場でみっちり仕事するのはいい経験になると思う。応募して落ちる人もいるのだろうが、落ちるのも経験のうちであり、これまで自分が飛べるハードルしか飛んでこなかった人は、ここで挑戦してみるとよろしいかと。(自分がなにを学んでどう成長できるか、したいかも重要だが、自分をインターンとして受け入れると先方にどういうメリットがあるのか、ということも意識して応募書類を書いてみるといいと思う)

ちなみに@tettsyun くんが北京のバイドゥでのインターンシップ生活を毎日更新していておもしろい。@mhagiwara さんによると、バイドゥ北京オフィスは今年 Stanford からも数名(4名?)インターンが来ているらしいので、国際色豊かなおもしろい環境のはず。Stanford の学生と NAIST の学生が肩を並べるというのはおもしろい。やっぱり NAIST は日本で Stanford 的な位置になれると思う (笑) 今日は NAIST の入試2日目だが、みなさんも入学したらがんがん海外に行ってがんばってください :-)