Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
関心を分離するって どういうこと? PHPメンターズ 後藤 秀宣 @hidenorigoto 1 PHPカンファレンス関西2013 2013.06.01 136݄1༵
Slide 2
Slide 2 text
対象の方 2 136݄1༵
Slide 3
Slide 3 text
対象の方 • なんとなく動くものは作れるけど、より よい作り方を知りたい 2 136݄1༵
Slide 4
Slide 4 text
対象の方 • なんとなく動くものは作れるけど、より よい作り方を知りたい • 今後もPHPを使い続けていいのか迷ってい る 2 136݄1༵
Slide 5
Slide 5 text
対象の方 • なんとなく動くものは作れるけど、より よい作り方を知りたい • 今後もPHPを使い続けていいのか迷ってい る • エンジニアとして成長したいが、何を学 ぶべきか分からない 2 136݄1༵
Slide 6
Slide 6 text
1. HTML 3 136݄1༵
Slide 7
Slide 7 text
4 136݄1༵
Slide 8
Slide 8 text
5 136݄1༵
Slide 9
Slide 9 text
6 136݄1༵
Slide 10
Slide 10 text
7 全部一体となったHTML HTML 文書の構造と データ CSS 見た目 分離 136݄1༵
Slide 11
Slide 11 text
8 HTML 文書の 構造と データ CSS 見た目 136݄1༵
Slide 12
Slide 12 text
8 HTML 文書の 構造と データ CSS 見た目 136݄1༵
Slide 13
Slide 13 text
8 HTML 文書の 構造と データ CSS 見た目 136݄1༵
Slide 14
Slide 14 text
8 HTML 文書の 構造と データ CSS 見た目 相手の詳細を 知らない 136݄1༵
Slide 15
Slide 15 text
9 相手の詳細を知らない • 相手の仕事は相手に任せる • 信頼する • 自分の仕事だけに集中する Separation of Concerns 関心事の分離 136݄1༵
Slide 16
Slide 16 text
関心事の分離 • 大きな問題を小さく分けて扱う • Separation of Concerns(SoC) • ソフトウェア開発で常に課題とされてき た • 関心事の分離を促進するために、新し いパラダイムが生まれる 10 136݄1༵
Slide 17
Slide 17 text
アーキテクチャー 11 136݄1༵
Slide 18
Slide 18 text
アーキテクチャー • 分離したものを全体として機能させるた めの、ゆるい制約、基盤 11 136݄1༵
Slide 19
Slide 19 text
アーキテクチャー • 分離したものを全体として機能させるた めの、ゆるい制約、基盤 • HTMLとCSSとを分離して扱えるアーキテク チャー • Webデザイナーさん、HTMLコーダーさん は、このアーキテクチャーをベースに 仕事をしている 11 136݄1༵
Slide 20
Slide 20 text
分離のデメリット • HTMLを書く人とCSSを書く人が同じであっ たりする • HTMLとCSSを同時に考えていることも多い • 分かれていることで、思考の中断が起 きる 12 136݄1༵
Slide 21
Slide 21 text
分離のデメリット • HTMLを書く人とCSSを書く人が同じであっ たりする • HTMLとCSSを同時に考えていることも多い • 分かれていることで、思考の中断が起 きる 12 道具で歴史を進める 136݄1༵
Slide 22
Slide 22 text
13 136݄1༵
Slide 23
Slide 23 text
14 136݄1༵
Slide 24
Slide 24 text
15 command + E 136݄1༵
Slide 25
Slide 25 text
16 136݄1༵
Slide 26
Slide 26 text
16 関心事の分離に基 づく構造 136݄1༵
Slide 27
Slide 27 text
16 関心事の分離に基 づく構造 編集作業時に扱い たい単位での統合 136݄1༵
Slide 28
Slide 28 text
17 ここまでのまとめ • 関心事を分離して扱う • 分離して扱うための基盤がある • 分離して扱うことで、より大きな、複雑 な問題へ立ち向かっていける 136݄1༵
Slide 29
Slide 29 text
分離とメンタルモデル 18 136݄1༵
Slide 30
Slide 30 text
分離とメンタルモデル • 人が現実世界の何かを概念化したもの 18 136݄1༵
Slide 31
Slide 31 text
分離とメンタルモデル • 人が現実世界の何かを概念化したもの • HTMLとCSSの分離 • 標準的な分離方法 • 話が通じやすい 18 136݄1༵
Slide 32
Slide 32 text
分離とメンタルモデル • 人が現実世界の何かを概念化したもの • HTMLとCSSの分離 • 標準的な分離方法 • 話が通じやすい 18 分離の仕方 メンタルモデル 136݄1༵
Slide 33
Slide 33 text
分離の仕方 19 136݄1༵
Slide 34
Slide 34 text
分離の仕方 • MVC • レイヤー化アーキテクチャー • ドメイン駆動設計 • 歴史的なコンポーネント • デザインパターン • オブジェクト指向 • アスペクト(AOP) 20 136݄1༵
Slide 35
Slide 35 text
MVC • モデル、ビュー、コントローラに分けて考え ましょう • 実装にはさまざまなパターンがある 21 136݄1༵
Slide 36
Slide 36 text
22 レイヤー化アーキテクチャー A B C D E F 136݄1༵
Slide 37
Slide 37 text
22 レイヤー化アーキテクチャー A B C D E F 136݄1༵
Slide 38
Slide 38 text
22 レイヤー化アーキテクチャー A B C D E F 136݄1༵
Slide 39
Slide 39 text
22 レイヤー化アーキテクチャー A B C D E F 136݄1༵
Slide 40
Slide 40 text
22 レイヤー化アーキテクチャー A B C D E F 136݄1༵
Slide 41
Slide 41 text
23 ドメイン駆動設計 136݄1༵
Slide 42
Slide 42 text
23 ドメイン駆動設計 136݄1༵
Slide 43
Slide 43 text
歴史的なコンポーネント • ルーティング 24 136݄1༵
Slide 44
Slide 44 text
共通知識 • 関心事の分離方法に、業界で長く使われ てきた手法がある • 先人の知恵・知見 • ベストプラクティス 25 136݄1༵
Slide 45
Slide 45 text
PHPでは? • PHP自体は、共通知識を尊重する方向へ向 かっている • PHP 5.3以降のオブジェクト指向機能の 強化、名前空間 • 共通知識を尊重するフレームワーク、コ ンポーネント • Symfony、PHPUnit、Phake、Doctrine Behat、PHPSpec 26 136݄1༵
Slide 46
Slide 46 text
まとめ 27 136݄1༵
Slide 47
Slide 47 text
まとめ • 関心事の分離 • 標準的な分け方を知ろう • メンタルモデルを育てよう 27 136݄1༵
Slide 48
Slide 48 text
まとめ • 関心事の分離 • 標準的な分け方を知ろう • メンタルモデルを育てよう • ソフトウェアエンジニアとして生き残っ ていくための知識となる 27 136݄1༵
Slide 49
Slide 49 text
まとめ • 関心事の分離 • 標準的な分け方を知ろう • メンタルモデルを育てよう • ソフトウェアエンジニアとして生き残っ ていくための知識となる • フレームワーク、言語をも超えた知識 27 136݄1༵
Slide 50
Slide 50 text
まとめ • 関心事の分離 • 標準的な分け方を知ろう • メンタルモデルを育てよう • ソフトウェアエンジニアとして生き残っ ていくための知識となる • フレームワーク、言語をも超えた知識 • 長く役に立つ 27 136݄1༵
Slide 51
Slide 51 text
28 136݄1༵
Slide 52
Slide 52 text
28 堂々と PHPを 使おう! 136݄1༵
Slide 53
Slide 53 text
29 参考書籍 136݄1༵
Slide 54
Slide 54 text
ドメイン駆動設計 30 • 基本的な考え方・取 り組み方から、実践 に適用可能なパター ンまで幅広く解説 136݄1༵
Slide 55
Slide 55 text
PofEAA • 現在のフレームワー ク等でも使われてい るパターンが多数収 録 31 136݄1༵