🍌

Nano Banana ProでKaggle解法を図解する

に公開

はじめに

この記事はKaggle Advent Calendar 2025の12日目の記事です。
私は先日開催された関西Kaggler会にて解法を図解する技術について発表しました。
https://www.docswell.com/s/kuto1963222/ZX6772-2025-11-14-170808#p1

するとこの発表をした1週間後にNano Banana Proという画像生成AIがGoogleから発表されました。その性能は非常に高く、以下の記事でさまざまな生成事例が紹介されています。
https://note.com/google_gemini/n/n064d03afe2c0

今まで人力でやっていた解法の図解ですが、いよいよAIでできるのでは?という期待が自分の中で高まったので、この記事ではNano Banana Proを用いて解法の図解を試してみた結果と感想を共有します。

実験の概要

題材

現在私はAIMO3というコンペに参加しているので、その過去コンペであるAIMO2の1位解法を図解の題材として利用したいと思います。解法内には画像も含まれているのですが、今回はテキスト部分のみを利用して図解を生成することにします。
なお前提としてKaggleのWriteup(解法提出)として利用することを想定しているため、解法の図解は英語で生成するようにしています。
https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-2/writeups/nemoskills-1st-place-solution-nemoskills

モデル

GeminiでNano Banana Proを利用しています。ProではないNano Bananaを利用するとクオリティがかなり落ちるのでProの利用は必須です。
https://gemini.google.com/app?hl=ja

アプローチ

今回は以下のコンテキスト別に画像生成を試すことにします。

  • 解法のみ
  • 解法+過去の図解画像
  • 解法+指示テキスト

生成される解法画像は実行のたびに異なる結果となるため、複数回生成したものを貼っています。見比べるとブレや傾向がわかるかと思います。

結果

1.解法のみ

まずは、Nano Banana Proのベースラインを確認するために、解法テキストのみを入力として生成を試してみます。

プロンプト
下記のテキストはkaggleで開催されていた`AI Mathematical Olympiad - Progress Prize 2`の1位解法です。
この解法を図解した画像を作成してください。

---
<解法テキスト>
---

生成結果



特に指示を与えなくてもそれなりにいい感じの図解画像が生成されました。生成結果を見ると以下のような特徴がありそうです。

  • アイコンを適切に利用している
  • 色の統一感がある
  • Data, Training, Inferenceの3部構成でグループ化している
  • 記載されている情報は概ね正しい

一方で、個人的には解法のテキストを活用してもっと情報量を増やし、かつレイアウトを全体像と詳細という観点で整理したいと感じました。

2.解法+過去の図解画像

今度は解法に加えて、過去に私が作成した他コンペの図解画像を入力に事例として追加し生成してみます。これにより、暗黙的に過去の図解画像のフォーマットを取り入れ好みの見た目になることを期待しています。

プロンプト
下記のテキストはkaggleで開催されていた`AI Mathematical Olympiad - Progress Prize 2`の1位解法です。
この解法を元に添付画像のフォーマットに従って、図解した画像を作成してください。

---
<解法テキスト>
---

<過去の図解画像を複数添付>
添付画像



生成結果




図解の雰囲気が変わり、過去の図解画像に近づいていることがわかります。特にレイアウト、カラーリング、ブロックを使ったグルーピング、文章量が変化しており、個人的にはこちらの方が好みです。一方、過去画像には含まれているが、今回のプロンプトでは与えていない情報(順位、チーム名など)によってハルシネーションが発生している部分も見受けられます。(これは仕方ない)

3.解法+指示テキスト

2つ目のアプローチで、過去の図解画像を入力に追加することで、暗黙的にフォーマットを提示し好みの見た目に近づけることができました。今度はもっと細かく明示的に指示を与えることで完成度を高めることはできないだろうかと考えました。

そこで、過去の図解画像の代わりに指示テキストをプロンプトに追加して生成を試してみます。プロンプトは以下の方法で作成しています。

  • 過去の図解画像を説明させるようにClaudeに依頼し雛形を作成する
  • 『解法を図解する技術』のスライド内容に記載した内容を盛り込む
  • 画像生成を試して改良を加えるサイクルを複数回実施する

また生成画像にコンペごとのテーマ性を付与するためにコンペのヘッダー画像とアイコン画像を添付して利用するように指示しています。

プロンプト
下記のテキストはkaggleで開催されていた`AI Mathematical Olympiad - Progress Prize 2`の1位解法です。
この解法を元に下記に示すフォーマットに従って、解法を図解した画像を作成してください。

---
<解法テキスト>
---
フォーマット

**デザイン原則**: 解法の全体像と詳細を1枚のスライドで伝える。情報を「概要から詳細へ」の階層構造で整理し、図解とテキストの両方で直感的かつ正確な理解を促進する。**スライド全体にアイコンを積極的に使用**し、視覚的な理解を促進し、複雑な情報をよりアクセスしやすくする。

---

## 1. 構成

- **アスペクト比**: 16:9
- 英語で作成
- 4K解像度

### 1.1 ヘッダー

- 上部5%に以下を左から右へ配置
- コンペティションロゴ(添付画像)
- コンペティション名(タイトルフォントサイズ)
- 最終順位とスコア(Private LB Xth, Score: X.XXX)
- チーム名
- Kaggleロゴ

### 1.2 概要

- 中央40-60%に配置
- 解法全体を一目で把握できるように作成
- 箇条書き、ミニ図解、数式、コードスニペットを組み合わせる
- **詳細と簡潔さのバランス**: 詳細を見せすぎると情報が理解しづらくなる。明確性を保つために適切に簡略化する

### 1.3 詳細

- 下部30-50%に配置
- 解法で説明した重要なポイントについて詳細情報を追加
- 箇条書き、ミニ図解、数式、コードスニペットを組み合わせる
- **重要な貢献をハイライト**: スコア改善に貢献した独自の工夫や手法を詳しく説明する

---

## 2. デザインシステム

### 2.0 デザイン原則

- 4つのデザイン原則を適用: **近接、整列、反復、対比**
  - 近接: 関連する要素をグループ化
  - 整列: 要素間の視覚的な繋がりを作る
  - 反復: 視覚要素の一貫性を保つ
  - 対比: 重要な情報を強調

### 2.1 タイポグラフィ

- **フォント**
  - 英語を使用。フォントはArial
  - コード/数式: 等幅フォント(Consolas、Courier New)
- **フォントサイズ**
  - タイトル: 40pt
  - 見出し: 20pt
  - 本文: 5pt(情報密度を高めるために小さく)
- **テキスト色**
  - 本文: 黒
  - 注釈/アノテーション: 濃いグレー

### 2.2 カラーパレット

- **背景画像**
  - コンペティションの背景画像をスライド全体に配置
  - 背景画像にぼかし効果を適用
  - テキストの可読性を確保するため半透明(30%不透明度)にする
- **メインカラー**
  - コンペティションロゴ/テーマに合わせた濃い色
  - 用途: タイトル、ヘッダー装飾、矢印、重要な枠線
- **サブカラー**
  - メインカラーに似た薄い色(50%不透明度)
  - 用途: グループの背景ボックス。テキストの可読性を保つために十分明るく保つ
- **パステルカラー**
  - 薄紫(#ead1dcff)、薄青(#c9daf8ff)、薄緑(#d9ead3ff)、薄黄(#fff2ccff)、白(#ffffffff)
  - 用途: データ型やモデル型のカラーコーディング。重要度の低い要素には白を使用して強調を避ける
  - **色の意味**: 各色に意味を割り当て、同じタイプの要素には同じ色を一貫して使用(例: すべてのデータ前処理ステップに同じ色、すべてのモデルに別の色)
- **アイコン**
  - 色は柔軟
  - 全体のトーンに合わせることで視覚的な統一感を生み出す

---

## 3. ビジュアル要素

### 3.1 基本図形

- **プロセスブロック**
  - 目的: プロセス名とモデル名を表現
  - 形状: 角丸長方形
  - 背景: パステルカラーでカラーコーディング
- **グループボックス**
  - 目的: 関連するプロセスをグループ化(近接の原則)
  - 形状: 長方形
  - 背景: サブカラー

### 3.2 フロー表現

- **矢印**
  - スタイル: 細い線 + 三角矢印(▷)
  - 色: メインカラーまたはグレー
  - 役割: プロセスフローを示す
- **番号**
  - 形式: ①、②、③...
  - 配置: 各ステップの開始位置
  - 役割: 視線を誘導し、処理順序を明確化

### 3.3 アイコン

- **目的**: 視覚的な理解を促進
- **種類と配置**
  - データベース(円柱): データソースの表現
  - ファイルアイコン: データセットまたはモデルファイル
  - Kaggleロゴ: 左上に小さく配置
  - コンペティションアイコン: ヘッダーのコンペティション名の左側
  - **詳細セクションでもアイコンを使用**: 概要だけでなく詳細情報にもアイコンを適用して視覚的な理解を高める
添付画像


生成結果



指示テキストを追加するだけでかなり想定する形に近いものが生成できています。個人的にはテキスト情報の増加や色使いによって若干視認性が気になる点もありますが、このレベルまで生成できるのであればかなり実用的だと感じました。Nano Banana Proすごいです。

おわりに

この記事ではNano Banana Proを用いて解法の図解を試してみた結果と感想を共有しました。従来モデルではできなかった高品質な図解がProではできるようになっており、期待以上の結果となり驚きました。解法の図解はAIが作ってくれそうなので、良い解法を生み出すことを頑張りたいと思います!

GitHubで編集を提案

Discussion