Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
改めて「型」について考えてみよう
Search
Tech Leverages
February 18, 2025
Technology
1
130
改めて「型」について考えてみよう
2025/02/05(水) 社内技術イベントの登壇資料です。
本資料では、型によって抽象的に実装を考えることで段階的に要件を実装におろしていくというメンタルモデルについてお話しします。
Tech Leverages
February 18, 2025
Tweet
Share
More Decks by Tech Leverages
See All by Tech Leverages
ハッカソンから社内プロダクトへ AIエージェント ko☆shi 開発で学んだ4つの重要要素
leveragestech
0
190
2025年のデザインシステムとAI 活用を振り返る
leveragestech
0
270
ディメンショナルモデリングを採用してない組織がモデリング本を通じて得られたこと
leveragestech
0
260
レバレジーズのLangfuse活用事例
leveragestech
0
200
CloudComposerによる大規模ETL 「制御と実行の分離」の実践
leveragestech
0
520
「ELT職人」から卒業!Fivetranでデータパイプラインの構築・運用から解放され、 本来の価値創造に集中できる ようになった事例
leveragestech
0
190
SpecKitでどこまでできる? コストはどれくらい?
leveragestech
2
3.9k
未来を拓くAI技術〜エージェント開発とAI駆動開発〜
leveragestech
2
290
コンテキストエンジニアリングで変わるAI活用 リファクタリングワークフローの実践から学んだ形式知
leveragestech
0
180
Other Decks in Technology
See All in Technology
Amazon Connect アップデート! AIエージェントにMCPツールを設定してみた!
ysuzuki
0
140
Strands Agents × インタリーブ思考 で変わるAIエージェント設計 / Strands Agents x Interleaved Thinking AI Agents
takanorig
5
2.1k
Microsoft Agent Frameworkの可観測性
tomokusaba
1
110
特別捜査官等研修会
nomizone
0
580
オープンソースKeycloakのMCP認可サーバの仕様の対応状況 / 20251219 OpenID BizDay #18 LT Keycloak
oidfj
0
180
[2025-12-12]あの日僕が見た胡蝶の夢 〜人の夢は終わらねェ AIによるパフォーマンスチューニングのすゝめ〜
tosite
0
180
20251222_サンフランシスコサバイバル術
ponponmikankan
2
140
Claude Codeを使った情報整理術
knishioka
11
6.5k
20251203_AIxIoTビジネス共創ラボ_第4回勉強会_BP山崎.pdf
iotcomjpadmin
0
140
【開発を止めるな】機能追加と並行して進めるアーキテクチャ改善/Keep Shipping: Architecture Improvements Without Pausing Dev
bitkey
PRO
1
130
Agent Skillsがハーネスの垣根を超える日
gotalab555
6
4.4k
Kiro を用いたペアプロのススメ
taikis
4
1.9k
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
5.7k
Marketing to machines
jonoalderson
1
4.3k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
92
Agile that works and the tools we love
rasmusluckow
331
21k
Darren the Foodie - Storyboard
khoart
PRO
0
2k
Facilitating Awesome Meetings
lara
57
6.7k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
81
Product Roadmaps are Hard
iamctodd
PRO
55
12k
KATA
mclloyd
PRO
33
15k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Transcript
改めて「型」について考えてみよう レバテック開発部/案件ドメインチーム 瀬尾光希 の使い方
| © 2024 Levtech Co., Ltd. 2 レバテック開発部 案件ドメインチーム/技術広報 瀬尾 光希
KOUKI SEO #バックエンドエンジニア #テックブログ/イベント運営 #ピアノ #Valorant さいきん右の親知らず抜いた
3 © 2024 Leverages Co., Ltd. 案件ドメインチーム(メンバー3人!助っ人求む) • 「事業価値への貢献」と「営業生産性の向上」をシステム改善で実現する。 •
案件ドメインにかかわるビジネスサイドと共通のメンタルモデルを獲得する。 • 戦略的DDDを実践できる体制や関係性を構築する。 営業支援システム As Is 営業支援システム To Be ‧機能の細かい部分が実際の業務と乖離してしまって おり、営業さんの運⽤でカバーされている状態 ‧Laravel+Twig+jQuery に起因する UX の悪さで営業 ⽣産性が低い状態(開発者体験も悪い…) ‧MVC, Laravelの黒魔術に則った歴史により偶有的複 雑性を多分にはらんでしまった保守性の悪い状態 ‧実際の業務と親和性の⾼いシステムに近づけ、無駄 な作業の発⽣や教育コストをなくす ‧Reactの導⼊などのモダナイズによってフロントエン ドを最適化∕UXを改善し、営業⽣産性を向上させる ‧ドメインモデリングを通してリファクタリングを⾏ い、変更容易性の⾼いシステムにする どんな仕事してるの? 事業優先度の高い 部分から To Be を 目指して改善中!
4 © 2024 Leverages Co., Ltd. 本日の概要
5 © 2024 Leverages Co., Ltd. 本日の概要 🏃5分LTなので早口!!
6 © 2024 Leverages Co., Ltd. 題材
7 © 2024 Leverages Co., Ltd. 題材|ジェットコースターに人を乗せるハンドラー ジェットコースターの仕様 120cm〜200cmが乗れる 6歳〜60歳が乗れる
乗った人は20%の確率で 転落する可能性がある
8 © 2024 Leverages Co., Ltd. 題材|ジェットコースターに人を乗せるハンドラー ハンドラーの処理 1. 乗りたい人がくる
2. その人をジェットコースターに乗せる 3. その人がジェットコースターから降りたら支払いさせる ◦ 転落したら支払いせず、救急車に乗せる ① ② ③ ❌
9 © 2024 Leverages Co., Ltd. 実装してみよう
10 © 2024 Leverages Co., Ltd. どうハンドラーを実装しますか? 上から愚直に書いていくパターン • まず乗客がジェットコースターに乗れるかバリデーションするか〜
11 © 2024 Leverages Co., Ltd. どうハンドラーを実装しますか? 上から愚直に書いていくパターン • まず乗客がジェットコースターに乗れるかバリデーションするか〜
ハンドラーは乗客をうけとる
12 © 2024 Leverages Co., Ltd. どうハンドラーを実装しますか? 上から愚直に書いていくパターン • まず乗客がジェットコースターに乗れるかバリデーションするか〜
身長と年齢をもった乗客
13 © 2024 Leverages Co., Ltd. どうハンドラーを実装しますか? 上から愚直に書いていくパターン • まず乗客がジェットコースターに乗れるかバリデーションするか〜
身長と年齢のバリデーション
14 © 2024 Leverages Co., Ltd. どうハンドラーを実装しますか? 上から愚直に書いていくパターン • ジェットコースターに乗せる処理が必要だな〜
• 支払いのために乗ったかどうかのステータスが必要だな〜
15 © 2024 Leverages Co., Ltd. どうハンドラーを実装しますか? 上から愚直に書いていくパターン • ジェットコースターに乗せる処理が必要だな〜
• 支払いのために乗ったかどうかのステータスが必要だな〜 バリデーション済みの人を ジェットコースターに乗せる
16 © 2024 Leverages Co., Ltd. どうハンドラーを実装しますか? 上から愚直に書いていくパターン • ジェットコースターに乗せる処理が必要だな〜
• 支払いのために乗ったかどうかのステータスが必要だな〜 ジェットコースターの処理 20%で転落 超えたら乗り終えたとしてマーク
17 © 2024 Leverages Co., Ltd. どうハンドラーを実装しますか? 上から愚直に書いていくパターン • ジェットコースターに乗せる処理が必要だな〜
• 支払いのために乗ったかどうかのステータスが必要だな〜 乗り終えたステータスを管理
18 © 2024 Leverages Co., Ltd. どうハンドラーを実装しますか? 上から愚直に書いていくパターン • ジェットコースターで転落したかで分岐だな〜
19 © 2024 Leverages Co., Ltd. どうハンドラーを実装しますか? 上から愚直に書いていくパターン • ジェットコースターで転落したかで分岐だな〜
try-catch 内でジェットコースター 成功したら集金、失敗したら救急車
20 © 2024 Leverages Co., Ltd. どうハンドラーを実装しますか? 上から愚直に書いていくパターン • ジェットコースターで転落したかで分岐だな〜
集金できたかのステータス管理
21 © 2024 Leverages Co., Ltd. どうハンドラーを実装しますか? 上から愚直に書いていくパターン完成✨ 型 関数
ハンドラー本体
22 © 2024 Leverages Co., Ltd. 上から愚直に書いていくパターン • 乗客という 型を実装を進めるとともに修正
していった • 結果的に乗客という 型ひとつで全ての状態を表現 した
23 © 2024 Leverages Co., Ltd. 上から愚直に書いていくパターン • 乗客という 型を実装を進めるとともに修正
していった • 結果的に乗客という 型ひとつで全ての状態を表現 した 具体実装→型という順番で修正 抽象と具体を考える順番が 逆になってしまっている “型安全化”のために型をつかっている
24 © 2024 Leverages Co., Ltd. 「型」から考えてみよう
25 © 2024 Leverages Co., Ltd. 「型」から考えてみよう 型から書いていくパターン • それぞれの状態を型で表現する
❌
26 © 2024 Leverages Co., Ltd. 型から書いていくパターン • それぞれの状態を型で表現する ❌
客 • Not乗客 • 乗客 • 乗り終えた乗客 • 転落した乗客 支払った乗客 「型」から考えてみよう
27 © 2024 Leverages Co., Ltd. 乗れるかのバリデーション • それぞれの処理を抽象的に表現できる 客
• Not乗客 • 乗客 「型」から考えてみよう 簡易的な BrandedType で表現
28 © 2024 Leverages Co., Ltd. ジェットコースター • それぞれの処理を抽象的に表現できる 乗客
• 乗り終えた乗客 • 転落した乗客 「型」から考えてみよう バリデーション済の乗客
29 © 2024 Leverages Co., Ltd. そのようにして実装したもの 「型」から考えてみよう 型 関数
ハンドラー本体
30 © 2024 Leverages Co., Ltd. 型から書いていくパターン • 要件をまず型という 抽象的な実装に落とし込む
• 関数は型から型への遷移 をになう • ハンドラーでは 型の遷移を組み立てる(具体的な実装)
31 © 2024 Leverages Co., Ltd. 型から書いていくパターン • 要件をまず型という 抽象的な実装に落とし込む
• 関数は型から型への遷移 をになう • ハンドラーでは 型の遷移を組み立てる(具体的な実装) 抽象的な型→具体的な実装 という順番 で要件をロジックにおとしこんだ 抽象度を段階的に下げることができる
32 © 2024 Leverages Co., Ltd. • すべての状態で型が異なるので、ハンドラー内で What(要件)を読み取りやすい •
How を型→型への状態遷移をあらわす関数として表現できる • それぞれの関数は入出力が決まっているため型安全かつテストしやすい • 型に対する静的解析が効くため実行時エラーが減る etc. 型から実装したハンドラー|その他の利点 処理ごとに型が変化 ずっと型としては同じ
33 © 2024 Leverages Co., Ltd. • それぞれの型を発見するためには、ドメインモデリングや要件定義が重要 になる •
エンジニアがビジネスに向き合うきっかけとしても「型」は良いきっかけになる 型から実装したハンドラー|実践しようとすると… ❌ 客 • Not乗客 • 乗客 • 乗り終えた乗客 • 転落した乗客 支払った乗客
34 © 2024 Leverages Co., Ltd. 型から実装を考えてみよう
35 © 2024 Leverages Co., Ltd. EOF