Ruby連載の第4回目にあたる今回は、Webスケジューラ作成をちょっとお休みして、Ruby on Rails(以下Rails)ではアプリを本当に簡単に作成できるのかを実験してみましょう。
本連載では、@YMCのVPSサービスを用いて説明を進めていきます。利用するVPSサービスにより細かな違いはありますが、大きな流れは同じですから、ご利用の環境に合わせて読み替えてください。
“とりあえず動く”アプリを作ってみる
プロジェクトの作成
いきなりですが、名前と電話番号、メールアドレスからなる人名録を作ってみましょう。以下のコマンドを実行します。
引数のうち、「-d mysql」はDBエンジンにMySQLを使用するという指定、「addrbook」は作成するプロジェクトの名前です。どんな名前でも構いませんが、わかりやすくて長すぎない名前がいいでしょう。
プロジェクト名と同じaddrbookというディレクトリができますので、カレントにします。lsコマンドで見てみると、たくさんのサブディレクトリが作成されています(図1)。
続いて、以下のコマンドを実行しましょう。
最後の3つの引数は、データ型の定義です。ここでは、名前を格納するname、電話番号を格納するphone、メールアドレスを格納するmailの3つを定義し、いずれも文字列型(string)としました。
次に、このプロジェクトからMySQLデータベースを利用するための設定ファイルを一部変更します。config/database.ymlファイルのdevelopmentセクションを、viなどのエディタでリスト1のように変更してください。赤文字の部分はMySQLのユーザ名とパスワード、青文字の部分は作成するMySQLのデータベース名です。いずれも次の手順で使用します。
MySQLでの準備
ここでいったんRailsから離れて、MySQLで作業します。コマンドラインでの操作方法を紹介しますが、phpMyAdminなどのツールを使ってもかまいません。
まずはMySQLにログインして、このプロジェクト専用のユーザを作成します。
続いて空のデータベースを作成し、今作成したユーザaddruserに権限を与えて、MySQLからログアウトします。
これで、MySQLでの準備作業が終わりました。
MySQLテーブルの作成
次は、実際にデータを格納するMySQLテーブルの作成です。といってもMySQLのクエリを実行する必要は無く、シェルで以下のコマンドを実行するだけです。
これだけでscript/generate scaffold~での指定に基づき、addrbook_developmentデータベースにitemテーブルが作成されます。
ブラウザでのアプリ実行
ここまでの手順で、“とりあえず動く”アプリの開発は終わりました。実際の動作を見てみましょう。
RailsはWEBrickという簡易型のhttpサーバを備えていて、テスト用なら十分な機能を持っています。以下のコマンドでWEBrickを起動します。
図2のように、サーバのステータス画面が表示されます。
なお、「Ctrl-C to shutdown server」と表示されているとおり、Ctrl+Cキーを押せばサーバを終了してシェルに戻ります。
ブラウザからアクセスするにはデフォルト設定の場合、URLにポート番号3000を加えます。たとえば「rails.gihyo.jp」というホスト名なら、「http://rails.gihyo.jp:3000/」という形になります。
アクセスすると、図3のような画面が表示されます。これはいわゆるウェルカム画面で、ルーティングを適宜設定すればアプリの画面をデフォルトで表示できます。
今回は説明の意味も含め、URLでアプリを指定します。「http://rails.gihyo.jp:3000/items/」のように、末尾に「items/」を加えてアクセスしてみてください。図4のような画面が表示されるでしょう。なんとも素っ気無い画面ですが、よく見れば「Name」「Phone」「Mail」と、先ほど定義した項目名が並んでいます。
下の方に「New item」というリンクがありますので、クリックしてみましょう。図5のような入力画面が表示されます。
適当にデータを入れて、「Create」ボタンをクリックします。図6のように、データが正常に登録されたと表示されます。ここで「Edit」をクリックすると再編集画面、「Back」なら一覧画面に変わります。
今回のまとめ
このように、プロジェクト名の指定やデータ型の定義、DBユーザと空のデータベース作成といった作業はありますが、全くコードを書かなくても簡単なアプリを作成できることは、ご理解いただけたでしょうか。
なお、Rubyの知識は不可欠ですが、コードを追加して機能を強化することも可能です。その場合でも、コードを全て自分で記述する場合と比べ、労力がはるかに少なくて済むでしょう。
画面周りも、テンプレートの修正などによりカスタマイズできます。
次回は、日本語表示が可能なWebスケジューラの作成を目指します。
Railsインストールに失敗したら
環境によってはRailsのインストール時にエラーメッセージが表示されたり、RailsからMySQLを利用しようとするとエラーになることがあります。その場合は、以下の点に気を付けてRubyとRailsを再インストールしましょう。
- Rubyインストールの前に開発用パッケージ類をインストールする
たとえばCentOSの場合、Rubyをインストールする前に下記のコマンドを実行しましょう。
続いてRubyをインストールしますが、既にソースからコンパイルしていた場合は、ソースを展開したディレクトリを削除してから展開し直し、再コンパイルします。
- MySQL/Rubyのインストール
MySQLを利用するために、「MySQL/Ruby」のインストールが必要になる場合があります(MySQLとRubyではなく、「MySQL/Ruby」という名称です)。
RailsからMySQLを利用する際にエラーになるようなら、MySQL/Rubyのソースをダウンロードして展開した後、展開したディレクトリに移動してから以下の手順でインストールしましょう。なお、MySQL/RubyをRuby 1.9.1で利用する場合には、最新版のMySQL/Ruby 2.8.1を利用する必要があります(6月現在)。
ダウンロードするバージョンには注意してください。
※ CentOSの場合でmysql-develパッケージが未インストールの場合には、あらかじめyumコマンドなどでインストールしておいてください。