第1回 コードリーディングを始めよう
倉貫 義人
松村 章弘
TIS株式会社
技術本部
基盤技術センター
2008/9/26
優れたプログラマはコードを書くのと同じくらい、コードを読みこなせなくてはならない。優れたコードを読むことで、自身のスキルも上達するのだ(編集部)
- - PR -
Ruby on Rails(Rails)には、scaffoldという大変便利な機能が付いています。scaffoldを使えば、アプリケーションの実行に必要なデータベースのスキーマの準備から、データベースにアクセスするコード、画面周りのコードまで、一通り自動生成してくれます。
そのおかげもあって、多くの開発者がscaffoldを使ったRailsのアプリケーションを試しに作ったことでしょう。ただし、scaffoldはあくまで土台であって、その後は、生成されたコードを拡張していく必要があります。
本連載ではコードリーディングという形で、オープンソースとして公開されているRailsアプリケーションのソースコードを題材に使って、その動きや機能がどのように実装されているのかを、ソースコードのレベルで解説します。また、そこの処理の中で使われているRailsの特徴についても紹介していきます。
コードリーディングとは
コードリーディングとは、その言葉のままですが、プログラムのソースコードを読解することです。プログラマにとって、プログラミングこそが本懐ではありますが、実際にプログラムを書いている時間と、すでに書かれたプログラムを読む時間を比べてみると、おそらく多くのプログラマにとっては後者の方が長いのではないでしょうか。
他人の書いたプログラムを読んで解析し、改修を加えていくという作業はもとより、自分自身の書いたプログラムも読み返して改修する機会も多くあるはずです。例えば、保守開発という形で、すでに完成したアプリケーションをメンテナンスしていく作業がありますが、新規に書き加える部分よりも事前に確認するために読むソースコードの方が多いはずです。
新規開発の場合でも実は同じことがいえます。新しい機能を追加していくときなど、影響範囲の確認や既存で使える部品がないか、といった確認をしているはずです。このように、ソースコードを読む機会は非常に多くあります。コードリーディング自体は非常に身近なものなのです。
題材「SKIP」について
本連載では「SKIP」と呼ばれる社内SNSのアプリケーションを題材として扱います。SKIPは、筆者の所属する会社内で運営してきたSNSをオープンソースとして公開したものです。
オープンソースとしての公開は2008年6月に行われましたが、社内では2005年から使われており、約3年に近い運用実績があります。現在公開されているのは、バージョン0.9という状態で、主に開発者向けに公開しています。
SKIPは、企業内での利用を想定したSNSということで、社員が利用するブログやグループ(コミュニティ)などの一般的なSNSの機能に加え、Q&A機能やソーシャルブックマーク、全文検索などが統合されている点が特徴です。
実際に、どういった動きをするのかを確認できるように、SKIPの公式サイトでデモサイトを用意しています。以下のアドレスからアクセスして試してみることができます。
| 関連リンク: | |
| 社内SNS「SKIP」デモサイト http://www.openskip.org/demo/ |
|
SKIPは、前述のとおり2005年に作られたものを拡張する形で作ってきました。そのため、ソースコードの多くはRailsのバージョン1.0で作られたものがほとんどです。もちろん、最新のバージョン2系で動くように対応していますが、基本部分の多くはRails 1.0ベースです。
そのため、今回のコードリーディング中で説明するコードの多くは1.0の記述になっている部分があります。あくまでも実際に動いているアプリケーションのソースコードを読むということに重きを置くということで、ご了承ください。
このように、SKIP自体はまだまだ発展途上で、改善の余地がたくさん残されています。本連載を通じて、より多くの方にSKIPのソースコードを知っていただき、修正パッチを送っていただけるようになったらうれしい限りです。

