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
なぜAIは我々のソースコードを理解してくれないのか / Why AI Misunderstan...
Search
株式会社カオナビ
October 17, 2025
Technology
0
140
なぜAIは我々のソースコードを理解してくれないのか / Why AI Misunderstands Our Code
2025年7月19日,20日開催「PRODUCT HISTORY CONFERENCE 2025」で登壇した際の発表資料です。
https://lp-prohis.youtrust.jp/
株式会社カオナビ
October 17, 2025
Tweet
Share
More Decks by 株式会社カオナビ
See All by 株式会社カオナビ
カオナビにおけるAI活用の歴史と現在 / AI at kaonavi: Past and Present
kaonavi
0
17
BDD_ AI駆動開発の第一歩 / BDD: First Steps in AI-Driven Development
kaonavi
0
11
インフラエンジニア、Claude Codeを連れてプロダクトチームへ留学中 / Infrastructure Engineer on Loan to Product Team with Claude Code
kaonavi
0
13
スクラムを一度諦めたチームにアジャイルコーチが入ってどう変化したか / A Team's Second Try at Scrum with an Agile Coach
kaonavi
0
260
データモデリングにもUnit Testみたいのないの? / Bringing Unit Test-like Confidence to Data Modeling with AI
kaonavi
0
150
データ組織ゼロから投資を得るまでの軌跡と未来図 〜AIの前にやるべきこと〜 / Building a Data Organization from Scratch: The Journey to Securing Investment and a Vision for the Future
kaonavi
0
440
OSSコントリビュートのすすめ
kaonavi
1
880
小さなアウトプットが自信をくれた話 / Small Outputs Build Confidence
kaonavi
0
170
AI2027をもとに FY2025上期のAIを人事評価してみた / AI Performance Review FY2025
kaonavi
0
160
Other Decks in Technology
See All in Technology
クラウドセキュリティの進化 — AWSの20年を振り返る
kei4eva4
0
130
Node vs Deno vs Bun 〜推しランタイムを見つけよう〜
kamekyame
1
530
SOC2は、取った瞬間よりその後が面白い
3flower
0
110
ALB「証明書上限問題」からの脱却
nishiokashinji
0
220
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
330
CodeRabbit CLI + Claude Codeの連携について
oikon48
0
170
AI時代のアジャイルチームを目指して ー スクラムというコンフォートゾーンからの脱却 ー / Toward Agile Teams in the Age of AI
takaking22
11
6.9k
Vivre en Bitcoin : le tutoriel que votre banquier ne veut pas que vous voyiez
rlifchitz
0
320
Hardware/Software Co-design: Motivations and reflections with respect to security
bcantrill
1
190
Security Hub と出会ってから 1年半が過ぎました
rch850
0
150
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
3
390
AWS Network Firewall Proxyで脱Squid運用⁈
nnydtmg
1
120
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
100
The Art of Programming - Codeland 2020
erikaheidi
57
14k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
58
41k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Statistics for Hackers
jakevdp
799
230k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Navigating Weather and Climate Data
rabernat
0
72
The Cult of Friendly URLs
andyhume
79
6.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
A designer walks into a library…
pauljervisheath
210
24k
Transcript
なぜAIは我々のソースコードを 理解してくれないのか 2025.09.19 | PRODUCT HISTORY CONFERENCE 2025 © kaonavi,
inc.
鈴木 僚太 株式会社カオナビ CTO室 エキスパート(フロントエンド) 自己紹介 © kaonavi, inc. 2
今回のテーマ : コーディング AIエージェント © kaonavi, inc. 3 コーディング AIは否が応でも発展を続けており、
開発効率向上 を考える上で避けられなくなった。 しかし、誰でもいつでも高品質なコードを ポンと出せる状況には至っていない。
今回のテーマ : コーディング AIエージェント © kaonavi, inc. 4 カオナビではコーディング AIエージェント
の導入が 進んでいる。 それに伴い、成功だけでなく失敗の体験も蓄積して きた。 AIエージェントをより使いこなすための礎として、 AIがうまく動いてくれなかった事例 を紹介します。
カオナビでの AIエージェントの活用状況 © kaonavi, inc. 5
カオナビの AI組織 © kaonavi, inc. 6 カオナビではAI推進室を立ち上げ、さまざまな面から AIの活用をサポート。 その中にはコーディングエージェ ントの導入促進も含まれる。
公式noteの記事もどうぞ →
コーディングエージェント © kaonavi, inc. 7 GitHub CopilotとClaude Codeの活用が盛ん。 - テストコードの開発速度向上
- QAエンジニアもテストコード書く - 分野越境 - 新卒メンバーの圧倒的成長 - ディレクターがPoC作る など多数の事例!
しかし…… © kaonavi, inc. 8 実際のプロダクトコードの開発に目を向けると、 うまくいった事例ばかりではない。 大規模な開発は言わずもがな、ちょっとした修正でも うまく動かない ケースが多い!
This Talk © kaonavi, inc. 9 実際にAIエージェントを活用しているエンジニアたちにヒアリ ングして、 うまくいかなかった事例 を集めました。
うまくいかなった事例集 © kaonavi, inc. 10
事例① 謎の関数に AIが気を取られる © kaonavi, inc. 11 カオナビのバックエンドはLaravelで、多言語化のために trans() 関数を使う。
フロントエンドでも、同じtrans()関数を使える仕組みが導入さ れていた。 これは一般的なReactアプリではあまり見られない。
事例① 謎の関数に AIが気を取られる © kaonavi, inc. 12 AIにフロントエンドのバグ調査を依頼すると…… - AIがtrans()を不審に思い、transの定義を探しに行く
(本題のバグ調査をしてくれない) - transの定義がないことがバグの原因とか言ってくる (機能開発時にも使いこなせないことがある)
事例① 謎の関数に AIが気を取られる © kaonavi, inc. 13 対策: フロントエンドにおけるtrans()の使い方を ドキュメント化する
(未実践。CLAUDE.mdに入れるとかよりも、 必要に応じてAIが探し出せることが重要か?)
事例② オートフォーマットに翻弄される © kaonavi, inc. 14 Claude Codeのhooks機能で自動フォーマットを設定 していたケース。 未使用のimportが削除されるようにした結果……
事例② オートフォーマットに翻弄される © kaonavi, inc. 15 Claude Codeさん「 まず、XXのために〇〇をimportします ...
importが削除されています。再度import文を追加します ... ファイルが自動フォーマットされたため、再度編集を行います ... ファイルが自動でフォーマットされてしまうため、必要なコードを作成して から再度組み込みます
事例② オートフォーマットに翻弄される © kaonavi, inc. 16 順番に作業した結果、前の作業が消されてしまい ループにはまった。(自分で気づいて抜け出した) 人間はすぐ気付けるが、AIは気づくのに時間がかかり コンテキストも消費してしまう。
事例② オートフォーマットに翻弄される © kaonavi, inc. 17 対策: 状況に応じてフォーマッターの設定を細かく制御す る?(未実施)
事例③ 空気を読まない © kaonavi, inc. 18 ORM (Eloquent) の便利機能がいろいろあるが、 既存ソースコードではあまり使用していなかった。
ソースコードの統一性の観点から新規コードでも 便利機能は使わない風潮となっていた。 しかしAIは空気を読まずに便利機能を使ってくる。 レビューで弾かれる!
事例④ 空気を読んじゃう © kaonavi, inc. 19 APIのテストにSpectatorを最近使い始めたが、 古い既存のテストコード(使ってない)に引っ張られて AIがSpectatorを使わずにテストを書いてしまう。
事例③ 空気を読まない / ④ 空気を読んじゃう © kaonavi, inc. 20 対策:
最新のコーディングルールを明文化することか。 ただ、量が多くなると精度が悪くなりそうなのが悩み。 AIがすでに持っている「常識」に反しないことも 重要になってきそう。
事例⑤ useEffectで何でも解消しようとする © kaonavi, inc. 21 ReactのuseEffectは誤った使われ方をすることが多い。 AIさんも適当なuseEffectの使い方をしてくる事例多数! - プロジェクト内のuseEffectの使い方の影響?
- 世間の平均的なuseEffect力を学習している?
事例⑤ useEffectで何でも解消しようとする © kaonavi, inc. 22 対策: useEffectの正しい使い方をプロンプトに含めると、マシに なったという報告あり。 useEffectのレビュー観点を加えてAIにレビューさせる
取り組みも。
事例⑥ 架空のAPIを使う © kaonavi, inc. 23 ReactでuseGetRequestという自前のフックがあった。 GETリクエストをするとき用。 それから類推して、usePostRequestという架空のフックを使い 始めた。
(実際にはPOSTリクエスト用のフックはない)
事例⑥ 架空のAPIを使う © kaonavi, inc. 24 対策: おそらく、AIの想像を裏切らない理にかなったAPI 設計をすることが重要。 (ただ、GETとPOSTではReactでの取り扱いがかなり異なることを
理解するのは、一般的なコーディングの実力としてできてほしい。 そこはAIの単純な実力不足)
事例⑦ 変数の命名で混乱する © kaonavi, inc. 25 「平均年齢」を取り扱う機能で、変数の命名が average_age ではなく age
となっていた。 AIに対して「平均年齢」に関する指示をしても、 AIはどこを編集すればいいか理解できなかった。
事例⑦ 変数の命名で混乱する © kaonavi, inc. 26 対策: 命名をちゃんとする。(それはそう) AIはコードを必要最小限だけ読んで理解しようとする。 変数の命名がちゃんとしていることは、効率の良いコード理解の
ために非常に重要。 やはり、AIの“常識”を裏切らないことが大事。
事例⑧ ディレクトリ構成のルールを守らない © kaonavi, inc. 27 古いディレクトリ構成と今どきなディレクトリ構成 (featureベースのやつ)があり、最近のコードは新しい ディレクトリ構成で作られているが、 AIが古いディレクトリ構成でコードを書いてしまった。
新しいディレクトリ構成に沿った既存ファイルもあるのに、AIはそち らに合わせなかった。
事例⑧ ディレクトリ構成のルールを守らない © kaonavi, inc. 28 新旧のディレクトリ構成が両方CLAUDE.mdで紹介されて いたので、旧を尊重してしまった? 対策: 全ての情報をAIに伝えるのではなく、最新の情報に比重を
寄せるべきかも? (ただし古いコードに直面して混乱する恐れはある)
なぜAIは我々のソースコードを 理解してくれないのか © kaonavi, inc. 29
なぜ理解してくれないのか © kaonavi, inc. 30 もちろん理由は1つではない。 しかし、事例を集めることで傾向が見えてきた。
なぜ理解してくれないのか © kaonavi, inc. 31 Q. なぜAIは我々のソースコードを理解してくれないのか A. 新旧のプラクティスが混在しているから 従来取られがちだった「全部一気に移行するのは大変
だから、できるところからやろう」的な戦略は AI時代にはどうやら裏目に出るようだ。つらい。
考察 © kaonavi, inc. 32 新旧プラクティスが混在していると人間の新規メンバーにも つらいが、人間は歴史的経緯を理解し適応する能力がある。 AIは常に新しくオンボーディングしてきた新人であり、プラク ティスの混在は悪影響が大きい。 (歴史的経緯を全部ドキュメント化する? コンテキストの無駄遣いすぎ
る)
やり切ることが重要 © kaonavi, inc. 33 新しいプラクティスを導入するときは、 移行しきることが重要になりそう。 幸い、大量の移行をやり切ることは、 AIによって以前よりも現実的になった。 いわゆるVibe
Codingなども、 移行用のスクリプトを作ることに活用できる。 自分も最近、画面数200以上のアプリで Reactのバージョンアップをやり切りました。
余談: AIの常識レベルを見極める © kaonavi, inc. 34 AIが持つ“常識”を裏切らないことが、AIのポテンシャルを発 揮する近道になる。 一方で、求められるレベルがAIの実力よりも高いこともある。 そこはプロンプトによる補正が必要だが、補正量を少なくして
最適化を図りたい。 AIの実力の向上にも敏感になろう。
まとめ © kaonavi, inc. 35
まとめ © kaonavi, inc. 36 弊社のエンジニアから収集したAIコーディングの事例 を考察し、AIによるコーディングがうまくいかない原因が「新 旧のプラクティスが混在しているから 」である ケースが多いことが分かった。
AIコーディングの時代、移行するならやり切る姿勢が 重要になるかも?
We are hiring! https://corp.kaonavi.jp/recruit/list/ 選考を希望する方 https://hrmos.co/pages/kaonavi/jobs/casual21 まずは話を聞いてみたいという方 37 © kaonavi,
inc.