第28回国際難読化Cコードコンテスト
(ioccc.org)- 今年の IOCCC28 は4年ぶりに再開され、世界中の開発者からの高度な難読化Cコード作品が多数出品された
- ウェブサイトおよびインフラの再構築、mkiocccentryツールキット導入、提出システムの改善などにより、運営効率が大幅に向上
- 審査過程は過去よりより複雑で厳しくなったにもかかわらず、審査期間は通常より大きく短縮
- コードサイズ規定は緩和されたが、小さく高品質な作品が多数選定されているため、今後のコンテスト規定変更は限定的になる見通し
- 興味深く独創的な受賞作や難読化テクニック、実験的な仮想マシン・エミュレータが紹介され、Cプログラミングのレベル向上に寄与した
IOCCC28の概要と開催の背景
- 2024年に開催された第28回 International Obfuscated C Code Contest(IOCCC28)は、4年の空白期間を経て、世界各国の開発者が参加した創造的で難解なCコード競技である
- この間、6,168件を超えるコミットが行われ、公式IOCCCサイトは「Great Fork Merge」という名称で大規模にリビルドされた
- 運営面ではmkiocccentryツールキット、新規登録プロセス、提出サーバーの導入などさまざまな革新が実施され、審査効率とコード公開速度が改善された
- 応募受付は2025年3月5日から2025年6月5日まで行われ、審査はわずか「33日」で終了し、コンテスト終了後約2時間以内にソースコードがすべて公開された
出品作品と選定トレンド
- 今年のIOCCC28は応募数とクオリティが大きく上昇したことで審査難易度も高まり、過去最多の23作品が受賞作として選ばれた
- 「4年間の休止期間の結果、より良い作品が生まれた面もあるが、全体として参加者は難読化とCプログラミングの腕前で顕著な進歩を遂げた」
- 新しいコードサイズ制限(約21%増加)が適用されたが、受賞作の半数以上は全体制限の2/3未満で、10件は1/2未満のサイズで提出され、効率性と品質を両立した
- これにより、今後10年間のコードサイズ規定の変化はほとんどないと見込まれる
審査規程および今後の計画
- IOCCC規則とガイドラインは、今後さらに革新的かつ直感的に改訂される予定で、IOCCC Judgesは2025年12月開催予定のIOCCC29準備を進める
- GitHubのIOCCC winnerリポジトリとmkiocccentry toolkitリポジトリに対して、Pull Requestベースの改善パッチを計画している
受賞作の紹介とハイライト
-
さまざまなテーマの受賞作が選定され、次の主要作品と特徴がある
- ChatIOCCC: MetaのLLaMA 2ベースのオープンソース大規模言語モデルを世界最小規模なLLM推論エンジンとして実装し、面白いチャットボット機能を提供
- Eh: UTF-8アクセントが適用されたエディタで、ed(1)より実用的な難読化コードを実装
- 135バイト One-liner: 入力された16進値を基に多様な出力を実行する極端に短い難読化コード
- Cプリプロセッサアート: 数千~数十万回プリプロセッサを実行して画像レンダリングを実現し、スクリプト実行時間を非常に長くしてユニークな体験を提供
- Z₃仮想マシン: Z-マシンの第3版を参照した仮想マシン実装で、ソースコード解釈をゲームのように楽しむことができる
- C64エミュレータ搭載仮想環境: フォークボム、ファイル削除など有害なシナリオも安全に試せる仮想マシン。C64まで搭載
- Intel 4004チップエミュレーション: 1971年発売の世界初商用マイクロプロセッサ回路を、Cコードでゲート単位まで模倣した芸術的再現
- 多言語パズル: 少なくとも3つの言語(C、英語、その他)に慣れた人向けの斬新な難読化
参加者および今後の推奨事項
- 既存の受賞作と類似した難読化は加点が低く、独創性と完成度が審査の主要基準
- 落選した参加者には改善後の再挑戦、あるいは多様なアプローチへの挑戦を推奨
- 非受賞作の別途公開も歓迎
入賞作品のコンパイルおよび実行ガイド
- 一部Cコンパイラの互換性問題が生じる場合があるため、最新のclangまたはgccを使用することを推奨
- FAQおよび公式ドキュメントを通じて問題解決と修正提出の方法を案内
2024年IOCCC28受賞作のダウンロード
- 受賞作品は圧縮ファイル(2024.tar.bz2)として提供され、各作品の詳細ページ、ソースコード、著者コメントを参照して独創的な難読化テクニックを学べる
(本文から直接アクセス可能な受賞作ダウンロードリンクと各受賞作ごとの詳細説明は公式サイトを参照)
まだコメントはありません。