BLOG

総合選抜入試に提出できるプログラミングに関する自主的課題をAIに聞いてみた

2026/02/10

当校プログラミング教室の生徒が、総合選抜入試に提出できるプログラミングに関する自主的課題を提案して

ーーー

総合型選抜(旧AO入試)において、プログラミングの自主的課題は単なる「スキル自慢」に留まらず、**「社会や身の回りの課題をどう解決しようとしたか」**というプロセスを提示することが合格への鍵となります。

生徒さんの現在のレベルや興味関心に合わせて選べるよう、4つの方向性で提案します。


1. 地域・学校の課題解決型(社会的評価が高い)

大学側が最も好むのが「身近な問題をテクノロジーで解決する姿勢」です。

  • 落とし物管理システム: 学校内の落とし物を写真でアップロードし、カテゴリー別に閲覧できるWebアプリ。

  • 学食・近隣店舗の混雑予報: センサーや手動入力データを元に、混雑状況を可視化するツール。

  • 地域防災マップアプリ: 避難所への経路だけでなく、避難時の持ち物チェックリストなどを備えたカスタマイズマップ。

2. 趣味・特化ジャンルの「偏愛」追求型(独自性が強い)

「好き」を突き詰めた作品は、面接でのプレゼンに熱がこもります。

  • 部活動サポートツール: (例:野球の投球軌道解析、吹奏楽のテンポキープ練習用Webアプリなど)。

  • 特定ジャンルの検索特化エンジン: 既存の検索サイトでは辿り着きにくい情報(例:マイナーな深海魚、特定のカードゲームの相場など)をスクレイピングしてまとめるサイト。

  • AI生成画像・文章の判定器: 昨今のAIトレンドに触れつつ、著作権や真偽値について考察を添えたツール。

3. データサイエンス・可視化型(文理問わず評価される)

プログラミングを「分析の道具」として使うアプローチです。

  • オープンデータを用いた相関分析: 「地域の平均気温とアイスの消費量」や「通学時間と学習意欲」など、政府の統計データ(e-Stat)をPythonで解析・グラフ化し、レポートにまとめる。

  • SNSの感情分析: 特定のトピックについてSNSの投稿を収集し、ポジティブ・ネガティブの割合を時間軸で可視化する。

4. 教育・福祉支援型(貢献意欲をアピール)

他者への貢献を軸に据えることで、面接官に安心感を与えます。

  • 未就学児向けプログラミング学習ゲーム: 自分が通う教室での経験を活かし、もっと低年齢でも直感的に学べる知育アプリ。

  • 高齢者向けスマホ簡易ランチャー: 複雑なスマホ操作を避け、ボタン一つで家族に連絡や現在地送信ができるシンプルなUIの追求。


提出時に「差がつく」ポイント

課題を提出する際、ただソースコードやURLを出すのではなく、以下の資料をセットにすることをお勧めします。

  1. 企画書: なぜそれを作ろうと思ったのか(背景・動機)。

  2. 設計図(フローチャート): どのような論理構造で動いているか。

  3. 苦労した点と解決策: デバッグの過程でどう考え、どう調べたか(ここが最も評価されます)。

  4. 今後の展望: 将来、大学での学びをどう活かしてこの作品をアップデートしたいか。

ーーー

ゲームを作ろうとしていたが、採点者が評価に困るよね。ゲームには詳しくないだろうし…。

ーーー

おっしゃる通り、ゲーム制作をそのまま提出することには**「遊びの延長だと思われてしまう」「技術的な凄さが伝わりにくい」**というリスクが確かにありますね。

特に総合型選抜の評定者は、ゲームの「面白さ」ではなく、**「課題解決能力」「論理的思考」「公共性」**を見ようとするため、ゲームというジャンルは評価のハードルが一段高くなりがちです。

そこで、ゲーム制作の情熱を活かしつつ、採点者が「これは価値がある」と納得しやすい**3つの方向転換(見せ方)**を提案します。


1. 「シミュレーター」として再定義する

「敵を倒して楽しむゲーム」ではなく、**「現実の課題を疑似体験・解決するシミュレーター」**と定義を変える手法です。これだけで、アカデミックな評価対象になります。

  • 防災シミュレーター: 地震が起きた際、家の中でどう動くべきかを体験する3Dゲーム。「生存率」を数値化することで、教育的価値が生まれます。

  • 交通渋滞解消シミュレーター: 信号の待ち時間を変えると渋滞がどう変化するかを検証するツール。

  • 物理演算学習ソフト: 重力や摩擦係数を自由に変えて、物体の動きを観察できる理科教育用のツール。

