見出し画像

Re:WEB開発経験ゼロから始めるISUCON生活

2021年8月22日 ISUCON11 予選におれたまさん、ボインゴさんと3人でおのおのの名前から「oretamaB2」というチームを作って初参加してみた。ちなみにじぶんは WEB開発初心者である。

じぶんのイメージ的には去年ローマに留学されたブルゾンちえみの with B 的ポジションの片割れとして ISUCON へ参加した(伝われ)

結果はスコア 25248 で全600チーム中182位だった。一応初心者初参加ながら上位3割くらいに食い込むことができた。

画像2

ただ、ISUCON11予選結果スコアの得点分布をみると上位勢のスコアが異様に跳ね上がっている様子が見て取れ、大会途中でもリアルタイムに共有されるスコアのインフレっぷりが印象的だった。

画像1

画像引用:ドラゴンボール20巻

そもそも ISUCON とは「いい感じに スピードアップ コンテスト」の略で、コンセプトとしてはWEBエンジニアが「クソ重いWebアプリを社長が買収してきて「8時間後にでかいプレスリリースとTVCMを打つから、それまでに速く動くようにしておいて」と言われたら? というもの」である。そのため時間は8時間という長丁場に設定されている。

今回せっかくの初参加なので記録として、きっかけから準備、当日の感想などを以下に記録しておく。

きっかけ

2020年12月に Interaxion Podcast の Ep.12 でプログラミングコンテストに参加したというエピソードが紹介されていて、その感想で「ISUCON 面白そう」とツイートしたところ、そちらにリプで参加を薦められたというのがきっかけである(半年以上前)。

「面白そう」とツイートしてからISUCON11予選まで半年くらいあったので、それまでに過去課題にトライしてみたり準備できたらいいなぁ〜くらいの軽いノリで参加を決めた(雑)

準備

まず ISUCON がどのようなものか知るため ISUCON事前講習会2021 へ参加した。とにかくトークされている方のISUCONへの熱量が凄かったのを記憶している。

画像3

ISUCON事前講習2021資料:ISUCON はママ???(マ?)

そして2021年6月末頃に ISUCON 参加登録が開始された。600チーム限定で先着順に参加することが可能となる。じぶんは参加登録開始から1時間半後くらいに ( ゚д゚)ハッ! と思い出せたので無事登録することができた。

チームの事前準備 としては 6~8月に合計8回(各2-3時間)オンライン勉強会をした。やったこととしては Software Design 2021年7月号の2章の「過去問「ISUCON10予選問題」に挑戦」で紹介されている環境構築、ボトルネックの探し方、速度改善である。ISUCONですべき一連の流れを抑えるという点ではとても良い内容だった。

ただ注意点としては、行間が空いている記事だったためそのままコードをコピペしてもたびたび動かなかったりして、その行間を調べて動かす必要があった。その分、行間を埋めるだけでも勉強にはなった。

画像4

引用元:Software Design (ソフトウェアデザイン) 2021年7月号第2章

ISUCON予選直前の上記準備を終えた時点で、チームのチャットで戦略を話そうということになった際に交わしたやり取りは下記である。

画像5

つまりは万歳アタック……

そして ISUCON 予選当日を迎えた。

当日の感想

当日オンラインで9時40分から予選問題の解説が始まったが、じぶんは9時45分に起きた。既に予選問題の紹介動画が始まっていた(汗)

今年は ISUCONDITION(椅子コンディション) という椅子の状態を記録する意味不明な謎サイトの高速化というお題だった(椅子コンディションとは…?)

そしてなんやかんや8時間あっという間に経って大会が終わっていた(いた)

ISUCON11予選直後に書いたスコアの変化とチーム感想を下記に記しておく。全体として「良かった」や「楽しかった」という感想である。

スコア&感想:
・MySQL インスタンス切り分けは効果的だった(1727->8400)
・mysqldumpslow で遅いクエリを確認し、INDEXを張ったら高速化した(8400->21736)
・MultiINDEXでも高速化した(21736->23886)
・nginx インスタンス分離でさらに高速化した(23886->25468)
・git管理を最初にしたのは良かった
・練習通りやるべきことが見えて手が止まらなかったのが良かった
・詰まったタイミングで休憩挟めたのが良かった
・8時間使い切れたのが良かった
・スコアのインフレが楽しかった
・最後レギュレーションに合わせてインスタンスすべて再起動しスコアチェックできたのも良かった
・スコア0点じゃないと思う(たぶん)

個人的には8時間という長丁場なので最後の方では何やったらいいか分からずボーッとする時間が生じるのではないかと予想していたが、全然そんなことなかった笑

あと、データベースを別インスタンスに分けるだけでもスコアが何倍にも跳ね上がったりするので、うおおお、めっちゃ高速化してる……ッ!!ってチームで盛り上がれたのが楽しかった。

また同じ問題に挑戦したい方はぜひ下記に上げられている予選問題に挑戦してみるのも楽しいと思う。

おわり

軽いノリで始めた割にコツコツと継続的に活動して、結果も残せたので大満足だった。

次回もし出ることがあれば今回できなかった部分(アプリケーション周りの高速化)や事前準備や当日の段取り改善、自分自身の技術力を上げた上で改めて参加できればいいなと思った。

WEB開発初心者だったが、とりあえずなんでも見てやろうと軽いノリで参加してみるとまた違う景色を見ることができた。ISUCON まじおすすめ。


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