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
高速開発のためのコード整理術
Search
sutetotanuki
January 21, 2026
Programming
1.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
高速開発のためのコード整理術
sutetotanuki
January 21, 2026
More Decks by sutetotanuki
See All by sutetotanuki
数案件を同時に進行するためのコンテキスト整理術
sutetotanuki
2
450
Next.js 16の新機能 Cache Components について
sutetotanuki
0
700
Vercel AI SDK を使って Next.js で AIアプリケーションを 作成する方法のご紹介
sutetotanuki
0
2k
WEBエンジニア向けAI活用入門
sutetotanuki
0
1.1k
ブラウザ上で実行され、 AIアシスタント付きデータベース postgres.new を触ってみた
sutetotanuki
0
590
今時のCookie事情
sutetotanuki
0
770
高速案件立ち上げで使われるマッハテンプレートのフロントエンド技術選定
sutetotanuki
2
2.2k
Core Web Vitals を改善する Next.js の機能群
sutetotanuki
1
2.7k
サーバーレスRDBの選択肢
sutetotanuki
0
1.7k
Other Decks in Programming
See All in Programming
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
450
高専キャリア LT 発表内容
crysta1221
6
5.4k
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
220
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
190
[GopherCon 2026] Unlocking Real-World Go Mutex Usage Patterns by Writing a Mutex Linter
palkan
0
100
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
120
Loosening the Reins: Go Generics Get More Flexible
kuro_kurorrr
0
360
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
180
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
290
高専、大学編入、そして未踏へ〜プロダクト開発とキャリアの歩み - Technical College, University Transfer, and On to “Mitou” / My Journey in Product Development and Career
pkmiya
0
130
Oxlintはいいぞ(続)
yug1224
1
520
Featured
See All Featured
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
230
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Done Done
chrislema
186
16k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
A Modern Web Designer's Workflow
chriscoyier
698
190k
30 Presentation Tips
portentint
PRO
1
380
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
710
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Building an army of robots
kneath
306
46k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
320
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Transcript
高速開発のためのコード整理術 1
2 自己紹介 西田将幸 クラスメソッド リテールアプリ共創部 マッハチーム エンジニアとして働いてます 主にバックエンドでフロントエンドFlutterと薄く広くやってます
3 全体の流れ 1. 受託開発での AI活用 ◦ 実際の活用例 ◦ それでもレビューは必要 2.
ソースコードの整理術 ◦ 人の認知力の限界について ◦ 単機能になるまで分解 ◦ 動作保証されてるコードの塊を作る 3. まとめ
4 受託開発での AI活用
5 実際のAI活用例 マッハチームは開発前のプリセールスの段階から開発、テ ストまで、プロジェクトの立ち上げに横断的に関わる その全ての工程でAIを活用 • プリセールス(見積) • 要件定義 •
開発・テスト
6 プリセールス • 資料をmd 形式に変換しAIが読みやすい形へ変換し一つ のディレクトリ配下に ◦ PDFをMarkdownへ変換 ◦ pandasと
openpyxl を使った Excel -> Markdownへの変換Skillを 使って変換 ◦ 図は画像を元に mermaid 形式で保存 • 変換した情報を元に質問(簡易的なRAGのような動き) • 資料や見積もりの雛形を作成
7 要件定義 • 処理フローの作成 • 要件からデータベース定義の素案 • データベース定義からAPIスキーマへの変換
8 開発・テスト • プロダクトのコード作成 • レビュー • テスト作成 • テストデータ作成
9 AIを使った開発の指示フロー 1. 要件を書く 2. AIと壁打ちしながらプランファイルを作成 a. 最初からモジュールの構造などを指示したい場合はプランファ イルに含めることも 3.
プランファイルを読み、対話しながら、もしくはプランファイ ルを直接修正 4. AIにGOを出す 5. Gitの差分をレビュー
10 レビューは必要 • 生成されたコードは間違ってることがある • 時には致命的な間違いも • 読まないわけにはいかない (2026年現在、来年は正直わからない) •
AIの処理が詰まって進まなくなる • 使われないコードも生成され、将来の追加開発時に 負債になる
11 ソースコードの整理術
12 人の認知力の限界について
13 ワーキングメモリ 視覚情報 聴覚情報 ワーキングメモリは 無意識に使用される
14 ワーキングメモリが溢れると • ミスが多くなる • 脳が疲れ、集中力が持続できなくなる
15 ソースコードが長いと ソースコードが長いと • 覚えておくことが増え、無意識下でワーキングメモリを占 有していく • ワーキングメモリが溢れ集中力が落ち、間違いに気付け なかったりする
16 意味のある単位で分ける • 意味のある単位でサブルーチンを分ける • サブルーチンに処理がわかる名前をつける
17 意味のある単位で分ける Tree構造的にしておくと必要な時に下位のノードまで 読みにいき、また、上位のノードに戻れ、 ワーキングメモリに優しい
18 具体例
19 処理内容 ハンドラーが行っている処理 1. APIでユーザーデータを取得、キャッシュする 2. ユーザーのステータスが退会済みならエラー 3. ユーザーの購入情報を取得 4.
取得したデータを元にレスポンスを返す
20 処理内容 DBアクセス API呼び出し ユーザー 属性 余分なことを読まないとダメ
21 ユーザー取得の処理を関数化 処理の内訳 1. データベースにキャッ シュを確認 2. なければAPIで取得 3. APIの取得結果をDBに1
時間保存
22 ユーザーのステータスチェックを関数化 処理の内容 1. ユーザーの status フィー ルドが “inactive” という文
字列であれば退会済み 2. 退会済みのユーザーは エラー
23 購入情報を取得 処理の内容 1. 購入情報をAPI経由で 取得
24 整理後のハンドラー
25 整理後のハンドラー 処理の内容 1. データベースにキャッシュを確認 2. なければAPIで取得 3. APIの取得結果をDBに1時間保存 4.
ユーザーの status フィールドが “inactive” という文字列であれば退会済み 5. 退会済みのユーザーはエラー 6. 購入情報をAPI経由で取得 7. 取得したデータを元にレスポンスを返す 処理の内容 1. ユーザーデータを取得、キャッ シュする 2. ユーザーのステータスをチェック 3. 購入情報を取得 4. 取得したデータを元にレスポンス を返す 圧縮
26 処理内容 小さい単位で ワーキングメモリをクリアしながら 集中して作業できる
27 動作保証されてるコードの塊を作る
28 品質が高く信頼コード 多くのパターンで正常に動いてるコードは 品質が高いと言え、信頼できる 信頼できるコードは読み飛ばすことができ、作業の効率化、 アプリケーションの品質の向上に繋げることができる
29 実際の例 APIのレスポンスをキャッ シュする という関心は他でも ありそう
30 関心の内容 以下の関心(期待)を持って呼び出すと考えられる • キャッシュがあればキャッシュからデータを返却する • キャッシュがなければ fetch し、DBにキャッシュする •
有効期限が切れればキャッシュを更新する
31 キャッシュ処理を使いまわせるように
32 使いまわせる関数を単体でテスト このキャッシュ関数自体をテストできるようになる 呼び出し側の期待値がそのままテストケースに • キャッシュがあればキャッシュからデータを返却する • キャッシュがなければ fetch し、DBにキャッシュする
• 有効期限が切れればキャッシュを更新する
33 ユーザー取得の処理を関数化 キャッシュからデータが返 却されることを 保証するテスト
34 使い回すことでさらに品質が上がる このキャッシュ関数をいろんなところをつかい回すことによっ て、呼び出しパターンが増え、ますます品質が高くなる
35 使い回しが効きやすいコードの塊を作る • 関数は極力1つの機能のみを提供する。複数の機能が関 数に含まれていると同じ関数が使いまわせるシーンが少 なくなる(モジュール強度) • 呼び出し側の関心事を意識し、使いまわせるインター フェースを考える
36 動作保証されたコードを使ってAI開発 再現性がある動作保証の塊を使って、再現性がないAIの出 力を安定させる 動作保証されたコード 不確実な出力 ある程度安定した ソースコード
37 まとめ
38 まとめ • ワーキングメモリを意識してソースコードを短くする ◦ 意味のある短い単位に分解する ◦ サブルーチンに処理がわかる名前をつける • 動作保証されている処理の塊を作る
◦ 呼び出し側の関心毎で処理を分離する ◦ 分離された処理単位でテストを書く • ワーキングメモリを節約、動作保証されている処理の塊を使って 開発を高速化
プロダクトの0→1⽴ち上げ 専⾨チーム ⼀緒に働く仲間を募集...! モダンな技術スタックを積極採用 • Hono, V0, Claude Code… 顧客と0距離
• プリセールス ~MVPリリースまで • 顧客対応も 2~3名の小規模チームで高速開発 • 1案件 2~6ヶ月 • マッハで経験が積める 📢マッハチーム 絶賛募集中
40