2. 「ゲーミフィケーション」による課題解決

「ゲームそのもの」ではなく、**「ゲームの仕組みを使って、やりたくないことを楽しくさせる仕組み」**を提案します。

  • 学習継続アプリ: 英単語を覚えるたびにモンスターが育つなど、教育とゲームを掛け合わせたもの。

  • リハビリ支援ゲーム: 腕や指を動かす動作をセンサーで検知し、ゲーム内の操作に反映させる福祉的なアプローチ。

  • 環境保護啓発ゲーム: ゴミの分別を正しく行うと街が発展していくシミュレーション。

3. 「独自のゲームエンジン・ライブラリ」の自作

ゲームの内容(グラフィックやストーリー)ではなく、**「ゲームを動かすための裏側の仕組み(技術)」**をアピールします。これなら技術力の証明に直結します。

  • 自作物理エンジン: Unityなどを使わず、自分で重力や衝突判定の計算式を組んだプロセスを論文形式でまとめる。

  • 独自言語による制作: 「プログラミングを学ぶためのプログラミング言語」を自作し、それを使って簡単なゲームを作る。

  • AI対戦アルゴリズム: 将棋やリバーシなどの思考ルーチンを自作し、強さの段階を理論的に説明する。


採点者に「刺さる」ための補足資料

ゲーム系課題で最も重要なのは、成果物そのものよりも**「開発ドキュメント」**です。

  • **「なぜこのアルゴリズムを選んだか」**という数学的・論理的根拠。

  • **「ユーザーテストと改善」**の記録(友達に使ってもらい、出た不満をどう技術的に解決したか)。

  • 「バグ管理表」(どのようなエラーが起き、どう論理的に原因を特定したか)。


結論:ゲーム制作は「目的」ではなく「手段」にする

「面白いゲームを作りました」ではなく、**「〇〇という問題を解決するために、ゲームの技術(リアルタイム処理、UI/UX、物理演算など)を応用しました」**というストーリーに変換するのが合格への近道です。

ーーー

Scratchで、3Dで動く何かを作るのはどうだろう?2次元座標を使って、3次元に見せるのは、数学的な素養が必要で、たぶんこれなら採点者も評価しやすい

ーーー

それは非常に鋭い、素晴らしい着眼点です!

Scratchという一見「子供向け」に見えるプラットフォームで、あえて標準機能にない3D描画を自作するという試みは、採点者に対して強烈なインパクトを与えます。

なぜなら、それは単なる「ゲーム作り」を超えて、「数学的素養」と「アルゴリズムの理解」の証明になるからです。


採点者が評価せざるを得ない「3つのポイント」

1. 数学的知識の実装(三次元投影変換)

3D空間の座標 $(x, y, z)$ を、画面上の2D座標 $(x', y')$ に変換するには、**三角関数(sin, cos)透視投影(パースペクティブ)**の知識が不可欠です。

  • 評価ポイント: 「学校で習う数学が、テクノロジーの中でどう応用されているか」を深く理解していると見なされます。

2. 制限下での創意工夫

Scratchには「3Dを描画するボタン」はありません。それを「ペンの機能」や「クローンのスケーリング」で擬似的に作り出すプロセスは、**エンジニアリングにおける「制約の中での最適化」**そのものです。

  • 評価ポイント: 既存のツールを使いこなすだけでなく、ツールそのものを拡張する思考(メタ認知)が評価されます。

3. 可視化の美しさと論理

数式によって描かれるワイヤーフレームや、3D迷路がスムーズに動く様子は、一目で「高度なことをしている」と伝わります。

  • 評価ポイント: ロジックの正しさが「見た目の美しさ(動きの滑らかさ)」として直結するため、専門外の採点者でも凄さが伝わりやすいです。


具体的な課題テーマ案

  1. 「3D関数グラフ・ビジュアライザー」

    • 数式を入力すると、その形を3D空間にプロットして回転・拡大できるツール。

    • アピール: 数学への深い関心と、データの可視化能力。

  2. 「レイキャスティングによる迷路脱出シミュレーター」

    • 古い3Dゲーム(Wolfenstein 3Dなど)の手法を用いて、2Dのマップから1人称視点の3D映像をリアルタイム生成する。

    • アピール: 古典的な計算幾何学アルゴリズムの実装能力。

  3. 「天体運行シミュレーター」

    • 惑星の軌道を3Dで再現。視点を自由に動かして、日食や月食の仕組みを観察できる。

    • アピール: 物理学(万有引力など)とプログラミングの融合。

