Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LL2025 キミならどう書く ~AI編~

Avatar for Kaoru Maeda Kaoru Maeda
September 07, 2025

LL2025 キミならどう書く ~AI編~

LL2025のセッションで使ったスライドです

LL2025: https://ll.jus.or.jp/2025/

Avatar for Kaoru Maeda

Kaoru Maeda

September 07, 2025
Tweet

Other Decks in Programming

Transcript

  1. 過去のキミならどう書く • 2003~2008, 2012に開催 • テーマに沿ったプログラムを好きなプログラム言語で書く ◦ Webアプリケーション ◦ じゃんけん

    (TCPクライアント、Webクライアント) ◦ n-Queens ◦ 漢数字電卓 ◦ プレゼンソフト • あーでもないこーでもないと評価(?)
  2. 今年はAI編やりたい • キミならどう書くをAIでやるとしたら今年! ◦ 去年はできなかった、来年じゃもう遅い • ツールによって違うのか? • 言語によって変わる? •

    バイブコーディング実演としては、ゆるく入門レベルで ◦ ライブでハマらずに行けるのか? (こうご期待) • お題 ◦ パズルのソルバーを書かせる
  3. ツール・モデル・言語 • 今日使うツールとモデル • 言語: Python、Ruby、TypeScript ◦ ディレクトリ名から言語を類推してくれるようだが明示 ツール モデル

    備考 Claude Code Sonnet 4 プロプラン ($20/月) Gemini CLI gemini-2.5-pro Googleアカウント(無料) Cursor Agent GPT-5 Pro Plan ($20/月)
  4. プロンプト (1/2) # Summle 「Summle」というパズルを考えます。 - ゴールと 6つの種が与えられる。これらはすべて正の整数である。 - 式:

    種から 2つの数を取り出し、四則演算 (+, -, *, /)を使って式を作る - 式の値が正の整数にならない式は無効である - 一度使った数は種から取り除く。式の値は新たに種に加える - 複数の式を作成し、ゴールを得ることが目的である - 解: 種から複数の式を経由してゴールを得られるまでの式の組 ゴールと種をコマンド行引数として与えたとき、総当たりによって解を得るプログラム を◦◦で作成してください。
  5. プロンプト (2/2) 実行例: `summle_solver 786 3 4 12 12 75

    100` 出力例: ``` 12 * 75 = 900 100 + 900 = 1000 1000 / 4 = 250 12 + 250 = 262 3 * 262 = 786 ```
  6. 最短手順で解いて、と直させる • 見どころ • 対応方針 ◦ breadth-first searchにする ◦ 全解を求めてから最短解を出力

    ◦ Interactive Deepening DFS (最大深さを増やしながらDFS) • 探索済み状態の管理方法 ◦ visited, seenなどの変数名にしてくれる
  7. リハーサルで見た面白かった現象 • 全解を求めてからソートして最短解を出力しやがった ◦ BFSで解いて、と言うとちゃんとBFSにしてくれた • 4手で解ける問題を与えたら「この問題の最短解は5手です」 ◦ 間違って「すべての数を使う」を完了条件に入れていた •

    haskellで大惨事 ◦ 最初からBFSで作ってくれて、おおっと思ったら、visitedの仕組みを 作ってなくて無限ループ ◦ 配列から指定した2つを削除するルーチンを自作してバグる ◦ デバッガなどを駆使して原因を究明してくれた ◦ 世間にプログラム例が(比較的)少ない言語は苦戦するのか?
  8. まとめ • あっという間に生成してくれる • 最短手順に直した後、ちゃんとテストしてくれる • 言語の特徴はあまり反映されなかった? ◦ TSではちゃんとinterfaceも作ってくれる ◦

    ライブラリはちゃんと使ってくれる ◦ 慣れない言語では大失敗するときも • モデルによる違いは多少あるものの、あまりわからない ◦ GPT-5は割と遅め