Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
岡山Ruby会議01




                 良い場所に、良い名前で
                Good Names in the right
                   places on Rails

  ...
岡山Ruby会議01




                   祝!!

                岡山Ruby会議01

                             株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                     私と岡山


                •曾祖母が住んでいました
                • 山の方に先祖のお墓があるよう
                で...
岡山Ruby会議01




                昨晩 @岡山




                             株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                1985年 @岡山




                                株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                岡崎理枝子さん
                オリーズデザイン



                  CSS NiTE
                  in OKAYAMA...
岡山Ruby会議01




                 山口真央さん
                (@gutch_jp)




                              株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




            Romantic
             Ruby!



                ...ロビー活動不足!!!
                                  ...
岡山Ruby会議01




                    自己紹介

                •大場寧子 おおばやすこ
                •@nay3
                • プログラマ
     ...
岡山Ruby会議01




              2006年から
            Rubyを使うように


                        株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01



                  たのしい開発
                スタートアップRuby

                       Coming
                        ...
岡山Ruby会議01




                     私の関心事


                •実装するのが好きです
                • メンテナンスしやすいコードが
                好...
岡山Ruby会議01




                会場のみなさまは?

                •Ruby触ったことのある人
                •Rails触ったことのある人
                •...
岡山Ruby会議01




                      今日の話題

                •   Railsアプリ開発入門
                •   何をどこに書くか
                ...
岡山Ruby会議01




                Railsアプリ
                 開発入門
                          株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                  ライブ
                コーディングで
                  ご紹介
                         株式会社万葉
2012年7月...
岡山Ruby会議01




            実装だけじゃなく
             要件や設計から
             雰囲気をご紹介
                      株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                時間が足りないので
                 実演はさわりだけ


                           株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                 私とペアプロ
                しているつもりで
                  どうぞ :)

                          株式会社万葉...
岡山Ruby会議01




                1. 環境

                            株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                         環境
                •   Mac OS X
                •   RVM
                •   Ruby1....
岡山Ruby会議01




                2. 何を作るか
                   決める

                          株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                  定番の掲示板
                ...は飽きたので

                           株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                タスク管理

                        株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                  今日絶対
                やりたいこと
                 最大3つを
                  登録する
               ...
岡山Ruby会議01




                できたかどうか
                チェックできる

                         株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                 今日も
                がんばった
                 と思える
                        株式会社万葉
2012年7月10日火...
岡山Ruby会議01




                    色わけしたい

                •人生の目標に
                とって大事
                •その他
            ...
岡山Ruby会議01




                これまでの
                 タスクを
                 見られる
                        株式会社万葉
2012年7月10日...
岡山Ruby会議01




                    トップページ
                              2012/7/7
                 今日のタスク       2012/7/6
  ...
岡山Ruby会議01




                   過去のページ
                2012/7/7のタスク 2012/7/7
                               2012/7/6
   ...
岡山Ruby会議01




                今日のタスクの編集
                今日のタスク
                  チケット218完了   重要
                  勉強会に参加 ...
岡山Ruby会議01




                3. 設計
                        株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                アプリ名を
                 決める
                        株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                   1日に
                3つのタスク...
                (でも設定で変
                 えるかも?)
          ...
岡山Ruby会議01




                 数はやめて
                意味にしよう
                         株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                 mit
                Most Important
                    Tasks
                             ...
岡山Ruby会議01




                モデル設計

                        株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                RailsのMVC

                         モデル

                コントローラ

                         ビ...
岡山Ruby会議01




                    モデル

                •
                アプリケーションの中
                核となるデータやロジッ
         ...
岡山Ruby会議01




                     mitのモデル
                •Task
                 •タスク1件を表すモデル
                •User
    ...
岡山Ruby会議01




                     もうひとつ
                •Day
                 •ユーザー1人の1日のタ
                 スクをまとめるモデル
 ...
岡山Ruby会議01




                  クラス図

                Day         tasks
                                    Task
        ...
岡山Ruby会議01




                     Task
                •
                day_id - 日
                •
                na...
岡山Ruby会議01




                    Day


                •
                created_on - 日

                               ...
岡山Ruby会議01




                URL設計

                        株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                    URLの考え方
                •
                トップは /
                •
                名詞や名...
岡山Ruby会議01




                    RESTful
                •
                Rails には良くある
                CRUD 向けのお決まりの
  ...
岡山Ruby会議01




                   よくあるセット
                       リソース名 group の場合
                 HTTP
                   ...
岡山Ruby会議01




                mitの主なリクエスト
                1.トップの表示
                2.過去のタスクの表示
                3.今日のタスクの編...
岡山Ruby会議01




                      1.トップの表示
                URL      /
                HTTPメソッド GET
                コントロ...
