By U Zensen.

プログラミング、カメラを中心になんでも書く雑記ブログです。

JavaプログラマーのRuby on Rails入門

2017 / 1 / 6
Ruby
0104_title

はじめに!!

どうも!Javaプログラマーのぴーすけです!

最近Rubyを勉強しているのですが、やっぱりRubyといえば

Ruby on Rails

ですよね。

早速勉強してみたいと思います。

スポンサードリンク

Ruby on Railsとは

Ruby開発でWEBアプリケーションを開発する際に使うフレームワークの事です。

公式サイトはこちらRuby on Rails

こういったフレームワークを使って開発をする事で、生産性やメンテナンス性があがります。

今回は入門編として、インストールや開発環境の構築方法から基本的な概念を学んでいこうと思います。

とりあえずやってみましょう!

インストール

インストールは以下

インストール

#インストール $gem install rails #インストールの確認(バージョンを確認) $rails -v

開発環境の作成は以下

アプリケーション生成

#$rails new アプリケーション名 $rails new sampleApp

このコマンドを入力するとアプリケーション用のファイルが自動生成されます。生成されるファイルはRailsの基礎知識を参考にしてください。

アプリは自動生成されたファイルを修正、追加していく事になります。

作ったアプリケーションへのアクセスするためには以下のコマンドでサーバーを起動します。

サーバーの起動

#サーバーの用意 $rails server

サーバーを起動した状態で「localhost:3000」にアクセスするとアプリケーションで設定されているデフォルトのトップ画面にアクセスできます!

コントローラとビュー

Railsにはコントローラとビューという概念があります。コントローラにはURLに応じた処理をするアクションを記述します。ビューにはブラウザに表示するHTMLを記述します。

コントローラとビューを生成

#$rails アプリケーション名 controller コントローラ名 アクション名 $rails sampleApp contoroller home top

すると、コントローラとビューのファイルが自動生成されます。

いろいろなファイルが自動生成されていますが、今回必要なファイルは以下

0105_1

他のファイルもたくさんできますが、とりあえずはこれくらい。

コントローラ

#例) #class コントローラ名 < ApplicationController # def アクション名 # end #end #先ほどのコマンドで生成されたやつ #/app/controller/home_controller.rb class homeController < applicationController def top end end

ビュー

<!-- top.html.erb --> <!-- こんな感じでHTMLを記述しておく --> <h1>トップページです!</h1>

こんな感じです。アクセスするには「localhost:3000/home/top」とします。

このコントローラ用のCSSファイル「app/assets/stylesheets/home.scss」も生成されます。これにstyleを記述します。

ルーティング

リクエストに対して、どのコントローラのどのアクションを使うのかを決める仕組みのことをルーティングと言います。

ルーティングファイル(config/routes.rb)

Rails.application.routes.draw do #get URL => コントローラ名#アクション名 get '/top' => 'home#top' end

上記の場合、「localhost:3000/top」というリクエストがあった場合、「homeコントローラのtopアクションを使用する」という処理になります。「get '/top' =>」のところを「root」に書き換えれば「localhost:3000」でアクセスした際のアクションを設定できます。

Rails.application.routes.draw do
  root 'home#top'
end

これで処理の流れは、「リクエスト → ルーティング → コントローラ → ビュー → レスポンス」という流れになります。

設定されているルーティングを確かめるためには以下のコマンドを入力します。

ルーティングを確認する

//確認コマンド $rake routes //確認結果 Prefix Verb URI Pattern Controller#Action top GET /home/top home#top

ルーティングに追加するたびにこのコマンドで確認できます。

erbとは

ビューに使うファイルは拡張子が「erb」となります。これは「Embedded Ruby」の略です。

この拡張子のファイルにはHTMLファイルにRubyのコードを埋め込むことができます。JavaのJSPやPHPみたいな感じですね。

処理の記述法は2種類あります。

<% %>

ここに書いた処理は画面に表示されないので、変数宣言や計算処理、ifやforなどの処理を書くようです。

