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
オブジェクト指向のこころ: 第2章 / DESIGN PATTERNS EXPLAINED: ...
Search
hideki kinjyo
PRO
August 24, 2021
Programming
0
62
オブジェクト指向のこころ: 第2章 / DESIGN PATTERNS EXPLAINED: chapter-2
会社で「オブジェクト指向のこころ」の読書会をやっています
hideki kinjyo
PRO
August 24, 2021
Tweet
Share
More Decks by hideki kinjyo
See All by hideki kinjyo
#phperbiglt のLT
o0h
PRO
0
72
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
240
symfony/mcp-bundleで、既存アプリケーションもお手軽にMCPサーバー化
o0h
PRO
1
120
組織もソフトウェアも難しく考えない、もっとシンプルな考え方で設計する #phpconfuk
o0h
PRO
10
5.6k
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
680
Composerの依存解決 #phpstudy
o0h
PRO
0
170
「影響が少ない」を自分の目でみてみる
o0h
PRO
4
2.4k
PHPによる"非"構造化プログラミング入門 -本当に熱いスパゲティコードを求めて- #phperkaigi
o0h
PRO
0
1.9k
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
23
5.4k
Other Decks in Programming
See All in Programming
Claude Codeログ基盤の構築
giginet
PRO
7
3.3k
ふつうのRubyist、ちいさなデバイス、大きな一年 / Ordinary Rubyists, Tiny Devices, Big Year
chobishiba
1
450
野球解説AI Agentを開発してみた - 2026/02/27 LayerX社内LT会資料
shinyorke
PRO
0
290
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
270
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
380
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
0
280
Understanding Apache Lucene - More than just full-text search
spinscale
0
120
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
230
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
290
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
110
How to stabilize UI tests using XCTest
akkeylab
0
130
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
550
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
160
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
860
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Building Applications with DynamoDB
mza
96
7k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
Deep Space Network (abreviated)
tonyrice
0
90
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
230
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
970
Transcript
第2章 UML統⼀モデリング⾔語 課題図書: オブジェクト指向のこころ: デザインパターンとともに学ぶ
͜ͷষͷॏཁͳΩʔϫʔυ • UML • モデリング • クラス図 • 関連 •
依存 • 集約 • コンポジション • 相互作⽤図(シーケンス図)
【突然のネタバレ】 この章ではUMLを扱いますが UML⾃体を学習することは 本書を読む上で些細なことだと思います
では、なぜ(1章を割くほど) UMLが「重要」なのか・・・?
UMLとは何か 2.2 UMLとは何か? 2.3 UMLを使う理由
UMLͬͯԿ͢Δͷͳͷ • 開発って「⼯程」があるでしょ • 分析、設計、実装・・・ • イメージを擦り合わせながら進めたいですよね? • って事はコミュニケーションが⼤事ですよね •
”UMLは主に、⾃分⾃⾝、チームメンバ、顧客とのコミュ ニケーションを図るために使⽤されます”
ίϛϡχέʔγϣϯͷͨΊͷUML • 「モデル」を使って話そーぜ、を出来るようにする • それによって、「実際にコード書いて動かす」の⼿前の段 階で「どういう感じになるかな?」の認識を揃える • 認識を揃えた上で、「ここはこうしたくない?」とか「ア レが⾜りなくない?」とかの議論も出来るようになる
UMLͳΜͯ”ΘΓΌ͍͍ͷΑ” ͬͯେޚॴ͕ݴͬͯ·ͨ͠ • 「実際にコード書かなくても認識揃えてコミュニケー ションとれるようにする」というのが重要で • そのための「気軽さ」をUMLは兼ね備えている • UMLは「何となく図形で分かる」ようなダイアグラムと なっている
• 未学習者でも説明しながら使えば伝わりそうなレベル • 「⽂法(記法)の正しさ」「情報の正確性(⾼解像)」より も「最低限の認識が揃う」のが⼤事だよ〜
ࢀߟ • スケッチとしてのUML https://bliki-ja.github.io/UmlAsSketch/ • Fowlerと軽量UML|オブジェクトの広場 https://www.ogis-ri.co.jp/otc/hiroba/specials/ MartinFowler/FowlersUML.html • 書籍「UMLモデリングのエッセンス」
ܹΦεεϝ
ຊॻʹͱͬͯͷUML • 全体を通じて、クラス図・シーケンス図が出てきます • クラス(オブジェクト)間の関係やどう作⽤し合うか?を 視覚的に表現するための⼿段として、くらいの位置づけ • なので「めっちゃ正確にUMLを覚えるぞ・・!」や 「⾼度な記法を覚えるぞ・・!」はいらないです •
ざっくり「あーはいはい、完全に理解した」でOK • ⾒慣れない記法が出てきたらその都度で調べましょ
(本書を読む上で)主要なダイアグラム 2.4 クラス図 2.5 相互作⽤図
Ϋϥεਤ クラスやクラス同⼠の関連性を⽰す(静的なモデリング)
ूͱίϯϙδγϣϯ • ある要素が他の要素を所有する(has)ことを「集約」 • サイクリスト has a⾃転⾞ • 集約の⼀形態に「コンポジション」がある •
⾃転⾞ is composed of gears • 違いは「集約は弱く、コンポジションは強く依存する」 • とは・・・?
ڧ͍ґଘɺऑ͍ґଘɺͦΜͳͷਓͷɾɾ • ⾔いたいことは「互いにどういう影響を及ぼしているの か?を強調したいね」って点 • なので、「私がいなくても⽣きていけるの・・?」みたい な情報は嬉しいですよね • (それによって、お互いの存在意義って変わるでしょ?)
ͬ͘͟Γίϯϙδγϣϯ • 端折った説明 • 集約: 部分が無くても全体が成り⽴つ • コンポジション: 部分は全体が無いと意味を成さない •
コンポジション関係だと、 「全体がdestructされた時に部分も破棄される」イメージ • この説明はちょっとミスリードかもだけども
ࢀߟ • オブジェクトの動的側⾯を⾒極める:【改訂版】初歩の UML - ITmedia エンタープライズ https://www.itmedia.co.jp/im/articles/0306/05/ news001.html •
やはりお前らのコンポジションは間違っている - Qiita https://qiita.com/turanukimaru/items/ 0b1396393908b7e22618
૬ޓ࡞༻ਤ クラス(オブジェクト)がどのようにメッセージングし合うか を⽰す(動的モデリング)