107
Yuichiro MASUI <[email protected]> PHPからRailsへ 1時間で分かってもらうのは無理だけど

Rails 1H

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Rails 1H

Yuichiro MASUI <[email protected]>

PHPからRailsへ1時間で分かってもらうのは無理だけど

Page 2: Rails 1H

生産性が10倍?

Page 3: Rails 1H

幸せなプログラム環境ってなに?

Page 4: Rails 1H

頭に考えたモノをそのまま記述できれば生産性が高く

楽しいプログラミングができるのでは?

Page 5: Rails 1H

Railsを採用する理由

Page 6: Rails 1H

頭で考えたモノをそのまま記述しやすい

Page 7: Rails 1H

その為の仕掛け作りが沢山あるのがRails

Page 8: Rails 1H

Railsのスローガン

Page 9: Rails 1H

that's optimized for programmer happiness

and sustainable

Page 10: Rails 1H

プログラマーの幸福と創造性の継続に最適化されたフレームワーク

Page 11: Rails 1H

一発屋じゃなくて継続性も大事

Page 12: Rails 1H

UnitTestによるテストも標準搭載

Page 13: Rails 1H

人を育てるフレームワーク

Page 14: Rails 1H

PHPからRailsへ移行

Page 15: Rails 1H

フレームワークは全容を把握しないと使えない

Page 16: Rails 1H

大体3ヶ月ぐらいかかる(感覚値)

Page 17: Rails 1H

Ruby自体は2-3日もあればとりあえず使えるようになる

Page 18: Rails 1H

引っかかるのは....

Page 19: Rails 1H

ブロックイテレータリフレクションオープンクラス

Page 20: Rails 1H

ブロック

プログラムの固まり。if~endや{~}などで囲った部分。ブロックはオブジェクトではないが、関数の引数として渡すことができる。

Page 21: Rails 1H

イテレーション

繰り返しの抽象化。foreachみたいなもん。これを配列やハッシュ以外でも使える。Railsでは繰り返さないでもイテレーションがある

Page 22: Rails 1H

リフレクション

クラスの内容を外部から把握したり、呼び出された関数を動的に処理する仕組み。Rubyではクラス名はあまり意味を持たない。

Page 23: Rails 1H

オープンクラス

既存のクラスであっても継承なしに書き換えることができる。組み込みのStringクラスの挙動を後から変えることが可能。

Page 24: Rails 1H

これらが使えるとRubyist

Page 25: Rails 1H

これらを使わないならRubyを使う意味がない

Page 26: Rails 1H
Page 27: Rails 1H

Ruby on Rails

Page 28: Rails 1H

Rubyで書かれたフルスタックの

MVCフレームワーク

Page 29: Rails 1H

理念

Page 30: Rails 1H

その1

Page 31: Rails 1H

Conventionover

Configuration

Page 32: Rails 1H

設定より規約

Page 33: Rails 1H

デフォルトの動作が規約として多数盛り込まれてる

Page 34: Rails 1H

JavaのフレームワークはXMLで設定する物が多い

Page 35: Rails 1H

XMLの設定=コード

Page 36: Rails 1H

設定ではコード量は減らない

Page 37: Rails 1H

その2

Page 38: Rails 1H

DRY

Page 39: Rails 1H

Don't Repeat Yourself

Page 40: Rails 1H

同じ事は二度するな

Page 41: Rails 1H

DBのO/Rマッピングを行う時

Page 42: Rails 1H

DBのカラム名をコードに書くのはDRY違反

Page 43: Rails 1H

DB変更したらコードの変更もいる

Page 44: Rails 1H

バグの元

Page 45: Rails 1H

Railsならクラス作るだけ

Page 46: Rails 1H

class User < ActiveRecord::Baseend

Page 47: Rails 1H

テーブル定義はDBから参照する

Page 48: Rails 1H

ただ、リレーションだけは設定する必要がある

Page 49: Rails 1H

class User < ActiveRecord::Base has_many :booksend

Page 50: Rails 1H

これだけでusersテーブルのマッピング終わり

Page 51: Rails 1H

Conventionover

Configuration

Page 52: Rails 1H

設定より規約

Page 53: Rails 1H

ActiveRecordの規約

Page 54: Rails 1H

テーブル名の単数形のクラスでActiveRecord::Baseを継承するとO/Rマッパになる

Page 55: Rails 1H

だからSQLでテーブル定義するだけで設定はいらない

Page 56: Rails 1H

