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.
Sapporo RubyKaigi 03                Smell in Rails Apps                   Railsアプリ                   野生のカン                ...
Sapporo RubyKaigi 03                 祝・第三回                 Sappro                RubyKaigi                                ...
Sapporo RubyKaigi 03                Yasuko Ohba                 大場寧子                 @nay3                                ...
Sapporo RubyKaigi 03                JRuby on Rails                 実践開発ガイド                                       株式会社 万葉20...
Sapporo RubyKaigi 03                  Ruby on Rails                逆引きクイックリファレンス                                       株式会...
Sapporo RubyKaigi 03                •http://www.kozuchi.net/                •https://github.com/nay                • 株式会社万...
提供                株式会社   万葉                Everyleaf Corp.2010年12月6日月曜日
Sapporo RubyKaigi 03                http://leafy.in/                                        株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                It’s My Birthday                今日が誕生日です                                         株式会社 ...
Sapporo RubyKaigi 03                Today’s Talk                今日のお話                                       株式会社 万葉2010年12...
Sapporo RubyKaigi 03                Requested topic                    is Rails                「Railsの話」                  ...
Sapporo RubyKaigi 03                I have not tried much new                     things this year...                  新しい...
Sapporo RubyKaigi 03                Still using Rails 2                 まだRails2                メインだし...orz               ...
Sapporo RubyKaigi 03                What are the points I                improved this year?                   自分の        ...
Sapporo RubyKaigi 03                Code Reviews                コードレビュー                                      株式会社 万葉2010年1...
Sapporo RubyKaigi 03                 Refactoring                リファクタリング                                       株式会社 万葉2010...
Sapporo RubyKaigi 03                find good (might not be best)                     designs / solutions                  ...
Sapporo RubyKaigi 03                Avoid traps                罠を回避                                      株式会社 万葉2010年12月6日...
Sapporo RubyKaigi 03                I’ll talk about points                  of those activities                  そういうことを  ...
Sapporo RubyKaigi 03                Where to start your                  code review ?                コードレビューは            ...
Sapporo RubyKaigi 03                Design documents                   設計資料                                        株式会社 万葉...
Sapporo RubyKaigi 03                •                Wiki                •                ノート                •            ...
Sapporo RubyKaigi 03                Written goals                 ゴールが                書かれているか                             ...
Sapporo RubyKaigi 03                           GOOD                “A user can find his or her articles                    ...
Sapporo RubyKaigi 03                           BAD                “Articles Search (there would be                  anothe...
Sapporo RubyKaigi 03                •   User                •   詳細に少し触れる                With Some Details                •...
Sapporo RubyKaigi 03                 Diagrams for                  complexity                複雑なところに                図を書いてい...
Sapporo RubyKaigi 03                •   Class, Objects                •   Modules, mix-in                •   状態遷移、状態の分類   ...
Sapporo RubyKaigi 03                Venn diagram is good                  ベン図意外といい                    draft Shared        ...
Sapporo RubyKaigi 03                URL design in                DOCUMENT                URL設計が                コードの外で     ...
Sapporo RubyKaigi 03                We use wiki for URLs                 Wiki に書きます                              コント      ...
Sapporo RubyKaigi 03                  Write URLs                 look like real                URLは具体例で                   ...
Sapporo RubyKaigi 03                /admin/users/3                                      株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                /admin/users/:id                                        株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                /admin/users/:id                                        株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                /admin/users/:id                /admin/:controller/:id                                ...
Sapporo RubyKaigi 03                Look real URLs and                  feel nice or not                具体的なURLを          ...
Sapporo RubyKaigi 03                RESTful I/F                                    株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                Use only 4 verbs                4つの動詞しか                  使わない                         ...
Sapporo RubyKaigi 03                 (美内すずえ 「ガラスの仮面」より                四つの言葉のエチュードの場面を引用)                                  ...
Sapporo RubyKaigi 03                ○○を取得する                  Get WHAT                ○○を作成する                 Create WHAT  ...
Sapporo RubyKaigi 03                Use whatever nouns                 名詞で調整する                                         株式会...
Sapporo RubyKaigi 03                Example                                  株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                borrow a book                本を借りる                                      株式会社 万葉2010年12...
Sapporo RubyKaigi 03                borrow_book                                    株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                Book                                   株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                       borrow                Book                User                                 ...
Sapporo RubyKaigi 03                        borrow                 Book                User                /books/189     ...
Sapporo RubyKaigi 03                        borrow                 Book                User                /books/189/borr...
Sapporo RubyKaigi 03                        borrow                 Book                          User                     ...
Sapporo RubyKaigi 03                        borrow                 Book                          User                     ...
Sapporo RubyKaigi 03                Book                                   株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                       of                            borrowing                Book        借りること       ...
Sapporo RubyKaigi 03                       of                            borrowing         User                Book       ...
Sapporo RubyKaigi 03                       of                            borrowing         User                Book       ...
Sapporo RubyKaigi 03                       of                            borrowing         User                Book       ...
Sapporo RubyKaigi 03                       of                            borrowing         User                Book       ...
Sapporo RubyKaigi 03                       of                            borrowing            User                Book    ...
Sapporo RubyKaigi 03                Think in REST lang.                REST語で考える                                          ...
Sapporo RubyKaigi 03                Model ≠ Resource                                       株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                Different Resources & Features                        from one model                  ...
Sapporo RubyKaigi 03                Controller                                    株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                Controller Filters                  フィルター                                          株式会...
Sapporo RubyKaigi 03                           filters                too less            too much                         ...
Sapporo RubyKaigi 03                              filters                    Not DRY                too less               ...
Sapporo RubyKaigi 03                              filters                    Not DRY            Complex                too ...
Sapporo RubyKaigi 03                 before-filters as                conditions, not just                    pre-tasks    ...
Sapporo RubyKaigi 03                 :only                :except                                 株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                before_filter :find_book                 :only =>                        [:show, :edit, ...
Sapporo RubyKaigi 03                choose simpler one ?                 記述量で選ぶ?                                          ...
Sapporo RubyKaigi 03                choose simpler one ?                 記述量で選ぶ?                                          ...
Sapporo RubyKaigi 03                Use :only always !                 :only を                使いましょう!                     ...
Sapporo RubyKaigi 03                   You can easily check                which filter for which action                どのア...
Sapporo RubyKaigi 03                 It’s hard to understand                   those do not appear                指定されてないも...
Sapporo RubyKaigi 03                A except :show, :edit                B only :show, :delete                C except :in...
Sapporo RubyKaigi 03                Think about future                未来のこと                                          株式会社 ...
Sapporo RubyKaigi 03                :except is effective                 on future actions                  :except は     ...
Sapporo RubyKaigi 03                A except :show, :edit                B only :show, :delete                C except :in...
Sapporo RubyKaigi 03                Do you like adding filters or                    removing filters ?                実装を足し...
Sapporo RubyKaigi 03                All or :only                                     株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                 private                protected                  public                             ...
Sapporo RubyKaigi 03                rescue errors                 例外処理                                       株式会社 万葉2010年1...
Sapporo RubyKaigi 03                rescues in actions                     are rare                アクション内の                ...
Sapporo RubyKaigi 03                 People from Java                often rescue errors                     too much     ...
Sapporo RubyKaigi 03                 checks and                modifications of                 parameters                 ...
Sapporo RubyKaigi 03                There might be                 better ways                もっと練れる                ケースがある...
Sapporo RubyKaigi 03                       into Models                if params[:skip_preview] == 1                  ...  ...
Sapporo RubyKaigi 03                       into Models                if params[:skip_preview] == 1                  ...  ...
Sapporo RubyKaigi 03                       into Models                if params[:skip_preview] == 1                  ...  ...
Sapporo RubyKaigi 03                        into Models                if params[:skip_preview] == 1                  ... ...
Sapporo RubyKaigi 03                transactions                                     株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                Most transaction blocks in                controllers are not really                  ...
Sapporo RubyKaigi 03                •   それコールバックで(r                Use AR callbacks                •   モデルの専用メソッド         ...
Sapporo RubyKaigi 03                Abstraction                  抽象化                                      株式会社 万葉2010年12月6...
Sapporo RubyKaigi 03                       Good                ApplicationController                                  filte...
Sapporo RubyKaigi 03                        Bad                ApplicationController                    actions   filters, ...
Sapporo RubyKaigi 03                          Why bad ?                                              Controller           ...
Sapporo RubyKaigi 03                          Why bad ?                                              Controller           ...
Sapporo RubyKaigi 03                            Why bad ?                                                    Controller   ...
Sapporo RubyKaigi 03                            Why bad ?                                                    Controller   ...
Sapporo RubyKaigi 03                Sharing actions                   is tough                アクション共有は                 難易度...
Sapporo RubyKaigi 03                  Be prudent                to share actions                慎重になるべき                   ...
Sapporo RubyKaigi 03                     Use mix-in                 for action sharing                アクション共有には           ...
Sapporo RubyKaigi 03                Share views using                 partials, not via                   abstraction     ...
Sapporo RubyKaigi 03                              Possible                      Module                          Module    ...
Sapporo RubyKaigi 03                               Possible                      Module                            Module ...
Sapporo RubyKaigi 03                     Model                (ActiveRecord)                                      株式会社 万葉2...
Sapporo RubyKaigi 03                attr_protected                attr_accessible                                       株式...
Sapporo RubyKaigi 03                Protect model from                    evil params                不正なパラメータから           ...
Sapporo RubyKaigi 03                         Example                attr_protected :hashed_password, :salt,               ...
Sapporo RubyKaigi 03                Choose simpler one?                記述がシンプルに                なるほうを選ぶ?                   ...
Sapporo RubyKaigi 03                Use attr_protected                     always !                attr_protected         ...
Sapporo RubyKaigi 03                More readable? Yes. And..                  可読性も                さることながら                ...
Sapporo RubyKaigi 03                  Awful accidents                 happen if you use                 attr_accessible ! ...
Sapporo RubyKaigi 03                Trouble with NEW                    attributes                 新しい属性を                追...
Sapporo RubyKaigi 03                attr_accessible :name, :email                            :address                    :...
Sapporo RubyKaigi 03                 Especially it’s                  dangerous                for beginners !            ...
Sapporo RubyKaigi 03                  “Well, I added a                 column but it’s not                      saved...” ...
Sapporo RubyKaigi 03                time will be lost                時間が失われる                                          株式会社...
Sapporo RubyKaigi 03                Really hard if it’s used in super                 class, modules or plug-ins !        ...
Sapporo RubyKaigi 03                Really hard if it’s used in super                 class, modules or plug-ins !        ...
Sapporo RubyKaigi 03                Really hard if it’s used in super                 class, modules or plug-ins !        ...
Sapporo RubyKaigi 03                attr_accessible                                       株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                attr_accessible                                       株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                !                                株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                Use ! if you believe it                   can be saved                保存されることを        ...
Sapporo RubyKaigi 03                      This might fail                   失敗する可能性                def some_action        ...
Sapporo RubyKaigi 03                •   save                •   save!                •   create                •   update_...
Sapporo RubyKaigi 03                Callbacks                                   株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                I don’t know why this                   won’t be saved...                「なぜか保存されな    ...
Sapporo RubyKaigi 03                     set and cry                before_validation :set_sweet_flag                privat...
Sapporo RubyKaigi 03                before_validation :set_sweet_flag                private                def set_sweet_fl...
Sapporo RubyKaigi 03                Validation                検証まわり                                         株式会社 万葉2010年12...
Sapporo RubyKaigi 03                need another 30min.                    また今度                                          株...
Sapporo RubyKaigi 03                Use associations                関連をつかう                                         株式会社 万葉...
Sapporo RubyKaigi 03                 finding by a foreign key ?                FKでの検索はあやしい                @books = Book.whe...
Sapporo RubyKaigi 03                 finding by a foreign key ?                FKでの検索はあやしい                @books = Book.whe...
Sapporo RubyKaigi 03                However, sometimes FK is                   better than object                    逆に   ...
Sapporo RubyKaigi 03                  avoid unnecessary SQL                   不要な検索を避ける                if book.publisher.i...
Sapporo RubyKaigi 03                  avoid unnecessary SQL                   不要な検索を避ける                if book.publisher.i...
Sapporo RubyKaigi 03                 raise errors                例外をなげよう                                        株式会社 万葉201...
Sapporo RubyKaigi 03                App’s original error                classes are expected                独自例外クラスは      ...
Sapporo RubyKaigi 03                routes.rb                                    株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                 routes should be organized                by controllers, not resources              ...
Sapporo RubyKaigi 03                Comments                                  株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                Reason is required where the                     code is not natural                コー...
Sapporo RubyKaigi 03                       Things unnatural                        「不自然」の例                • Leaving code c...
Sapporo RubyKaigi 03                comments should be checked                     in code reviews                あるべきコメント...
Sapporo RubyKaigi 03                The last topic                最後にひとつ                                        株式会社 万葉201...
Sapporo RubyKaigi 03                Why I have English                  on my slides                  スライドに               ...
Sapporo RubyKaigi 03                 Not because                  it’s cool                 かっこいい                からじゃないです ...
Sapporo RubyKaigi 03                To get more readers                after my talk is over                後から読める人が      ...
Sapporo RubyKaigi 03                future                未来                                     株式会社 万葉2010年12月6日月曜日
Sapporo RubyKaigi 03                Somebody else                自分でない誰か                                       株式会社 万葉2010...
Sapporo RubyKaigi 03                I think imaging future and                somebody else is efficient                   ...
Sapporo RubyKaigi 03                   Write code                 feeling the mass                集合体の一部として               ...
Sapporo RubyKaigi 03                Thank you!                                    株式会社 万葉2010年12月6日月曜日
Upcoming SlideShare
Loading in …5
×

Smell in Rails Apps (in Sapporo RubyKaigi03)

5,915 views

Published on

Slides of my talk in Sapporo RubyKaigi03, on December 4th, 2010.

Published in: Technology, Travel
  • Be the first to comment

Smell in Rails Apps (in Sapporo RubyKaigi03)

  1. 1. Sapporo RubyKaigi 03 Smell in Rails Apps Railsアプリ 野生のカン 2010.12.4 Yasuko Ohba Everyleaf Corp. 株式会社 万葉2010年12月6日月曜日
  2. 2. Sapporo RubyKaigi 03 祝・第三回 Sappro RubyKaigi 株式会社 万葉2010年12月6日月曜日
  3. 3. Sapporo RubyKaigi 03 Yasuko Ohba 大場寧子 @nay3 株式会社 万葉2010年12月6日月曜日
  4. 4. Sapporo RubyKaigi 03 JRuby on Rails 実践開発ガイド 株式会社 万葉2010年12月6日月曜日
  5. 5. Sapporo RubyKaigi 03 Ruby on Rails 逆引きクイックリファレンス 株式会社 万葉2010年12月6日月曜日
  6. 6. Sapporo RubyKaigi 03 •http://www.kozuchi.net/ •https://github.com/nay • 株式会社万葉 (Everyleaf Corp.) 株式会社 万葉2010年12月6日月曜日
  7. 7. 提供 株式会社 万葉 Everyleaf Corp.2010年12月6日月曜日
  8. 8. Sapporo RubyKaigi 03 http://leafy.in/ 株式会社 万葉2010年12月6日月曜日
  9. 9. Sapporo RubyKaigi 03 It’s My Birthday 今日が誕生日です 株式会社 万葉2010年12月6日月曜日
  10. 10. Sapporo RubyKaigi 03 Today’s Talk 今日のお話 株式会社 万葉2010年12月6日月曜日
  11. 11. Sapporo RubyKaigi 03 Requested topic is Rails 「Railsの話」 株式会社 万葉2010年12月6日月曜日
  12. 12. Sapporo RubyKaigi 03 I have not tried much new things this year... 新しいこと あんまり やってないorz 株式会社 万葉2010年12月6日月曜日
  13. 13. Sapporo RubyKaigi 03 Still using Rails 2 まだRails2 メインだし...orz 株式会社 万葉2010年12月6日月曜日
  14. 14. Sapporo RubyKaigi 03 What are the points I improved this year? 自分の うまくなった (気がする)こと 株式会社 万葉2010年12月6日月曜日
  15. 15. Sapporo RubyKaigi 03 Code Reviews コードレビュー 株式会社 万葉2010年12月6日月曜日
  16. 16. Sapporo RubyKaigi 03 Refactoring リファクタリング 株式会社 万葉2010年12月6日月曜日
  17. 17. Sapporo RubyKaigi 03 find good (might not be best) designs / solutions in early stage 良さそうな設計に はやめに到達 株式会社 万葉2010年12月6日月曜日
  18. 18. Sapporo RubyKaigi 03 Avoid traps 罠を回避 株式会社 万葉2010年12月6日月曜日
  19. 19. Sapporo RubyKaigi 03 I’ll talk about points of those activities そういうことを (須藤さんを目指して) 話していきます 株式会社 万葉2010年12月6日月曜日
  20. 20. Sapporo RubyKaigi 03 Where to start your code review ? コードレビューは 何から始める? 株式会社 万葉2010年12月6日月曜日
  21. 21. Sapporo RubyKaigi 03 Design documents 設計資料 株式会社 万葉2010年12月6日月曜日
  22. 22. Sapporo RubyKaigi 03 • Wiki • ノート • cucumber • rspec 株式会社 万葉2010年12月6日月曜日
  23. 23. Sapporo RubyKaigi 03 Written goals ゴールが 書かれているか 株式会社 万葉2010年12月6日月曜日
  24. 24. Sapporo RubyKaigi 03 GOOD “A user can find his or her articles by words in title or body” 「ユーザーがタイトル と本文から自分の日記 を検索できる」 株式会社 万葉2010年12月6日月曜日
  25. 25. Sapporo RubyKaigi 03 BAD “Articles Search (there would be another feature for dates)” 「日記検索 (日付は別で)」 株式会社 万葉2010年12月6日月曜日
  26. 26. Sapporo RubyKaigi 03 • User • 詳細に少し触れる With Some Details • ほかの話題を加えない Without Other Topics 株式会社 万葉2010年12月6日月曜日
  27. 27. Sapporo RubyKaigi 03 Diagrams for complexity 複雑なところに 図を書いているか 株式会社 万葉2010年12月6日月曜日
  28. 28. Sapporo RubyKaigi 03 • Class, Objects • Modules, mix-in • 状態遷移、状態の分類 About status 株式会社 万葉2010年12月6日月曜日
  29. 29. Sapporo RubyKaigi 03 Venn diagram is good ベン図意外といい draft Shared deleted 株式会社 万葉2010年12月6日月曜日
  30. 30. Sapporo RubyKaigi 03 URL design in DOCUMENT URL設計が コードの外で されているか 株式会社 万葉2010年12月6日月曜日
  31. 31. Sapporo RubyKaigi 03 We use wiki for URLs Wiki に書きます コント URL メソッド アクション 説明 ローラ 株式会社 万葉2010年12月6日月曜日
  32. 32. Sapporo RubyKaigi 03 Write URLs look like real URLは具体例で 株式会社 万葉2010年12月6日月曜日
  33. 33. Sapporo RubyKaigi 03 /admin/users/3 株式会社 万葉2010年12月6日月曜日
  34. 34. Sapporo RubyKaigi 03 /admin/users/:id 株式会社 万葉2010年12月6日月曜日
  35. 35. Sapporo RubyKaigi 03 /admin/users/:id 株式会社 万葉2010年12月6日月曜日
  36. 36. Sapporo RubyKaigi 03 /admin/users/:id /admin/:controller/:id ? 株式会社 万葉2010年12月6日月曜日
  37. 37. Sapporo RubyKaigi 03 Look real URLs and feel nice or not 具体的なURLを 目で見て 美しさを評価 株式会社 万葉2010年12月6日月曜日
  38. 38. Sapporo RubyKaigi 03 RESTful I/F 株式会社 万葉2010年12月6日月曜日
  39. 39. Sapporo RubyKaigi 03 Use only 4 verbs 4つの動詞しか 使わない 株式会社 万葉2010年12月6日月曜日
  40. 40. Sapporo RubyKaigi 03 (美内すずえ 「ガラスの仮面」より 四つの言葉のエチュードの場面を引用) 株式会社 万葉2010年12月6日月曜日
  41. 41. Sapporo RubyKaigi 03 ○○を取得する Get WHAT ○○を作成する Create WHAT ○○を更新する Update WHAT ○○を削除する Delete WHAT 株式会社 万葉2010年12月6日月曜日
  42. 42. Sapporo RubyKaigi 03 Use whatever nouns 名詞で調整する 株式会社 万葉2010年12月6日月曜日
  43. 43. Sapporo RubyKaigi 03 Example 株式会社 万葉2010年12月6日月曜日
  44. 44. Sapporo RubyKaigi 03 borrow a book 本を借りる 株式会社 万葉2010年12月6日月曜日
  45. 45. Sapporo RubyKaigi 03 borrow_book 株式会社 万葉2010年12月6日月曜日
  46. 46. Sapporo RubyKaigi 03 Book 株式会社 万葉2010年12月6日月曜日
  47. 47. Sapporo RubyKaigi 03 borrow Book User 株式会社 万葉2010年12月6日月曜日
  48. 48. Sapporo RubyKaigi 03 borrow Book User /books/189 株式会社 万葉2010年12月6日月曜日
  49. 49. Sapporo RubyKaigi 03 borrow Book User /books/189/borrow 株式会社 万葉2010年12月6日月曜日
  50. 50. Sapporo RubyKaigi 03 borrow Book User Well, we change it after all... まあ、変更するし。。 POST /books/189/borrow 株式会社 万葉2010年12月6日月曜日
  51. 51. Sapporo RubyKaigi 03 borrow Book User Well, we change it after all... まあ、変更するし。。 POST /books/189/borrow 株式会社 万葉2010年12月6日月曜日
  52. 52. Sapporo RubyKaigi 03 Book 株式会社 万葉2010年12月6日月曜日
  53. 53. Sapporo RubyKaigi 03 of borrowing Book 借りること 株式会社 万葉2010年12月6日月曜日
  54. 54. Sapporo RubyKaigi 03 of borrowing User Book 借りること create 株式会社 万葉2010年12月6日月曜日
  55. 55. Sapporo RubyKaigi 03 of borrowing User Book 借りること create 株式会社 万葉2010年12月6日月曜日
  56. 56. Sapporo RubyKaigi 03 of borrowing User Book 借りること create /books/189/ 株式会社 万葉2010年12月6日月曜日
  57. 57. Sapporo RubyKaigi 03 of borrowing User Book 借りること create /books/189/borrowings 株式会社 万葉2010年12月6日月曜日
  58. 58. Sapporo RubyKaigi 03 of borrowing User Book 借りること create Create 作る POST /books/189/borrowings 株式会社 万葉2010年12月6日月曜日
  59. 59. Sapporo RubyKaigi 03 Think in REST lang. REST語で考える 株式会社 万葉2010年12月6日月曜日
  60. 60. Sapporo RubyKaigi 03 Model ≠ Resource 株式会社 万葉2010年12月6日月曜日
  61. 61. Sapporo RubyKaigi 03 Different Resources & Features from one model 1モデル : 多リソース Resources A model class /a /a/b /a/c 株式会社 万葉2010年12月6日月曜日
  62. 62. Sapporo RubyKaigi 03 Controller 株式会社 万葉2010年12月6日月曜日
  63. 63. Sapporo RubyKaigi 03 Controller Filters フィルター 株式会社 万葉2010年12月6日月曜日
  64. 64. Sapporo RubyKaigi 03 filters too less too much 株式会社 万葉2010年12月6日月曜日
  65. 65. Sapporo RubyKaigi 03 filters Not DRY too less too much 株式会社 万葉2010年12月6日月曜日
  66. 66. Sapporo RubyKaigi 03 filters Not DRY Complex too less too much 株式会社 万葉2010年12月6日月曜日
  67. 67. Sapporo RubyKaigi 03 before-filters as conditions, not just pre-tasks before_filter には前提条件を 株式会社 万葉2010年12月6日月曜日
  68. 68. Sapporo RubyKaigi 03 :only :except 株式会社 万葉2010年12月6日月曜日
  69. 69. Sapporo RubyKaigi 03 before_filter :find_book :only => [:show, :edit, :update] 株式会社 万葉2010年12月6日月曜日
  70. 70. Sapporo RubyKaigi 03 choose simpler one ? 記述量で選ぶ? 株式会社 万葉2010年12月6日月曜日
  71. 71. Sapporo RubyKaigi 03 choose simpler one ? 記述量で選ぶ? 株式会社 万葉2010年12月6日月曜日
  72. 72. Sapporo RubyKaigi 03 Use :only always ! :only を 使いましょう! 株式会社 万葉2010年12月6日月曜日
  73. 73. Sapporo RubyKaigi 03 You can easily check which filter for which action どのアクションが どのフィルターを 通るかの可読性 株式会社 万葉2010年12月6日月曜日
  74. 74. Sapporo RubyKaigi 03 It’s hard to understand those do not appear 指定されてないもの は把握しづらい 株式会社 万葉2010年12月6日月曜日
  75. 75. Sapporo RubyKaigi 03 A except :show, :edit B only :show, :delete C except :index What filters for :show ? 株式会社 万葉2010年12月6日月曜日
  76. 76. Sapporo RubyKaigi 03 Think about future 未来のこと 株式会社 万葉2010年12月6日月曜日
  77. 77. Sapporo RubyKaigi 03 :except is effective on future actions :except は 未来を含む 株式会社 万葉2010年12月6日月曜日
  78. 78. Sapporo RubyKaigi 03 A except :show, :edit B only :show, :delete C except :index add :confirm 株式会社 万葉2010年12月6日月曜日
  79. 79. Sapporo RubyKaigi 03 Do you like adding filters or removing filters ? 実装を足したい? 引きたい? 株式会社 万葉2010年12月6日月曜日
  80. 80. Sapporo RubyKaigi 03 All or :only 株式会社 万葉2010年12月6日月曜日
  81. 81. Sapporo RubyKaigi 03 private protected public 株式会社 万葉2010年12月6日月曜日
  82. 82. Sapporo RubyKaigi 03 rescue errors 例外処理 株式会社 万葉2010年12月6日月曜日
  83. 83. Sapporo RubyKaigi 03 rescues in actions are rare アクション内の 独自例外処理が 必要なことは稀 株式会社 万葉2010年12月6日月曜日
  84. 84. Sapporo RubyKaigi 03 People from Java often rescue errors too much 特にJavaから 来るとやりすぎる 株式会社 万葉2010年12月6日月曜日
  85. 85. Sapporo RubyKaigi 03 checks and modifications of parameters パラメータの チェックや加工 株式会社 万葉2010年12月6日月曜日
  86. 86. Sapporo RubyKaigi 03 There might be better ways もっと練れる ケースがある 株式会社 万葉2010年12月6日月曜日
  87. 87. Sapporo RubyKaigi 03 into Models if params[:skip_preview] == 1 ... 株式会社 万葉2010年12月6日月曜日
  88. 88. Sapporo RubyKaigi 03 into Models if params[:skip_preview] == 1 ... 株式会社 万葉2010年12月6日月曜日
  89. 89. Sapporo RubyKaigi 03 into Models if params[:skip_preview] == 1 ... params[:book][:skip_preview] 株式会社 万葉2010年12月6日月曜日
  90. 90. Sapporo RubyKaigi 03 into Models if params[:skip_preview] == 1 ... params[:book][:skip_preview] attr_accessor :skip_preview ... if skip_preview? ... 株式会社 万葉2010年12月6日月曜日
  91. 91. Sapporo RubyKaigi 03 transactions 株式会社 万葉2010年12月6日月曜日
  92. 92. Sapporo RubyKaigi 03 Most transaction blocks in controllers are not really necessary コントローラでの トランザクションは 不要なことが多い 株式会社 万葉2010年12月6日月曜日
  93. 93. Sapporo RubyKaigi 03 • それコールバックで(r Use AR callbacks • モデルの専用メソッド Move it into an original method in the model 株式会社 万葉2010年12月6日月曜日
  94. 94. Sapporo RubyKaigi 03 Abstraction 抽象化 株式会社 万葉2010年12月6日月曜日
  95. 95. Sapporo RubyKaigi 03 Good ApplicationController filters, utilities Admin::BaseController filters, utilities Admin::UsersController actions filters, utilities 株式会社万葉2010年12月6日月曜日
  96. 96. Sapporo RubyKaigi 03 Bad ApplicationController actions filters, utilities Admin::BaseController actions filters, utilities Admin::UsersController actions filters, utilities 株式会社万葉2010年12月6日月曜日
  97. 97. Sapporo RubyKaigi 03 Why bad ? Controller A B C Controller Controller A B C A B D 株式会社 万葉2010年12月6日月曜日
  98. 98. Sapporo RubyKaigi 03 Why bad ? Controller A B C Controller Controller A B C A B ? D 株式会社万葉2010年12月6日月曜日
  99. 99. Sapporo RubyKaigi 03 Why bad ? Controller A B C view ? Controller Controller A B C A B ? view D view 株式会社万葉2010年12月6日月曜日
  100. 100. Sapporo RubyKaigi 03 Why bad ? Controller A B C view ? Controller Controller A B C A B ? view D view 株式会社万葉2010年12月6日月曜日
  101. 101. Sapporo RubyKaigi 03 Sharing actions is tough アクション共有は 難易度が高い 株式会社 万葉2010年12月6日月曜日
  102. 102. Sapporo RubyKaigi 03 Be prudent to share actions 慎重になるべき 株式会社 万葉2010年12月6日月曜日
  103. 103. Sapporo RubyKaigi 03 Use mix-in for action sharing アクション共有には 継承よりMix-in 株式会社 万葉2010年12月6日月曜日
  104. 104. Sapporo RubyKaigi 03 Share views using partials, not via abstraction ビューは継承でなく パーシャルで 株式会社 万葉2010年12月6日月曜日
  105. 105. Sapporo RubyKaigi 03 Possible Module Module C A B Controller Controller A B C A B D 株式会社 万葉2010年12月6日月曜日
  106. 106. Sapporo RubyKaigi 03 Possible Module Module C A B Controller Controller A B C A B view D view partial views 株式会社 万葉2010年12月6日月曜日
  107. 107. Sapporo RubyKaigi 03 Model (ActiveRecord) 株式会社 万葉2010年12月6日月曜日
  108. 108. Sapporo RubyKaigi 03 attr_protected attr_accessible 株式会社 万葉2010年12月6日月曜日
  109. 109. Sapporo RubyKaigi 03 Protect model from evil params 不正なパラメータから モデルを守る # {:book => {:user_id => 10, ...}} Book.create(params[:book]) 株式会社 万葉2010年12月6日月曜日
  110. 110. Sapporo RubyKaigi 03 Example attr_protected :hashed_password, :salt, :activated attr_accessible :name, :email 株式会社 万葉2010年12月6日月曜日
  111. 111. Sapporo RubyKaigi 03 Choose simpler one? 記述がシンプルに なるほうを選ぶ? 株式会社 万葉2010年12月6日月曜日
  112. 112. Sapporo RubyKaigi 03 Use attr_protected always ! attr_protected を使いましょう! 株式会社 万葉2010年12月6日月曜日
  113. 113. Sapporo RubyKaigi 03 More readable? Yes. And.. 可読性も さることながら 株式会社 万葉2010年12月6日月曜日
  114. 114. Sapporo RubyKaigi 03 Awful accidents happen if you use attr_accessible ! attr_accessible は事故のもと! 株式会社 万葉2010年12月6日月曜日
  115. 115. Sapporo RubyKaigi 03 Trouble with NEW attributes 新しい属性を 追加するときに つまづく 株式会社 万葉2010年12月6日月曜日
  116. 116. Sapporo RubyKaigi 03 attr_accessible :name, :email :address :kana_name :phone_number Rejecting future attributes 未来に追加される 属性も拒絶指定 株式会社 万葉2010年12月6日月曜日
  117. 117. Sapporo RubyKaigi 03 Especially it’s dangerous for beginners ! 特に新人が! 株式会社 万葉2010年12月6日月曜日
  118. 118. Sapporo RubyKaigi 03 “Well, I added a column but it’s not saved...” 「カラムを追加した んですがセーブされ ません...」 株式会社 万葉2010年12月6日月曜日
  119. 119. Sapporo RubyKaigi 03 time will be lost 時間が失われる 株式会社 万葉2010年12月6日月曜日
  120. 120. Sapporo RubyKaigi 03 Really hard if it’s used in super class, modules or plug-ins ! 継承元や モジュールや プラグインで 使われていたら なお大変! ?1 new attribute 株式会社 万葉2010年12月6日月曜日
  121. 121. Sapporo RubyKaigi 03 Really hard if it’s used in super class, modules or plug-ins ! 継承元や attr_accessible モジュールや プラグインで 使われていたら なお大変! ?1 new attribute 株式会社 万葉2010年12月6日月曜日
  122. 122. Sapporo RubyKaigi 03 Really hard if it’s used in super class, modules or plug-ins ! 継承元や attr_accessible モジュールや プラグインで 使われていたら なお大変! ?1 new attribute 株式会社 万葉2010年12月6日月曜日
  123. 123. Sapporo RubyKaigi 03 attr_accessible 株式会社 万葉2010年12月6日月曜日
  124. 124. Sapporo RubyKaigi 03 attr_accessible 株式会社 万葉2010年12月6日月曜日
  125. 125. Sapporo RubyKaigi 03 ! 株式会社 万葉2010年12月6日月曜日
  126. 126. Sapporo RubyKaigi 03 Use ! if you believe it can be saved 保存されることを 確信してるなら ! 株式会社 万葉2010年12月6日月曜日
  127. 127. Sapporo RubyKaigi 03 This might fail 失敗する可能性 def some_action @obj.save end 株式会社 万葉2010年12月6日月曜日
  128. 128. Sapporo RubyKaigi 03 • save • save! • create • update_attribute 株式会社 万葉2010年12月6日月曜日
  129. 129. Sapporo RubyKaigi 03 Callbacks 株式会社 万葉2010年12月6日月曜日
  130. 130. Sapporo RubyKaigi 03 I don’t know why this won’t be saved... 「なぜか保存されな いんですけど...」 株式会社 万葉2010年12月6日月曜日
  131. 131. Sapporo RubyKaigi 03 set and cry before_validation :set_sweet_flag private def set_sweet_flag @my_sweet_flag = happy? end 株式会社 万葉2010年12月6日月曜日
  132. 132. Sapporo RubyKaigi 03 before_validation :set_sweet_flag private def set_sweet_flag @my_sweet_flag = happy? true end 株式会社 万葉2010年12月6日月曜日
  133. 133. Sapporo RubyKaigi 03 Validation 検証まわり 株式会社 万葉2010年12月6日月曜日
  134. 134. Sapporo RubyKaigi 03 need another 30min. また今度 株式会社 万葉2010年12月6日月曜日
  135. 135. Sapporo RubyKaigi 03 Use associations 関連をつかう 株式会社 万葉2010年12月6日月曜日
  136. 136. Sapporo RubyKaigi 03 finding by a foreign key ? FKでの検索はあやしい @books = Book.where(:user_id => current_user.id) 株式会社 万葉2010年12月6日月曜日
  137. 137. Sapporo RubyKaigi 03 finding by a foreign key ? FKでの検索はあやしい @books = Book.where(:user_id => current_user.id) @books = current_user.books 株式会社 万葉2010年12月6日月曜日
  138. 138. Sapporo RubyKaigi 03 However, sometimes FK is better than object 逆に 関連オブジェクト よりFKがいいことも 株式会社 万葉2010年12月6日月曜日
  139. 139. Sapporo RubyKaigi 03 avoid unnecessary SQL 不要な検索を避ける if book.publisher.id 株式会社 万葉2010年12月6日月曜日
  140. 140. Sapporo RubyKaigi 03 avoid unnecessary SQL 不要な検索を避ける if book.publisher.id if book.publisher_id 株式会社 万葉2010年12月6日月曜日
  141. 141. Sapporo RubyKaigi 03 raise errors 例外をなげよう 株式会社 万葉2010年12月6日月曜日
  142. 142. Sapporo RubyKaigi 03 App’s original error classes are expected 独自例外クラスは あるのが普通 株式会社 万葉2010年12月6日月曜日
  143. 143. Sapporo RubyKaigi 03 routes.rb 株式会社 万葉2010年12月6日月曜日
  144. 144. Sapporo RubyKaigi 03 routes should be organized by controllers, not resources コントローラ別に 整理 株式会社 万葉2010年12月6日月曜日
  145. 145. Sapporo RubyKaigi 03 Comments 株式会社 万葉2010年12月6日月曜日
  146. 146. Sapporo RubyKaigi 03 Reason is required where the code is not natural コードが不自然なと ころに理由を書く 株式会社 万葉2010年12月6日月曜日
  147. 147. Sapporo RubyKaigi 03 Things unnatural 「不自然」の例 • Leaving code commented out コードのコメントアウトを残してる • not using common helper method ヘルパーメソッドを使っていない • checking it’s really nil falseとnilを区別してる2010年12月6日月曜日 • etc... 株式会社 万葉
  148. 148. Sapporo RubyKaigi 03 comments should be checked in code reviews あるべきコメントが ないのも指摘する 株式会社 万葉2010年12月6日月曜日
  149. 149. Sapporo RubyKaigi 03 The last topic 最後にひとつ 株式会社 万葉2010年12月6日月曜日
  150. 150. Sapporo RubyKaigi 03 Why I have English on my slides スライドに 英語を入れる理由 株式会社 万葉2010年12月6日月曜日
  151. 151. Sapporo RubyKaigi 03 Not because it’s cool かっこいい からじゃないです 株式会社 万葉2010年12月6日月曜日
  152. 152. Sapporo RubyKaigi 03 To get more readers after my talk is over 後から読める人が 増えるから 株式会社 万葉2010年12月6日月曜日
  153. 153. Sapporo RubyKaigi 03 future 未来 株式会社 万葉2010年12月6日月曜日
  154. 154. Sapporo RubyKaigi 03 Somebody else 自分でない誰か 株式会社 万葉2010年12月6日月曜日
  155. 155. Sapporo RubyKaigi 03 I think imaging future and somebody else is efficient 意識すると いい気がする 株式会社 万葉2010年12月6日月曜日
  156. 156. Sapporo RubyKaigi 03 Write code feeling the mass 集合体の一部として コードを書く 株式会社 万葉2010年12月6日月曜日
  157. 157. Sapporo RubyKaigi 03 Thank you! 株式会社 万葉2010年12月6日月曜日

×