Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PHPカンファレンス関西2013「関心を分離するってどういうこと?」講演資料
Search
hidenorigoto
June 02, 2013
Programming
1
1.7k
PHPカンファレンス関西2013「関心を分離するってどういうこと?」講演資料
PHPカンファレンス関西2013 講演資料
hidenorigoto
June 02, 2013
Tweet
Share
More Decks by hidenorigoto
See All by hidenorigoto
ドメインと向き合う - 旅行予約編
hidenorigoto
4
1.1k
「ソフトウェア設計」のドメイン - 「データモデリングでドメインを駆動する」を読んで
hidenorigoto
10
3.3k
メルカリ バックエンド領域のこれまでとこれから
hidenorigoto
1
560
メルカリのエンジニアリング組織の変化〜Engineering Managerの視点から〜
hidenorigoto
0
8.4k
The changes of the engineering organization in Mercari - from the view of an engineering manager -
hidenorigoto
0
320
PHPerKaigi 2019 ランチセッション (3/31)
hidenorigoto
1
4.2k
抽象化って何? (What is abstraction?)
hidenorigoto
9
4.7k
抽象化って何? (What is abstraction?)
hidenorigoto
11
7.2k
続・SOLIDの原則ってどんなふうに使うの? 〜オープン・クローズドの原則 センパイのコーディングノート編〜
hidenorigoto
14
6.3k
Other Decks in Programming
See All in Programming
俺流レスポンシブコーディング 2025
tak_dcxi
13
6.9k
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
3
680
目的で駆動する、AI時代のアーキテクチャ設計 / purpose-driven-architecture
minodriven
11
3.8k
Building AI with AI
inesmontani
PRO
1
460
connect-python: convenient protobuf RPC for Python
anuraaga
0
340
How Software Deployment tools have changed in the past 20 years
geshan
0
27k
Evolving NEWT’s TypeScript Backend for the AI-Driven Era
xpromx
0
250
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
190
「文字列→日付」の落とし穴 〜Ruby Date.parseの意外な挙動〜
sg4k0
0
350
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
250
[SF Ruby Conf 2025] Rails X
palkan
0
400
20 years of Symfony, what's next?
fabpot
2
280
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.3k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
How GitHub (no longer) Works
holman
316
140k
GraphQLとの向き合い方2022年版
quramy
49
14k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Side Projects
sachag
455
43k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Scaling GitHub
holman
464
140k
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༵