Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PHPカンファレンス関西2013「関心を分離するってどういうこと?」講演資料
Search
hidenorigoto
June 02, 2013
Programming
1.7k
1
Share
PHPカンファレンス関西2013「関心を分離するってどういうこと?」講演資料
PHPカンファレンス関西2013 講演資料
hidenorigoto
June 02, 2013
More Decks by hidenorigoto
See All by hidenorigoto
ドメインと向き合う - 旅行予約編
hidenorigoto
4
1.2k
「ソフトウェア設計」のドメイン - 「データモデリングでドメインを駆動する」を読んで
hidenorigoto
10
3.4k
メルカリ バックエンド領域のこれまでとこれから
hidenorigoto
1
610
メルカリのエンジニアリング組織の変化〜Engineering Managerの視点から〜
hidenorigoto
0
8.7k
The changes of the engineering organization in Mercari - from the view of an engineering manager -
hidenorigoto
0
340
PHPerKaigi 2019 ランチセッション (3/31)
hidenorigoto
1
4.4k
抽象化って何? (What is abstraction?)
hidenorigoto
9
4.8k
抽象化って何? (What is abstraction?)
hidenorigoto
11
7.5k
続・SOLIDの原則ってどんなふうに使うの? 〜オープン・クローズドの原則 センパイのコーディングノート編〜
hidenorigoto
14
6.4k
Other Decks in Programming
See All in Programming
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
220
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.5k
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
420
Inside Stream API
skrb
1
610
Swiftのレキシカルスコープ管理
kntkymt
0
210
Lessons from Spec-Driven Development
simas
PRO
0
120
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.8k
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
230
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
120
SPMマルチモジュールで テストカバレッジを取得する技法
yosshi4486
0
140
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
500
さぁV100、メモリをお食べ・・・
nilpe
0
130
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
160
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
150
It's Worth the Effort
3n
188
29k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
200
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
160
Navigating Team Friction
lara
192
16k
Visualization
eitanlees
152
17k
Designing Experiences People Love
moore
143
24k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Google's AI Overviews - The New Search
badams
0
1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Transcript
関心を分離するって どういうこと? PHPメンターズ 後藤 秀宣 @hidenorigoto 1 PHPカンファレンス関西2013 2013.06.01 136݄1༵
対象の方 2 136݄1༵
対象の方 • なんとなく動くものは作れるけど、より よい作り方を知りたい 2 136݄1༵
対象の方 • なんとなく動くものは作れるけど、より よい作り方を知りたい • 今後もPHPを使い続けていいのか迷ってい る 2 136݄1༵
対象の方 • なんとなく動くものは作れるけど、より よい作り方を知りたい • 今後もPHPを使い続けていいのか迷ってい る • エンジニアとして成長したいが、何を学 ぶべきか分からない
2 136݄1༵
1. HTML 3 136݄1༵
4 136݄1༵
5 136݄1༵
6 136݄1༵
7 全部一体となったHTML HTML 文書の構造と データ CSS 見た目 分離 136݄1༵
8 HTML 文書の 構造と データ CSS 見た目 136݄1༵
8 HTML 文書の 構造と データ CSS 見た目 136݄1༵
8 HTML 文書の 構造と データ CSS 見た目 136݄1༵
8 HTML 文書の 構造と データ CSS 見た目 相手の詳細を 知らない 136݄1༵
9 相手の詳細を知らない • 相手の仕事は相手に任せる • 信頼する • 自分の仕事だけに集中する Separation of
Concerns 関心事の分離 136݄1༵
関心事の分離 • 大きな問題を小さく分けて扱う • Separation of Concerns(SoC) • ソフトウェア開発で常に課題とされてき た
• 関心事の分離を促進するために、新し いパラダイムが生まれる 10 136݄1༵
アーキテクチャー 11 136݄1༵
アーキテクチャー • 分離したものを全体として機能させるた めの、ゆるい制約、基盤 11 136݄1༵
アーキテクチャー • 分離したものを全体として機能させるた めの、ゆるい制約、基盤 • HTMLとCSSとを分離して扱えるアーキテク チャー • Webデザイナーさん、HTMLコーダーさん は、このアーキテクチャーをベースに
仕事をしている 11 136݄1༵
分離のデメリット • HTMLを書く人とCSSを書く人が同じであっ たりする • HTMLとCSSを同時に考えていることも多い • 分かれていることで、思考の中断が起 きる 12
136݄1༵
分離のデメリット • HTMLを書く人とCSSを書く人が同じであっ たりする • HTMLとCSSを同時に考えていることも多い • 分かれていることで、思考の中断が起 きる 12
道具で歴史を進める 136݄1༵
13 136݄1༵
14 136݄1༵
15 command + E 136݄1༵
16 136݄1༵
16 関心事の分離に基 づく構造 136݄1༵
16 関心事の分離に基 づく構造 編集作業時に扱い たい単位での統合 136݄1༵
17 ここまでのまとめ • 関心事を分離して扱う • 分離して扱うための基盤がある • 分離して扱うことで、より大きな、複雑 な問題へ立ち向かっていける 136݄1༵
分離とメンタルモデル 18 136݄1༵
分離とメンタルモデル • 人が現実世界の何かを概念化したもの 18 136݄1༵
分離とメンタルモデル • 人が現実世界の何かを概念化したもの • HTMLとCSSの分離 • 標準的な分離方法 • 話が通じやすい 18
136݄1༵
分離とメンタルモデル • 人が現実世界の何かを概念化したもの • HTMLとCSSの分離 • 標準的な分離方法 • 話が通じやすい 18
分離の仕方 メンタルモデル 136݄1༵
分離の仕方 19 136݄1༵
分離の仕方 • MVC • レイヤー化アーキテクチャー • ドメイン駆動設計 • 歴史的なコンポーネント •
デザインパターン • オブジェクト指向 • アスペクト(AOP) 20 136݄1༵
MVC • モデル、ビュー、コントローラに分けて考え ましょう • 実装にはさまざまなパターンがある 21 136݄1༵
22 レイヤー化アーキテクチャー A B C D E F 136݄1༵
22 レイヤー化アーキテクチャー A B C D E F 136݄1༵
22 レイヤー化アーキテクチャー A B C D E F 136݄1༵
22 レイヤー化アーキテクチャー A B C D E F 136݄1༵
22 レイヤー化アーキテクチャー A B C D E F 136݄1༵
23 ドメイン駆動設計 136݄1༵
23 ドメイン駆動設計 136݄1༵
歴史的なコンポーネント • ルーティング 24 136݄1༵
共通知識 • 関心事の分離方法に、業界で長く使われ てきた手法がある • 先人の知恵・知見 • ベストプラクティス 25 136݄1༵
PHPでは? • PHP自体は、共通知識を尊重する方向へ向 かっている • PHP 5.3以降のオブジェクト指向機能の 強化、名前空間 • 共通知識を尊重するフレームワーク、コ
ンポーネント • Symfony、PHPUnit、Phake、Doctrine Behat、PHPSpec 26 136݄1༵
まとめ 27 136݄1༵
まとめ • 関心事の分離 • 標準的な分け方を知ろう • メンタルモデルを育てよう 27 136݄1༵
まとめ • 関心事の分離 • 標準的な分け方を知ろう • メンタルモデルを育てよう • ソフトウェアエンジニアとして生き残っ ていくための知識となる
27 136݄1༵
まとめ • 関心事の分離 • 標準的な分け方を知ろう • メンタルモデルを育てよう • ソフトウェアエンジニアとして生き残っ ていくための知識となる
• フレームワーク、言語をも超えた知識 27 136݄1༵
まとめ • 関心事の分離 • 標準的な分け方を知ろう • メンタルモデルを育てよう • ソフトウェアエンジニアとして生き残っ ていくための知識となる
• フレームワーク、言語をも超えた知識 • 長く役に立つ 27 136݄1༵
28 136݄1༵
28 堂々と PHPを 使おう! 136݄1༵
29 参考書籍 136݄1༵
ドメイン駆動設計 30 • 基本的な考え方・取 り組み方から、実践 に適用可能なパター ンまで幅広く解説 136݄1༵
PofEAA • 現在のフレームワー ク等でも使われてい るパターンが多数収 録 31 136݄1༵