HOKYPOKY.BLOG

Railsで初めてアプリケーションを作ってみた。

社内プロジェクトですが、サーバーサイドの知識ほとんどないボクがRuby on Railsを使ってWEBアプリケーションを構築してみた。

内容として一日の行動記録。要は日報アプリケーション。
一日のタスクとそれに費やした時間を記録。
さらに個々のdeliciousアカウントをAPIを使って読み取り、共有したいブックマークを会社のdeliciousにRepostすることができるブックマーク共有機能。
一日の感想コメントと、メッセージチェーン機能(一つ前に日報を書いた人の言葉がみれる。次の日報を送る人に一言コメントが送れる)があり、
それらを送信すると社内の日報としてメールが送信され、アーカイブを閲覧、ダウンロードできるといったものだ。

Ruby on Railsを選んだ理由

ボクは今までHTML, CSS, JavaScriptを中心にやってきたんだけど、これらはどうにも限界があった。
つまりボクの考えるWEBというものとは実は無縁の技術だったのだ。それはFlashも同じ。

端的にボクの見ているWEBにサーバーサイドがないとどれだけつまらないものになるかということだ。
mixiやYouTube、Twitter、はてな、このブログもそう。Google検索ももちろんサーバーサイドが提供してくれた。

そこでサーバーサイドをやろうと思う訳だが、JavaScriptしかプログラムのわからないボクにとってPHPはとても壁が高かった。
それこそちょこっとした1アクションくらいならPHPでなんとかする事はできるけどアプリケーションを構築するとなると、ホントお手上げ状態。

そこでフレームワークという言葉に出会う。そしてそれがRuby On Railsだったというわけ。

Ruby on Railsの壁

まずRuby on Railsの壁としてRubyという言語がある。
ドキュメントが少ない。さらに動くサーバーがない。
Rubyが動けばいいかというとそういうわけではなく、このフレームワークは敷居が高い。

ドキュメントに関しては、まずはてブのrailsタグを購読することにしたのと、本を数冊購入した。

中でも最初のRails of Ruby on Railsは良書だった。とにかくRailsに触れる・作るということに徹底していて、よくわからないけどRailsすごい!って気分にしてくれる。
ごちゃごちゃした説明はほとんど省いていて、写真や図をふんだんに使いとにかく楽しい。
初めてのフレームワークということもあり、それらの概要を感覚的につかむのにはとても良かった。それこそ一日でそのままソースを書いていけばブログができてしまった。
Rails体験ツアーって感じです。

次は「たのしい Ruby」「Rubyレシピブック」「Railsレシピブック」シリーズ。ボクのRails三原色。
楽しいRubyはRubyの文法などを知る事ができた。要はオブジェクト指向のドットシンタックスだということでJavaScriptできると似ている部分も多くためになった。
さらにRailsレシピブックはぼろぼろになるまで読んだ。ドッグイヤーしまくり。

サーバーは最終的にPassengerを使う事にした。理由は簡単だからだ。
mod_railsと言われるだけあって、PassengerをサーバーにインストールするだけでRailsの環境を構築できる。
本格的に構築するとなるとlighttpdを使った方がいいみたいですね。でもここに時間をかけるのだけは避けたかった。

社内プロジェクトなのでMac G4にPassengerを入れて運用することにした。
また、このHOKYPOKY.は海外のDreamHostを借りた。
国内でサービスとして運用したい場合はラピッドサイトのVPSなどを借りるのが良さそうだった。

SQLite

Railsとは少し話がそれてしまうんだけれども、SQLiteというデータベースにも惚れた。
それこそ大規模になってきたらいろんな知識が必要になってくるとは思うのだけれど、SQLiteの手軽さといったらない。
DBを作成しなくていいとか、ファイルをコピーすればそのままデータもコピーされるとかほんとにすばらしい。
とにかくポータブルであることと、DBがどうなっているかみるのに凄く役にたった。
そしてFirefoxのアドオン、SQLite Managerにはお世話になりました。

流行

