Slide 1

Slide 1 text

1 AI Agentにとっての Goの強み/弱みを deep diveする どすこい GMOペパボ株式会社 EC事業部 プロダクトチーム GO‧GMOペパボ‧アンドパッド "Go" 同勉強会(2025.12.08 )

Slide 2

Slide 2 text

2 ⾃⼰紹介 EC事業部 ECグループ プロダクトチーム どすこい Daisuke Takeda 最近はECサイトの検索基盤/ログ基盤の改善 を⾊々しています。Go歴は2年⽬ですが、好 き好き星⼈です。 純粋にAIが好きで、⼤学で研究してたり、 ⾊々調べたりしていました。 9⽉のイベントから10 kg減量しました🎉 2024年 新卒⼊社 X: @doskoi64

Slide 3

Slide 3 text

3 私たちは「⼈類のアウトプットを増やす」ことをミッションとし、 インターネットやテクノロジーの⼒で情報発信のハードルを下げる⽀援をしています。

Slide 4

Slide 4 text

4 前回の続編です!

Slide 5

Slide 5 text

5 AI使ったコーディングしてますか? 前回と同じみの導⼊ 5

Slide 6

Slide 6 text

6 AIのコード⽣成の精度どうですか? 前回なじみの導⼊ 6 😎 🙂 🤔 😡

Slide 7

Slide 7 text

7 AIのコード⽣成の精度どうですか? 今⽇の話 7 😎 🙂 🤔 😡 中   多   多  少 前回はこうでした! 変わったかな?

Slide 8

Slide 8 text

今回の話 ● AIのコード⽣成の定量評価について紹介しました ○ 課題に対して1shotのプロンプトで実装してもらい、その課題のテス トコードをパスするコードを⽣成できるかどうかという検証をする。 課題には様々な難易度がある。 ● 簡単に試してみる様⼦をお伝えしました ● 時間が余れば個⼈的な考察を紹介しました 前回のお話では... 8

Slide 9

Slide 9 text

9 ある⽇思いました... 前回の話 9 いろんな⾔語触ったけど、 Goはシンプルで好きかも。 AIのコード⽣成も きっと精度が⾼いんじゃ?

Slide 10

Slide 10 text

10 けど調べると... 10 Qiwei Peng, Yekun Chai, and Xuhong Li, 2024, LREC-COLING 2024 | HumanEval-XL: An Execution-based Multilingual Code Generation Benchmark Across 23 Natural Languages and 12 Programming Languages Fig. 2, Performance of LLMs, including CodeT5+ (2B), CodeGen2 (3.7B, 16B), GPT-3.5, and GPT-4, on our proposed benchmark. 思ったより低い... 前回の話

Slide 11

Slide 11 text

今回の話 ● AIのコード⽣成の定量評価について紹介しました ● 簡単に試してみる様⼦をお伝えしました ● 時間が余れば個⼈的な考察を紹介しました 前回のお話では... 11 兄 SWE-benchあるよ なんと!

Slide 12

Slide 12 text

今回の話 ● 前回お話ししたHumanEvalはLLMのコード⽣成タスクの ベンチマークのためのデータセット ● 今回お話しするSWE-BenchはLLMがGithub issueを解決 するような現実のコーディング環境に近いベンチマーク この中でのGoと他の⾔語の特徴を考えてみます! 今回のお話予定まとめ 12

Slide 13

Slide 13 text

13 SWE-benchとは

Slide 14

Slide 14 text

⽣成AIによるコード⽣成のベンチマークについて 14 ● LLMが現実世界のソフトウェアエンジニアリングの問 題をどれだけ解決できるかを評価するためのもの ● Githubの有名リポジトリからIssueと解決したPRっを集 めて、修正パッチを作成できるかをテスト ● 単なるコード補完で以上のバグ特定や修正ができるの かを評価するもの SWE-bench SWE-bench: Can Language Models Resolve Real-World GitHub Issues?, Carlos E. Jimenez et al. 2024, https://arxiv.org/abs/2310.06770 https://github.com/SWE-bench/SWE-bench

Slide 15

Slide 15 text

⽣成AIによるコード⽣成のベンチマークについて 15 前回との違い SWE-bench: Can Language Models Resolve Real-World GitHub Issues?, Carlos E. Jimenez et al. 2024, https://arxiv.org/abs/2310.06770 https://github.com/SWE-bench/SWE-bench 前回お話ししたHumanEval ● 関数やクラス単位でのコード⽣成 ● 数⾏で解け、⾃⼰完結する問題が中⼼ SWE-Benchは... ● リポジトリ横断の⽂脈把握とコード⽣成を要求 ● 現実のソフトウェア開発に則したベンチマーク

Slide 16

Slide 16 text

⽣成AIによるコード⽣成のベンチマークについて 16 SWE-bench Multilingual https://www.swebench.com/multilingual.html ● 多プログラミング⾔語対応のSWE-bench ● Claude 3.7 Sonnetに絞ってますが、C、C++、Go、 Java、JavaScript、TypeScript、PHP、Ruby、Rustで実 施 ● 中央値で10⾏、95%の課題が110⾏以内のコード変更で解 決可能 ● 明確なユニットテストがあるものに限定 ※この⼤規模版としてMulti-SWE-benchもあります。⼀旦今⽇は上記の話をします。

