見出し画像

Swiftコードバトルで優勝した iOSDC Japan 2024

こんにちは、とし( @toshi0383 )です。
「iOSDC Japan 2024 Swiftコードバトル」で優勝しました。

予選も1位でしたので、F1で言うところの「ポール・トゥ・ウィン」、完全勝利というやつです。最高の気分です。本当にありがとうございました。

優勝トロフィー欲しかったです

当日の応援やお祝いの言葉など、色々な方からいただきました。
ただ、皆さんの正直な心の中の感想としては、「岸川さんのようなレジェンド、メルカリやLINEといった大企業のエース級エンジニアの選手を差し置いてこいつは一体何者だ(ザワザワ)」というところだったのではないでしょうか。
実は私も同じ気持ちです。
別に本当に何者でもないのですが、それでも最後は応援してくれた皆さんや対戦してくれた選手の皆さんのおかげで優勝させていただいたと思っていますので、この記事では私が何者なのかが少しでも伝わるような内容にしたいと思います。
とは言っても何から何まで書いてしまうと大変なので、ここでは一旦時系列でイベントを振り返ってみる形にしようと思います。


タイムライン

コードバトル予選が告知された

X上での予選の告知を知ったのが1週間ちょい前くらいで結構直前だったと思うのですが、たまたま予定は空いていました。ただ参加者一覧を見るとすで錚々たるメンツの気配。

「初開催ということで応援はしたいから、どうしても人が足りなそうだったら参加しよう。」と思っていました。
最終的に数日待ち、枠が完全に埋まっているわけではなかったので、覚悟を決めて参加ボタンを押しました。

優勝した選手とは思えない所作、完全なモブキャラメンタル。
一体誰がここからの快進撃を予想したでしょうか。

予選当日

予選当日、コレド室町。Kintoさんの綺麗なオフィスだったのを覚えています。
見覚えのあるメンツがわいわいしている中、自分はソロ参加。
visionOS勉強会で仲良くなったAkkeyLabさんがたまたま入り口近くの大テーブルにいたので隣に着席。知り合いいて良かった〜。
と思いきやなんと正面には、AtCoderで数々の成績を残し明らかに強そうなオーラを漂わせるlog5さん、そして海外進出まで果たしている売れっ子エンジニアのgiginetさんが座っていました。
おいおい俺モブなのにこんな席で大丈夫か。
そしておもむろにVisionProを装着する隣のAkkeyLabさんと、正面のgiginetさん。

なんということでしょう。Vision Proだけでも圧倒されているのに呼吸を扱える選手まで。
(なおこのセリフ、本当にご本人が言っておられました。尊い。ごちそうさまでした。)
思えばここで強者の空気に引っ張られ、「お前らとは違う」と思っていた私にもアザが発現していたのかもしれません。

VisionProの呼吸で攻撃されて痣が発現するとし岡さん

そして実際のコードバトルはいい調子で進撃。

私はXcodeGenのコミッターをやっていましたし、SwiftでCLIツールを作るのが大好きでreadLine()も常識だったというアドバンテージが少しあったかもしれません。しかしラウンドを重ねるごとに皆さんもどんどん調子をあげ、かなり熾烈なバトルになっていました。
思えば予選会は一気に10人以上でバトルをしていたので、順位の入れ替わりがF1よりも()激しかったですね。しかも最下位からいきなりトップになる可能性だってあるわけで、かなり面白かったです。最後の1秒まで誰が勝ってもおかしくないという雰囲気があったと思います。

進行的には長谷川さんはもちろん、岸川さんやgiginetさんなど有志で実況&解説トークなどを買って出てくれる方の尽力もあり、会場は大変盛り上がりました。

予選は全部で3ラウンド行われ、最終結果は予選1位通過。

kntkymtさんと提出時間だけの僅差の戦いでした。Rd.2,3ではお互いほとんど差がなく、1問目のスタートダッシュが効いた形だったようです。

2位から30秒近く暫定リードしている様子

というわけで決勝が楽しみになる予選会でした。

決勝

さて、予選の様子を詳しく書いてきましたが、決勝は写真を全然取ってなかったので、当日の雰囲気を知りたい方はぜひニコニコのタイムシフトでご覧ください。

簡単に振り返ると、自分は得意な問題ばかりを引いて運が良かったと思います。
特にFizzBuzzが私の時だったら敗退していたと思います。最短を出せませんでした。
「運も実力のうち」と言いますが、本当にその通りです。

「一発目から出てくるコードではない」

でもひとつだけ、「決勝最後の問題の解答を一瞬で出していてすごかった!」とたくさん褒めていただきました。ありがとうございます。私もあの時はついガッツポーズが出ていたと思います。

