【前編】楽しくないと続かない。Kaggleコンペで金メダルを獲得したエンジニアたちが、日々心がけていること

「エンジニア不足」と言われる昨今。IT市場の急成長や技術革新により、AI、ビッグデータ、IoT等の先端技術領域を中心に、優秀なエンジニアは社内外から引く手数多になっています。勉強会やセミナーに参加する、専門書を読む、エンジニアコミュニティに入るなど、スキルアップの方法は色々ありますが、第一線で活躍するエンジニアはどうやって自分のスキルとモチベーションを高めているのでしょうか。

会社の業務をこなしながら時には新しい技術に触れ、できれば楽しく自己研鑽するというのは、言うは易く行うは難しで、なかなかハードなこと。今回は世界最大のAIコンペプラットフォーム「Kaggle(カグル)」主催の「Image Matching Challenge 2022」10位に入賞した4名のメンバーに、金メダル獲得に至るまでの経緯と、エンジニアとして活躍し続けるために日々心がけていることを聞いてみました。前編と後編の2回に分けてご紹介します。

池田信さん(IKD)

池田信さん(IKD)

@makotoikeda

コニカミノルタのAIエンジニア。プロダクションプリント機の画像処理アルゴリズム開発から社内留学を経て、現在は画像IoTプラットフォーム「FORXAI」の開発部にて、画像を扱う機械学習モデルの開発を行う。岡﨑さんは直属の上司。今回のKaggleコンペでは主にモデルの情報収集と検証を担当。趣味は剣道、散歩とカメラ。

氏家広之さん(UGK)

氏家広之さん(UGK)

@meguru07

コニカミノルタのデータサイエンティスト/AIエンジニア。プロダクションプリント機のソフトウェア開発を経験後、自ら市場サポートの部署に異動。その後再びキャリア転向し、技術職に戻る。現在はDX開発センターに所属し、新規事業領域におけるデータサイエンス活用とAI開発を担当。今回のKaggleコンペでは主に弱点分析、関連論文の閲読とランキング上位者の情報収集を担当。趣味はフットサルとサッカー観戦。

岡﨑智也さん(tmyok)

岡﨑智也さん(tmyok)

@tmyok1984

コニカミノルタAI技術開発部のマネージャー。画像IoTプラットフォーム「FORXAI(フォーサイ)」の技術開発を行うメンバーをまとめ、課題解決に努める。美しいプログラムが大好きで、「勝負するからには勝つ」がモットー。今回のKaggleコンペでは主に推論パイプラインの全体設計と実装を担当。趣味は家庭菜園。

佐々木辰也さん(ts)

佐々木辰也さん(ts)

@tsasakits

日系企業の研究所に勤務。コンピュータビジョン、データサイエンス関連の業務に従事。コニカミノルタOBとして、とある飲み会を機に岡﨑さんに誘われ、チームの一員に。今回のKaggleコンペでは主にアイデアの検討および実装、最終Submitを担当。趣味は温泉めぐり。

Kaggleは人類の集合知。世界と競える、ネットゲームのような面白さが魅力

──金メダルの受賞、おめでとうございます。実はこのチームがリアルで集まる機会はコンペ中からほぼなかったと聞いて、驚いています。皆さんにとって、Kaggleとはどういうものなのでしょうか。

氏家さん(以下、敬称略):人類の集合知といいますか……普段は絶対会えない、世界トップの人たちが集まる場ですね

氏家広之さん(UGK)

氏家広之さん(UGK)

岡﨑さん(以下、敬称略):Kaggleのプラットフォームで、書いたプログラムを他の人に公開して「いいね」がもらえるシステムがあるんです。私はそれがすごく好きで。きれいなプログラムを書いて他の人に評価してもらう、ディスカッションで何か書いて反応をもらう、というSNS的な要素に惹かれて、のめり込んでいます

佐々木さん(以下、敬称略):Kaggleはネットゲームのようなものとも言われていて。SNSのようなコミュニケーションがありつつ競技性もあって、知見が得られたり、切磋琢磨したり、キャリアにつながったりもするので、色々な観点で面白みがあると思います。筋トレする場のような認識です。

岡﨑:プログラマー35歳定年説がありますが、実際30代後半になってくると、「そろそろマネージャーになったら」と言われるんですよね。Kaggleでなら自分の書きたいプログラムを書いて、腕一本で勝ちに行ける。そこは魅力的です。

岡﨑智也さん(tmyok)

岡﨑智也さん(tmyok)

──岡﨑さんと池田さんは現在同じ部署に所属されているとのことですが、どういった経緯でこの4名のチーム編成になったのか教えていただけますか。

岡﨑:2020年10月に、私が所属している部署で社内留学の募集があったんです。そのときに池田さんがAI技術の勉強をしたいということでOJTで私のチームに入ってきて、知り合ったのがきっかけです。

