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
デザインパターンを掘り下げよう ~Singleton Pattern 編~
Search
mashirou1234
March 29, 2024
3
660
デザインパターンを掘り下げよう ~Singleton Pattern 編~
https://yumemi.connpass.com/event/310541/
mashirou1234
March 29, 2024
Tweet
Share
More Decks by mashirou1234
See All by mashirou1234
PHPUnitしか使ってこなかった 一般PHPerがPestに乗り換えた実録
mashirou1234
0
130
PHP 8.3で追加されたjson_validate()を徹底的に深掘りしてみよう
mashirou1234
1
1.4k
Laravelで共通処理ってどうやるの?
mashirou1234
1
1.5k
改めて見返す「Laravel」とは
mashirou1234
0
340
PHPでドメイン駆動設計を浸透するためにやったことと現状
mashirou1234
0
1k
AWS_Lambda_にCustom_Runtimeで_PHPを導入したシステムに改修を加えて_UT導入まで行った話.pdf
mashirou1234
0
560
設計文化のないチームに文化を広めたが冴えない一手で混沌を招いた話を聞いてほしい.pdf
mashirou1234
0
1.5k
Factfullnessは思考ジャックできる良ツールな件について
mashirou1234
0
190
設計忘れからやってはいけない対症療法
mashirou1234
1
730
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
How STYLIGHT went responsive
nonsquared
95
5.2k
Being A Developer After 40
akosma
87
590k
Automating Front-end Workflow
addyosmani
1366
200k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
510
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
Why Our Code Smells
bkeepers
PRO
335
57k
Designing Experiences People Love
moore
138
23k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Making the Leap to Tech Lead
cromwellryan
133
9k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Transcript
デザインパターンを 掘り下げよう ~Singleton Pattern 編~ 2024/03/29 設計カンファレンス extends OOC Gladiolus
LAB 代口勇真
今回 話す こと デザインパターンの話 Singleton Patternの理解 現代におけるSingleton Pattern そもそもの話 まとめ
自己紹介(間に合ったら)
陳謝 今回発表のコードにつきまして、作成期間の関係上 GPTツールを使って作成しております。 そのためコードの質については曖昧となってしまうことご了承ください。 (Claude3 Sonnetで出力) その上で、コードの具体的な説明は主題ではないため、ざっくり程度しか紹介 いたしませんのでよろしくお願いいたします。
デザインパターンの話
デザインパターンの話 一般的(デファクトスタンダート)な話です
デザインパターンの話 一般的(デファクトスタンダート)な話です ◦ 設計のノウハウ集の中でも、特にGoFがの4人が執筆した「オブジェクト指向 における再利用のためのデザインパターン」を指している ◦ デザインパターン本で説明しているのは主に23種の設計種別を解説 ◦ 実際デザインパターンは23だけではなく、マルチスレッド等にも踏み込むと もっとある
◦ 有名なのは Monitor, Lock, Scheduler, 近年はRepository ◦ 他にも色々とある(個人的にはReactorとかDouble-checked lockingとか👍) ◦ 設計手法もパターンと捉えると...考えるのをやめた
デザインパターンの話 GoFのデザインパターン本?
デザインパターンの話 GoFのデザインパターン本? ◦ Gang of Fourの略 ◦ エーリヒ・ガンマ ◦ リチャード・ヘルム
◦ ラルフ・ジョンソン ◦ ジョン・ブリシディース https://www.sbcr.jp/product/4797311126/
Singleton Patternの 理解
Singleton Patternの理解 Staticなinstanceで定義 constructのSingletonは privateなので直接呼べない 呼び出し時はgetInstanceメソッドで 呼び出しする Singletonクラスでoperationメソッドが 呼び出し可
Singleton Patternの理解 GoFが提唱していた(結集した内容の)概略
Singleton Patternの理解 GoFが提唱していた(結集した内容の)概略 C言語 C with classes '79 C++
Singleton Patternの理解 GoFが提唱していた(結集した内容の)概略 C言語 C with classes '79 C++
Singleton Patternの理解 1. 基本的な考えとして「他の言語に置き換えたらどうなる?」が原点 ◦ 柔らかく表現するなら「言語という文体が変わっても結果は同じになるよね」 2. 置き換えた結果、文法の違いはあれど本質は同一にすることが可能 3. ただし、本質を同一することができた代わりに弱点も生まれた
◦ Singletonの場合、グローバル変数を好き放題にできてしまう問題 DIして解決するやり方は、Singletonから生まれた課題の解決手法としてまさに適切といえる
Singleton Patternの理解 1. 基本的な考えとして「他の言語に置き換えたらどうなる?」が原点 ◦ 柔らかく表現するなら「言語という文体が変わっても結果は同じになるよね」 2. 置き換えた結果、文法の違いはあれど本質は同一にすることが可能 3. ただし、本質を同一することができた代わりに弱点も生まれた
◦ Singletonの場合、グローバル変数を好き放題にできてしまう問題 DIして解決するやり方は、Singletonから生まれた課題の解決手法としてまさに適切といえる 問題があるように見せかけているが、パターンというものはみんなで最も近しいものを 考えることが主題のため、このような問題が残されたままになるのは自然と考えます 問題を解決する = 仕組みを作る
Singleton Patternの理解 1. 基本的な考えとして「他の言語に置き換えたらどうなる?」が原点 ◦ 柔らかく表現するなら「言語という文体が変わっても結果は同じになるよね」 2. 置き換えた結果、文法の違いはあれど本質は同一にすることが可能 3. ただし、本質を同一することができた代わりに弱点も生まれた
◦ Singletonの場合、グローバル変数を好き放題にできてしまう問題 DIして解決するやり方は、Singletonから生まれた課題の解決手法としてまさに適切といえる 問題があるように見せかけているが、パターンというものはみんなで最も近しいものを 考えることが主題のため、このような問題が残されたままになるのは自然と考えます 問題を解決する = 仕組みを作る
現代におけるSingleton Pattern ◦ 例えば PHPとか
現代におけるSingleton Pattern ◦ 例えば PHPとか C言語
現代におけるSingleton Pattern ◦ 例えば PHPとか C言語
現代におけるSingleton Pattern ◦ 例えば TypeScriptとか C言語
あれ?
なんかみたことある?
そもそもの話
そもそもの話 勘違い的な話 - 1 ◦ デザインパターン、あるいはオブジェクト指向に強烈な幻想が生まれている ◦ これまでの紹介でもある通り、置き換えができるという紹介をしましたが、 それらは置き換えができないかを模索した結果であることを再度認識したいところ ◦
だけど実際に行われているのはすでにデザイン済パターンに 更なる重複デザインを行なっていることが多い(デザイン版: 車輪の再発明) ◦ e.g. SingletonパターンにSingletonパターンを入れようと変なことをしようとしている お仕事中の事件がありました(!?) ◦ 個人的には、この一件で自分の中にあるデザインパターンの理解と認識が崩れたことが オブジェクト指向という大きな夢物語からの脱却が始まったような記憶
そもそもの話 早くこの登壇動画を再履修したい https://speakerdeck.com/tanakahisateru/obuziekutozhi-xiang-zong-jiao-shi
そもそもの話 早くこのスライドと登壇動画を再履修したい https://fortee.jp/oocon-2024/proposal/a35177c1-aab0-47f3-bd98-030d7287dfea
そもそもの話 早くこのスライドと登壇動画を再履修したい https://speakerdeck.com/kishida/is-object-oriented-needed
そもそもの話 勘違い的な話 - 2 ◦ 銀の弾丸を求めすぎ ◦ もうないのはわかっているはずなのに、人類はまだあると信じて求めてしまう ◦ 私見として、デザインパターンが現代では大部分が提唱/実現が行われており、
今は次の段階に進む段階であって、プロダクト開発などの大きなステージへ進む タイミングに入ってきていると考えている ◦ レイヤーがどうこうというよりも、すでにデザインパターンという領域は 今の時代の言語を触っていればどういう形であれすでに履修しているもの ◦ みなさんはすでに仕事で使えるデザインパターンの概略は、もうマスターしてます!
そもそもの話 勘違い的な話 - 3 ◦ だからといって古臭いわけじゃない ◦ あれだけ言っておいてなんですが、言語でパターンは適応されているという話です ◦ なので、むしろ「この書き方ってデザインパターンでいう何だ……?」
というので自分のやっていることの理解を深めるツールとして使って欲しい という私見です(ココ重要)
まとめ
まとめ 1. デザインパターンは高水準言語を触れていれば、原則触れています ◦ 意識していないだけで確実に 2. デザインパターンよりも先に方々に説明しやすい資料作りの方が大事 ◦ 結局最後は人間とのコミュニケーションなので、やっぱり文章や説明力があるほうが 強い
3. でも、仕組みを知っていればより奥深い理解と説明力は上がると思います ◦ 知る必要はないわけはなく、フレーバーとして覚えておくことで今後のお役立ちにな ります ◦ みなさんゲームのフレーバーテキストを見たら考察することありませんか? それです
まとめ 伝えたかったこと デザインパターンはみんなの技術の中で使っています デザインパターンのその先を考えていきませんか? そこから先は本当のデザイン(設計)が待っています
まとめ 伝えたかったこと デザインパターンはみんなの技術の中で使っています デザインパターンのその先を考えていきませんか? そこから先は本当のデザイン(設計)が待っています Design starts here !!
Next...? ◦ DI ◦ SOLID原則 ◦ アーキテクチャー ◦ MVC ◦
IDDD(ヘキサゴナルアーキテクチャー) ◦ クリーンアーキテクチャー and more...
終わりに Q: Singleton Pattern編って書いておいてほぼ全編みたいな感じにしてるの 詐欺じゃないですか? A: 筆がノったらこうなりました。許して...
自己紹介 ◦ X Name: 柚口ましろう ◦ X ID: yu_mashirou ◦
本名: 代口勇真 ◦ 株式会社 Gladiolus LAB 秋葉原にある会社でいろんなことをやっています SES 受託開発 自社開発(今頑張ってる!)
EOL