岡山Ruby会議01




                2.過去タスクの表示
                URL      /tasks/2012/7/6
                HTTPメソッド GET
          ...
岡山Ruby会議01




                3.今日のタスクの編集画面

                URL      /today/edit
                HTTPメソッド GET
          ...
岡山Ruby会議01




                4.今日のタスクの編集実行

                URL      /today
                HTTPメソッド PUT
               ...
岡山Ruby会議01




                5.タスクのステータス変更

                URL      /tasks/17
                HTTPメソッド PUT
            ...
岡山Ruby会議01




                4. テスト/スペック


                             株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                モデルのSpecなど
                  を書きます


                            株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                詳しくは山本さんの
                  発表で :)


                           株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                5. 実装・確認


                           株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                  ライブ
                コーディング
                        株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                http://github.com/
                      nay/mit



                                   株式会社...
岡山Ruby会議01




                何をどこに
                 書くか
                        株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                  Rails内の 場所
                • routes.rb
                • コントローラ
                • モデル
   ...
岡山Ruby会議01




                    routes.rb

                •
                どのURL+HTTPメソッドをど
                のコントローラのア...
岡山Ruby会議01




                get 'tasks/:year/:month/:day'
                => "tasks#daily", :constraints
              ...
岡山Ruby会議01




                    コントローラ

                •リクエストの内容をチェックし
                ておかしければハネる
                •
  ...
岡山Ruby会議01




                def daily
                 date = Date.new(
                  params[:year].to_i,
         ...
岡山Ruby会議01




                     モデル

                •アプリケーション内のデータと
                それに付随するロジック
                •
   ...
岡山Ruby会議01




                コントローラは
                 すっきりと


                          株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                   モデルに
                 コードを集める
                (メソッドを作る)

                           株式会社...
岡山Ruby会議01




                       ただし
                    MVCを乱さない
                •モデルではリクエストパラメー
                タやセ...
岡山Ruby会議01




                    積極的に使おう

                •
                関連 (Association)
                •
         ...
岡山Ruby会議01




                             関連
                class Day < ActiveRecord::Base


                 has_many ...
岡山Ruby会議01




                             検証

                class Task < ActiveRecord::Base


                 validat...
岡山Ruby会議01




                          Scope
                class Task < ActiveRecord::Base


                 scope :o...
岡山Ruby会議01




                       コールバック
                class Task < ActiveRecord::Base
                  before_vali...
岡山Ruby会議01




                 コントローラに
                コードが溢れたら?


                           株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                 コントローラに
                サブルーチンみたい
                  なのが沢山

                           株式会社...
岡山Ruby会議01




                 パラメータやセッ
                ションがらみ以外は
                   モデルへ

                           株式会...
岡山Ruby会議01




                パラメータを調査し
                て分岐したり加工し
                 たりが多い場合

                           株式...
岡山Ruby会議01




                if params[...]
                = ...
                ...
                end
              ...
岡山Ruby会議01




                パラメータの構造を
                   工夫して
                 モデルに任せる

                           株式会社...
岡山Ruby会議01




                パラメータの受け渡し
                                           Controller
                  画面
     ...
岡山Ruby会議01




                 構造を練ることで
                  加工をモデルに
                任せることができる

                           株...
岡山Ruby会議01




                task.attributes =
                  params[:task]
                 :task 以下の構造をさばくのは
      ...
岡山Ruby会議01




                ユーザーのロール等
                 による条件分岐が
                   多いとき

                           株式会...
岡山Ruby会議01




                if xxx
                ...
                elsif xxx
                ...
                el...
岡山Ruby会議01




                条件分岐をモデルや
                 専用レイヤーに
                 移動できるかも

                           株式会...
岡山Ruby会議01




                 アクションを
                分割したほうが
                  よいかも

                          株式会社万葉
20...
岡山Ruby会議01




                丁寧すぎる
                例外処理


                            株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                コントローラ単位や
                 アプリ単位でも
                  処理できる

                           株式会社...
岡山Ruby会議01




                ビューで使う変数が
                たくさんある場合


                           株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                @foo = ...
                @foo2 = ...
                @foo3 = ...
                @foo4 = ...
岡山Ruby会議01




                単純なものなら
                 ビューに直接
                  書けばいい

                          株式会社万葉
2...
岡山Ruby会議01




                 <%= @size %>


                <%= @tasks.size %>


                                   株式会...
岡山Ruby会議01




                     ビュー


                •画面(HTMLやJSを作る)
                • レイアウトや部分テンプレート
               ...
岡山Ruby会議01




                  ビューに
                 ロジックを
                書いちゃだめ?

                          株式会社万葉
201...
岡山Ruby会議01




                合理的なら
                 問題ない


                            株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                    ヘルパー


                •ビューで繰り返し現れるコード
                をメソッドに抽出
                •
     ...
岡山Ruby会議01




                   モデルに
                 表示レイヤーの
                実装しちゃだめ?

                          株式会社万葉...
岡山Ruby会議01




                 合理的なら
                  問題ない

                例)属性の装飾
                             株式会社万葉