池田さん(以下、敬称略):私は岡﨑さんのチームに配属前から、氏家さんと同じ部署でプロダクションプリント機のシステム開発をしていたときに氏家さんにKaggleに誘ってもらい、そこから二人で参加していました。

氏家:私は当時はプロダクションプリント機のサポートをしていたので開発をしていなかったのですが、AIエンジニアになりたくて。勉強するのにいいところはないかと思って探したところKaggleを見つけて、やり始めていました。

佐々木:もともと私はコニカミノルタに3年ほど在籍していたことがあり、そのタイミングで岡﨑さんが入社されたんです。同じプロジェクトに取り組んでいたこともあり、そのときにかなり仲良くなったというのが、私と岡﨑さんのつながりです。

池田信さん(IKD)

池田信さん(IKD)

──そうなんですね。佐々木さんがご退職後も、お互いにそういった情報交換をされていたのでしょうか。

岡﨑:いや、していなかったですね。とある飲み会の席でふと「佐々木さんってKaggleやっているの?」と聞いたら、やってるよ、と言われたんです。そこで「マジで?じゃあ一緒にチーム組まない?」となって。

佐々木:ゴールデンウィーク前に一緒に飲んでいたときの、確か三次会での会話でしたね(笑)。ほろ酔いの中で勢いに任せて、出ようぜ!となりました。

──飲み会の席でKaggleの話が出てくるのがすごいですね(笑)。

岡﨑:もし佐々木さんがやっていなかったら、おすすめしようかなと思っていたんですよ。今回のコンペの課題が、佐々木さんが昔勉強していると言っていた内容とドンピシャだったので、彼の知識を取り込めばかなり上位にいけるんじゃないかと思って声をかけてみたんです。それから氏家さんと池田さんが合流して4人のチームになりました。

コミュニケーションはSlackのみ。キャラが違うからこそ相乗効果が生まれた

──時系列で考えると、コンペが4月からスタートして、ゴールデンウィーク前にチームを組んで、6月に金メダルを獲得しているのはとてもスピーディーですね。団結力を得た秘訣には何があったのでしょうか。

佐々木:Kaggleは研究要素がそれなりにあるので、試すべきことはいくらでもあるんです。その中である程度、チームの中で優先順位や大きな方針を合わせていかないと、相乗効果が生まれにくいように思います。今回のチームは、皆でそのあたりのすり合わせができていたので、一つの方向に向かってシナジーを発揮できたのだと思います。

佐々木辰也さん(ts)

佐々木辰也さん(ts)

岡﨑:でもなんでアライン*できたんでしょうね。一回も通話はしなかったんですよ。Slackだけ(笑)。一度、佐々木さんから通話で作戦会議しませんか?と言われたのですが、夜の21時頃だったんですよね。私と氏家さんは子どもがいるので、「いや、その時間は子どもが寝る時間だから無理」と言って断っちゃいました(笑)。
Slackでものすごい量のやりとりをしていたのですが、あまりチームビルディングをした記憶がなくて。私が思うに、たまたま毎日スコアが上がっていたから結果論として自然とアラインできたし、逆に何をやってもうまくいかなかったら空中分解したかもしれないと思います。

氏家さんと池田さんがうちのチームに入ったあと、氏家さんが使っていたSE2-LoFTRが一発目でいきなりハマって、ものすごいスコアが上がったんです。
それまではチームを組んだけれど、本当に大丈夫なのかなと思っていたところもあって。一人あたりのsubmit数は減るわけじゃないですか。シナジーが生まれなかったら意味がないよね、とどこか思っていたのですが、一発目でバーンとスコアが上がって「これはいけるぞ!」とSlackで4人で盛り上がりました

*お互いに合意形成を行い、一致団結させること

slackのスクリーンショット1

チームでのSlackでのやりとり。最初のチームマージで一気に盛り上がる!

佐々木:そうですね。数字がちゃんと出たから、というのは大きかったと思います。人参がぶら下がったというか、これは走れば食べられるぞ、と(笑)。あとは時差ですね。岡﨑さんは朝3時頃起きて8時頃まで活動するという修行僧みたいなことをしていて。私がその逆で、夜型で朝3時頃まで集中するスタイルだったので、国内オフショア開発というか、一日中まわっている形になっていました(笑)。

池田:2チームのアイデアを合わせて大きくスコアが上がったというのは大きいですね。役割分担というか、得意なところが明確に分かれていたのが良かったのだと思います。岡﨑さんと佐々木さんのチームは、実装力がすごくて。氏家さんと私のチームは、コンペに使える情報を見つけてくるのがうまかったというか、ずる賢いというか(笑)。

氏家:ゲームとしての戦い方的な面ですね。