開始2分半くらいで十分に短いコードで正解
最後に短くした解答

"iOSDC"とのハミング距離を求めよとの問題。
「ハミング距離」は知らなかったのですが、予選の時からzipを使いたい欲がずっとあったので、ハミング距離をググって理解したときに回路がうまく繋がった感じでした。
zipを使いたい欲」って同じエンジニアでも意味わかんない感覚だと思うのですが、自分結構あるんですよ。Haskellを趣味でやってる時はもっと症状が酷かったです。Swiftを書きながら「関数合成したい」とか「Liftしたい」とかそんなことばかり思っていました。こういった副作用が強く、仕事に支障が出るので最近はHaskell控えておりました。具体的に何かの役に立つと思ってやっていたわけではないですしね。
思えば全ての発端は私にHaskellの手解きをしたinamiyかもしれません。

しかし思い返して私のいろんな過去があの解答に向かって繋がっていたのだと思うと、人生の奥深さを感じざるを得ません。
最近はTCAという関数型のアーキテクチャも流行っていますし、Haskellを学び直すいい機会かもしれませんね。

必勝法

最後に、day1の夜にツイートした内容です。

結局、アンカンファレンスは行いませんでした。帰りの電車で思いついたため予約が間に合わず、さらに体力温存のためday2は遅れて参加しました。その後もスケジュールが詰まっていたため、断念せざるを得ませんでした。

「必勝法」(もちろんそんなものはなくネタですが)はここで詳しく書くと長くなるので、どこかで別の形でお話しできればと思います。

あの重装備は?

おまけです。
「何者ですか?」という質問の次に多かったのは、「ガチ装備でしたね。」でした。

1人だけ分割キーボードとスタンドで異様な装備

そうですね、予選の時から自覚はありました。
そして「こんな目立つ装備で負けたら本当に恥ずかしいのでは」と本番前に一瞬躊躇しました。
しかしそこは自作キーボードの広告塔になろうと割り切ることができました。
最終的に本当に勝てば問題ないですしね!勝てば!

というわけで、こちらに私の使っていたのと同じキーボードを購入できるショップを貼っておきます。自作キーボードに関してはこれまたたくさん書けることがあるので、聞きたいことがある人はお気軽に声かけてください。
(アフィリンクじゃないよ。)

推しの宣伝でした。ただ本当のところは、手が分割のカスタムレイアウトに完全に慣れてしまって、MacBookのキーボードに戻れない状態なのです。結果を出すなら、いつもと同じ環境を揃えるしかありませんでした。

https://github.com/toshi0383/qmk_userspace/blob/main/keyboards/25keys/zinc/keymaps/toshi0383/keymap.c

というわけで次回のコードバトルで私に勝つ方法は簡単ですね。
キーボードの線をぶっこぬいて遠くに投げ捨てましょう。
コードが1行も書けなくなります。

参加することの意義

そんな感じで、まさかここまで思い出深い体験になるとは思いもよりませんでした。また来年の開催があれば、選手枠にこだわらずにぜひ何らかの形で関わりたいと思います。
今回は、お祭りとガチ勝負が程よく混ざり合い、イベントとしてとても良いバランスだったと感じました。
運営に関しては、例えば以下のように参加しやすい環境を整えるアイディアはあり得そうですね。
- 細かく組分けをして勝者を増やす
- 参加賞を提供する
- 3位までを表彰する、トロフィーを用意する

ポール・トゥ・ウィンでトロフィーがないのはやっぱり若干寂しいので、良かったら今からでも贈呈待ってます。

皆さんへメッセージ

最後に、コードバトルでは勝者は1人ですが、勝負は相手がいてこそ成り立ちます。今回参加を躊躇した方も、ぜひ次回はイベントの応援だと思って気軽に参加してみてはいかがでしょうか?私みたいに思いがけず勝ってしまうかもしれませんし。
コンテストというのは参加するだけでもすでに立派でリスペクトに値します。互いに尊敬し、高め合う場ができるのは本当に素晴らしいことです。

コンテストといえば、予選の時にlog5さんに刺激をもらいまして、私もAtCoderを始めました。これは本当に初心者で、初参加ではC問題までしか解けませんでした。良かったらこちらも一緒に勉強していく仲間を募集しています。

まとめ

開催本当にありがとうございました。
まだまだ気持ち的には書き足りないのですが、長すぎるのでここまでにします。
いろんな方とお話しできて楽しかったです。
また会いましょう!

この記事が気に入ったらサポートをしてみませんか?