【ハウツー】

祝2歳!! Ruby on Rails 1.1 + MySQL Administratorで日記システムを作ろう

    後藤大地  [2006/07/29]

    Ruby on Rails

    David Heinemeier Hansson氏は6月26日(米国時間)、Ruby on Rrails 1.1を公開、27日にはセキュリティフィックスリリースとして1.1.3、30日にはエラッタリリースとして1.1.4を公開した。RoRはRubyで作成されたフルスタックのWebアプリケーションフレームワーク。スクリプト言語Rubyの特性を活かして開発されたフルスタックフレームワークで、Webアプリケーション開発の負荷を軽減するものとして高い人気を誇る。

    そして7月25日(米国時間)には最初にリリースされた0.5.0から数えて2歳の誕生日をむかえた。ここでいったんRoRを振り返るとともに、ぜひとも実際に試してみてほしいとおもう。簡単な日記システムを作る方法を紹介するので、参考にしていただきたい。

    RoR 1.1 インストール

    RoR 1.1をインストールするには、まずRuby 1.8.4 か1.8.2をインストールする必要がある。1.8.3では動作しないため、すでに1.8.3を使っている場合はバージョンアップする必要がある。

    次にRubyのパッケージマネージャであるRubyGemsをインストールする。RubyGemsを使わずに自力で関連パッケージをインストールするのは面倒。RubyGemsを使った方がいいだろう。パスを設定したら、RubyGemsを使ってプロンプト2.1のようにRoRをインストールする。

    プロンプト2.1 RubyGems 経由で RoR をインストール

    % gem install rails --include-dependencies

    RoRのサイトにはWindows向けのパッケージが用意されているので、Windowsプラットフォームではこれを使うといい。パスを通したあと、プロンプト2.1のようにRoRをインストールする。それ以外のプラットフォームでは、プラットフォームに用意されているパッケージシステムからインストールすると簡単だ。

    インストール後はrails(1)コマンドを実行できることを確認しておいてほしい。引数になにも指定しなければ、オプションの説明が表示されるはずだ。

    データベース

    RoRはデータベースとともに動作させてこそその強みを発揮する。RoRにはデータベースは含まれおらず、各自で用意する必要がある。MySQL、PostgreSQL、SQLite、H2、Apache Derby、Oracleなど、どのデータベースを使ってもいいが、ここでは最初からドライバが提供されているMySQLを使うことを念頭に説明する。データベースのインストールはプラットフォームごとの方法で実施してほしい。

    ここで用意するデータベースは次のとおり。

    表3.1 データベース

    項目 内容
    データベース名 demo_development
    テーブル名 diaries

    表3.2 テーブル

    カラム名 種類
    id INT 主キー, 自動インクリメント
    date DATE
    title VARCHAR(255)
    content TEXT

    表3.3 アクセスするユーザ

    項目 内容
    ユーザ名 testuser
    パスワード testpasswd

    表3.4 デプロイホスト

    項目 内容
    データベース動作ホスト localhost
    RoR動作ホスト localhost

    管理の対象となるテーブル名は複数形にする必要があるほか、テーブルにはかならずINT型のidを用意し、それは主キーおよび自動インクリメントである必要がある、といった制約がある。ここでは日記を保持するテーブルをdiariesとして用意し、日付、タイトル、日記の内容をそれぞれカラムとして用意した。

    データベースにアクセスするユーザや、デプロイするホストも上記のとおりだ。これらが動作するようにデータベースの設定を実施してほしい。MySQLの場合、図3.5や図3.6のようにMySQL Administratorを使うと簡単に設定できる。

    図3.5 MySQL Administrator – データベースおよびテーブルの作成・設定

    図3.6 MySQL Administrator – ユーザアカウントの作成とアクセス許可設定

    リスト3.7 SQLでテーブルを作成する場合の例

    CREATE TABLE `demo_development`.`diaries` (
      `id` INT  NOT NULL AUTO_INCREMENT,
      `date` DATE  NOT NULL DEFAULT '2006/07/28',
      `title` VARCHAR(255)  NOT NULL DEFAULT '',
      `content` TEXT  NOT NULL DEFAULT '',
      PRIMARY KEY(`id`)
    )
    ENGINE = MYISAM;

    CUIコンソールから設定するなら、たとえばリスト3.7のようなクエリを発行する。テーブルへのアクセス制御など、GUI管理アプリケーションが用意されているデータベースなら、それを使うといいだろう。

    RoRで日記システム構築

    データベースの準備が整ったらRoRを実行する。まずはプロンプト4.1のようにして"ベースプラットフォーム"を作成する。demoフォルダが作成され、動作に必要になるファイルとフォルダが作成される。RoRをはじめて使う場合、どういったファイルが作成されているか調べておくと良いだろう。

    プロンプト4.1 RoR ベースプラットフォームを作成

    % rails demo

    次に、接続するデータベースに合わせてdemo/config/database.ymlファイルを編集する。developmentターゲットが用意されているため、たとえばここではリスト4.2のように変更しておく。ここで紹介したものとは別の方法で作成した場合、それに合わせて編集してほしい。

    リスト4.2 demo/config/database.ymlをデータベースに合わせて編集

    development:
      adapter: mysql
      database: demo_development
      username: testuser
      password: testpasswd
      host: localhost

    次に、プロンプト4.3にように用意したテーブルに対してモデルを作成する。ここで、テーブル名がdiariesという複数形であることに対して、指定しているモデル名は単数形であることに注目してほしい。これは議論を呼ぶところでもあるが、慣例的にこのような命名規則が採用されている。この辺りは好みがわかれるところかもしれない。

    プロンプト4.3 テーブルに対応するモデルを作成

    % cd /pathto/demo/
    % ruby script/generate model Diary

    次にコントローラを作成するのだが、一式そろったScaffoldが用意されているので、ここではScaffoldを作成する。

    プロンプト4.4 Scaffoldを作成

    % cd /pathto/demo/
    % ruby script/generate scaffold Diary

    これで準備完了だ。プロンプト4.5のようにしてWebアプリケーションサーバを実行する。RoRにはWEBrickというWebアプリケーションサーバが用意されているため、動作試験にはこれをもちいると簡単で済む。

    プロンプト4.5 Webアプリケーションサーバの起動

    % cd /pathto/demo/
    % ruby script/server

    Hello RoR!

    まずWebブラウザから「http://0.0.0.0:3000/」にアクセスしよう。図5.1の動作画面が表示されるはずだ。上部に青く表示されている「About your application's environment」をクリックすると、動作環境を表示させることができる。

    図5.1 RoR デフォルト画面

    次に「http://0.0.0.0:3000/diaries」にアクセスしよう。データベースへのアクセスが実施され、内容がリストで表示される。図5.2ではまだデータベースが空であるため、一覧にはなにも表示されていない。

    図5.2 diariesテーブルが一覧表示される

    ここで「New diary」リンクをクリックすると図5.3が表示される。用意されているテーブルに応じた入力ページが表示される。データを随時入力していくと、図5.2のページも図5.4のように表示されるようになる。データの再編集や削除も可能だ。

    図5.3 データの入力ページ

    図5.4 diariesテーブルが一覧表示される – データ入力後

    RoRのScaffoldによって自動生成されるWebページはこんなところだ。要するに一番最初のプロトタイプができたことになる。あとはテーブルを増やして扱うデータを増やしたり、自動生成されたHTMLファイルを編集しながら、徐々に目的とするサイトに仕上げていく。最初に簡単に動作するサイトを半自動生成し、あとはそれをベースにして開発をおこなう。プロトタイプ型の開発方法であり、動作が把握しやすいことが特徴だ。

    RoR - 今後の課題は初期導入の容易性か

    RoRは一度動き出してしまえば、かなり簡単だ。半自動生成された基礎をいぢりながら仕上げていく作業は、デベロッパとしても楽しい作業である。

    いっぽう、RoRは最初に動作するものができるまで、前段階に時間がかかる。Rubyの導入、RubyGemの導入、RoRの導入、データベースの導入、規則にそったテーブルの作成、アクセスの設定、などなど。初心者にとってはどれも難しい作業といえるかもしれない。JavaのGrailsがはじめから組み込みデータベースやWebアプリケーション込みで配布されており、すぐに試験できる点から比べると、少しとっつきがたい。

    RoRとは別に、導入の簡易さを図るパッケージも出てきている。プラットフォームによってはすでにそういったパッケージが用意されているものもある。RoRは既に述べたような開発の簡単さにより爆発的な普及をみた。今後RoRがさらに普及するには、最初の導入がどれだけ簡単になるかにも注目されるようになるといえそうだ。

    関連記事

    関連サイト

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン