【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷

第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

Coding Edge フォーラム 新着記事

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

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?