Google DevFest 2010 その3

3/11にGoogle DevFest 2010に参加してきました。
公式ブログにも書かれていましたが、準備作業や当日の運営のほとんどをGoogleの社員が行っていたそうでとても手作り感のあるイベントだったと思います。
Google Japan Blog: 皆で作り上げた DevFest 2010 Japan
セッションについては色々ありましたがTaskQueueを使ったGAEでの非同期処理が一番面白かったかなと思います。普段、マルチスレッドがらみのコーディングをすることが多いのでなかなか楽しめました。Java読書会で以前に読んだJava並行処理プログラミングを読んだことがあれば大体分かる内容だったのではないでしょうか。memcacheの有効期間だけがちょっと気になりましたけど。
DevQuizの方は最後に答えの解説がありました。一番解きがいのあったパッチワークに関してはUnion-Findアルゴリズムを使うと簡単に解けるというふうに説明されていました。初めて聞いたものなのでちょっと調べてみたいと思います。この問題は多くの人がすべてのデータをメモリに読み込んでから再帰処理をしていたようですが、私の最終的な実装はデータを読みながら結合箇所を見つけていくというものでした。なぜこのような実装をしたかというと、速さの追求と巨大なファイルにもある程度耐えうるようにしたかったからです。読みながら処理しているので最大結合になりえない部分はどんどん捨てていくことができます。気が向いたらコードを公開するかも知れません。あと高速化のために途中から自分でリンクリスト構造を作って使うようにしました。コレクションライブラリを使うとライブラリの中で色々な処理が行われるので、そのオーバヘッドを減らすためです。今回、実装してみてLinuxカーネル内でリンクリストが多用される理由がちょっと分かった気がします。
印象に残った発表としてライトニングトークGoogle開発者の一日というものがありました。そこで言っていたのが「みんながやらないことは必要のないこと、必要なことなら誰かがボランティアでやる」というようなことでした(文言はちょっと違うかも知れません)。なんてすばらしい環境だろうと思いました。今の自分の環境と比較すると悲しくもなります。Googleにいるようなエンジニアと一緒に仕事をする機会があったらどんなに楽しいだろうと本気で思いました。さすがです。