はじめに
2026年3月20日(金)から3月22日(日)にかけて開催される PHPerKaigi 2026 では、day 0 と day 1 の二日間にわたって「PHPer コードバトル」という企画を開催します。
それに向けて、当日の決勝トーナメントの出場者を決める予選を開催します。
PHPer コードバトルとは
PHPer コードバトルは、指示された動作をする PHP コードをより短く書けた方が勝ちという 1 対 1 の対戦コンテンツです。トラック A 会場にて、予選を勝ち上がったプレイヤー6名がトーナメント形式で対決します(詳しいスケジュールはタイムテーブルをご覧ください)。
プレイヤー6名の内訳は、2月28日(土)に開催されるオフライン予選の上位4名と、当日まで開催しているオンライン予選の(オフライン予選の勝者を除いた)上位2名です。
具体的な勝負の内容を説明するために、昨年の PHPerKaigi 2025 でおこなわれたコードバトルの問題を紹介します。
問題文
標準入力から行区切りのデータが入力されます。行末の改行コードを取り除いた入力文字列について、2進数で表現した際にビットで表現した時の1の個数を行ごとに合計した数を改行区切りで出力してください。たとえば文字列のXは数値で表すと88ですが、2進数で表示すると01011000なので、1のビットの個数は3になります。
takaram さんによる最短コードがこちらです(takaram さんは昨年のコードバトルの優勝者でもあります)。
while ($l = fgets(STDIN)) {
$c = -2;
$p = 'str_split';
foreach ($p($l) as $h)
$c += array_sum($p(decbin(ord($h))));
echo "$c
";
}
※このシステムでは、コードの空白を除去したバイト数がスコアになります。
このように、与えられた問題文のような動作をするプログラムを、制限時間内になるべく短く書こうというのが PHPer コードバトルです。
昨年の問題とその解説はこちらのブログ記事に記載されていますので、そちらを読んでいただけると雰囲気を掴みやすいかもしれません。
オフライン予選
オフライン予選は、2月28日(土)16:00 よりサイボウズ株式会社さま東京オフィスにて開催されます。
最初の1問は練習として、予選の成績とは関係なく実施します。
練習のあと、3問のお題に挑戦いただき、各問題で最短解を出した方を1名ずつ計3名と、全問題のコードの合計文字数が短い方1名を予選通過とします(すでに勝ち抜きが決まっている方が続けて1位となった場合、次点の方が勝ち抜きます)。
予選を通過した方で PHPerKaigi 2026 参加チケットをお持ちで無い方には参加チケットを進呈します。
また、選手として参加されない方でも、観戦者枠としてイベントへの参加は可能です。
詳しくは connpass のイベントページをご覧ください。
https://phperkaigi.connpass.com/event/384476
オンライン予選
オフライン予選後、開催2週間前を目処に特設サイトにてオンラインでの予選も開始予定です。
専用のサイトにブラウザでアクセスし、問題への解答を投稿していただきます。
※サイトの準備ができ次第リンクを記載します。
決勝に進出できるのは、2つの予選用問題を両方解いたプレイヤーのうち、合計スコアが最も小さい2名です。
こちらは day 0 当日の昼 12:00 まで挑戦が可能です。
みなさまのご参加・ご挑戦をお待ちしています!