2022.06.07 14:30 提供される参考実装言語にJavaを追加

参加者

予選参加者(以下選手)はチームで登録するものとし、チームは1名、2名、もしくは3名での登録とする。チームは「一般枠」「学生枠」のいずれかに登録される。予選へ参加するチームの合計は 700 を超えないものとし、参加登録は先着順とする。企業スポンサーおよび個人スポンサーに付帯される「予選参加確定枠」の権利保持者は、それ以外の選手の参加登録前に優先的に登録可能である。本選参加チームは 30 チームとし、予選の競技結果から後述の方法にて選出される(本選出場チームの選出を参照)。
  • 一般枠: 下記学生枠に該当しないチーム
  • 学生枠: チームの選手全員が学生・生徒であること (年齢は問わないが社会人学生は対象外とする)
    • 参加登録時に選手はそれぞれ学生・生徒であることを自己申告する。チームの選手全員が学生・生徒として参加登録している場合、そのチームは自動的に学生枠へ登録される。学生・生徒であることを申告せず一般枠で参加しても問題はない。
    • 学生であり、社員や役員として雇用もされている場合、予選実施段階での学業比率により参加枠を判断するので運営へ問い合わせてください(例:週5日のフルタイム勤務の場合は一般枠として参加登録をする)


    競技日程

  • 予選: 2022年7月23日(土)
  • 競技時間: 10:00 - 18:00 (JST) の8時間とする


  • 連絡手段

    参加登録時に主催者から案内するサポートチャット (Discord)、もしくは主催者が運営する公式Webサイトや選手向けポータルサイト(以下、ポータル) を連絡手段とする。原則として競技中の質問・サポート対応はポータル、全体アナウンスは Discord を利用する。

    全選手は必ず Discord へログインし、通知を設定するなど、連絡を確認できるようにすること。また、競技中はポータルも確認すること。そして、主催者からの対応が必要な連絡に対し適切に対応しなかった場合、選手およびチームは円滑に競技へ参加できなくなる可能性について留意すること。

    なお、アナウンスについては必要な事前準備・確認事項の連絡などを周知するため、競技時間以外にも随時実施される。そのため、選手は競技時間内外にかかわらず連絡を定期的に確認すること。主催者は全体の円滑な運営を優先するため、チームおよび選手が主催者の指定した期日までに実施すべき設定などを終えていない場合など、個別サポートは行わない。選手はその旨を留意すること。

    主催者は質問への対応等に際し、必要に応じて Discord において選手およびチームとチャットを開始する場合がある。その呼び掛けを行う際、主催者は Discord 上の mention 機能を利用する。

    質問

    選手は主催者へ質問を送信することができる。競技時間中は原則としてポータルから、競技前後は Discord を利用する。質問は競技内容・マニュアル・レギュレーション等に対する疑問点・明確にしたい事項の確認や、サーバー障害などのトラブル報告・サポート依頼に利用することができるが、これに限らない。

    主催者は質問された内容について競技の一環である場合は、回答できない旨返答することがある。

    競技時間中の質問について、主催者からの回答は全選手へ公開、あるいは個別に回答される。全選手へ公開される場合、質問内容の原文、あるいは主催者による内容の要約が公開される。未回答の質問・未公開の回答については質問した選手およびそのチームメンバー、主催者のみが確認できる。質問への回答/更新はポータル上にて選手およびそのチームへ通知される。

    主催者は競技時間中の質問への回答について、原則として全選手へ公開する。ただし、重複する質問や、選手およびチーム個別の問題 (サーバ障害など) に対する対応の場合、この限りではない。

    ソフトウェア事項

    選手は主催者からWebアプリケーション (問題) が与えられ、選手は競技時間内に問題の高速化を行う。選手は高速化された実装 (回答) を作成する時、主催者より与えられたソフトウェア (初期実装) をベースに実装しても良いし、しなくても良い。 どのプログラミング言語で初期実装が提供されるかは主催者は事前にアナウンスするが、その各々の性能が一致することは保証されない。

    環境

    予選では OS として Ubuntu、問題は Go, Perl, PHP, Python, Ruby, Rust, Node.js, Java での実装を提供する (予定)。

    高速化の際、主催者より問題として与えられた Web アプリケーションから、以下の部分は変更しないこと。
  • アクセス先のURI、ただしサーバー側で生成する部分(IDなど)は文字種([0-9] や [0-9a-zA-Z_] など)を変えない範囲で自由に生成しても良い
  • レスポンス (HTMLのDOM, JSONオブジェクト等) の構造(表示に影響しない範囲での空白文字の増減は許可される)
  • JavaScript/CSSファイルの内容
  • 画像および動画等のメディアファイルの内容


  • 各サーバにおけるソフトウェアの入れ替え、設定の変更、アプリケーションコードの変更および入れ替えなどは一切禁止しない。 ベンチマーク中にポータル・マニュアル・レギュレーションといった、主催者の指示以外で利用が認められたサーバー以外の外部リソースを使用する行為(他のインスタンスに処理を委譲するなど) は禁止する。 ただしモニタリングやテスト、開発などにおいては、PCや外部のサーバーを利用しても構わない。

    許可される事項には、例として以下のような作業が含まれる。
  • 複数台あるサーバーの役割の変更
  • データベーススキーマの変更やインデックスの作成・削除
  • データベースに利用するミドルウェアの変更
  • キャッシュ機構の追加、ジョブキュー機構の追加による遅延書き込み
  • 他の言語による再実装


  • ただし以下の事項に留意すること。
  • コンテスト進行用のメンテナンスコマンドが正常に動作するよう互換性を保つこと
  • サーバ再起動後にすべてのアプリケーションコードが正常動作する状態を維持すること
  • ベンチマーク実行時にアプリケーションに書き込まれたデータは再起動後にも取得できること


  • ソフトウェア事項の詳細は競技当日に主催者より公開されるマニュアル (当日マニュアル) に記載され、当日マニュアルに記載されている内容が本レギュレーションに記載されている内容より優先される。

    サーバー事項

    チームは Amazon Web Services (AWS) アカウントを各自で用意し、それを競技に利用する。選手は主催者より競技開始後に指定された AMI (Amazon Machine Image) を利用して Amazon EC2 上にサーバーを起動し、競技へ参加する。具体的なサーバー起動方法については当日マニュアルに記載される。

    なお、AWSアカウントについては他用途で利用されているものを流用しても構わない。ただし、禁止事項に抵触する行為 (マニュアルに沿って作成されたEC2インスタンス以外の利用など) に注意すること。また、主催者は選手およびチームが当該 AWS アカウントに既に存在するリソースや設定に起因して発生する問題についてはサポートを行わない。

    採点

    採点は採点条件をクリアしたチームの間で、性能値 (スコア) の高さを競うものとする。

    主催者は性能計測ツール (ベンチマーカー) を選手に提供する。選手がベンチマーカーへ実行リクエストを送る事で、ベンチマーカーから選手に提供されているインスタンスに対し計測用の処理が実行され、スコアが記録される。 採点条件・性能値・ベンチマーカーについての詳細は、当日マニュアルに記載する。

    備考

    予選終了後、主催者はインスタンスに対して再起動を含む性能計測の追試を行う。 複数台のインスタンスが提供されており、それらを使用していたとしても、主催者がインスタンスを再起動する順序は保証しない。

    アプリケーションがレギュレーション /マニュアル / ベンチマーカー実装など、主催者の意図通り正常に動作しない、あるいは競技時間中に登録されたスコアに近い結果が再現されない場合、ベンチマークの結果に捏造があると判断される場合には、判断基準の公開と共にそのチームは失格とする。 失格が発生した場合や本選出場チームが何らかの理由で本選参加を辞退した場合、適宜繰り上げをおこない、本選出場チームを選出する。

    本選出場チームの選出

    競技時間中に記録されたスコアによって、本選出場する30チームが選出される。選出に用いるスコアは原則として競技時間内の最後に記録された値 (予選終了時スコア) を用いる。
    競技時間中、最後のベンチマーク実行が失敗し、スコアが記録されていなかったチームは、失格となる。

    最終スコアが同一だった場合、最高スコアが高かったチームを選出する。最高スコアも同一だった場合は、そのスコアを先に記録したチームを選出する。
  • 一般枠 (25チーム): 予選終了時スコアにおける上位25チーム
  • 学生枠 (5チーム): 学生チームの中で、予選終了時スコアにおける上位5チーム


  • ただし、学生チームが前述の一般枠の基準で通過できる場合、学生枠にはそのチームを含めずに5チームを選出する。

    予選終了後、主催者が選出されたチームへの追試を行うため、本選出場チームの発表は後日公開とする。


    禁止事項

    以下の行為を特に禁止する。
  • 予選の競技終了時間までに、競技の内容に関するあらゆる事項 (問題内容・計測ツールの計測方法など)を公開・共有すること(内容を推察できる発言も含む)
    • 不特定多数への公開はもちろん、他チームの選手と連絡を取り、問題内容等を共有する事 (結託行為) も禁止とする。
    • ただし主催者が Twitter, Web サイトにおいて公開している情報は除く。ポータルでログインを要するページにおいて記載されている内容は公開情報でない旨留意すること。
  • 競技時間中、チーム外の人物と ISUCON12 問題にまつわる事項のやりとり (ISUCON12 選手であるかどうかを問わない、SNS での発言も含む)
  • 主催者の指示以外で利用が認められたサーバー以外の外部リソースを使用する行為(他のインスタンスに処理を委譲するなど) は禁止する。
    • ただしモニタリングやテスト、開発などにおいては、PCや外部のサーバーを利用しても構わない。
  • 選手が主催者からその選手が属するチームへ提供されていないサーバーについて直接のアクセスを試みる行為や、外部への不正アクセスを試みる行為。具体的にはベンチマーカーへのログイン試行等。(なお、例示のため、これに限らない。)
  • 他チームと結託する行為 (程度を問わず)
  • 主催者が他チームへの妨害、競技への支障となるとみなす全ての行為


  • 本レギュレーション, ポータルサイト, また当日マニュアルにおいて禁止とされた行為 (禁止事項) への違反は、失格となる。