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
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
570
メルカリのエンジニアリング組織の変化〜Engineering Managerの視点から〜
hidenorigoto
0
8.5k
The changes of the engineering organization in Mercari - from the view of an engineering manager -
hidenorigoto
0
330
PHPerKaigi 2019 ランチセッション (3/31)
hidenorigoto
1
4.3k
抽象化って何? (What is abstraction?)
hidenorigoto
9
4.7k
抽象化って何? (What is abstraction?)
hidenorigoto
11
7.3k
続・SOLIDの原則ってどんなふうに使うの? 〜オープン・クローズドの原則 センパイのコーディングノート編〜
hidenorigoto
14
6.3k
Other Decks in Programming
See All in Programming
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
7
4.3k
愛される翻訳の秘訣
kishikawakatsumi
3
370
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
710
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
530
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
15
4.4k
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.3k
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
180
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
1k
ゆくKotlin くるRust
exoego
1
190
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
160
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.4k
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
37
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
130
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
KATA
mclloyd
PRO
33
15k
Leo the Paperboy
mayatellez
1
1.3k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Why Our Code Smells
bkeepers
PRO
340
58k
Site-Speed That Sticks
csswizardry
13
1k
The Spectacular Lies of Maps
axbom
PRO
1
420
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
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༵