...
岡山Ruby会議01




                config/initializers

                •アプリが起動するときに呼ばれ
                 る
                •フレー...
岡山Ruby会議01




                データベース(RDB)

                •デフォルト値
                •NULL不可
                • 各種制約
       ...
岡山Ruby会議01




                    バッチ処理


                •cron等で定期的なタスクを実行
                • 決まった時間に行う処理
               ...
岡山Ruby会議01




                 どんな名前を
                つけるのがよいか


                          株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                単数形と複数形を
                  区別する


                          株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                単語を短縮しない


                          株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                  prefixは
                なるべくつけない


                          株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                 関連名を
                冗長にしない


                         株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                URLには名詞を


                           株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                値を返すメソッド名
                  には名詞を


                           株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                 スコープには
                「名詞を修飾する
                   語」を

                          株式会社万葉
2...
岡山Ruby会議01




                booleanカラムや
                  問い合わせは
                 trueがどちらか
                  わかるように
  ...
岡山Ruby会議01




                 本質的な
                名前をつける


                         株式会社万葉
2012年7月10日火曜日
岡山Ruby会議01




                Railsの文脈に
                あった単語を
                    選ぶ

                            株式会社万葉...
岡山Ruby会議01




                日本人にとって
                楽な単語には
                 価値がある

                          株式会社万葉
201...
岡山Ruby会議01




                Enjoy
                Rails !
                              株式会社万葉
2012年7月10日火曜日
Upcoming SlideShare
Loading in …5
×

of

