第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)
 優れたプログラマはコードを書くのと同じくらい、読みこなす。優れたコードを読むことで自身のスキルも上達するのだ
  Coding Edgeフォーラムフィード  2.01.00.91

TechTargetジャパン

Coding Edge フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH