「はてなサマーインターン2009」レポート

#2 はてなでの開発の第一歩とは?……インターン第一週

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

3日め~5日めの講義メモ

続く,3日め~5日めは,3つの基礎知識「ORマッパ」⁠MVC」⁠UI」⁠はてなで開発をしていくために,まずは欠かせない知識である。

3日め:「ORマッパによるデータベース操作」(DBIx::MoCo)

3日めの講義は,id:onishi氏による「ORマッパによるデータベース操作」⁠2日めのオブジェクト指向プログラミングに続き,3日めはRDBMSをオブジェクトで扱う機構ORマッパ(Object-Relational Mapper)が題材。2日めのオブジェクト指向プログラミングは全員経験があったが,RDBMS,ORマッパについては全員が経験があるという状態ではないようだ。

写真2 id:onishi氏による「ORマッパによるデータベース操作」⁠DBIx::MoCo)

写真2 id:onishi氏による「ORマッパによるデータベース操作」(DBIx::MoCo)

ORマッパ,RDBMSの基礎知識に続いて,はてな内製のORマッピングツールDBIx::MoCo(もこ)を使い,CLIのブックマークアプリbookmark.plを作るところまでを徹底解説。

  • ORマッパとは
  • 何を作るか。ORマッパを使う/使わないの指針
  • はてなのORマッピングツール,DBIx::MoCoの機能
  • bookmark.plを作ってみよう

PerlのORマッパとしては,Class::DBI,Data::ObjectDriver,DBIx::Class,Data::Modelなどが挙げれた。今回の題材,DBIx::MoCoの特徴は以下のとおり。

  • シンプルな,透過的キャッシング機構
  • 結果セットを,Ruby-likeなリスト操作で処理できる
  • プラガブルな自動型変換機構

ちなみに,3日め,4日めの解説で用いられた例は,ブックマークアプリ。採用した意図として,次の2点が挙げられていた。

  • はてなのサービスを単純化してイメージでき,はてなで実際に動いているサービスの姿を通して学ぶことができるから
  • とくに3日めに関しては,テーブルのリレーション,has_one,has_manyの関係がシンプルに理解できるアプリケーションの例として扱いやすい

コンパクトにまとまった例により,参加者はしくみの理解に集中できたようだ。

写真3 entry(ブックマークの対象となる記事関連のデータを格納)⁠bookmark,userテーブルの関係

写真3 entry(ブックマークの対象となる記事関連のデータを格納),bookmark,userテーブルの関係

4日めの講義メモ

4日めの講義は,id:nanolia氏よる「MVCによるWebアプリケーション開発」⁠MVC(Model-View-Controller)の考え方,はてなの内製フレームワークRidge(リッジ)の使い方,そしてRidgeを用いながら,昨日(3日め)の講義で取り上げたbookmark.pl(CLIアプリ)をWebアプリケーションBookmark.pmにするところまでを解説する。

写真4 CLIアプリケーションbookmark.plからWebアプリケーションBookmark.pmへ

写真4 CLIアプリケーションbookmark.plからWebアプリケーションBookmark.pmへ

はてなのWebアプリケーションフレームワークRidgeは,はてなブックマークをはじめ,はてなの実サービスで使用されている。RidgeでWebアプリケーションを作っていくときには,次のようにMVCを分けて作っていく。

  • Model:DBIx::MoCo(3日め講義で解説済みのため省略)
  • View:Template(HTMLで出力する場合に使うCPANモジュール)やJSON::Syck,...
  • Controller:Ridge(本日のメイン)

Ridgeを中心に,Templateの最小限の使い方も触れながら,MVCを完成させて一つのWebアプリケーションを作れるようになるまでを順を追って解説された。

写真5 id:nanolia氏による「MVCによるWebアプリケーション開発」⁠Ridge)

写真5 id:nanolia氏による「MVCによるWebアプリケーション開発」(Ridge)