連載
» 2008年09月26日 00時00分 公開

Railsコードリーディング〜scaffoldのその先へ〜(1):コードリーディングを始めよう (1/3)

優れたプログラマはコードを書くのと同じくらい、コードを読みこなせなくてはならない。優れたコードを読むことで、自身のスキルも上達するのだ(編集部)

[倉貫 義人, 松村 章弘,TIS株式会社 技術本部 基盤技術センタ]

 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|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。