ソースコードの準備
本連載で扱うソースコードですが、SKIPはSubversionで管理されており、Webインターフェイスも公開しているので、Webブラウザからも見ることができます。
| 関連リンク: | |
| SKIPのリポジトリ http://svn.openskip.org/skip/ |
|
Webブラウザから上記URLにアクセスすると、以下の3つのディレクトリが見られます。
- branches
- tags
- trunk
trunkには最新の開発版ソースコードが管理されています。開発中のソースコードはここに入れられてコミッタ同士がソースコードの共同所有をしています。trunkのソースコードは日々変化していきますので、今回の連載で利用するには不向きです。もし、どんな機能が追加されているのか、といった最新状況に興味がある場合は、trunkで確認するとよいでしょう。
tagsには、アーカイブしてダウンロードできるようにしたソースコードが保管されています。tagsの中は公開中のものと同じものが入っているため、ソースコードが変更されることはありません。バージョン違いで公開しているソースコードの修正は、branchesの中で管理されています。従って、今回の連載で対象とするのは、ソースコードが変更されることのないtagsで管理されているものを使います。
連載中、tags以下のどのソースコードを読むのかは各回の記事中で指定します。第1回は、「1.0rc1」というバージョンを使います。このバージョンは、正式公開に向けたバージョン1.0のリリース候補版の第1弾という意味合いのものになっています。
| 関連リンク: | |
| SKIP
1.0rc1 http://svn.openskip.org/skip/tags/1.0rc1/ |
|
Subversionのクライアントを使って、上記アドレスからチェックアウトしておけば、ソースをローカルPCで読むことができ、コードリーディングには便利です。
1/3 |
| Index | |
| コードリーディングを始めよう | |
| Page1 コードリーディングとは 題材「SKIP」について ソースコードの準備 |
|
| Page2 グループ機能を見てみよう グループの一覧・検索 |
|
| Page3 グループの新規作成 グループの編集・削除 実際の動作と併せてコードを読もう |
|
| Railsコードリーディング 〜scaffoldのその先へ〜 |
| Ruby/Rails関連記事 |
| プログラミングは人生だ まつもと ゆきひろのコーディング天国 ときにプログラミングはスポーツであり、ときにプログラミングは創造である。楽しいプログラミングは人生をより実りあるものにしてくれる |
|
| 生産性を向上させるRuby向け統合開発環境カタログ Ruby on Rails 2.0も強力サポート 生産性が高いと評判のプログラミング言語「Ruby」。統合開発環境を整えることで、さらに効率的なプログラミングが可能になる |
|
| かんたんAjax開発をするためのRailsの基礎知識 Ruby on RailsのRJSでかんたんAjax開発(前編) 実はAjaxアプリケーション開発はあなたが思うよりも簡単です。まずはRuby on Railsの基礎知識から学びましょう |
|
| Praggerとnetpbmで作る画像→AA変換ツール Rubyを使って何か面白いものを作ってみよう! 一般的な画像をアスキーアートに変換するツールを作ってみる。さらに出力にバリエーションを持たせてみよう |
|
| コードリーディングを始めよう Railsコードリーディング〜scaffoldのその先へ〜(1) 優れたプログラマはコードを書くのと同じくらい、読みこなす。優れたコードを読むことで自身のスキルも上達するのだ |
|
TechTargetジャパン
- 実例で学ぶRailsアプリのテスト方法 (2011/12/22)
具体的なWebアプリを例に簡単なテストを使ったリファクタリングについ
て解説する - Railsの人気テストフレームワーク6選! (2011/8/18)
今回からテストを使ったリファクタリングを解説する。まずはRailsで人
気のあるテストフレームワークをいくつか紹介する - ActiveRecordの更新系操作 (2011/6/27)
Railsのモデル層を担当するActiveRecordを使った登録、更新、削除
など、更新系の機能を中心に見ていきます - 実例アプリで学ぶ“Railsらしさ”の基礎 (2011/5/26)
Ruby on Railsで書かれた実例アプリを取り上げて、初心者が陥りがちなコードの書き方を指摘します。より「Railsらしい」コードとは?
|
|

