Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
PHPカンファレンス関西2013「関心を分離するってどういうこと?」講演資料
Search
hidenorigoto
June 02, 2013
Programming
1.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PHPカンファレンス関西2013「関心を分離するってどういうこと?」講演資料
PHPカンファレンス関西2013 講演資料
hidenorigoto
June 02, 2013
More Decks by hidenorigoto
See All by hidenorigoto
ドメインと向き合う - 旅行予約編
hidenorigoto
4
1.2k
「ソフトウェア設計」のドメイン - 「データモデリングでドメインを駆動する」を読んで
hidenorigoto
10
3.5k
メルカリ バックエンド領域のこれまでとこれから
hidenorigoto
1
650
メルカリのエンジニアリング組織の変化〜Engineering Managerの視点から〜
hidenorigoto
0
8.9k
The changes of the engineering organization in Mercari - from the view of an engineering manager -
hidenorigoto
0
350
PHPerKaigi 2019 ランチセッション (3/31)
hidenorigoto
1
4.6k
抽象化って何? (What is abstraction?)
hidenorigoto
9
4.9k
抽象化って何? (What is abstraction?)
hidenorigoto
11
7.8k
続・SOLIDの原則ってどんなふうに使うの? 〜オープン・クローズドの原則 センパイのコーディングノート編〜
hidenorigoto
14
6.5k
Other Decks in Programming
See All in Programming
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
180
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.2k
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
260
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
120
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
310
Vue Fes Japan の “作る側”に関わってみて
naokihaba
1
180
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
120
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
180
Kotlinの15年とServer-Side Kotlin
n_takehata
1
160
phperだってパンチカードでコーディングしたい
o0h
PRO
0
380
Domain-Driven Transformation
hschwentner
2
2.3k
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
140
Featured
See All Featured
Speed Design
sergeychernyshev
33
2.2k
HDC tutorial
michielstock
2
970
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
GitHub's CSS Performance
jonrohan
1033
470k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Designing for humans not robots
tammielis
254
26k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
My Coaching Mixtape
mlcsv
0
360
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Building the Perfect Custom Keyboard
takai
2
910
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༵