初めてISUCONに参加し、予選を勝ち抜いて、ISUCON2017本戦に参加してきました!詳しい内容は他の人に譲るとして、私はISUCONに参加したことのない人が参加したくなるブログを書きたいと思います。

最近ISUCON(イスコン)ってよく耳にするあなた!twitterでなにやらエンジニアが盛り上がっていることを目にしているあなた!でもISUCONってなんのことだかよくわからないあなた!

ぜひ読んで見てください。 (決してステマじゃありません)


まず最初に言っておきたいのが

  • 「新しい」成長に繋がる
  • 実践でチューニングの練習ができる
  • 聞かれているのは基礎的なことばかり(難しそうでそんなに難しくない)
  • 賞金💰も夢じゃない!

ということです。詳しく見ていきましょう。


「新しい」成長に繋がる

皆さんはアプリケーションのチューニングをしたことがありますか?

アプリケーションのチューニングと言えば、個人でなかなか触れる機会は少ないと思います。 例えば、MySQLは使えても、MySQLの高速化を意識したことはありますか?Redisは使えても効率よいRedisを設計できますか?

私自身も、最初は「アプリのチューニングってなに?」と言う感じでした。ちょうどrailsやgolngなどでwebアプリがだいたい実装できるようになったくらいで、webアプリの開発・自社サービスの開発を行なっていました。

その時は「どのように作るか」のみを意識し、「アプリをどう高速化させるか」は考えていませんでした。

では「アプリケーションのチューニング」は重要なのでしょうか?

自信を持って言いますが、めちゃくちゃ重要です。

まず、最近話題になったdev.toのように、高速なwebサイトはUXの向上に繋がります(逆にどんなにいいサイトでもロードが遅ければuserはすぐ離脱します)。

また、こちらのブログで語られているように、

どんな会社でもパフォーマンス・チューニングの必要性は分かってはいるけど後回しにしてしまいがち

と、アプリケーションのチューニングができることは他の人と大きく差別化できます。

つまりアプリケーションのチューニングはみなさんが思っているよりも 現場で必要とされるスキル だと言うことです。

実践でチューニングの練習ができる

チューニングの重要性が理解できたところで、アプリケーションのチューニングってどのようにして練習しますか? 先ほど言った通り現場で必要とされるスキルですが、実際の業務ではアプリが成長してユーザーが増加し、たくさんのトラフィックを捌くようになった時です。

なかなか個人の開発では、たくさんのトラフィックを捌くようになることは少ないのではないでしょうか。

だから実際練習してみようとしても学習ばかりで、なかなか実践で練習することはできません。

そんな時に登場するのが ISUCON です!

ISUCONとは、

お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル

です。簡単に言うと、時間内に与えられた webサービスをいじって高速化し、どれだけトラフィックを捌けるか、どれだけ高速にリスポンスを返せるかを競う大会です。

もちろん大会に参加することでチューニングを実践できますし、githubに簡単にセットアップできる過去問が転がっているので、それを使えば練習できます。

だからISUCONに参加すること自体が、実践で練習する機会を作ることになります。

私はほとんどアプリケーションエンジニアとして開発していたので、あまりチューニングを意識していませんでした。だからsshでログインしたり、confファイルを触ったりするのは新鮮でした。

聞かれているのは基礎的なことばかり(難しそうでそんなに難しくない)

それではISUCONは難しいでしょうか?

少し誤解を産むような表現かも知れませんが、解答を聞いてみると「それかー!」と思うものばかり。結局問われているのは基本的なことが多く、難しいアルゴリズムについて問われることはほとんどありません。

例えば

  • DBにindexを貼る
  • MySQLやnginxの設定ファイルを書く
  • プロファイリングをとる
  • n+1を潰す

など特別難しいことをしている訳ではないと思います。

でも限られた時間内でキチンと実装するのはやっぱり難しく、色々歯がゆい思いをしたことも…

そんな悔しい思いが次の成長に繋がったり…

私が言いたいのは、そんなに恐れなくてもいいということです(特に学生枠なら)。多分初めて参加する人は思っているよりかは難しくないと思います!

そして、スコアが出て、可視化されているので、スコアを上げていくのがゲームみたいで非常に楽しいです!

賞金💰も夢じゃない!

賞金は、なんと100万円です。さらに学生なら学生枠に対しての賞金があります(2017年現在)。

お金じゃないにしても、美味しいお弁当が食べれたり、2017年度はLINE株式会社様の本社で開催されたので、本社を訪問したり、キャラクターのクッキーをもらったり、エンジニアとして成長した気がします。


ちょうどwebアプリが実装できるようになって新たな成長を欲しているあなた、ぜひ、出場して見てくださいね。

References

ISUCON公式Blog

dev.to

ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記