ISUCON14参戦記 (yumiyao チーム)
2024-12-08 に ISUCON14 が開催されました。
今回、FLITNERSとしては初めてスポンサーとしての参加でした。
社内からは我々を含めて3チームでました。
我々は miyao, maruyama, そして私 kawachi の3名で yumiyao チームとして参加しました。
スコア推移はこんな感じ。着地は8,725点ということで151位でした。
個人的には前回初参加で111位だったということで100位以内を目指していたのですが、目標達成できず… 悔しい!
日頃の忙しさもあり、練習が全くできていなかったので地力でどこまでやれるかというチャレンジでした。
課題はチェアライドという仮想のシェアライドサービスでした。
システム自体もそうですがプロモーションビデオも含めて、本当によくできた課題で昨年に引き続き感動しました。
前年の経験から nginx のログと slow query log を交互に眺めながら進めればある程度行けるのでは、と踏んでおり、実際スタートとしてはまずまず順調だったのかと思います。
不慣れな言語で進めたということもあり、椅子ごとの最終位置と総走行距離を記録する部分を動かせたのが15時くらい。
そこからは、スコアが乗客の満足度に依存するという点に着目して進めました。
個人的にはHTTP レベルで早ければいいというわけではなく、アプリケーションとしてマッチングの良さを求めなければならないという点に視点を移すのが遅かったな、と感じています。
遅かった原因を振り返ると、やはり実装に時間がかかってしまったからであり、チーム全員が慣れている言語を作っておくことが前提として大事です。
最大の反省点は「ドキュメントを最後までしっかり読もう」という点。
実世界と違って世界が平面である点などが書かれていたということです(最後まで読まなかったので詳細は分かっていない)。
ついついコードとシステムの方を向いてしまいがちですが、アプリケーションの仕様が分かっていないと最適化が捗らないことを痛感しました。
以下、同じチームのメンバーからも感想をいただいています。
miyao
今回初参加しました、miyaoです。感想を簡潔に言うなら、
「めちゃくちゃ悔しい」
の一言です。
スタートダッシュは大きな不具合もなく、出だしはとても良かったのかなと思っています。
しかし、その後の改善に関しては、個人的な力不足、練習不足だと実感する箇所が多くありました。
大きく2つ挙げるなら、Goについてとスピードアップの手法そのものについてです。
Goについて、最新の座標を取得し更新するテーブルの作成にかなり時間を割いてしまい、
ある程度まで形にして、どうしてもわからない部分はkawachiさんにデバッグしてもらいました。
一箇所の修正に2人割いてしまっており、もっとGoに対する力が必要であると痛感しました。
手法については、競技終了後に他のチームの手法を聞いていた時に感じたものです。
素直に重いエンドポイントを空いているインスタンスで実行するという手段を聞き、
もっと手の届く範囲に改善点があったのだと気付かされました。
もっとレベルアップして、是非また来年リベンジしたいです。
maruyama
今回に初めてISUCONに参加ということで、今まで使ったことないGo言語を使うということもあり、どれだけチームに貢献できるのかということに不安がありましたが、自身が当初想定していたものよりかは貢献できたのではないかと思います。
自身が担当したところは、速度に問題を抱えているAPIを見つけるためにNginxのログを集計できるように変更したり、WebサーバとDBサーバを分け3台あるサーバの2台目の活用、ログから問題の速度に問題がありそうなAPIのコードを探しそれの修正などを行っていました。
最近はNginxのようなアプリケーションや、EC2のようなサーバーレス環境ではない環境を使った開発はしていなかったのですが、学生時代に自宅のPCにLinuxを入れてWebサーバを建てて遊んでいた経験が活き、大きな問題を抱えることなくサーバの設定変更などが行えました。
コードの修正ですが、今まで使っていないGo言語でもChatGPTやCopilotを活用すれば細かい文法に自信がなくとも、コードの雰囲気を読み取ることができればある程度の改善は初見でもでき、Go言語に触ったことがないためコードの修正に貢献できないということが起こらずによかったです。
一方で、3台与えられたサーバの3台目の使い道が思いつかなかったり、キャッシュを使った改善などは経験不足を感じ、これが次回の課題に感じました。
また、前回参加した人たちの感想などからサーバの設定やslow queryなどのコードの改善を行えばよいと勝手に想像して取り組んでいたため、今回はアプリケーションの価値のコア部分であるマッチング部分のロジックもスコアに大きく関わっていることに気づくことが遅れたのも課題に感じました。
次回はISUCONにおける基本的な改善のアプローチを身につけ、それだけにとらわれず柔軟に取り組むことができたら良いなと思います。
Discussion