SlideShare ist ein Scribd-Unternehmen logo
1 von 69
田 
    文              手      
文
http://www.flickr.com/photos/rosenfeldmedia/3978121391/
http://www.flickr.com/photos/jurvetson/179214616/
http://www.flickr.com/photos/improveit/644371749/
手
http://www.flickr.com/photos/katerha/5021009210/
http://www.flickr.com/photos/etiennepadin/422763658/
http://www.flickr.com/photos/73159082@N00/365822592/
http://www.flickr.com/photos/davemorris/21853625/
 
NoMethodError:
private method `sub' called
       for nil:NilClass
NoMethodError:
private method `sub' called
       for nil:NilClass
NoMethodError:
private method `sub' called
       for nil:NilClass
app/ext/search_btn_ext/search_btn_ext.rb
                      /views/
                      /stylesheet/
                      /images/
                      /spec/
app/ext/search_btn_ext/search_btn_ext.rb
                      /views
                      /stylesheet
                      /images
                      /spec
app/ext/search_btn_ext/search_btn_ext.rb
一目
Proto
                                                          Type
                                                   Text




http://www.flickr.com/photos/zeevveez/2853759644/
app/ext/search_btn_ext/search_btn_ext.rb
module SearchBtnExt
  active_if :staff

  scope(:view) do
    callback(:search_btn) do
      new_search_btn_tag
    end
  end
end
module SearchBtnExt
  active_if :staff

  scope(:view) do
    callback(:search_btn) do
      new_search_btn_tag
    end
  end
end
module SearchBtnExt
  active_if :staff

  scope(:view) do
    callback(:search_btn) do
      new_search_btn_tag
    end
  end
end
module SearchBtnExt
  active_if :staff

  scope(:view) do
    callback(:search_btn) do
      new_search_btn_tag
    end
  end
end
module SearchBtnExt
  active_if :staff

  scope(:view) do
    callback(:search_btn) do
      new_search_btn_tag
    end
  end
end
module SearchBtnExt
  active_if :staff

  scope(:view) do
    callback(:search_btn) do
      new_search_btn_tag
    end
  end
end



= search_btn_tag
module SearchBtnExt
  active_if :staff

  scope(:view) do
    callback(:search_btn) do
      new_search_btn_tag
    end
  end
end



= invoke :search_btn_ext, :search_btn do
  search_btn_tag
module SearchBtnExt
       SearchBtnExt
  active_if :staff

  scope(:view) do
    callback(:search_btn) do
             :search_btn
      new_search_btn_tag
    end
  end
end



= invoke :search_btn_ext, :search_btn do
  search_btn_tag
一
module BookExt
  ...
  models do
    expand(‘User’) do
      has_one :book
      def my_book_name
        self.ext.book.name
      end
    end
  end
end
module BookExt
  ...
  models do
    expand(‘User’) do
      has_one :book
      def my_book_name
        self.ext.book.name
      end
    end
  end
end
module BookExt
  ...
  models do
    expand(‘User’) do
      has_one :book
      def my_book_name
        self.ext.book.name
      end
    end
  end
end
module BookExt
  ...
  models do
    expand(‘User’) do
      has_one :book
      def my_book_name
        self.ext.book.name
      end
    end
  end
end
module BookExt
  ...
  models do
    expand(‘User’) do
      has_one :book
      def my_book_name
        self.ext.book.name
      end
    end
  end
end


user.ext.book
user.ext.my_book_name
http://www.oreillymaker.com/link/43029/ajaxon-extnsion/
module SmileExt
  active_if :staff
  async_view do
    def html
      smile_tag
    end
  end
end
module SmileExt
  active_if :staff
  async_view do
    def html
      smile_tag
    end
  end
end




= cookpad_logo
module SmileExt
  active_if :staff
  async_view do
    def html
      smile_tag
    end
  end
end




= cookpad_logo
= async_view :smile_ext
一
http://www.flickr.com/photos/8136496@N05/1811017341/
http://www.flickr.com/photos/8136496@N05/1811017341/
見    行
    心
方
高
どんどん使う

Weitere ähnliche Inhalte

Ähnlich wie どんどん使う

Curso Symfony - Clase 3
Curso Symfony - Clase 3Curso Symfony - Clase 3
Curso Symfony - Clase 3Javier Eguiluz
 
Ruby on rails
Ruby on rails Ruby on rails
Ruby on rails Mohit Jain
 
KCDC 2018 - Rapid API Development with Sails
KCDC 2018 - Rapid API Development with SailsKCDC 2018 - Rapid API Development with Sails
KCDC 2018 - Rapid API Development with SailsJustin James
 
AlarmClockAlarmClockAlarmClock.Designer.vbGlobal.Microsoft..docx
AlarmClockAlarmClockAlarmClock.Designer.vbGlobal.Microsoft..docxAlarmClockAlarmClockAlarmClock.Designer.vbGlobal.Microsoft..docx
AlarmClockAlarmClockAlarmClock.Designer.vbGlobal.Microsoft..docxgalerussel59292
 
Curso Symfony - Clase 2
Curso Symfony - Clase 2Curso Symfony - Clase 2
Curso Symfony - Clase 2Javier Eguiluz
 
H3 경쟁력있는 웹앱 개발을 위한 모바일 js 프레임웍
H3 경쟁력있는 웹앱 개발을 위한 모바일 js 프레임웍H3 경쟁력있는 웹앱 개발을 위한 모바일 js 프레임웍
H3 경쟁력있는 웹앱 개발을 위한 모바일 js 프레임웍민태 김
 
Testing My Patience
Testing My PatienceTesting My Patience
Testing My PatienceAdam Lowry
 
StirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsStirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsJustin James
 
WordPress plugin #3
WordPress plugin #3WordPress plugin #3
WordPress plugin #3giwoolee
 
OSDC 2009 Rails Turtorial
OSDC 2009 Rails TurtorialOSDC 2009 Rails Turtorial
OSDC 2009 Rails TurtorialYi-Ting Cheng
 
Curso Symfony - Clase 4
Curso Symfony - Clase 4Curso Symfony - Clase 4
Curso Symfony - Clase 4Javier Eguiluz
 
Ajax nested form and ajax upload in rails
Ajax nested form and ajax upload in railsAjax nested form and ajax upload in rails
Ajax nested form and ajax upload in railsTse-Ching Ho
 
Sherlock Markup and Sammy Semantic - drupal theming forensic analysis
Sherlock Markup and Sammy Semantic - drupal theming forensic analysisSherlock Markup and Sammy Semantic - drupal theming forensic analysis
Sherlock Markup and Sammy Semantic - drupal theming forensic analysisAndreas Sahle
 
Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015
Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015
Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015Sergii Khomenko
 

Ähnlich wie どんどん使う (20)

Curso Symfony - Clase 3
Curso Symfony - Clase 3Curso Symfony - Clase 3
Curso Symfony - Clase 3
 
Ruby on rails
Ruby on rails Ruby on rails
Ruby on rails
 
KCDC 2018 - Rapid API Development with Sails
KCDC 2018 - Rapid API Development with SailsKCDC 2018 - Rapid API Development with Sails
KCDC 2018 - Rapid API Development with Sails
 
AlarmClockAlarmClockAlarmClock.Designer.vbGlobal.Microsoft..docx
AlarmClockAlarmClockAlarmClock.Designer.vbGlobal.Microsoft..docxAlarmClockAlarmClockAlarmClock.Designer.vbGlobal.Microsoft..docx
AlarmClockAlarmClockAlarmClock.Designer.vbGlobal.Microsoft..docx
 
Curso Symfony - Clase 2
Curso Symfony - Clase 2Curso Symfony - Clase 2
Curso Symfony - Clase 2
 
H3 경쟁력있는 웹앱 개발을 위한 모바일 js 프레임웍
H3 경쟁력있는 웹앱 개발을 위한 모바일 js 프레임웍H3 경쟁력있는 웹앱 개발을 위한 모바일 js 프레임웍
H3 경쟁력있는 웹앱 개발을 위한 모바일 js 프레임웍
 
Testing My Patience
Testing My PatienceTesting My Patience
Testing My Patience
 
StirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsStirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with Sails
 
Message in a bottle
Message in a bottleMessage in a bottle
Message in a bottle
 
WordPress plugin #3
WordPress plugin #3WordPress plugin #3
WordPress plugin #3
 
Hacking Movable Type
Hacking Movable TypeHacking Movable Type
Hacking Movable Type
 
OSDC 2009 Rails Turtorial
OSDC 2009 Rails TurtorialOSDC 2009 Rails Turtorial
OSDC 2009 Rails Turtorial
 
PyUIA 0.3
PyUIA 0.3PyUIA 0.3
PyUIA 0.3
 
Django
DjangoDjango
Django
 
Curso Symfony - Clase 4
Curso Symfony - Clase 4Curso Symfony - Clase 4
Curso Symfony - Clase 4
 
Comilla University
Comilla University Comilla University
Comilla University
 
Django Heresies
Django HeresiesDjango Heresies
Django Heresies
 
Ajax nested form and ajax upload in rails
Ajax nested form and ajax upload in railsAjax nested form and ajax upload in rails
Ajax nested form and ajax upload in rails
 
Sherlock Markup and Sammy Semantic - drupal theming forensic analysis
Sherlock Markup and Sammy Semantic - drupal theming forensic analysisSherlock Markup and Sammy Semantic - drupal theming forensic analysis
Sherlock Markup and Sammy Semantic - drupal theming forensic analysis
 
Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015
Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015
Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015
 

Kürzlich hochgeladen

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 

どんどん使う

Hinweis der Redaktion

  1. \n
  2. 本番\nプロトタイプ\n垣根 無くす\n
  3. \n
  4. ユーザに価値を提供する手法\n様々ある\nクックパッド 取り入れ 一定の成果\nただ、今までの手法では上手く解決できていなかった問題があります\n
  5. 実際使いたい\n使わないと分からない\n例 献立を決める\n使って 改善 イテレーション\n
  6. ユーザの声を聞きたい\n
  7. 達成できています\n事例を二つ紹介\n
  8. 新しい検索ボタン\n通常の検索か 人気検索か\n以前検索した方法記憶して 後はワンボタン\n
  9. 新しいデザイン\n画像が大きく\nぐっと見やすく\n
  10. では、どのように実現したか\n
  11. 解決しなければいけない課題 3つ\n
  12. 不安定なコード\nメインコード\n壊さない\n
  13. \n
  14. 速度がおちてはいけない。\n安全な品質を確保するために\nテストコード 過度のレビュー\n
  15. Extension Framework\n\n
  16. 順番に説明します\nまずは 安全 これにかんしては\n不安定な場合に どのような振る舞い 見せます\n
  17. 普段通りの検索ボタンがでます\n
  18. 普段通りの検索ボタンがでます\n
  19. 普段通りの検索ボタンがでます\n
  20. 普段通りの検索ボタンがでます\n
  21. 普段通りの検索ボタンがでます\n
  22. 普段通りの検索ボタンがでます\n
  23. 普段通りの検索ボタンがでます\n
  24. 普段通りの検索ボタンがでます\n
  25. 普段通りの検索ボタンがでます\n
  26. 普段通りの検索ボタンがでます\n
  27. 普段通りの検索ボタンがでます\n
  28. 不安定なコードとはいえ、\nエラーの監視 大丈夫\n
  29. 安全 OK\nつぎに品質\n不安定なコードをどうやって管理するか\n壊れてもいい とはいえ 不安定 汚いコード 混じる\n
  30. 機能単位にまとめ \n不安定なコードを切り離す\n\nCells\n\nコンポーネント指向 ライブラリ\n違い 再利用性は考えていない\n\n\n
  31. ディレクトリに機能単位\nCells\nコンポーネント指向\nいくつかのFeature\n\n
  32. 全てこのファイルで拡張\n以前は分割してた\n一つの方が楽\n\nコードの中身はのちほど\n\n
  33. \n
  34. ファイルが一つ\nテストがかける\nリファクタリングが出来る\n\n一定人数以上に公開する場合 テスト必須\nさらに マスターにマージ リファクタリング\n
  35. \n
  36. 品質 OK\n\n残るは開発速度\nここまでで 汚いコード 本番 だせる\nあとは、実装のしやすさです\n
  37. 先ほど このファイル 例\n実装 仕方 伝える\n
  38. 全体像\n
  39. \n
  40. 権限管理\nスタッフ限定\nエンジニア限定\n自分だけ\nターゲットユーザだけ\n
  41. 差し替えるコード\n\n
  42. 差し替えるコード\n\n
  43. 元のコード\n
  44. ブロックで囲む\n
  45. ブロックで囲む\n
  46. 普段通りの検索ボタンがでます\nちなみに Model\n
  47. 例えばBookExtという拡張を作ります\nModelの拡張\n透過的ではない\nExtension内部から\nExtで空間がかぶらない\n
  48. 例えばBookExtという拡張を作ります\nModelの拡張\n透過的ではない\nExtension内部から\nExtで空間がかぶらない\n
  49. Modelの拡張\n透過的ではない\nExtension内部から\nExtで空間がかぶらない\n
  50. Modelの拡張\n透過的ではない\nExtension内部から\nExtで空間がかぶらない\n
  51. Modelの拡張\n透過的ではない\nExtension内部から\nExtで空間がかぶらない\nhelperも同様\nClassMethodも実装出来ます\n影響を最小限\n
  52. また キャッシュページ Ajax\n
  53. 例えばBookExtという拡張を作ります\nModelの拡張\n透過的ではない\nExtension内部から\nExtで空間がかぶらない\n
  54. 例えばBookExtという拡張を作ります\nModelの拡張\n透過的ではない\nExtension内部から\nExtで空間がかぶらない\n
  55. 例えばBookExtという拡張を作ります\nModelの拡張\n透過的ではない\nExtension内部から\nExtで空間がかぶらない\n
  56. 例えばBookExtという拡張を作ります\nModelの拡張\n透過的ではない\nExtension内部から\nExtで空間がかぶらない\n
  57. \n
  58. \n
  59. 誘惑 全てをコンポーネントで実装\n一つの機能は分解すると複数の小さな機能\n厳密にコンポーネントで管理するのは大変\n連携 複雑性\nコンポーネント プロトタイプ 補助 \n
  60. 複雑に入り組みます\n\n
  61. ただ、多ければ良いという訳ではない\nきちんと削除していきたい\n
  62. 僕たち開発基盤グループ にとって\nユーザ と エンジニア\n
  63. 少し前につくれぽ検索をリリース\n其の前に一部のユーザに使ってもらい価値を確認\n
  64. \n
  65. 終わったら奇麗に除去する事が出来る\n\n他にもABテスト 検討\n
  66. \n
  67. \n