池田:そこそこコンペの経験があったので、うまくなったというのもあるかもしれません。見つけてきたものを実装してもらって、それがうまくハマっていく、というのが続きました。

岡﨑:びっくりしたのが、氏家さんのネトスト具合(笑)。コンペで上位の人たちが何をしているのか表には出ていないけれど、その人のTwitterやGitHubのアカウントで何にスターを付けているのか見ると、拾ってきた情報で「この人、次これをやっていそうだな」と大体わかるんです。

あと、池田さんに教えてもらったのは、Kaggleのプラットフォームでデータセットを作る方法。細かいテクニックなんですけど、圧倒的に効率が上がりました。後にも使えるノウハウを吸収させてもらった感じがします。

kaggle のランキング。”tatsu & tomo ++” が今回のチーム

kaggle のランキング。”tatsu & tomo ++” が今回のチーム、10位で見事金賞を受賞!

だいたい辛い、でも楽しい。思わずのめり込むワクワクがKaggleの面白さ

──色々な意味での頭脳戦なんですね。先程からSNSやネットゲームというキーワードが出てきていますが、そういう楽しさやゲーム性は皆さん感じられていたのでしょうか。特に面白いと感じられていた点があれば、教えてください。

氏家:見えるランキングに一喜一憂しつつ、最後に本当のランキングが公開されるときのドキドキですね。あれはワクワクします。

岡﨑:せっかくスコアを上げたのに、いつまで経っても金メダル圏に行けないことも、翌日目が覚めたら順位が下がっていることもありますしね。でも、その次にsubmitしたらバーンと上がることもあって、リアルタイムで順位の変動がわかるのは面白いです。

池田:Kaggle以外にも機械学習のコンペをやっているところはあるのですが、最後にしか順位がわからないものもあります。Kaggleがうまくできているのは、どんどん順位が変わっていくのが見えて、のめり込みやすい仕組みになっているところだと思います

岡﨑:2〜3ヶ月の期間があるので、仕事が忙しかったり、子どもがいて特定のタイミングで時間がとれない人でも、少しずつコツコツやっていけるところが“自分のペースでできるゲーム”のような感じはありますね。

──先ほど氏家さんが一喜一憂と仰っていましたが、やっていて「辛いな」という気持ちになることはなかったのでしょうか。

岡﨑:だいたい辛いです(一同爆笑)

佐々木:世界規模の競争なので、何もしていなかったら当然順位は下がっていきます。頑張っていても結果が出ないときはキツいし、コンペのデッドラインが近づいてくると本当に強い人が本気を出してくるので。戦いがヒートアップしていって、命を削ってスコアを上げても順位は上がらない、ということもあります(笑)。それが楽しかったりもするのですが、しんどいのはしんどいですね。

岡﨑:すごいしんどいからこそ、スコアが上がったときにめちゃくちゃテンションが上がります

「やったぜ!」という気持ちになるために、各々がゴールを決めに行く

──チームリーダーは決められていたのでしょうか。

佐々木:次に何をやろうか、最終的にどうしようかというのを誰かが率先して決めていたことはなくて、各々が走り回って取り組んでいました。今振り返ってみると、それがうまく機能した一因としては、岡﨑さんがベースとなる土台をしっかり作ってくれていた点は大きいと思います。

岡﨑:それぞれが自分でゴールを決めに行くような感じですね。ゴールポストに当たったら、次の人が蹴りに行く、という(笑)。
言い方は悪いですけど、氏家さんと池田さんが入ってきてくれたときのプログラムは、思いついたものを試すために突貫で作られたものだったんです。私は美しいプログラムが大好きで。誰かのためにというよりは、自分で書いて「やったぜ!」という気持ちになりたくて、きれいに書き直して、自分でそれを投稿していました。
投稿してスコアがよければ、他の人はそれを見て採用しますよね。その結果、整理されるので、他の人が新しい変更を加えやすくなります。みんなのために、と思ってやったわけではなくて、「ほら、いいスコア出たぞ!」みたいな(笑)。それが楽しくて仕方がなかったからやっていました。

──そのあたりも、皆さんのそれぞれのキャラクターや突き詰めたい部分が少しずつ違うのが逆に良かったのかもしれないですね。他の皆さんは「これを突き詰めたい」「これをやっているときが楽しい」と思うことはありますか?

池田:Kaggleは同時にいくつもコンペをやっているので、どれに参加するかは自分の好みで選びます。私は扱っている画像や題材が面白いか、新しい知識や情報が学びになりそうかどうかという観点で選んでいますね。
今回金メダルを取ったコンペは、内容に一部複雑なところがある、あまり馴染みのない題材でした。難しそうだからやろう、という感じで(笑)。知らない世界だからこそ、面白いんじゃないかと思いました。