Good Names in Right Places on Rails Slide 1 Good Names in Right Places on Rails Slide 2 Good Names in Right Places on Rails Slide 3 Good Names in Right Places on Rails Slide 4 Good Names in Right Places on Rails Slide 5 Good Names in Right Places on Rails Slide 6 Good Names in Right Places on Rails Slide 7 Good Names in Right Places on Rails Slide 8 Good Names in Right Places on Rails Slide 9 Good Names in Right Places on Rails Slide 10 Good Names in Right Places on Rails Slide 11 Good Names in Right Places on Rails Slide 12 Good Names in Right Places on Rails Slide 13 Good Names in Right Places on Rails Slide 14 Good Names in Right Places on Rails Slide 15 Good Names in Right Places on Rails Slide 16 Good Names in Right Places on Rails Slide 17 Good Names in Right Places on Rails Slide 18 Good Names in Right Places on Rails Slide 19 Good Names in Right Places on Rails Slide 20 Good Names in Right Places on Rails Slide 21 Good Names in Right Places on Rails Slide 22 Good Names in Right Places on Rails Slide 23 Good Names in Right Places on Rails Slide 24 Good Names in Right Places on Rails Slide 25 Good Names in Right Places on Rails Slide 26 Good Names in Right Places on Rails Slide 27 Good Names in Right Places on Rails Slide 28 Good Names in Right Places on Rails Slide 29 Good Names in Right Places on Rails Slide 30 Good Names in Right Places on Rails Slide 31 Good Names in Right Places on Rails Slide 32 Good Names in Right Places on Rails Slide 33 Good Names in Right Places on Rails Slide 34 Good Names in Right Places on Rails Slide 35 Good Names in Right Places on Rails Slide 36 Good Names in Right Places on Rails Slide 37 Good Names in Right Places on Rails Slide 38 Good Names in Right Places on Rails Slide 39 Good Names in Right Places on Rails Slide 40 Good Names in Right Places on Rails Slide 41 Good Names in Right Places on Rails Slide 42 Good Names in Right Places on Rails Slide 43 Good Names in Right Places on Rails Slide 44 Good Names in Right Places on Rails Slide 45 Good Names in Right Places on Rails Slide 46 Good Names in Right Places on Rails Slide 47 Good Names in Right Places on Rails Slide 48 Good Names in Right Places on Rails Slide 49 Good Names in Right Places on Rails Slide 50 Good Names in Right Places on Rails Slide 51 Good Names in Right Places on Rails Slide 52 Good Names in Right Places on Rails Slide 53 Good Names in Right Places on Rails Slide 54 Good Names in Right Places on Rails Slide 55 Good Names in Right Places on Rails Slide 56 Good Names in Right Places on Rails Slide 57 Good Names in Right Places on Rails Slide 58 Good Names in Right Places on Rails Slide 59 Good Names in Right Places on Rails Slide 60 Good Names in Right Places on Rails Slide 61 Good Names in Right Places on Rails Slide 62 Good Names in Right Places on Rails Slide 63 Good Names in Right Places on Rails Slide 64 Good Names in Right Places on Rails Slide 65 Good Names in Right Places on Rails Slide 66 Good Names in Right Places on Rails Slide 67 Good Names in Right Places on Rails Slide 68 Good Names in Right Places on Rails Slide 69 Good Names in Right Places on Rails Slide 70 Good Names in Right Places on Rails Slide 71 Good Names in Right Places on Rails Slide 72 Good Names in Right Places on Rails Slide 73 Good Names in Right Places on Rails Slide 74 Good Names in Right Places on Rails Slide 75 Good Names in Right Places on Rails Slide 76 Good Names in Right Places on Rails Slide 77 Good Names in Right Places on Rails Slide 78 Good Names in Right Places on Rails Slide 79 Good Names in Right Places on Rails Slide 80 Good Names in Right Places on Rails Slide 81 Good Names in Right Places on Rails Slide 82 Good Names in Right Places on Rails Slide 83 Good Names in Right Places on Rails Slide 84 Good Names in Right Places on Rails Slide 85 Good Names in Right Places on Rails Slide 86 Good Names in Right Places on Rails Slide 87 Good Names in Right Places on Rails Slide 88 Good Names in Right Places on Rails Slide 89 Good Names in Right Places on Rails Slide 90 Good Names in Right Places on Rails Slide 91 Good Names in Right Places on Rails Slide 92 Good Names in Right Places on Rails Slide 93 Good Names in Right Places on Rails Slide 94 Good Names in Right Places on Rails Slide 95 Good Names in Right Places on Rails Slide 96 Good Names in Right Places on Rails Slide 97 Good Names in Right Places on Rails Slide 98 Good Names in Right Places on Rails Slide 99 Good Names in Right Places on Rails Slide 100 Good Names in Right Places on Rails Slide 101 Good Names in Right Places on Rails Slide 102 Good Names in Right Places on Rails Slide 103 Good Names in Right Places on Rails Slide 104 Good Names in Right Places on Rails Slide 105 Good Names in Right Places on Rails Slide 106 Good Names in Right Places on Rails Slide 107 Good Names in Right Places on Rails Slide 108 Good Names in Right Places on Rails Slide 109 Good Names in Right Places on Rails Slide 110 Good Names in Right Places on Rails Slide 111 Good Names in Right Places on Rails Slide 112 Good Names in Right Places on Rails Slide 113 Good Names in Right Places on Rails Slide 114 Good Names in Right Places on Rails Slide 115 Good Names in Right Places on Rails Slide 116 Good Names in Right Places on Rails Slide 117
Upcoming SlideShare
世界を描く Drawing the world
Next
Download to read offline and view in fullscreen.

7 Likes

Share

Download to read offline

Good Names in Right Places on Rails

Download to read offline