流行というものの力にもお世話になった。要はRuby on Railsはホットなのだ。
ブックマークされているサイトたちのみんなのテンションやモチベーションが高く、新しい事への挑戦、困難な事への共有、またニュースにも話題が多いのでとにかく飽きない。
まだ正式リリースはされていないが、Rails3.0のMerbとの統合についてなどは近年のフレームワークにおいてとても興味深いニュースとなって、フレームワークを取り巻く環境全てがホットだった。

感謝

HTMLコーダーである自分がWEBアプリケーションを構築することができたのには、もちろん自分の中で興味があり挑戦していくこともあったのだが、一番は様々な人のおかげ。
特にプロジェクトとして認めてくれたマネージャーには感謝です。
また、Feedに登場してきた全てのRails関係者の皆さんにも多大な感謝。

まだまだこれから覚えていかないと行けない事も多いし、これからは自分がそういった歯車の一部になっていけるよう精進したいと思いました。

こまかい話

は、これから続きとして書けたらいいなと思います。

Ruby on Rails の環境構築メモ

  • OS: Mac OS X Leopard (10.5)
  • MacBook (intel)
  • Terminalはデフォルト

Xcode3.0をインストール

Macを買うと付いてくるディスクよりXcode3.0をインストールする。
これをいれることでMacにDevelop機能がいろいろと追加されて便利。
多少ディスクスペースはつかうものの、入れていて損はない。

CDなくした場合はAppleのサイトよりDLできたはず。

Terminal.appをつかってRails環境をインストール

Terminalをつかっていろいろインストールします。
MacPortとRubyGemという二つのインストーラを使います。
これらは登録された名前のものを呼び出すとそれをインストールしてくれるエージェントみたいなものです。
二つ使うのは野菜は八百屋、魚は魚屋みたいな感じ。MacPortはスーパー。RubyGemはRuby専門店ってとこでしょうか。

なのでMacPortはMacに関するもの。RubyGemはrubyに関するものと考えていいでしょう。
まずはMacPortをインストールしなくてはいけません (もう頭がめちゃくちゃw)

  1. http://www.macports.org/よりmacportをDL&インストール
  2. ~/.bash_profile(ない場合は作成)に以下を追加し、portコマンドにパスを通す
    export PATH=~/bin:/opt/local/bin:/opt/local/sbin/:$PATH

    ~/.bash_profileを開くにはTerminalにて

    $ cd ~/
    $ open .bash_profile

    ファイルがなかったら

    $ pico .bash_profile

    コピペして”Ctrl+O(オー)”、そのままEnterで保存。”Ctrl+X”で終了。

  3. ターミナルにて以下を入力し、MacPortを最新情報にアップデート
    $ sudo port selfupdate

     

  4. MacPortを使ってrubygemをインストール (時間かかる)
    $ sudo port install rb-rubygems
  5. RubyGemを使ってrailsをインストール
    $ sudo gem install rails
  6. RubyGemを使ってsqlite3をインストール
    $ sudo gem install sqlite3-ruby
  7. MacPortを使ってImageMagickをインストール (時間かかる、30分くらいかかるかも)
    $ sudo port install ImageMagick
  8. RubyGemを使ってRMagickをインストール
    $ sudo gem install rmagick

サーバー編

