美しいコード。

GoogleJapanのblog、Eng Japan Library より「 Beautiful Code 」より。

Chapter Twenty-Three では、 Jeff Dean と Sanjay Ghemawat が Google で日常的に使われている MapReduce の設計と実装について説明しています。 MapReduce は非常に便利なフレームワークで、 Google クラスのスケールで大規模分散処理するうえで欠く ことができません。社内では MapReduce の実装も見ることができるわけですが、コードを読んでみると極めて興味深いところがたくさんあります。 MapReduce 内部には泥臭いコードもありますが、 MapReduce フレームワークで大規模分散システムを効率よく動かす上で大変なあたりを面倒み てくれているので、 MapReduce をつかったプログラムは非常に簡単に大規模なデータを扱うことができるのです。このように MapReduce は大規 模分散処理を扱うための美しい設計がなされています。

プログラマならやはり美しいコードを書けるようになりたいものです。しかし、美しい コードは一朝一夕で書けるようになるにはなりません。誰でも最初の頃はとりあえず動くコードを書くだけで精一杯でしょう。しかし、たくさんコードを書いた り読んだりしていくうちに、いい設計、いいコードとはどういうものか徐々にわかってくるようになります。また、他人に見てもらったりフィードバッ クをもらったりすることで自分のコードをさらによくしていくことができます。 Google 社内では、全てのコードは同僚によるコードレビューを行うことで コードをよりよいものにしています。オープンソースソフトウェアやフリーソフトウェアのコードを読んだり開発に参加することで、同じような経験ができるで しょう。

ソフトウェアエンジニア、特にプログラマをやっていると、もう、お手本というか、きまりきったコーディングスタイル、ってのが出来上がってくる。僕はJava屋さんなわけだけど。propertyを取ってきたり、logを吐き出したり、なんてのはもう何年もコードを使いまわしている。

プロジェクトの序盤のほうはやっぱり「美しいコード」を書きたいという思いが強くて、いろいろ凝ったりするんだけど、終盤になってデスマーチな様相を呈してくるとだんだん力技になってくる。そして、デスマなプロジェクトにヘルプで入ったりすると状況はもっと最悪だ。

有名なショッピングサイトや、企業サイトをご覧のみなさん、どうか、ブラウザの上で右クリックをして「ソースを表示」を選択してみて欲しい。たぶん、プログラマの苦悩が少しは見えるはずだから…

関連記事:

Pocket

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です