競技プログラミングにおける「AIvs人間」の勝者は?
──世界大会で実際にAIと対戦した松尾さんから見て、競技プログラミングにおける、現在のAIの実力はどの程度だと感じていますか?
松尾:正直に言って、今のAIのレベルは非常に高いです。私が参加した世界大会(ICPC World Finals)のような難易度の高いコンテストでも、AIはすでに人間と遜色ない、あるいはそれ以上の実力を出しつつあります。
特に「簡単な問題を素早く解く」「膨大な試行回数でパターンを試す」という点では、人間は到底かないません。短時間のコンテストでは手数の多さが有利に働くため、AIの特性が非常に強力な武器となります。
──しかし、世界大会で1位に輝いたのは人間で、AIではありませんでした。なぜでしょうか。
松尾:「方針を立てる力」と「論理の飛躍」において、まだ人間に分があるからです。今の強いプレイヤーのスタイルは、自分で筋の良い方針を考え、細かい実装や検証をAIに任せてフィードバックループを回すというものです。
昨年の世界大会の問題を例に挙げます。大量のロボットを目的地まで最短で移動させるという課題に対し、AIは「ロボットを効率よくグループ分けして動かす」という方針で、非常に高いスコアを出しました。しかし、1位になった人間の解き方は「そもそもグループ分けをしない」というものでした。
──「論理の飛躍」について、具体例を教えていただけますか。
松尾:例えば、問題文に「グループ分けができる」というヒントのような記述があると、AIはどうしても「もっともらしい解答」、つまり「こう解くのが一般的だよね」という枠の中に収まろうとします。一方で人間は、問題文からは想像もつかないような角度から「実は分けない方が効率的なのではないか?」という直感を働かせることができる。こうした、論理を順当に立てるだけでは辿り着けない「発想の飛躍」こそが、現在のAIにはまだ難しい部分であり、人間に残された優位性だと感じています。

アルゴリズムの基礎を掴んでおくことは、AIを使いこなす上での必須スキルになる
──AIがコードを生成する時代になり、プログラミングスキルそのものの価値が変わるのではないか、という不安もあるかと思います。
松尾:私は、かつて起きたパラダイムシフトと同じことが起きていると考えています。黎明期のコンピューターは配線をつなぎ変えて動かしていました。そこからパンチカード、アセンブリ言語、FortranやC言語へと進化し、人間が扱う言語はどんどん抽象化されてきました。
今回のAIの登場は、その延長線上にあるものです。「思考のレイヤー」がまた一段上がり、より抽象的な階層で物事を考える必要が出てきたのだと思います。
──人間がコードを書く技術を学ぶ価値は、今後も残り続けるのでしょうか。
松尾:学ぶ価値は確実に残ります。理由は2つあります。
1つは、高レイヤーの判断を下すためには、低レイヤーの知識が不可欠だからです。
例えば、「現場を分かっていないPM(プロジェクトマネージャー)」を想像すると分かりやすい。基本のアルゴリズムや、ライブラリの中身がどう動いているかを知らないと、AIに対して的確な指示が出せませんし、出てきた解決策がなぜ非効率なのかを判断することもできません。結果として、プロジェクトを炎上させてしまう。アルゴリズムの基礎を押さえて勘所を掴んでおくことは、AIを使いこなす側の「必須スキル」になります。
──もう1つの理由は何ですか?
松尾:極めて個人的な理由ですが、単純に「楽しいから」です(笑)私たちは仕事で疲れているはずの土日に、リラックスするための時間を使って、誰に頼まれたわけでもないのに数時間のコンテストに出て「勝った負けた」をやっています。それは、自分の書いたプログラムが動いたときの喜び、知的好奇心を満たす営みが、人間にとって本質的に豊かなことだからです。
ネットゲームのような感覚で参加している人も多いですが、自分の限界に挑戦して正解を導き出すプロセスそのものに、他では得がたい魅力があるのだと思います。