規約に沿わない場合は設定が必要

Page 57: Rails 1H

class User < ActiveRecord::Base set_table_name 'user' set_primary_key 'pkey'end

Page 58: Rails 1H

その3

Page 59: Rails 1H

言語重要

Page 60: Rails 1H

Ruby

Page 61: Rails 1H

歴史は長いがキラーアプリがなかった

Page 62: Rails 1H

DHHがRubyを選んだ理由

Page 63: Rails 1H

Rubyは美しいコードを書くことができる,プログラマをハッピーにする言語だと感じたのです。

ITProインタービューにて

Page 64: Rails 1H

なぜ美しいと思うか

Page 65: Rails 1H

思考との乖離が少ない

Page 66: Rails 1H

頭で考えた物が作れる

Page 67: Rails 1H

言語の柔軟性が非常に高い

Page 68: Rails 1H

本当のオブジェクト指向、演算子のオーバーライド、オブジェクトへのメソッド追加...

Page 69: Rails 1H

RailsではRubyを拡張してDSLっぽく使っている

Page 70: Rails 1H

標準ライブラリなどにも手を入れまくり

Page 71: Rails 1H

Webに特化させてる故に書きやすい

Page 72: Rails 1H

思いついたのを簡単にコードにできたらプログラムは

楽しい

Page 73: Rails 1H

その4

Page 74: Rails 1H

すぐ動く

Page 75: Rails 1H

まず目の前に動く物があると作業がはかどる

Page 76: Rails 1H

動くまで時間がかかるとテンションが続かない

Page 77: Rails 1H

scaffold

Page 78: Rails 1H

足場

Page 79: Rails 1H

コントローラに1行書くだけでCRUD完成

Page 80: Rails 1H

Create - 作成Read - 表示Update - 更新Delete - 削除

Page 81: Rails 1H

DBにテーブル作って空のモデルクラスつくってコントローラにscaffoldって

書くだけでDB更新アプリ完成

Page 82: Rails 1H

これが10分Railsムービーの内容

Page 83: Rails 1H

あとは足場を頼りに骨組みを作っていけばいい

Page 84: Rails 1H

scaffold以外に色々なジェネレータも出ている

Page 85: Rails 1H

これらを使えば管理画面とかは

コード書かなくても行ける

Page 86: Rails 1H

生成されたコードは勉強にも役に立つ

Page 87: Rails 1H

その5

Page 88: Rails 1H

豊富なプラグイン

Page 89: Rails 1H

なんでもある

Page 90: Rails 1H

画像アップならfile_columnタグはacts_as_taggable

などなど・・・

Page 91: Rails 1H

日本語化はGetText-Ruby

Page 92: Rails 1H

以上5つがRailsの生産性の高さを支えている

Page 93: Rails 1H

Railsのscaffoldでアプリを作る姿はムービーで見てね

Page 94: Rails 1H

ブラウザRails

mongrel

Controller

Railsアプリの構造

Model

View

Page 95: Rails 1H

Controller

MVCの流れ

Model

View

Page 96: Rails 1H

Controller

MVCの流れ

Model

View

params[]URLやフォームで渡される値

Page 97: Rails 1H

Controller

MVCの流れ

Model

View

params[]URLやフォームで渡される値

URLからコントーラとアクションを決定

Page 98: Rails 1H

Controller

MVCの流れ

Model

View

Model.find,model.save

params[]URLやフォームで渡される値

URLからコントーラとアクションを決定

Page 99: Rails 1H

Controller

MVCの流れ

Model

View

Model.find,model.save

params[]URLやフォームで渡される値

インスタンス変数

URLからコントーラとアクションを決定

Page 100: Rails 1H

Controller

MVCの流れ

Model

View

Model.find,model.save

params[]URLやフォームで渡される値

インスタンス変数

アクション名のテンプレ

URLからコントーラとアクションを決定

Page 101: Rails 1H

プログラムで実は多いのは妥当性のチェック

Page 102: Rails 1H

validate

Page 103: Rails 1H

モデルに1行書くだけで必須項目に出来る

Page 104: Rails 1H

class Todo < ActiveRecord::Base validates_presence_of :descriptionend

app/models/todo.rb

descriptionを必須項目に

Page 105: Rails 1H

これだけで保存しようとするとエラーになる

Page 106: Rails 1H

入力値チェックをコントローラに書いていませんか?

Page 107: Rails 1H

Railsに乗ればよりよい道を走れる

Rails way