コロナ禍に始まった「競技プログラミング世界2位」へのストーリー
──まずは松尾さんのこれまでの経歴を教えてください。
松尾充氏(以下、松尾):私のキャリアのスタートは2016年、重工メーカーのIHIという会社でした。大学では機械工学を専攻しており、当時はソフトウェアではなく、戦闘機用エンジンの新規開発に携わる機械設計エンジニアとして働いていました。プログラミングとは全く無縁の、物理的なものづくりの世界にいたんです。
株式会社ALGO ARTIS 社会インフラチーム チームリード/プリンシパルアルゴリズムエンジニア 松尾充氏
撮影場所:WeWork 半蔵門 PREX North(以下、同様)
転機は2020年の4月、新型コロナウイルスの感染拡大期です。工場が休業になり、出社せずに自宅にいる時間が突然増えました。「この時間を使って何か新しいことを始めよう」と思い、以前から興味があった競技プログラミングに触れてみたのが始まりです。プログラミング自体は大学時代の研究やサークル活動で使っていたので、ある程度理解があったんです。
時間ができた際に競技プログラミングに出会い、その面白さにのめり込みました。その後、社内の研究部門への異動を経て、より高いレベルの環境を求めて2022年にALGO ARTISへ入社しました。
いざ始めてみると、朝から晩まで問題を解くのが楽しくて仕方なくなり、一気にのめり込んでいきました。実績が出始めると、「得意なことを仕事にしたい」という思いが強くなりましたが、メーカーから未経験でIT系に転職するのはハードルが高い。そこでまずは社内FA制度を利用し、本社の研究開発部門である、最適化を研究するような部署へ異動しました。2021年4月のことです。
──そこからどのような経緯でALGO ARTISへ入社され、現在チームリードを務めるに至ったのでしょうか。
松尾:よりレベルの高い環境で自分を試したいという思いが募っていた時期に、当時Kaggleなどの分野で著名だった弊社(ALGO ARTIS)の役員から声をかけてもらったのがきっかけです。2022年1月に入社した当時は、社員数も10名に満たない小さな組織でしたが、そこからアルゴリズムエンジニアとして船の運航計画の最適化などのプロジェクトを担当してきました。
現在は社員数も増え、エンジニアリングディビジョンの社会インフラチームでチームリードを務めています。具体的な業務としては、船の運航計画のほか、バス乗務員のシフト表作成など、社会インフラに関わる企業の最適化システムを提供しています。マネージャーという立場ではありますが、メンバーが非常に優秀なので、私が技術的な細部を管理することはありません。むしろ、どうすればチームメンバーのパフォーマンスを会社の業績につなげられるかという「組織全体の最適化」や、採用・広報活動など、アルゴリズムエンジニアの領域を幅広く支える役割を担っています。
ALGO ARTIS社員の過半数は競技プログラミング経験者
引用:松尾氏のSpeakerDeckより
競技プログラミングの核心は「数学的快感」にあり?
──読者の中には「競技プログラミング」に馴染みのない方もいるかもしれません。具体的にどのような面白さがあるのでしょうか?
松尾:競プロは、一見すると単なる計算問題に見えますが、実は非常に高度な「パズル」なんです。分かりやすい例として、AtCoderの解説でも使われる「あみだくじ」の問題を考えてみましょう。
引用:AtCoder公式サイトより
スタートからゴールまで辿るあみだくじが1つなら、誰でも手で辿れます。それが1,000個あっても、コンピューターなら一瞬で計算できます。しかし、もしあみだくじが「1億個」並んでいたらどうでしょう。いくら高速なコンピューターでも、愚直に一つずつ辿っていては膨大な時間がかかってしまいます。
ここで「数学的な工夫」が登場します。あみだくじの結果をよく観察すると、「AからスタートするとFに行く」「Fに行くとCに行く」「Cに行くとAに戻る」といったサイクル(規則性)が見つかることがあります。この場合、3回ごとに元の位置に戻るわけですから、1億回すべてをシミュレーションする必要はありません。1億を3で割った「余り」だけを考えれば、答えは一瞬で導き出せます。
──まさに数学の問題を解くような、規則性を見つける面白さがあるのですね。
松尾:その通りです。コンピューターは高速に処理することができますが、限界があります。一方で人間が考えれば、数学的な思考やパズルのような発想を使って、より効率的な道筋を見つけ出すことができます。「複雑な条件を紐解き、正解に辿り着いた瞬間の快感」これに惹きつけられている人が非常に多いのだと思います。
──現在、トップレベルで競技プログラミングに取り組む方はどのような方がいるのでしょう。
松尾:最近は特に学生、高校生や大学生が非常に強いですね。受験勉強や数学的思考と共通する部分があるからかもしれませんが、社会人が全くかなわないようなスピードで解いてしまう若者が次々と現れています。もちろんベテランの方でも強い人はずっと強いのですが、若手の人も一緒になって界隈を盛り上げてくれています。