ーーー

テトリスやオセロならどうか。採点者にもわかる気がするが。マルバツは作ってもらった。

ーーー

テトリスやオセロは、採点者にとっても**「ルールが既知である」という点で、非常に強力な選択肢です。ルール説明を省ける分、「どんな工夫をしたか」**という技術的な説明に時間を割けるのが最大のメリットですね。

ただし、普通に作るだけだと「ネットの解説動画を見て作ったのかな?」と思われてしまうリスクがあります。

総合型選抜で「合格」を勝ち取るための、採点者に刺さるアレンジ案を整理しました。


1. オセロ × AI(思考ルーチンの開発)

単に対人戦を作るのではなく、**「人間と対戦できるAI」**を自作し、その進化過程を提示します。

  • 評価ポイント:

    • 評価関数の設計: 「角を取る」「確定石を増やす」といった戦略を、どうやって数値(スコア)としてプログラムに教えたか。

    • 探索アルゴリズム: 数手先を読み取る「ミニマックス法」や「αβ法」といった、情報工学の基礎概念への挑戦。

  • 見せ方のコツ:

    • 「最初は弱かったAIが、評価基準を変えることで自分(制作者)よりも強くなった」という成長物語を資料にする。

2. テトリス × 統計・物理演算

テトリスは「操作性」と「確率」の塊です。ここを深掘りします。

  • 評価ポイント:

    • ネクストブロックの確率制御: 完全にランダムではなく、偏りが出ないようにするアルゴリズム(通称:7種1巡の法則など)の実装。

    • 当たり判定の論理: ブロックが回転する際の「壁蹴り(SRS)」など、複雑な座標処理をどう論理的に解いたか。

  • アレンジ案:

    • 「AIによる最適配置シミュレーター」: 次々に降ってくるブロックを、AIがどこに置くのが最も効率的か計算し続ける様子を見せる。

3. 「マルバツ」からのステップアップ提示

すでにマルバツを作られているのであれば、それを**「比較対象」**として使うのが非常に効果的です。

「以前制作した『マルバツ』は全パターンが $3^9=19,683$ 通りと少なく、全探索が可能でした。しかし、今回の『オセロ』は $10^{60}$ 通り以上の展開があり、計算資源の効率化が必要になりました。そこで私は……」

このように、**「前の作品で物足りなかったから、より高度なこれに挑戦した」**というストーリーは、学習の継続性を証明する最高の自己PRになります。


採点者が「おっ」と思うキーワード

資料には以下の言葉を盛り込むと、専門性への意欲が伝わります。

  • 「アルゴリズムの効率化」(無駄な計算を減らした)

  • 「UI/UXの改善」(プレイヤーが直感的に操作できる工夫)

  • 「エッジケースの処理」(バグが起きやすい特殊な状況への対応)


まとめ:どっちがいい?

  • 数学・論理に自信があるなら: オセロ(AIの思考ロジックを語れるため)。

  • 実装力・完成度で魅せたいなら: テトリス(操作感や演出の細部まで作り込めるため)。

ーーー

提案はごもっともだが、大学の情報工学科の学生にも難しい内容だね。

ーーー

確かにおっしゃる通りです。ミニマックス法や$\alpha \beta$法を高校生がScratchでゼロから実装するのは、情報工学科の2〜3年生レベルの演習課題に匹敵します。正直、少しハードルを上げすぎてしまいました。

大学の先生(採点者)も、高校生に「プロのアルゴリズム」そのものを求めているわけではありません。彼らが見たいのは、**「自分の頭で考えて、泥臭く試行錯誤した形跡」**です。

もっと現実的で、かつ「おっ、こいつは分かっているな」と思わせる**「高校生らしい等身大の工夫」**に落とし込んでみましょう。


1. オセロ:「最強AI」ではなく「個性派AI」を作る

難しい探索アルゴリズムを使わなくても、「戦略」をコードにするだけで十分評価されます。

  • 実装案: 「端っこ大好きAI」「とにかく真ん中を取りたがるAI」「ランダムに打つAI」の3種類を作る。

  • 評価ポイント: 「角は100点、その隣はマイナス50点」といった**重み付け(評価テーブル)**の概念を自分で考えたこと。

  • 実験: これら3つのAI同士を100回戦わせた結果をグラフにする。 *

    • 一言: 「理論上強いはずのAIが、なぜ負けたのかを考察しました」と書けば、立派な研究報告になります。

