Third-gig

Stats of My Life

Ruby on Rails理解のための7つのポイント+おすすめ学習法

最近Rubyミニブログアプリケーションの開発してみて学んだことを整理してみました。自身振り返りとして書いてみたので、もし間違っているところがあれば教えて頂ければ助かります。

 

ソースはGitHub上にUPしています。

github.com


目次

-----------------------------------------------------------------

1.環境構築

2.Rubyコマンド一覧

3.MVC

4.ルーティングとコントローラの関係について

5.Model「has_many」と「belongs_to」

6.Validation

7.renderとredirect_to

その他:おすすめ学習法

-----------------------------------------------------------------

作ったブログの機能は以下はできるようになっています。

「新規投稿(名前とコメント)」
「一覧表示」
「詳細表示」
「更新」
「削除」
「コメント投稿」

 

1.環境構築

Macのターミナルにて取り掛かってみましたが、初めてプログラミングをされる方は

大変だったのではないでしょうか?

私もインストール上で、エラーが出ては都度ググって調べるの繰り返しだったので
思った以上に時間がかかりました。

実際Rubyの環境構築は、以下3つのサービスを使いました。

 

Nitrous・・・Webブラウザ総合開発環境。
       ローカルPCやherokuにも同期を取ることができます。
      

簡単にRubyの開発環境をセットアップできるので、初めてRubyをされる方  はNitrousで始めてみてはいかがでしょうか?またEclipseの開発に慣れている人も構成は似ているのでとっつきやすいと思います。

 

ただ、無料プランは以下の制約があるので、その点だけご注意下さい。

 ・384MBのメモリと750MBのストレージが使用可能(N2O Resources参照)
 ・3日間アクセスが無いと実行環境(サーバ)が自動的に停止
 ・1つの実行環境 (Nitrous.ioではBOXと呼びます) しか作れない 
 
Github・・・ソースバージョン管理

       

Nitrousで作成したソースは以下のコマンドでGitHubにUPしましょう。注意点としては以下の点です。
    
 ・NitrousそのまえにGitHub上にレポジトリを作成しておく(Nitrous上でのアプリ名を作成すればOK)
  ・Nitrousのboxesから自分のIDEを開いて、Public Keyをgithubに登録しておく


NitrousからGitHubへの連携のコマンドとしては以下を実行してみて下さい。

--------------------------------------------------------------------------------------------

~/workspace/appname$ git config --global user.email "mail address"
~/workspace/appname$ git config --global user.name "github user name"
~/workspace/appname$ git init
~/workspace/appname$ git add .
~/workspace/appname$ git commit -m"Initial Commit"


~/workspace/appname(master)$ git remote add origin git@github.com:UserName/appname.git
~/workspace/appname(master)$ git push -u origin master

--------------------------------------------------------------------------------------------

 

Heroku・・・開発したソースの実行(本番)環境として使用

Webアプリケーションの開発から公開まで非常に簡単にできる優れたプラットフォームです。GitHub上にUPしたソースをHerokuへの本番環境へのUPは以下のコマンドです。

--------------------------------------------------------------------------------------------

~/workspace/appname(master)$ heroku login
~/workspace/appname(master)$ heroku create appname
~/workspace/appname(master)$ git push heroku master

--------------------------------------------------------------------------------------------

 

2.Rubyコマンド一覧
 
 Rubyはサービ起動、modelやcontrollerファイル作成などはコマンドで行います。
 ざっと必要なコマンドは過去のブログでまとめました。

 

zashii.hatenablog.com

 もっと詳しく知りたい場合はこちらも参考にして下さい。
 

railsdoc.com

 

3.MVC

Railsにとって重要な概念です。ここをしっかり理解していれば、開発スピードは格段にあがります。ざっくり言えば、MVCとは以下のそれぞれの頭文字を取ったものです。

Model・・・データモデル
View・・・画面表示(HTMLです)。ユーザーが目にするところ
Controller・・・ユーザーからの要求を処理し、モデルやビューと連携を行なう


図でわかりやすく説明しているサイトを見つけたので紹介します。

www.rubylife.jp

 

4. ルーティングとコントローラの関係について

 

私はここを理解するまでは少し時間がかかりました。

 

利用者がブラウザ経由でRailアプリケーションにリクエストを送信すると、まずはWebサーバでそのリクエストを受け取ります。リクエストがRailsアプリケーションに関することだった場合、WebサーバからRailsアプリケーションへリクエストが回されてきます。

利用者からのリクエストはURLとして届きます。届いたURLを分析し、どのコントローラに含まれるアクションを実行すればいいのかを判断する時に使われるのが「routes.rb」ファイルです。このファイルにはどんなURLだった時はどのコントローラのどの

アクションを呼び出せばいいのが列挙されています。

 

すなわち、routingとはユーザーから届いたURLをどのコントローラーの命令を行うのか
指示するもの、と私は解釈しています。

 

で、受け取ったコントローラーは3の説明の通りModelやViewに指示を出します。

 

5.Model「has_many」と「belongs_to」

 

DBのリレーションをModel上で設定するイメージです。1対多の関係では必ずこの設定が必要です。今回は以下のモデルを用意しました。

 

・Entryモデル(名前とコメント)
・Commentsモデル(登録されたエントリーに対するコメント)

 

1つ記事エントリーには複数の投稿があるのでEntryとCommentsは1対多の関係にあります。

 

6.Validation

入力値を制限することができます。Modelでの制御設定は非常にシンプルでわかりやすいなあと思いました。以下、サンプルソースです。

-----------------------------------------------------------------

class Comment < ActiveRecord::Base
belongs_to :entry
validates :name, length:{ maximum: 15}
validates :body, presence:true, length:{ maximum: 140}
end

-----------------------------------------------------------------

↑ではnameカラムは最大15字まで、
bodyカラムは必須で最大140字までの入力制御をしています。

 

7.renderとredirect_to

ちょっとわかりにくかったところでした。 ここの記事を元に理解を深めました。

ruby-rails.hatenadiary.com


その他:Rubyオススメ学習

初めてRubyを触る方でしたら、schooの授業を鳥居先生の授業を受けることを
おすすめします。

ライブコーディングと豊富な資料が魅力です。私はRubyチュートリアルを読むよりも

schooの方が理解スピードが速かったです。

schoo.jp

 

自分が作ったアプリケーションも、授業で学んだことを整理し書いてみただけです。

Schooは定額制ですが、現在980円なので専門書一冊買うよりは安く済むと思います。


また、私が書いた記事より非常にわかりやすい記事を見つけました。理解を深めるためにすごい参考になりました。nipe880324さん、ありがとう!

 

ruby-rails.hatenadiary.com