【要約】yuki4869杯 Programming Contest vol.1 開催記 [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
筆者が初めて自作コンテストを運営するにあたり、限られた準備期間の中で品質を担保するための課題に直面した。
- ・テストケースの作成:意図的な誤解法(嘘解法)を確実に排除するケースの作成が困難であった。
- ・制約の設計:C++では通るがPythonではTLEとなるような、言語間の実行速度差を考慮した制約設定が難しかった。
- ・既出問題の確認:問題の重複チェックにおいて、LLMの補助があっても完全な回避が困難であった。
- ・人的リソースの不足:問題文の読みやすさを検証するTesterを確保できなかった。
// Approach
筆者は、短期間での開発と品質確保を両立するため、LLMを活用する手法を採用した。
- ・問題のブラッシュアップ:ChatGPTに対し、問題の改善案や新しいアレンジ案を提示させ、問題の質を高めた。
- ・テストケースの生成:ChatGPTを用いて「ありそうな嘘解法」を議論・生成させ、それらを落とすためのテストケースを作成した。
- ・制約の最適化:Pythonの実行速度を考慮し、ランダムケースの生成と速度確認を繰り返して制約を調整した。
- ・構成の決定:ABCの難易度帯を参考に、9問から11問へと構成を拡張した。
// Result
筆者は、想定の倍となる65人の参加者を集め、コンテストを完遂することに成功した。
- ・参加者の反応:問題セットに対して、多くの参加者から満足度の高い感想を得られた。
- ・運営上の課題の明確化:テストケースの不備により、不正解コードがACしてしまう事象が確認された。
- ・次回の展望:準備期間を2ヶ月確保し、Testerを募集するなど、品質を向上させたvol.2の開催を計画している。
Senior Engineer Insight
> LLMを単なるコード生成器ではなく、「攻撃者」として利用するアプローチは、品質保証の観点で極めて実践的である。しかし、既出問題の混入やテストケースの漏れが発生している点は、自動化への過信に対する警鐘と言える。大規模システム開発においても、LLMによるテスト生成と、人間による最終的な検証の組み合わせが、信頼性を担保する鍵となる。