Presentation for Okayama RubyKaigi01. Written in Japanese only.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Good Names in Right Places on Rails

  1. 1. 岡山Ruby会議01 良い場所に、良い名前で Good Names in the right places on Rails 2012. 7. 7 株式会社万葉 大場寧子(@nay3) 株式会社万葉 2012年7月10日火曜日
  2. 2. 岡山Ruby会議01 祝!! 岡山Ruby会議01 株式会社万葉 2012年7月10日火曜日
  3. 3. 岡山Ruby会議01 私と岡山 •曾祖母が住んでいました • 山の方に先祖のお墓があるよう です 株式会社万葉 2012年7月10日火曜日
  4. 4. 岡山Ruby会議01 昨晩 @岡山 株式会社万葉 2012年7月10日火曜日
  5. 5. 岡山Ruby会議01 1985年 @岡山 株式会社万葉 2012年7月10日火曜日
  6. 6. 岡山Ruby会議01 岡崎理枝子さん オリーズデザイン CSS NiTE in OKAYAMA 株式会社万葉 2012年7月10日火曜日
  7. 7. 岡山Ruby会議01 山口真央さん (@gutch_jp) 株式会社万葉 2012年7月10日火曜日
  8. 8. 岡山Ruby会議01 Romantic Ruby! ...ロビー活動不足!!! 株式会社万葉 2012年7月10日火曜日
  9. 9. 岡山Ruby会議01 自己紹介 •大場寧子 おおばやすこ •@nay3 • プログラマ • 株式会社万葉 代表取締役社長 株式会社万葉 2012年7月10日火曜日
  10. 10. 岡山Ruby会議01 2006年から Rubyを使うように 株式会社万葉 2012年7月10日火曜日
  11. 11. 岡山Ruby会議01 たのしい開発 スタートアップRuby Coming Soon! 7/31 株式会社万葉 2012年7月10日火曜日
  12. 12. 岡山Ruby会議01 私の関心事 •実装するのが好きです • メンテナンスしやすいコードが 好き 株式会社万葉 2012年7月10日火曜日
  13. 13. 岡山Ruby会議01 会場のみなさまは? •Ruby触ったことのある人 •Rails触ったことのある人 • Webアプリ作ったことのある人 • Railsでお仕事している人 株式会社万葉 2012年7月10日火曜日
  14. 14. 岡山Ruby会議01 今日の話題 • Railsアプリ開発入門 • 何をどこに書くか • どんな名前をつけるか 株式会社万葉 2012年7月10日火曜日
  15. 15. 岡山Ruby会議01 Railsアプリ 開発入門 株式会社万葉 2012年7月10日火曜日
  16. 16. 岡山Ruby会議01 ライブ コーディングで ご紹介 株式会社万葉 2012年7月10日火曜日
  17. 17. 岡山Ruby会議01 実装だけじゃなく 要件や設計から 雰囲気をご紹介 株式会社万葉 2012年7月10日火曜日
  18. 18. 岡山Ruby会議01 時間が足りないので 実演はさわりだけ 株式会社万葉 2012年7月10日火曜日
  19. 19. 岡山Ruby会議01 私とペアプロ しているつもりで どうぞ :) 株式会社万葉 2012年7月10日火曜日
  20. 20. 岡山Ruby会議01 1. 環境 株式会社万葉 2012年7月10日火曜日
  21. 21. 岡山Ruby会議01 環境 • Mac OS X • RVM • Ruby1.9.3 • Rails 3.2.6 株式会社万葉 2012年7月10日火曜日
  22. 22. 岡山Ruby会議01 2. 何を作るか 決める 株式会社万葉 2012年7月10日火曜日
  23. 23. 岡山Ruby会議01 定番の掲示板 ...は飽きたので 株式会社万葉 2012年7月10日火曜日
  24. 24. 岡山Ruby会議01 タスク管理 株式会社万葉 2012年7月10日火曜日
  25. 25. 岡山Ruby会議01 今日絶対 やりたいこと 最大3つを 登録する 株式会社万葉 2012年7月10日火曜日
  26. 26. 岡山Ruby会議01 できたかどうか チェックできる 株式会社万葉 2012年7月10日火曜日
  27. 27. 岡山Ruby会議01 今日も がんばった と思える 株式会社万葉 2012年7月10日火曜日
  28. 28. 岡山Ruby会議01 色わけしたい •人生の目標に とって大事 •その他 株式会社万葉 2012年7月10日火曜日
  29. 29. 岡山Ruby会議01 これまでの タスクを 見られる 株式会社万葉 2012年7月10日火曜日
  30. 30. 岡山Ruby会議01 トップページ 2012/7/7 今日のタスク 2012/7/6 編集 2012/7/5 チケット#218完了 2012/7/4 勉強会に参加 完了(レ)/あきらめ( )/未記入 株式会社万葉 2012年7月10日火曜日
  31. 31. 岡山Ruby会議01 過去のページ 2012/7/7のタスク 2012/7/7 2012/7/6 チケット#218完了 2012/7/5 2012/7/4 勉強会に参加 株式会社万葉 2012年7月10日火曜日
  32. 32. 岡山Ruby会議01 今日のタスクの編集 今日のタスク チケット218完了 重要 勉強会に参加 重要 重要 更新 株式会社万葉 2012年7月10日火曜日
  33. 33. 岡山Ruby会議01 3. 設計 株式会社万葉 2012年7月10日火曜日
  34. 34. 岡山Ruby会議01 アプリ名を 決める 株式会社万葉 2012年7月10日火曜日
  35. 35. 岡山Ruby会議01 1日に 3つのタスク... (でも設定で変 えるかも?) 株式会社万葉 2012年7月10日火曜日
  36. 36. 岡山Ruby会議01 数はやめて 意味にしよう 株式会社万葉 2012年7月10日火曜日
  37. 37. 岡山Ruby会議01 mit Most Important Tasks 株式会社万葉 2012年7月10日火曜日
  38. 38. 岡山Ruby会議01 モデル設計 株式会社万葉 2012年7月10日火曜日
  39. 39. 岡山Ruby会議01 RailsのMVC モデル コントローラ ビュー 株式会社万葉 2012年7月10日火曜日
  40. 40. 岡山Ruby会議01 モデル • アプリケーションの中 核となるデータやロジッ クを書く • オブジェクト指向で 株式会社万葉 2012年7月10日火曜日
  41. 41. 岡山Ruby会議01 mitのモデル •Task •タスク1件を表すモデル •User •ユーザー •※将来追加する 株式会社万葉 2012年7月10日火曜日
  42. 42. 岡山Ruby会議01 もうひとつ •Day •ユーザー1人の1日のタ スクをまとめるモデル • DB的にはなくてもいいけ どRails的に楽 株式会社万葉 2012年7月10日火曜日
  43. 43. 岡山Ruby会議01 クラス図 Day tasks Task day_id day 株式会社万葉 2012年7月10日火曜日
  44. 44. 岡山Ruby会議01 Task • day_id - 日 • name - 名前 • lifework - 人生に重要? • status - new/done/ canceled 株式会社万葉 2012年7月10日火曜日
  45. 45. 岡山Ruby会議01 Day • created_on - 日 株式会社万葉 2012年7月10日火曜日
  46. 46. 岡山Ruby会議01 URL設計 株式会社万葉 2012年7月10日火曜日
  47. 47. 岡山Ruby会議01 URLの考え方 • トップは / • 名詞や名詞を修飾する語 を使う •/tasks/done ○ •/create_task 株式会社万葉 2012年7月10日火曜日
  48. 48. 岡山Ruby会議01 RESTful • Rails には良くある CRUD 向けのお決まりの URL、HTTPメソッド、 アクションのセットがある • うまくはまる時は使う 株式会社万葉 2012年7月10日火曜日
  49. 49. 岡山Ruby会議01 よくあるセット リソース名 group の場合 HTTP URL アクション 説明 メソッド GET /groups index 一覧 GET /groups/17 show 詳細 GET /groups/new new 作成画面 POST /groups create 作成実行 GET /groups/17/edit edit 編集画面 PUT /groups/17 update 編集実行 DELETE /groups/17 destroy 削除実行 株式会社万葉 2012年7月10日火曜日
  50. 50. 岡山Ruby会議01 mitの主なリクエスト 1.トップの表示 2.過去のタスクの表示 3.今日のタスクの編集画面の表示 4.今日のタスクの更新実行 5.タスクのステータス変更(Ajax) 株式会社万葉 2012年7月10日火曜日
  51. 51. 岡山Ruby会議01 1.トップの表示 URL / HTTPメソッド GET コントローラ TasksController アクション index 株式会社万葉 2012年7月10日火曜日
  52. 52. 岡山Ruby会議01 2.過去タスクの表示 URL /tasks/2012/7/6 HTTPメソッド GET コントローラ TasksController アクション daily 株式会社万葉 2012年7月10日火曜日
  53. 53. 岡山Ruby会議01 3.今日のタスクの編集画面 URL /today/edit HTTPメソッド GET コントローラ TasksController アクション edit_today 株式会社万葉 2012年7月10日火曜日
  54. 54. 岡山Ruby会議01 4.今日のタスクの編集実行 URL /today HTTPメソッド PUT コントローラ TasksController アクション update_today 株式会社万葉 2012年7月10日火曜日
  55. 55. 岡山Ruby会議01 5.タスクのステータス変更 URL /tasks/17 HTTPメソッド PUT コントローラ TasksController アクション update 株式会社万葉 2012年7月10日火曜日
  56. 56. 岡山Ruby会議01 4. テスト/スペック 株式会社万葉 2012年7月10日火曜日
  57. 57. 岡山Ruby会議01 モデルのSpecなど を書きます 株式会社万葉 2012年7月10日火曜日
  58. 58. 岡山Ruby会議01 詳しくは山本さんの 発表で :) 株式会社万葉 2012年7月10日火曜日
  59. 59. 岡山Ruby会議01 5. 実装・確認 株式会社万葉 2012年7月10日火曜日
  60. 60. 岡山Ruby会議01 ライブ コーディング 株式会社万葉 2012年7月10日火曜日
  61. 61. 岡山Ruby会議01 http://github.com/ nay/mit 株式会社万葉 2012年7月10日火曜日
  62. 62. 岡山Ruby会議01 何をどこに 書くか 株式会社万葉 2012年7月10日火曜日
  63. 63. 岡山Ruby会議01 Rails内の 場所 • routes.rb • コントローラ • モデル • ビュー • ヘルパー • config/initializers • データベース • バッチ処理 株式会社万葉 2012年7月10日火曜日
  64. 64. 岡山Ruby会議01 routes.rb • どのURL+HTTPメソッドをど のコントローラのアクションに 案内するか • アクションへのパラメータの チェックや、付与ができる 株式会社万葉 2012年7月10日火曜日
  65. 65. 岡山Ruby会議01 get 'tasks/:year/:month/:day' => "tasks#daily", :constraints => { :year => /[0-9]+/, :month => /(12¦11¦10¦ [1-9])/, :day => /[1-3]?[0-9]/ }, :as => :daily_tasks 株式会社万葉 2012年7月10日火曜日
  66. 66. 岡山Ruby会議01 コントローラ •リクエストの内容をチェックし ておかしければハネる • ビューで使うデータを用意する • どのビューを使うか指定する 株式会社万葉 2012年7月10日火曜日
  67. 67. 岡山Ruby会議01 def daily date = Date.new( params[:year].to_i, params[:month].to_i, params[:day].to_i) @day = Day.on(date) end 株式会社万葉 2012年7月10日火曜日
  68. 68. 岡山Ruby会議01 モデル •アプリケーション内のデータと それに付随するロジック • 関連するモデルを簡単に呼び出 す 株式会社万葉 2012年7月10日火曜日
  69. 69. 岡山Ruby会議01 コントローラは すっきりと 株式会社万葉 2012年7月10日火曜日
  70. 70. 岡山Ruby会議01 モデルに コードを集める (メソッドを作る) 株式会社万葉 2012年7月10日火曜日
  71. 71. 岡山Ruby会議01 ただし MVCを乱さない •モデルではリクエストパラメー タやセッションを扱わない • アクションごとにモデルのメ ソッドを作ったりしない 株式会社万葉 2012年7月10日火曜日
  72. 72. 岡山Ruby会議01 積極的に使おう • 関連 (Association) • 検証 • Scope • コールバック (before_save など) 株式会社万葉 2012年7月10日火曜日
  73. 73. 岡山Ruby会議01 関連 class Day < ActiveRecord::Base has_many :tasks, :dependent => :destroy, :autosave => true .... @day.tasks 株式会社万葉 2012年7月10日火曜日
  74. 74. 岡山Ruby会議01 検証 class Task < ActiveRecord::Base validates status, :presence => true ... 株式会社万葉 2012年7月10日火曜日
  75. 75. 岡山Ruby会議01 Scope class Task < ActiveRecord::Base scope :on, ->(date) { where(:created_on => date)} .... 株式会社万葉 2012年7月10日火曜日
  76. 76. 岡山Ruby会議01 コールバック class Task < ActiveRecord::Base before_validation :adjust_status private def adjust_status self.status = 'new' if status != 'done' && status != 'canceled' end 万葉 株式会社 2012年7月10日火曜日
  77. 77. 岡山Ruby会議01 コントローラに コードが溢れたら? 株式会社万葉 2012年7月10日火曜日
  78. 78. 岡山Ruby会議01 コントローラに サブルーチンみたい なのが沢山 株式会社万葉 2012年7月10日火曜日
  79. 79. 岡山Ruby会議01 パラメータやセッ ションがらみ以外は モデルへ 株式会社万葉 2012年7月10日火曜日
  80. 80. 岡山Ruby会議01 パラメータを調査し て分岐したり加工し たりが多い場合 株式会社万葉 2012年7月10日火曜日
  81. 81. 岡山Ruby会議01 if params[...] = ... ... end 株式会社万葉 2012年7月10日火曜日
  82. 82. 岡山Ruby会議01 パラメータの構造を 工夫して モデルに任せる 株式会社万葉 2012年7月10日火曜日
  83. 83. 岡山Ruby会議01 パラメータの受け渡し Controller 画面 <form..> params ハッシュ field の name key "task[name] " :task => {:name => 値} 株式会社万葉 2012年7月10日火曜日
  84. 84. 岡山Ruby会議01 構造を練ることで 加工をモデルに 任せることができる 株式会社万葉 2012年7月10日火曜日
  85. 85. 岡山Ruby会議01 task.attributes = params[:task] :task 以下の構造をさばくのは モデル(task)におまかせ 株式会社万葉 2012年7月10日火曜日
  86. 86. 岡山Ruby会議01 ユーザーのロール等 による条件分岐が 多いとき 株式会社万葉 2012年7月10日火曜日
  87. 87. 岡山Ruby会議01 if xxx ... elsif xxx ... elsif xxx ... end 株式会社万葉 2012年7月10日火曜日
  88. 88. 岡山Ruby会議01 条件分岐をモデルや 専用レイヤーに 移動できるかも 株式会社万葉 2012年7月10日火曜日
  89. 89. 岡山Ruby会議01 アクションを 分割したほうが よいかも 株式会社万葉 2012年7月10日火曜日
  90. 90. 岡山Ruby会議01 丁寧すぎる 例外処理 株式会社万葉 2012年7月10日火曜日
  91. 91. 岡山Ruby会議01 コントローラ単位や アプリ単位でも 処理できる 株式会社万葉 2012年7月10日火曜日
  92. 92. 岡山Ruby会議01 ビューで使う変数が たくさんある場合 株式会社万葉 2012年7月10日火曜日
  93. 93. 岡山Ruby会議01 @foo = ... @foo2 = ... @foo3 = ... @foo4 = ... 株式会社万葉 2012年7月10日火曜日
  94. 94. 岡山Ruby会議01 単純なものなら ビューに直接 書けばいい 株式会社万葉 2012年7月10日火曜日
  95. 95. 岡山Ruby会議01 <%= @size %> <%= @tasks.size %> 株式会社万葉 2012年7月10日火曜日
  96. 96. 岡山Ruby会議01 ビュー •画面(HTMLやJSを作る) • レイアウトや部分テンプレート を使って構造化 株式会社万葉 2012年7月10日火曜日
  97. 97. 岡山Ruby会議01 ビューに ロジックを 書いちゃだめ? 株式会社万葉 2012年7月10日火曜日
  98. 98. 岡山Ruby会議01 合理的なら 問題ない 株式会社万葉 2012年7月10日火曜日
  99. 99. 岡山Ruby会議01 ヘルパー •ビューで繰り返し現れるコード をメソッドに抽出 • 名前空間に注意 株式会社万葉 2012年7月10日火曜日
  100. 100. 岡山Ruby会議01 モデルに 表示レイヤーの 実装しちゃだめ? 株式会社万葉 2012年7月10日火曜日
  101. 101. 岡山Ruby会議01 合理的なら 問題ない 例)属性の装飾 株式会社万葉 2012年7月10日火曜日
  102. 102. 岡山Ruby会議01 config/initializers •アプリが起動するときに呼ばれ る •フレームワークへのadd-on的 なコードの置き場 株式会社万葉 2012年7月10日火曜日
  103. 103. 岡山Ruby会議01 データベース(RDB) •デフォルト値 •NULL不可 • 各種制約 • プロシージャ等 株式会社万葉 2012年7月10日火曜日
  104. 104. 岡山Ruby会議01 バッチ処理 •cron等で定期的なタスクを実行 • 決まった時間に行う処理 • データの掃除 etc 株式会社万葉 2012年7月10日火曜日
  105. 105. 岡山Ruby会議01 どんな名前を つけるのがよいか 株式会社万葉 2012年7月10日火曜日
  106. 106. 岡山Ruby会議01 単数形と複数形を 区別する 株式会社万葉 2012年7月10日火曜日
  107. 107. 岡山Ruby会議01 単語を短縮しない 株式会社万葉 2012年7月10日火曜日
  108. 108. 岡山Ruby会議01 prefixは なるべくつけない 株式会社万葉 2012年7月10日火曜日
  109. 109. 岡山Ruby会議01 関連名を 冗長にしない 株式会社万葉 2012年7月10日火曜日
  110. 110. 岡山Ruby会議01 URLには名詞を 株式会社万葉 2012年7月10日火曜日
  111. 111. 岡山Ruby会議01 値を返すメソッド名 には名詞を 株式会社万葉 2012年7月10日火曜日
  112. 112. 岡山Ruby会議01 スコープには 「名詞を修飾する 語」を 株式会社万葉 2012年7月10日火曜日
  113. 113. 岡山Ruby会議01 booleanカラムや 問い合わせは trueがどちらか わかるように 株式会社万葉 2012年7月10日火曜日
  114. 114. 岡山Ruby会議01 本質的な 名前をつける 株式会社万葉 2012年7月10日火曜日
  115. 115. 岡山Ruby会議01 Railsの文脈に あった単語を 選ぶ 株式会社万葉 2012年7月10日火曜日
  116. 116. 岡山Ruby会議01 日本人にとって 楽な単語には 価値がある 株式会社万葉 2012年7月10日火曜日
  117. 117. 岡山Ruby会議01 Enjoy Rails ! 株式会社万葉 2012年7月10日火曜日
  • kingjeeandzai

    Jul. 8, 2013
  • roworks

    Nov. 27, 2012
  • seratch

    Aug. 30, 2012
  • sandinist

    Aug. 2, 2012
  • kanouk

    Aug. 2, 2012
  • YoshinoriHirasawa

    Jul. 31, 2012
  • TakeshiWatanabe2

    Jul. 10, 2012

Presentation for Okayama RubyKaigi01. Written in Japanese only.

Views

Total views

10,678

On Slideshare

0

From embeds

0

Number of embeds

5,660

Actions

Downloads

13

Shares

0

Comments

0

Likes

7

×