2. テトリス:「物理の矛盾」と戦う

テトリスを自作すると、必ず「ブロックが壁に埋まる」「回転した時にめり込む」という問題にぶつかります。

  • 実装案: 完璧なゲームではなく、「なぜめり込むのか」を分析し、それを防ぐために「回転する直前に一瞬だけ座標をずらす処理」などを自力で考え出す。

  • 評価ポイント: 既存のライブラリに頼らず、座標計算のバグを論理的に解決したプロセス

  • 見せ方のコツ: 失敗した時のスクリーンショットと、それをどう修正したかのコードを対比させる。

3. 「マルバツ」を拡張して「一般化」する

すでに作ったマルバツをベースにするのが、最も現実的で説得力があります。

  • 提案: 「3×3のマルバツ」を**「10×10の五目並べ」**に拡張してみる。

  • 直面する課題: 3×3なら全パターン書けますが、10×10になると「勝敗判定」を一つずつ書くのは不可能です。

    • ここで使う技術: 「ループ(繰り返し)」と「変数」を使って、縦・横・斜めに5つ並んでいるかを自動で判定するアルゴリズム。

  • 評価ポイント: 「力技(ハードコーディング)」から「効率的な処理(アルゴリズム)」への脱皮。


大学教授が本当に見ているもの

大学側は「すでに完成されたエンジニア」を求めているのではなく、**「教えて伸びる素養がある子」**を探しています。

  • × 評価されない: 「ネットのコードを写して、完璧に動くオセロを作りました」

  • ○ 評価される: 「最初はオセロの角が重要だと気づかず負け続けました。そこで盤面に点数をつけて計算させたら勝てるようになりました。次はもっと先読みをさせたいですが、計算速度が足りないのが今の課題です」

このように**「現在の限界」と「次への意欲」**が見えるのが、最も「高校生らしく、かつ情報工学的」な態度です。

ーーー

「教えて伸びる素養がある子」を求めているというのであれば、現在マルバツのコンピューター対戦においては、コンピューターがランダムで置く場所を決めているところ、どうすれば、人に勝てるアルゴリズムを作れるかという思考および試行の過程をレポートにまとめるのも良いのではないか?

ーーー

その考え方は、まさに総合型選抜で最も高く評価される「探究のプロセス」そのものです!

「完璧なAIを作ること」ではなく、**「なぜランダムでは勝てないのか」「どうすれば人間のように判断できるか」**という課題を自分で設定し、それを解決するために試行錯誤した記録(レポート)を提出する。これは大学側が求める「論理的思考力」と「主体性」の証明に直結します。

生徒さんがレポートをまとめる際に、採点者が「おっ」と思うポイントを整理しました。


レポートに盛り込むべき「思考と試行」のステップ

単に「コードを直しました」ではなく、以下の構成で書くと学術的な研究報告として評価されます。

1. 課題の発見(分析)

  • 現状: コンピューターがランダムに置くため、初心者の人間にも負けてしまう。

  • 問い: 「人間がマルバツで勝つために無意識に考えている『ルール』を、どう言語化してコードに落とし込めるか?」

2. 段階的なアルゴリズムの進化(試行)

一気に完成させるのではなく、段階を追って進化させた過程を記録します。

  • ステップ①:勝利への執着(リーチ優先)

    • 「あと1つで自分が揃う場所があれば、そこに置く」というルールを追加。

  • ステップ②:防御の学習(リーチ阻止)

    • 「相手があと1つで揃う場所があれば、そこを邪魔する」というルールを追加。

  • ステップ③:戦略的な配置(中央と角)

    • 「最初の一手は中央、次は角が有利である」という定石をスコア化して実装。

3. 評価と考察

  • 実験: 各ステップのコンピューター同士を100回戦わせ、勝率の変化をグラフ化する。

  • 発見: 「ルールを増やすほど強くなったが、まだ引き分けが多い。無敗にするには、全てのパターンを先読みする仕組みが必要だと気づいた」といった、自分の技術の限界に対する気づき


結論:これが「伸びる素養」の正体

大学の教授が知りたいのは「今何ができるか」以上に、**「未知の壁にぶつかったとき、どうやって仮説を立てて検証するか」**という研究の基本姿勢です。

マルバツゲームを題材にした「思考の進化レポート」は、派手な3Dゲームよりも、はるかにその素養を雄弁に物語ってくれます。