ruby on railsの紹介

30
Ruby on Rails の紹介 長野高専 電子情報工学科 2 年 奥本 隼

Post on 11-Sep-2014

12 views

Category:

Technology


2 download

DESCRIPTION

NSEG第19回勉強会で発表した内容です.Railsの便利さをもっといろんな人に知ってもらいたくて,発表しました.

TRANSCRIPT

Page 1: Ruby on Railsの紹介

Ruby on Railsの紹介

長野高専 電子情報工学科2年 奥本 隼

Page 2: Ruby on Railsの紹介

自己紹介

• 長野高専 電子情報工学科 2年• クリエイターズ同好会 同好会長

• Ruby/Ruby on Rails/Ubuntu/C#/セプキャン2011言語組

• Twitter: @falcon_8823

• Facebook: falcon.8823

奥本 隼 (OKUMOTO Hayato)

Page 3: Ruby on Railsの紹介

Ruby on Railsとは?• Webアプリケーションフレームワーク• フルスタックフレームワーク• Model View Controller(MVC) パターンを採用• 同じ記述を繰り返さない

• DRY(Don’t Repeat Yourself)• 設定よりも規約

• CoC(Convention over Configurarion)

Page 4: Ruby on Railsの紹介
Page 5: Ruby on Railsの紹介

高専カンファレンス in 長野2(7/16)でQRコードを使って

受付をスムーズにしよう!

Page 6: Ruby on Railsの紹介

QRコードを利用した,参加登録,受付システム「カンファイン」

開発版http://conf-in-dev.heroku.com/

Page 7: Ruby on Railsの紹介

conf-in-dev.heroku.com

Page 8: Ruby on Railsの紹介

5月上旬:設計開始

6月上旬:アルファリリース

6月下旬:長野2の参加登録開始

7月16日:当日

Page 9: Ruby on Railsの紹介

わずか,1ヶ月半で完成!!

Page 10: Ruby on Railsの紹介

驚異の生産性に

感動

Page 11: Ruby on Railsの紹介

それまでの経験は・・・

CGI:昔ちょろっと

PHP:あまり触ったことがない

Rails:名前しか聞いたことがない

Page 12: Ruby on Railsの紹介

Webアプリケーションの開発の経験ゼロ

Page 13: Ruby on Railsの紹介

PHP?Rails?

Page 14: Ruby on Railsの紹介

Railsを使ってみよう

Page 15: Ruby on Railsの紹介

Ruby 1.8.7 + Rails 2.3.11

Ruby 1.9.2 + Rails 3.1.0

Page 16: Ruby on Railsの紹介

Railsのメリット・デメリットメリット• 生産性が非常に高い• メンテナンス性に優れている(枠に沿った開発)• 信頼性が高まる(安定面,セキュリティ面)

デメリット• 巨大なフレームワークを理解する必要がある• レール(Railsの規約)から脱線するとうまくいかなくなる

• 使う内容によっては,大きく重たい

Page 17: Ruby on Railsの紹介

Railsはレールを敷いてくれる

• Scaffolding機能• 基本的なCRUD(Create, Read, Update, Delete)機能を自動で実装してくれる

Page 18: Ruby on Railsの紹介

例えば・・・簡単なブログシステム

• 記事 ‒ article(Model)• タイトル - title• 投稿者 - author• 本文 - body

• コメント ‒ comment(Model)• 記事のID ‒ article_id• 記入者 ‒ user_name• コメント内容 - body

Page 19: Ruby on Railsの紹介

$ rails new nseg‐blog$ cd nseg‐blog$ rails generate scaffold article title:string author:string body:text$ rake db:migrate$ rails server

これで骨組みが完成

Page 20: Ruby on Railsの紹介

http://nseg-blog-1.heroku.com/articles

Create, Update

Read

Delete

Page 21: Ruby on Railsの紹介

コードを書かずに骨組みが完成

Page 22: Ruby on Railsの紹介

コメント機能• 作成,削除だけ行える単純な機能• 記事ごとにコメントを一覧表示すれば良い

Scaffoldingは不要

Page 23: Ruby on Railsの紹介

$ rails g model comment article_id:integer user_name:stringbody:string

$ rails g controller comments create destroy

最低限のモデルとコントローラを作成

https://github.com/falcon8823/nseg-blog-2

Page 24: Ruby on Railsの紹介

モデルclass Article < ActiveRecord::Base# リレーションシップ# articleはcommentsを持つ# articleが削除されたときは,commentsも削除has_many :comments, dependent: :delete_all

# 空かどうかの検証validates :title, :author, :body,presence: true

endapp/model/article.rb

Page 25: Ruby on Railsの紹介

モデルclass Comment < ActiveRecord::Basebelongs_to :article

validates :user_name, :body,presence: true

# article_idを勝手に書き換えられないようにattr_protected :article_id

end

app/model/comment.rb

Page 26: Ruby on Railsの紹介

ビュー<ul><% @article.comments.each do |comment| %><li><%= "#{comment.body} -- #{comment.user_name} (#{comment.created_at})" %><%= link_to '削除', [@article,comment], confirm: '削除しますか?', method: :delete %></li><% end %></ul>

<%= form_for([@article,@comment]) do |f| %><p>名前:<%= f.text_field :user_name %>コメント: <%= f.text_field :body %><%= f.submit '投稿' %></p><% end %>

app/views/article/show.html.erb

Page 27: Ruby on Railsの紹介

# coding: utf-8class CommentsController < ApplicationControllerdef create@comment = Comment.new(params[:comment])@comment.article_id = params[:article_id]@article = Article.find(params[:article_id])

if @comment.saveredirect_to @comment.article, notice: 'コメントは投稿されました'

elseredirect_to @article, notice: 'コメントの投稿に失敗しました'

endend

def destroy@comment = Comment.find(params[:id])@comment.destroy

redirect_to Article.find(params[:article_id]), notice: 'コメントは削除されました'end

end

コントローラ

app/controllers/comments_controller.rb

Page 28: Ruby on Railsの紹介

コメント機能完成

http://nseg-blog-2.heroku.com/articles

Page 29: Ruby on Railsの紹介

まとめ• Railsは使えると非常に便利

• 一般的なデータベースWebアプリケーション開発には強力• フルスタックの良さ

• 短期間で形になる• 商談中にプロトタイプをその場で作る!?

• 開発,デプロイ環境の構築は面倒(かもしれない)• 複数のRailsのバージョンの管理 → RVM• Passenger, Capistrano• Herokuというクラウドサービスの利用

• Gitでリポジトリをプッシュするだけで,デプロイ!!

Page 30: Ruby on Railsの紹介

おわり