<%= %>

ここに書く処理は画面に表示されます。

erbファイル

<% name = "斎藤" %> <h1>自己紹介</h1> <p>どうも!<%= name %>です!</p>

リクエストがあると、erbファイルに書かれている処理を実行し、HTMLに変換された後にブラウザに表示されます。JavaのJSPと一緒ですね。

ブラウザにレスポンスされるhtml

<h1>自己紹介</h1> <p>どうも!斎藤です!</p>

こういう風に書けますが、なるべくRubyの処理はコントローラに書いてビューには見た目に関係する処理くらいにとどめて、最低限の処理の記述にしたほうがいいみたいです。

コントローラにRuby処理を書く

ビューにRubyの処理を書いている例としてはこんな感じです。

erbファイル

<% first_name = "あいうえお" last_name = "太郎" %> <p>どうも!<%= first_name + last_name%>です!</p>

ここでは仮に、homeコントローラのtopアクションとします。コントローラでは、@変数名で変数を宣言します。そうしないとビューで参照できないので気をつけないといけません。

@をつけない場合はコンパイルエラーになります。

コントローラ(コントローラ.rb)

class homeController < ApplicationController def top @first_name = "あいうえお" @last_name = "太郎" end end

erbファイル

<p>どうも!<%= @first_name + @last_name%>です!</p>

リンクを貼る

HTMLでリンクを貼る場合、普通はこうです。

<a href="/sample">sample</a>

これをRubyのビュー(erbファイル)ではこう書けます。

#link_to(テキスト, URL)
<%= link_to("sample", "/sample") %>

#link_to テキスト, URL(括弧省略バージョン)
<%= link_to "sample", "/sample" %>

上記のように書けば、Rubyの処理が実行されるとアンカータグが生成されます。括弧は省略できます。

ちなみにURLの部分を以下の「Prefix + _path」で書き換えられます。パスが長かったとしてもこれで対応できますね。

ルーティングを確認する

//確認コマンド $rake routes //確認結果 Prefix Verb URI Pattern Controller#Action top GET /home/top home#top

erbファイル

<%= link_to "top", "top_path" %>

レスポンス

<a href="/top">top</a>

共通部を書き出す

動的なページを作るメリットとして、全画面共通で使いたいヘッダーやフッターの共通化があります。Ruby on Railsの場合は「/app/views/layouts/application.html.erb」というファイルにビューの共通部がまとめられています。

そのファイル内には<%= yield %>という処理が記述されていて、この部分にアクションで設定しているerbファイルの内容が代入されます。

さらに、cssファイルとjsファイルを読み込む用の処理があります。

<!-- /app/assets/stylesheets内のcssファイルを読み込む処理 -->
<%= stylesheet_link_tag 'application, media: 'all'... %>

<!-- /app/assets/jaavscripts内のjsファイルを読み込む処理 -->
<%= javascript_include_tag 'application %>

です。これを使って、一箇所に保存しておいた書くファイルを読み込めます。

一旦、まとめ!!

全貌が見えていませんので、かなりごちゃごちゃしていますし、何が足りていて足りていないのかが自分でもわかっていません。申し訳ないです。

とりあえず、今回わかった事は以下です。

  • Ruby on RailsはWEBアプリケーションを作るためのフレームワーク
  • 処理の流れは「リクエスト → ルーティング → コントロール → ビュー → レスポンス」
  • ページを追加するには、新たにルーティングを設定し、コントローラにアクションを追加し、ビューを用意する
  • ビューの記述がJSPに似ているからやった事がある人は理解が早いかも

という感じです。

まだまだわからないことはたくさんありますが、なんとなく簡単な動的なWEBページくらいなら作れるくらいのことは理解できたと思います。

ざっと概要は理解できたので、今後は作りたいものを作っていく事で理解を深めたいと思います。

なにかごちゃごちゃしちゃいましたが、とりあえずおーわり!

Pocket

コメント

コメントを残す