Slide 17

Slide 17 text

⽣成AIによるコード⽣成のベンチマークについて 17 実際⾒てみる https://github.com/gin-gonic/gin/pull/1805, https://github.com/gin-gonic/gin/issues/1804

Slide 18

Slide 18 text

⽣成AIによるコード⽣成のベンチマークについて 18 結果: 正答率 https://www.swebench.com/multilingual.html

Slide 19

Slide 19 text

⽣成AIによるコード⽣成のベンチマークについて 19 結果: ⾔語ごとのコード変更⾏数 https://www.swebench.com/multilingual.html

Slide 20

Slide 20 text

⽣成AIによるコード⽣成のベンチマークについて 20 結果まとめ SWE-bench: Can Language Models Resolve Real-World GitHub Issues?, Carlos E. Jimenez et al. 2024, https://arxiv.org/abs/2310.06770 https://github.com/SWE-bench/SWE-bench ● 他⾔語と⽐較してGoは正答率が低め ● 変更⾏数がやや多め ○ ただし、変更⾏数が多くて正答率が⾼めのRustもある ● 他の⾔語と⽐較すると、AI-Agentのコード⽣成の精度は低 めということになる ※ただし、いくつか単純化した条件の元での話です!

Slide 21

Slide 21 text

21 SWE-benchを通した AIにとっての Goの特徴

Slide 22

Slide 22 text

⽣成AIによるコード⽣成のベンチマークについて 22 先ほどの結果から... SWE-bench: Can Language Models Resolve Real-World GitHub Issues?, Carlos E. Jimenez et al. 2024, https://arxiv.org/abs/2310.06770 https://github.com/SWE-bench/SWE-bench ● 他⾔語と⽐較してGoは正答率が低め ● 変更⾏数がやや多め ○ ただし、変更⾏数が多くて正答率が⾼めのRustもある ● 他の⾔語と⽐較すると、AI-Agentのコード⽣成の精度は低 めということになる

Slide 23

Slide 23 text

SWE-benchを通したAIにとってのGoの特徴 23 ● Goの特徴として、エラー処理が冗⻑な点がある ● 冗⻑性がLLMにとってはよくない可能性がある ○ LLMのコンテキストウィンドウは有限 ○ 本来のビジネスロジックやアルゴリズムのコードの密度が低下 ● PythonやJavaのデータで事前学習されたモデルは、例外処理の書 き⽅が⼤きく違う Goの特徴: エラー処理の冗⻑性 *Multi-SWE-bench: A Multilingual Benchmarkfor Issue, ByteDance Seed, 2025-04-03. Resolvinghttps://arxiv.org/pdf/2504.02605

Slide 24

Slide 24 text

SWE-benchを通したAIにとってのGoの特徴 24 Goの特徴: エラー処理の冗⻑性 https://go.dev/blog/error-syntax 2025-6-3

Slide 25

Slide 25 text

SWE-benchを通したAIにとってのGoの特徴 25 エラー処理の冗⻑性への議論 https://go.dev/blog/error-syntax 2025-6-3 ● 関数10⾏で実質4⾏が本体 ● 構⽂変更案が数々議論されていたが、 エラー処理構⽂の提案や議論は中⽌さ れた(2025-06-3) ○ そもそも必要かどうかさえも共通認 識を持ててないという認識

Slide 26

Slide 26 text

SWE-benchを通したAIにとってのGoの特徴 26 ⼈にとっての冗⻑性は? ● そもそもエラーを”ハンドリング”して意味のあるものにすべき ● 標準ライブラリーで冗⻑性を減らせる https://go.dev/blog/error-syntax 2025-6-3

Slide 27

Slide 27 text

SWE-benchを通したAIにとってのGoの特徴 27 この検証の限界とGoの強み ● 反復による実装は検証されておらず、1 shotによるコー ド⽣成での検証に過ぎない ● Goは静的解析や豊富なLinterも特徴の⼀つで、これを ⽤いた開発におけるフィードバックループによる開発も 強み SWE-bench: Can Language Models Resolve Real-World GitHub Issues?, Carlos E. Jimenez et al. 2024, https://arxiv.org/abs/2310.06770 https://github.com/SWE-bench/SWE-bench

Slide 28

Slide 28 text

むすび ● 現実のコーディング環境に近いSWE-Benchを紹介 ● ここでのGoによる開発の他の⾔語と⽐較結果を紹介 ● この原因とこの⼿法の限界を元にGoの特徴を再考察 皆さんの考えや⽇々の開発における⼿触り感を 懇親会でぜひ教えてください🍻🍹🥃🍶🍸 今回のお話では... 28

Slide 29

Slide 29 text

29 テックブログで触ったものをまとめます... (前回のまとめは今回のものとと合併するため遅くなりました...󰚥) ぜひみてください! SWE-Bench Pro, Multi-SWE-benchのようなものもあり, ⾊々な側⾯に着⽬し たベンチマークがあるがこれは別の機会で... むすび 2 今回は触れてない...😢

Slide 30

Slide 30 text

30 テックブログといえば... 最後に https://adventar.org/calendars/11929 https://adventar.org/calendars/12190

Slide 31

Slide 31 text

31 Let’s AI Let’s Go