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
680
デザインパターンを掘り下げよう ~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
480
PHP 8.3で追加されたjson_validate()を徹底的に深掘りしてみよう
mashirou1234
1
1.5k
Laravelで共通処理ってどうやるの?
mashirou1234
1
1.6k
改めて見返す「Laravel」とは
mashirou1234
0
360
PHPでドメイン駆動設計を浸透するためにやったことと現状
mashirou1234
0
1.1k
AWS_Lambda_にCustom_Runtimeで_PHPを導入したシステムに改修を加えて_UT導入まで行った話.pdf
mashirou1234
0
590
設計文化のないチームに文化を広めたが冴えない一手で混沌を招いた話を聞いてほしい.pdf
mashirou1234
0
1.5k
Factfullnessは思考ジャックできる良ツールな件について
mashirou1234
0
210
設計忘れからやってはいけない対症療法
mashirou1234
1
740
Featured
See All Featured
Optimizing for Happiness
mojombo
376
70k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
Designing for humans not robots
tammielis
250
25k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Making Projects Easy
brettharned
116
6k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
620
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
Facilitating Awesome Meetings
lara
51
6.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
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