良いコ-ドへの道―普通のプログラマのためのステップアップガイド

第1回 良いコードを書くための5つの習慣[後編]

この記事を読むのに必要な時間:およそ 3 分

習慣その4 知る ―― 良い知識を得よう

良い知識を得ることは,技術向上には欠かせない要素の1つです。以下,知識の入手先別に紹介します。

書籍―原典とHow To本の2冊買いがお勧め

正しいことは何なのか,良いコードとはどのようなものなのかを知るうえで,書籍はコストパフォーマンスに優れています。

書籍を選ぶときは良書を入手しましょう。表1のように,各言語において原典と呼ぶにふさわしい良書が存在します。原典には本質的なことが書いてあり,その分野を深く理解するためにも欠かせません。

しかし「良薬口に苦し」です。良書は,難しく見えたり,とっつきにくかったりすることが多々あります。ですので,同時にライトなHow To本も手に入れるのもいいでしょう。ただし,How To本の宿命として,最初はとっつきやすいのですが,その後伸びなくなることが多いのも事実です。

繰り返しますが,良書を入手しましょう。最初は理解できなかったものでも,後で必ず必要になってくるはずです。良書が「結構いい本だな」と思えるようになれば,かなりレベルアップしていると言えるでしょう。Amazonの評価やブログでの評判を見れば,どれが良書なのかはある程度見えてきます。最後は書店で自分の目で確認して,みなさんにとっての「良書」を見つけてください。

リファレンスなどのドキュメント

APIドキュメントなどのリファレンスや,RFC(Request for Comments)やJSR(Java Speci゙cation Request)などの仕様書は,それぞれの仕様における原典です。原典は手元に置いてすぐに確認できるようにしておきましょう。

Webサイト

言語やフレームワーク,Webの最新技術,開発プロセスなど技術情報は常に移り変わっていくので,Webサイトでの継続的な情報収集が欠かせません。

その際は,RSS/フィードリーダーなどを使って効率的に巡回するとよいでしょう。まだ使っていない人は,だまされたと思ってlivedoor Readerあたりを使ってみてください。巡回の効率が数倍になって,より多くの情報を収集できるはずです。

●表1 言語別良書の例

言語書籍名
Java『プログラミング言語Java 第4版』James Gosling/Ken Arnold/David Holmes 著,ピアソンエデュケーション,2007
JavaScript『JavaScript 第5版』⁠通称サイ本)David Flanagan 著,オライリー・ジャパン,2007
Perl『プログラミングPerl 第3版』⁠通称ラクダ本)Larry Wall/Jon Orwant/Tom Christiansen 著,オライリー・ジャパン,2002
C『プログラミング言語C 第2版』⁠通称K&R)B.W. Kernighan/D.M. Ritchie 著,共立出版,1989
Ruby該当なし

 Rubyに関しては該当するものが見つけられませんでした。良い本があったら教えてください。この辺の経緯はhttp://www.rubyist.net/~matz/20080211.html#p01にて。

習慣その5 聞く――アウトプットと人からのフィードバック

上記4つの習慣は1人でできる,いわば「静的」なものでした。最後の「聞く」は,他人を巻き込んだ「動的」な習慣です。⁠聞く」「アウトプット」と対になっています。まず自分のコードや考えを誰かにアウトプットして,フィードバックを得られる場面を作る必要があります。

ここでは,アウトプット&フィードバックのためのいくつかの方法をご紹介します。

コードレビュー

この記事もそうなのですが,出版業界には校正作業という「荒削りな段階の原稿」を他人がチェックをして,より良い記事にしていく,素晴らしいプロセスが用意されています(毎回,その「荒削りな原稿」が締め切りまで,なかなか書けなくて苦しんでいますが(>_<)⁠⁠。校正作業により「自分以外の誰か」に見てもらうことで,原稿はビルドアップされ「良い原稿」へと近づいていきます。

ソースコードも同じです。公式・非公式を問わず,自分の書いたコードを「自分以外の誰か」にコードレビューしてもらうことで,自分では気づかなかったフィードバックがもらえます。コードが良くなるのはもちろんですが,コードレビューを通して「自分」あるいは「レビュアー」が気づきを得ることで成長できるのがレビューの良いところです。

ブログを書く

フィードバックを得る方法の一つとして,ブログに書いてアウトプットするという方法があります。たとえば,自分の書いたコードや考えを載せてみたり,はまったポイントを書いてみたり。

最近では「キーワード」「ソーシャルブックマーク」などで,興味対象が近い人どうしがつながる機会も多くなりました。ちょっとしたことでも発言してみることで,フィードバックや気づきを得ることができます。

コミュニティや勉強会に参加する

技術コミュニティや勉強会,読書会などが,東京,地方を問わず開催されています。これらの場には志の高いエンジニアが多数参加しています。このような場所で仲間を見つけて,直接意見を交換したり,気軽に質問したりするとよいでしょう。その出会いが,あなたのこれからの仕事をより良いものにするはずです。

発表してみる

セミナーで一番成長するのは,間違いなく講師です。社内勉強会を開催するなどして,みんなの前で話すことで,考えがまとまり,より理解を深めることができます。

1000人スピーカープロジェクト注9など,発表を目的にしたプロジェクトも開催され,⁠アウトプットによる発表者の成長」が今後ますます注目されていくでしょう。発表までいかなくても,会社の人に技術の話をしたり教えたりすることも同じような効果やフィードバックがあると思います。

注9)
このカンファレンスは「自分の技術について話したい!」という人のためのカンファレンスです

おわりに

今回はウォーミングアップとして,良いコードを書くために必要な日々の習慣を紹介しました。今回紹介した習慣をすべてやらなければいけないというわけではありません。自分のペースで,必要なものから取り入れていくとよいでしょう。

次回以降は,⁠良いコード」について具体的に掘り下げて話していきます。お楽しみに。

お勧め書籍
『ソースコードリーディングから学ぶJavaの設計と実装』
WINGSプロジェクト佐藤 匡剛 著,山田 祥寛 監修
技術評論社,2006年
Struts/Velocity/Tomcat/JUnit/Spring Frameworkなどのソースコードから,背景にある設計技法などを学ぶことができます。コードの読み方がわからない,どのコードを読んでいいかわからないという人に特にお勧めです。

著者プロフィール

縣俊貴(あがたとしたか)

学生時代にMSXで制限された環境でのプログラミングの楽しさを学ぶ。以来,オープンソースのWiki実装「MobWiki」の開発や受託開発などを経て,現在はプロジェクト管理ツール「Backlog」,ドローツール「Cacoo」など,コラボレーション型のWebサービスの企画と製品開発を行う。また,Webアプリケーションフレームワーク「Cubby」のコミッタを務める。福岡在住。株式会社ヌーラボ所属。

ブログ :http://d.hatena.ne.jp/agt

Twitter:@agata