氏家:私も同じで、新しい学びがあることを突き詰めたいですね。自分がよりよくなるためにはどういうことが必要か、という観点で物事を見ています

──ちなみに、コンペを選んだときから「メダルを取りに行くぞ!」という意気込みだったのでしょうか。

池田&氏家:いや……(笑)。

氏家さん(左)、岡﨑さん(右)

岡﨑:私は優勝するつもりで。池田さん、氏家さんとは正反対で、勉強のためというよりは、自分が優勝する可能性のないコンペには出ないと決めていました。時間はやはり有限なので。

──コンペ期間中は普段の業務をしながら、どういうときにKaggleに取り組まれていたのでしょうか?

佐々木:私はデッドラインの一週間くらい前からは、有休を取りました(笑)。

池田:会社のお昼休みにやっていますかね。仕事が終わったからKaggleやるか、という感じで。仕事と同じようなことをやっているな、とも思いながら……。

池田さん(左)、佐々木さん(右)

池田さん(左)、佐々木さん(右)

──仕事と違う刺激があるから、できるのでしょうか。

池田:仕事と違うところはありますね。本当に自由というのもあって、色々な自分の工夫をできますし、利益や業績を度外視してできるというか

Kaggleは「大人の部活」。締切10分前のエラーを乗り越えて手にした金メダル

──金メダルを取ったときのお気持ちはいかがでしたか。

岡﨑:私は前の日が出張で、空港にいたんですよ。短い時間でSlackが100以上返信があって、それぐらい盛り上がりました。平日の朝9時、出張帰りのフライトを待っている間にSlackを見ていたら、皆がすごい勢いで書き込んでいて。終わる直前までは15〜16位くらいで、銀メダルの範囲だったんです(※金メダルは11位まで)。残念だったと思いきや、誰かが「金」と書いて、やったぜ!となりました。

池田:正直、銀メダルの上位にいたので、金メダルを狙いにいかないといけないと思っていました。だから一発、スコアが大きく上がることをやらないとダメだというのは皆わかっていたので、渾身の提出を皆で作りました。実装して提出して、結果がデッドラインの10分程前に出るように計算して出したんです。そうしたら、それが全部エラーで終わっていて……。

最終日前日のSlack。上位を目指し、あえて難易度の高い実装に挑戦。

佐々木:一応、そのあたりを氏家さんとディスカッションしていて、いくつかリスクヘッジをしていたんです。一発狙いに行く案がダメだった場合、違う一手として備えておいたものがハマったので結果オーライでした。最後、5つのsubmit全部ダメだったんですよね。あれは面白かったですよね……あれなしには語れないです(笑)。

池田:まさか全部ダメだとは(笑)。

岡﨑:最終日の前日、一番の追い込みの日は朝から出張で、丸一日会議をしていたんです。「池田さん、これお願い」と託して行って、夕方にSlackを見たら「うまくいかない、どうしよう」となっていて。結局23時頃までずっと一緒にプログラムを書いて、夕食もとれませんでした(笑)。プログラムって入り組んでいるので、4人で一緒にはできないんですよね。ほとんど私が書いて、池田さんが少し変えて、皆で提出する、みたいな。

4人で一斉に元気玉プログラムをsubmitするも・・・

佐々木:そうして4人の魂を込めた元気玉のようなプログラムを放ったんですけど、それが次の日の朝、デッドラインの10分前に全部エラーになりました(笑)。

池田:必死で実装しているときに、裏で佐々木さんと氏家さんがどうリスクヘッジするか考えていてくれたのを、あとでSlackで見ました。普通は見る余裕があるんですけど、そのときは余裕がなくて。完全に同時進行でした。

氏家:金メダルを取れたときは感無量でしたね。数ヶ月戦うのですが、そこで結果が出なかったこともたくさん経験しているので……。久しぶりに結果が出たのが本当に嬉しかったです。最後、メインは池田さんがやっていたので、メインの部分には携われないモヤモヤと、そこができない分どう貢献しようか、というところで色々考えさせられる時間でした。

金メダル確定の時の、実際のSlack のメッセージ(のスクリーンショット)

──お話を聞いていると、Kaggleは「大人の部活」みたいな面があるんですね。大変なことも多いし、全てが楽しい!と言い切れることばかりではないけれど、それでもやっぱり最後までやり抜くというか。

佐々木:そうですね、言い得て妙ですね。部活に近い充実感があります。

─インタビューを終えて─
金メダルを獲得した「Image Matching Challenge 2022」のコンペティション概要と当チームで開発したアルゴリズムについての技術的な詳細は、池田さんが執筆した技術ブログまたはニュースリリースでご覧いただけます。
後編では4名が日々行っている業務とKaggleの関係性、今後企業人として活躍するために必要だと思うことを語っていただきます。後編もお楽しみに!

今回の記事に関連する情報