ApacheのモジュールとしてRailsを構築
Phusion Passenger(http://www.modrails.com/)を使います。

以下http://www.modrails.com/install.htmlより抜粋

 

  1. RubyGemよりpassengerをインストール
    $ sudo gem install passenger
    $ sudo passenger-install-apache2-module
  2. passenger-install-apache2-moduleを実行するといろいろきかれます。
    Press Enter to continue, or Ctrl-C to abort.
    > Enter 
    (省略)
    
    Press Enter to continue. 
    [Enterを押す前に]
    1. 上の太字をコピー(LoadModule〜という白い3行のやつ)
    2. Finderにて"Shift+Cmd+G"して/etc/apache2と入力httpd.confを開く
    3. LoadModuleといっぱい書かれている下に(1)をペースト。
    4. Terminalに戻る
    > Enter 

    最後までいったら”Ctrl+D”でターミナル終了 

  3.  VirtualHostを設定します。さっきのhttpd.confに下記を設定 [あくまで設置例です] 
    NameVirtualHost *:80ServerName localhost
    DocumentRoot /Users/ユーザー名/Sites/public_html
    
    ServerName アプリ名(半角英数)
    DocumentRoot /Users/ユーザー名/Sites/アプリ名/public

    Terminalにて

    $ cd /etc
    $ sudo pico hosts

    127.0.0.1 localhostの行の後ろに”(半角スペース)アプリ名”を入れます。そのまま保存

    これはlocalhostとURLバーに入れた場合は普通にpubli_html内サーバールートとして動きます。
    そしてアプリ名をURLバーに入れるとrailsフォルダ内がrailsアプリとして動きます。

    127.0.0.1というIPが「自分」という暗黙のルールになっていて、
    /etc/hostsというファイルにてlocalhostはこのIPに予約されていて、「アプリ名」もこのIPに予約。
    (ちなみにここにgoogle.comといれるとgoogleではなく自分のpublic_htmlが表示される。)

  4. apacheを再起動/起動
    $ sudo apachectl -t> Syntax OKと表示されたら
    $ sudo apachectl restart

railsでhello world

VirtualHostにてSites/アプリ名/publicとしたので、今回はhelloWorldというアプリを作成しましょう。
httpd.confに以下を追加。

ServerName helloWorld
DocumentRoot /Users/ユーザー名/Sites/helloWorld/public

では最速で作っていきます。

Terminalにて

$ cd ~/Sites	//サイトフォルダに移動
$ rails helloWorld	//helloWorldアプリ作成
$ cd helloWorld	//helloWorldに移動
$ ruby script/generate contoller HelloWorld	//HelloWorldコントローラー作成

Finderにてサイトフォルダ内にhelloWorldができていると思います。
また、helloWorld内にapp/controllers/hello_world_controller.rbができているのでこれを編集します。

class HelloWorldController < ApplicationController
def index
@message = "Hello World"
end
end

以上に内容を差し替える。
これはHelloWorldの挙動を指定するところで、
def indexは単純にhello_worldでアクセスされたときに表示する挙動
@message = “Hello World”はView(後述)でmessageを呼ぶとHello Worldとして表示されます。

次にViewを作成します。
アプリ/app/viewsにhello_worldフォルダ内にindex.rhtmlを作成します。

とだけ入力して保存。

見てみましょう。

Terminalにて

$ cd /etc
$ sudo pico hosts
127.0.0.1 localhost helloWorldと編集
$ sudo apachectl restart

http://helloWorld/hello_worldにアクセスする。

これでrailsが動いているところまで確認できました。

Ruby on Railsでブログつくってみた。

作ってみたもの
BLOG v.1 – NIJITARO.labs

本のコピーだけだったけど、Railsの概要を掴むのが大変だった。
大部わかったけど、細かいところはまだまだだな。
ただコピーだけだとつまらないのでIDEを使わずTextmate + Terminalのみで作成。

機能一覧

  • ログイン機能
  • 記事の投稿/編集/削除
  • コメント
  • トラックバック受信(送信はいれてない)
  • タグクラウド
  • Feed (atom)

展望

  • 本の続きやる
  • 次のアプリの構想を練る
  • 一つ一つのメソッドやフレームワークについての理解を深める

Phusion Passenger使って設置してます。
それにしてもPhusion Passengerすごいね。複数のRailsアプリとかも対応してるし、設定には最初色々しらないことあったけど調べれば調べるほどすごい。
あと、テストでつくったんで、今後増やしていったアプリが重くなるようだったらOFFにする可能性は高いです。
って書いてて気になったんで調べてみた。
この記事によれば、デフォルト120秒でRails終了するらしく、複数の小さいアプリを作ってテストする場合なんかにとても便利です。
おぉ!最高!まさにボクの望んだ環境。ルートをいちいち作らなくていいしね。
それでもちょっと負荷かかるようだったらOFFにするかな。

そしてMacのポテンシャルにビビった。
テストサーバーは、Mac mini G4で動いてます。
なにげに自宅サーバーとかやってて良かった。

Rails楽しくなってきたよ。
ちなみに読んでる本はRAILS OF RUBY ON RAILS。他にも実は色々買ったけどこれが一番わかりやすいというかとっつきやすい。
技術書としては異彩を放つ方向性の本。ちょっと話変わるけど、こういう技術書は今後増えてくると思う。すげーぜ、これ。

Ruby on Rails 2.1でActiveScaffold

とりあえずRailsで何ができるかを体験したく
Rails of Ruby on Rails ~Case of LOCUSANDWONDERS.COM~ という本を読みつつ少しずつ勉強はじめているのだけど、実はRails2.0から2.1になってるらしくActiveScaffoldが2.1ではうまく動かない。

「とりあえずRailsで何ができるかを体験したく」というレベルなので、本通りに行かないと完全くじけちゃいますよね。

2.1に対応するのを待っていたら実は対応していた
というのもsvnでは非対応版しかなく、gitから入手する最新のものは対応しているという感じ。

ふむふむ。

gitをまずはインストールしなくてはいけないので
http://code.google.com/p/git-osx-installer/downloads/より自分にあったものをダウンロードしてインストール。

ボクの場合、現時点では「git-1.5.5.4-osx-leopard-intel.dmg」でした。

インストーラからインストールしたら
「2 – Setup git PATH for non-terminal programs.sh」を実行、sudoでやるといいかも。

そんであとはRailsアプリフォルダにcdして
「script/plugin install git://github.com/activescaffold/active_scaffold.git」
でプラグインインストールでできました。

よかった。これで進められる。

Ruby on Railsを始めてみる軌跡

  1. Ruby on Railsをやってみたいと思う。
  2. Leopardの入ったパソコンを起動する。できればIntel。
  3. ターミナルというアプリケーションを起動し「cd ~/Desktop」「rails testApp」 「cd testApp」 「script/server」と4回にわけて入力
  4. Safariというアプリケーションを起動しURLに「http://localhost:3000」と入力

以上。

かなりぶっ飛んでるけどこれが最短且つ最善だと思います。

 

  1. が大事。
  2. はその気持ちを叶えてくれるパートナー。また、彼は今後もとても貴方の為になるでしょう。
  3. たったこれだけで
  4. とりあえず完成

 

あとの道のりは1が2を使って3だけで4出来た感動さえあれば何とかなるでしょう。

Ruby on Railsは常にこのサイクルで感動し続けられるから面白い。

とにかくやべぇ。Ruby on Rails + Phusion Passenger (mod_rails)

ボクがオランダに住んでいたことがあったからか.nlドメインやAmsterdamという言葉があるとどうも親近感が湧くし、応援したくなる。そして自分もそこの一員になりたくなる。

ということでずいぶん悩んだ。

何に悩んだかというとRuby vs Pythonです。
Rubyは日本人が作った。
Pythonはもとをたどればオランダで作られた言語です。

これはPythonっしょ!YouTubeもPythonらしいし!とか思ってた時期もありました。

でもPhusion Passenger a.k.a. mod_railsというものをオランダで作られていることが分かったので試してみる。
これはRubyOnRailsをApacheのモジュール化したものだ。

こいつはやべぇ。とにかくやべぇ。環境がぐっと近づいた。

MongrelとかをProxyBalancerでごにょごにょしなくてもいい。

とにかくやべぇんだ。

インストール手順も超シンプル。

Leopardのインストール方法

下準備
・Xcodeをインストール。これはMac買ったときについてるCDからインストール
・gemとかつかえるようにする。これはなんとかする。多分検索すれば一発。

インストール
http://www.modrails.com/install.htmlへアクセス。
・ターミナルを開く。
・そこに書いてあるgem install passengerを実行。
・続けてpassenger-install-apache2-moduleを実行。
・apache2.confをいじる。FInderでCmd+Shift+Gを押すとでてくるポップアップウィンドウに「/etc/apache2」を入力するとでてくる。
・DocumentRootとVirtualhostを設定すればOK。あとの細かい設定はあとででいい。

設定したドメインにアクセスすればアプリ起動してるよ。

とにかくやべぇ。