$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
その設計、 本当に価値を生んでますか?
Search
akshimo
November 28, 2025
Technology
2
110
その設計、 本当に価値を生んでますか?
PHPカンファレンス香川2025
akshimo
November 28, 2025
Tweet
Share
More Decks by akshimo
See All by akshimo
新潟の勉強会を盛り上げたい!
shimomura
0
17
私の推し技術(DERTA Gig #18)
shimomura
1
76
UPDATEがシステムを複雑にする? イミュータブルデータモデルのすすめ
shimomura
2
930
5分でわかる イミュータブル データモデル
shimomura
1
210
アラートの話 をしよう!
shimomura
0
85
serverless
shimomura
1
210
機械翻訳との付き合い方
shimomura
0
250
Other Decks in Technology
See All in Technology
機械学習を「社会実装」するということ 2025年冬版 / Social Implementation of Machine Learning November 2025 Version
moepy_stats
4
2k
AI駆動開発によるDDDの実践
dip_tech
PRO
0
160
[続・営業向け 誰でも話せるOCI セールストーク] AWSよりOCIの優位性が分からない編(2025年11月21日開催)
oracle4engineer
PRO
1
200
生成AIシステムとAIエージェントに関する性能や安全性の評価
shibuiwilliam
2
300
ブラウザ拡張のセキュリティの話 / Browser Extension Security
flatt_security
0
230
ローカルLLM基礎知識 / local LLM basics 2025
kishida
26
12k
Modern Data Stack大好きマンが語るSnowflakeの魅力
sagara
0
210
インフラ室事例集
mixi_engineers
PRO
2
160
MS Ignite 2025で発表されたFoundry IQをRecap
satodayo
1
180
Kill the Vibe?Architecture in the age of AI
stoth
1
140
レガシーシステム刷新における TypeSpec スキーマ駆動開発のすゝめ
tsukuha
4
890
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
970
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
57k
Navigating Team Friction
lara
191
16k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Site-Speed That Sticks
csswizardry
13
980
How to train your dragon (web standard)
notwaldorf
97
6.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
How to Think Like a Performance Engineer
csswizardry
28
2.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Designing Experiences People Love
moore
142
24k
Transcript
その設計、 本当に価値を生んでますか? 事業理解から始める設計投資のメリハリと “手軽さ”の考え方 PHPカンファレンス香川2025 akshimo
• あくしも • ソフトウェアエンジニア • フリーランス • 新潟から来ました
Excuse
• 今回の話は「IMO」も結構あります • 「いや、私はこう思う」というご意見大歓迎 • ”カンファレンス”なので”会議”していきましょう • 生々し過ぎる部分があるので一部ボカしてます Excuse
• クリーンアーキテクチャ • ポート&アダプタ • イベント駆動 • モジュラーモノリス • MVC
• 大きな泥団子 • マイクロサービス いま私たちにはたくさんの選択肢がある • CQRS • Repository • ActiveRecord • トランザクションスクリプト • イミュータブルデータモデリング • 腐敗防止層 • etc…
今日は一つの選択肢の Howではなく どうやって意思決定するかみたいなお話
かつての失敗
時は201x年
時は201x年 巷ではDDDが流行していた
None
我々もレイヤードアーキテクチャ を採用した
我々もレイヤードアーキテクチャ を採用した だが、いまいち価値を出せなかった
我々もレイヤードアーキテクチャ を採用した もちろんDDDやその戦術が悪いのではなく 我々の「何か」が良くなかった
• Evans本、IDDD本、その他書籍や事例を学習・調査 • チーム内で勉強会開く • 良く検討した上で導入を決定(したつもり) 金のハンマーパターンに陥ったつもりはなかった
• Repositoryパターンをうまく使いこなせない • チームメンバーの理解度を上げられなかった • あまり複雑さがないドメイン層 うまくいかなった点はいくつかあった
• Repositoryパターンをうまく使いこなせない • チームメンバーの理解度を上げられなかった • あまり複雑さがないドメイン層 うまくいかなった点はいくつかあった
• ユーザー向けフロントサイト • 受注 • 配送 • 管理画面 • etc…
サービスはいくつかに分かれている
• ユーザー向けフロントサイト • 受注 • 配送 • 管理画面 • etc…
サービスはいくつかに分かれている 例えばこいつ
• 基本はデータをそのまま表示するだけ • 薄いドメイン層 • UIをいかにオシャレに見せるかが肝 フロントサイト
そもそも技術選定が よくなかったのでは?
そもそも技術選定が よくなかったのでは? それは仰る通りです...
• ビジネスの複雑性・サービスの継続年数などが大きいほど クリーンアーキテクチャなどから受けられるベネフィットは 大きい • MVCと比較するとどこかに「損益分岐点」がある 数年前の登壇にて ちなみに発表タイトルは 「DDDで失敗した俺が異世界転生したら 最強のアーキテクトになった件について」
雑なイメージ
雑なイメージ 実際はこんな単純じゃないけど…
その設計、 本当に価値を生んでますか? 事業理解から始める設計投資のメリハリと “手軽さ”の考え方 PHPカンファレンス香川2025 akshimo
その設計、 本当に価値を生んでますか? 事業理解から始める設計投資のメリハリと “手軽さ”の考え方 PHPカンファレンス香川2025 akshimo
Kent Beck 「グッドハートの法則」はもっと悲観的に捉えるべきだった
Kent Beck 「グッドハートの法則」はもっと悲観的に捉えるべきだった
ソフトウェアエンジニアリングとは 時間で積分したプログラミングである Titus Winters, Tom Manshreck, Hyrum Wright Googleのソフトウェアエンジニアリング ―持続可能なプログラミングを支える技術、文化、プロセス
None
この面積をなるべく大きくしたい (のだが、できなかった)
2024年:Tidy First?の日本語版出版
None
明日の100万円より 今日の100万円の方が価値が高い
お仕事ありがとう! 今100万円の給料あげるね! お仕事ありがとう! 一年後に100万円の給料あげるね!
米国債を100万円購入
米国債を100万円購入 1年後に104万円に! ※実際は為替や手数料などの影響がある
お仕事ありがとう! 今100万円の給料あげるね! お仕事ありがとう! 一年後に100万円の給料あげるね! 一年後に104万円の給料あげるね!
会社が潰れました... この人はそもそもお金を払ってくれない危険も
オプショナリティ
今の値段は100万円!
今の値段は100万円! 1ヶ月後には110万円くらいになりそう! でも大コケもするかもなぁ…
1ヶ月後に100万円で買う権利 を5万円で今売ってあげよう 1ヶ月後には110万円くらいになりそう! でも大コケもするかもなぁ…
1ヶ月後に100万円で買う権利 を5万円で今売ってあげよう 買った!
• 1ヶ月後に110万円になったら... => 105万円で110万円のものを買える! • 1ヶ月後に90万円になったら... => 5万円の損ですむ!(権利を行使しない)
1ヶ月後に100万円で買う権利 を5万円で売ってあげよう
これが「オプション」 ※正確にはコールオプション
オプションはどんな時に 価値が高いか?
90%の確率で105万円に 10%の確率で98万円に 100万円の株が … 60%の確率で120万円に 40%の確率で80万円に
90%の確率で105万円に 10%の確率で98万円に 100万円の株が … 60%の確率で120万円に 40%の確率で80万円に 「ボラティリティ」が大きい方が オプションの価値が高い!
ボラティリティ 小 ボラティリティ 大
ボラティリティ 小 ボラティリティ 大
投資は自己責任で!!!
• 明日の100万円より今日の100万円の方が価値が高い • オプションとは将来ある値段で株を買う権利 • ボラティリティが大きいほどオプションの価値は高い ここまでのまとめ あくまでもエンジニアリングのための説明なので 金融知識としては不十分な点はご了承ください
• 明日の100万円より今日の100万円の方が価値が高い ここまでのまとめ => 明日のリリースより今日のリリースの方が価値が高い (明日にリリースを回すとリリースされない可能性も)
• オプションとは将来ある値段で株を買う権利 ここまでのまとめ => オプションとは振る舞いの変更コストを下げる設計
• ボラティリティが大きいほどオプションの価値は高い ここまでのまとめ => 不確実性が高いほどオプションの価値は高い
• 明日のリリースより今日のリリースの方が価値が高い • オプションとは振る舞いの変更コストを下げる設計 • 不確実性が高いほどオプションの価値は高い ここまでのまとめ
• 変化の多さ • 事業・機能がヒットするか 2種類のボラティリティ
• 変化の多さ • 事業・機能がヒットするか 2種類のボラティリティ 積極的に設計投資し、オプションを作る
• 変化の多さ • 事業・機能がヒットするか 2種類のボラティリティ 「捨てる」というオプションが 効果的な場合がある
捨てやすいコードには 凝集が必要
LCOM1 = P − Q, if P > Q LCOM1
= 0 otherwise Project Metrics Help - Cohesion metrics https://www.aivosto.com/project/help/pm-oo-cohesion.html
コードを書かなければ LCOMは0 ※半分冗談、半分本気です
ビックバンリリース
None
本当にこれだけのものを 得られるか不確実
こうしたい
• なるべく凝集して「捨てやすく」 • ノーコードも検討する • AIに任せたり一時的に小さな泥団子を作っても良い もう一つのボラティリティ FeatureToggleなんかも有効
• なるべく凝集して「捨てやすく」 • ノーコードも検討する • AIに任せたり一時的に小さな泥団子を作っても良い もう一つのボラティリティ 早く試し、早く学ぶ必要がある
ボラティリティ 変更が多い 捨てるかも 小 競争優位性 ◯ ? × 設計投資 積極的に投資
ひとまず消極的 消極的 オプションの価値 大 「捨てる」オプションの価 値は大 小 実装 熟練したエンジニア 小さな泥団子、AI、手オ ペ 既製品、早さ重視 参考:ドメイン駆動設計をはじめよう
ボラティリティ 変更が多い 捨てるかも 小 競争優位性 ◯ ? × 設計投資 積極的に投資
ひとまず消極的 消極的 オプションの価値 大 「捨てる」オプションの価 値は大 小 実装 熟練したエンジニア 小さな泥団子、AI、手オ ペ 既製品、早さ重視 参考:ドメイン駆動設計をはじめよう
ボラティリティ 変更が多い 捨てるかも 小 競争優位性 ◯ ? × 設計投資 積極的に投資
ひとまず消極的 消極的 オプションの価値 大 「捨てる」オプションの価 値は大 小 実装 熟練したエンジニア 小さな泥団子、AI、手オ ペ 既製品、早さ重視 参考:ドメイン駆動設計をはじめよう
ボラティリティ 変更が多い 捨てるかも 小 競争優位性 ◯ ? × 設計投資 積極的に投資
ひとまず消極的 消極的 オプションの価値 大 「捨てる」オプションの価 値は大 小 実装 熟練したエンジニア 小さな泥団子、AI、手オ ペ 既製品、早さ重視 参考:ドメイン駆動設計をはじめよう
ボラティリティ 変更が多い 捨てるかも 小 競争優位性 ◯ ? × 設計投資 積極的に投資
ひとまず消極的 消極的 オプションの価値 大 「捨てる」オプションの価 値は大 小 実装 熟練したエンジニア 小さな泥団子、AI、手オ ペ 既製品、早さ重視 参考:ドメイン駆動設計をはじめよう この移動がありうる
Tidy First?って 個人の整頓の話じゃないの?
Tidy First?って 個人の整頓の話じゃないの? 「ソフトウェア設計はフラクタル」!
None
数分から数時間の整頓の規模では、整頓の経済性を正確に計算できない (し、すべきでもない)。来たるべき大きな物事に備えて、私たちは2つの重要 な判断の型を鍛えている。 ・ソフトウェア設計のタイミングやスコープに影響するインセンティブを意識す ることに慣れる(「私は設計にもっと時間をかけたいのに、反対される。いった いどういうことだ?」)。 ・まずは人間関係のスキルを自分自身で練習し、そのあとで直接的な同僚や さらに遠くの同僚へと使っていく。 Kent Beck
Tidy First? ―個人で実践する経験主義的ソフトウェア設計
数分から数時間の整頓の規模では、整頓の経済性を正確に計算できない (し、すべきでもない)。来たるべき大きな物事に備えて、私たちは2つの重要 な判断の型を鍛えている。 ・ソフトウェア設計のタイミングやスコープに影響するインセンティブを意識す ることに慣れる(「私は設計にもっと時間をかけたいのに、反対される。いった いどういうことだ?」)。 ・まずは人間関係のスキルを自分自身で練習し、そのあとで直接的な同僚や さらに遠くの同僚へと使っていく。 規模が違うと必ずうまくいくとは限らないが、 最初に試すものとしては良い
Kent Beck Tidy First? ―個人で実践する経験主義的ソフトウェア設計
数分から数時間の整頓の規模では、整頓の経済性を正確に計算できない (し、すべきでもない)。来たるべき大きな物事に備えて、私たちは2つの重要 な判断の型を鍛えている。 ・ソフトウェア設計のタイミングやスコープに影響するインセンティブを意識す ることに慣れる(「私は設計にもっと時間をかけたいのに、反対される。いった いどういうことだ?」)。 ・まずは人間関係のスキルを自分自身で練習し、そのあとで直接的な同僚や さらに遠くの同僚へと使っていく。 ただし可逆性を確保する工夫は必要そう Kent
Beck Tidy First? ―個人で実践する経験主義的ソフトウェア設計
None
他にも考えるべきことは色々 Mark Richards, Neal Ford ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ
話を戻そう どうすれば良かった?
None
• ボラティリティは低〜中程度 • 配送方法の追加や複数倉庫での使用は予想された • 機能追加や変更はあったが予想の範囲内が多い 配送サービス
• ボラティリティは低〜中程度 • 配送方法の追加や複数倉庫での使用は予想された • 機能追加や変更はあったが予想の範囲内が多い 配送サービス 「安定して価格上昇」してるイメージで ボラティリティは高くない
• (UIの)ボラティリティは高い • ビジネスルールの複雑性は低い ◦ 基本はバケツリレーで情報を表示する • 「力の入れどころ」をUIに集中すればよかった? フロントサイト
• 利益と競合優位性を生む「中核」 • 外部接続するゆえの複雑性がある • 力の入れどころ ◦ エースエンジニアの投入 ◦ 腐敗防止層
とある外部連携機能
• XXしたらX割引!みたいな機能 • 効果があるかはリリースしてみないとわからない • あまり設計投資せず早く作る • 手オペ、小さな泥団子 とあるキャンペーン機能
どうやって事業理解し 意思決定をする?
「経験」
といっても元も子もないので 自分が気をつけている Tipsを紹介 皆さんが意識していることも 教えてください
• マインドセット • WhyとWhatを理解する • KPI • フレームワークを使う • 話す
• 正解のない問題に立ち向かう勇気を持つ • 決断疲れしない マインドセット
• 正解のない問題に立ち向かう勇気を持つ • 決断疲れしない マインドセット 後から効果検証することが大事
• 正解のない問題に立ち向かう勇気を持つ • 決断疲れしない マインドセット ロードマップを意識しよう
• What:「何を」作るべきか? ◦ 特に振る舞いの判断に有効 • Why:「なぜ」作るべきか? ◦ 特に構造の判断に有効 WhyとWhatを理解する
• その設計・コードはKPIのどこに効くのか意識する • 効果検証は大事(2回目) KPIは大事
• その設計・コードはKPIのどこに効くのか意識する • 効果検証は大事(2回目) KPIは大事 籠落ち率?CAC?MAU? 原価率?LTV?CVR?
• その設計・コードはKPIのどこに効くのか意識する • 効果検証は大事(2回目) KPIは大事 Impactを出すまでが仕事
• その設計・コードはKPIのどこに効くのか意識する • 効果検証は大事(2回目) KPIは大事 機能を「捨てる」ことに備え 事前にメンバーの理解を得ておくことも大事
• 5W1H • ピラミッドストラクチャー • ロジックツリー • PDCA • MECE
• SWOT • PEST • etc… フレームワークを使う
• ビジネスサイドの予測を真に受けすぎない • 不確実なことの微妙なニュアンスを汲み取るには話すこと が大事 話す
起業家は自分にウソをつくのが得意である。 証拠もないのに誰かを説得しなきゃいけないのだから、ウソは 起業家として成功するための必要条件なのかもしれない。 何かに挑戦するときには、信じてくれる人が必要だ。スタート アップのジェットコースターのような経営をうまくやるには、起業 家は思い込みの世界に常に片足を突っ込んでおく必要がある。 Alistair Croll, Benjamin Yoskovitz
Lean Analytics ―スタートアップのためのデータ解析と活用法
• ビジネスサイドの予測を真に受けすぎない • 不確実なことの微妙なニュアンスを汲み取るには話すこと が大事 話す 経営陣や株主を説得することも 彼らの仕事の一つ
ビジネス側の人と開発者は、プロジェ クトを通して 日々一緒に働かなければなりませ ん。 アジャイル宣言の背後にある原則 https://agilemanifesto.org/iso/ja/principles.html
ご清聴 ありがとうございました