現在JavaScriptの設定が無効になっています。このページを利用するにはJavaScriptの設定を有効にしてください。トップ全記事一覧テクノロジー2018.08.29OJTでY!SUCONを行い優勝した話はじめにこんにちは。SWATに配属されて「新卒として見ない」と言われ若干ビビっていた齋藤です。これはSWATに配属された新卒がY!SUCON課題を解いていき、優勝した記録です。Y!SUCONの始まり配属された初日、僕ら新卒6人を待ち受けていたのはOJTではなく通常の業務とY!SUCONの課題でした。キックオフ資料の中で急に出てきてびっくりしました。内容自体は過去に開催された内容と全く同じものでした。約2週間後に発表会を行う1日に作業できるのは2時間までこのようなものがありました。自分たちはまず用意されている言語の確認とどのようなアプリなのかを調査し始めました。Rubyが用意されており、今後の業務を考えNode.jsで実装しようと決め、作戦会議を行いました。socket使うtry_file使う競技をやっている最中にも気付いたところがあり、適度に方向を修正しつつ取り組んでいました。*僕たちのチーム名は「アルファ米」、実装が思うように行かず点数も伸びなかった*この時点ではruBチームがトップをとっていた中盤戦その1自分たちのチームのスコアが思うように伸びず、そもそもNode.jsにお互い明るくない状態だったため、勝ちたい一心で言語をGoに変更しました。Goに変更しただけで一気にスコアが2000弱まで伸びましたがまたruBチームに追い越されてしまいました。ここでteamcもぐんぐんスコアを伸ばしていき、圧倒的な差をつけられてしまいました。中盤戦その2ここでいったん、方向性を見直そうと作戦会議をまた行いました。会議の結果、自分たちは「何をしてもいい」と言われていたため、「なんでもやって圧倒的に勝つ」という方針になりました。全般に関して削れるところは徹底的に削るログやベンチマーカーのエラー文からメタ読みするデータベース完全削除appエラー文から必要なところを残し、不必要なところを削除するこのように割り切った結果、スコアが爆上がりしました。前半戦のやり残したことを実装しつつ、Nginxのログやfmt.Printデバッグ、ベンチマーカーのエラー文を読み、ベンチマーカーの挙動を調べていきました。*エラーがいっぱいここで自分たちのスコアが15万超えし、残りの時間はエラーをつぶして減点されているのをプラスにする作業が続きました。最終的にはスコアが217,917点まで行き、ここで競技が終了になりました。自分たちのチームが優勝しました!ちなみに過去に開催されたY!SUCONの優勝チームは210,158点だったらしく、それも抜いて優勝しました!!一般的に抑えるべきと思ったポイント今回はメタ読みをしまくり優勝しましたが、最初に掲げていた方針は的を得ているなと感じました。データベース周りの正規化だったり、Indexを貼ったりというものやアプリ内のボトルネックを見つけ出して修正する、というのはいい経験になったと思います。それに加え、nginxの設定だったり、CentOS7の設定だったりも重要だなと感じました。感想もともと自分はISUCONに興味があり、他の過去問などもやったりしていましたが、社内でこういった取り組みがあるのはすごくいいなと思いました。今回はnginxやCentOS自体のチューニングがあまりできていないと感じていたためそちらの方の知識を今後つけていきたいなと思いました。次回開催されるようであれば最近はやり(?)の複数台構成のウェブアプリを題材にやってみたいです。JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。JAPANのサービス開発を支える技術やデザイン、文化を発信しています。Reserved.このページの先頭へ。