以下の内容はhttps://tech.willgate.co.jp/entry/2025/12/12/115500より取得しました。


社内コードゴルフサービスを自作して半年運営してみたら最高に楽しかった

この記事は ウィルゲート Advent Calendar 2025 12日目の記事です。

adventar.org

どうも、ウィルゲートの VPoE の zoe(@for__3)です。
普段は開発室のマネジメントや組織づくり、技術領域の経営判断に携わっています。 最近見た映画はズートピア2でズートピアをまだ見てなかったのですがめっちゃ面白かったですね。

今日は、今年の3月ころから趣味的に社内で実施していた「社内CodeGolf」の取り組みについて、半年以上運営してみて感じたことをまとめようと思います。


はじめに:なぜ社内で CodeGolf を始めたのか

今年の 3 月末、PHPerKaigi のコードゴルフ企画に参加したのがきっかけでした。
数バイトの違いに本気で悩んだり、ちょっとした書き方の工夫に喜んだりするあの感覚が久しぶりで、「これは社内でも絶対に盛り上がる」と感じました。

同じ頃、AI コーディングを自分自身がまだ深く使いこなせておらず、AI を使ってひとつのサービスを作り切る経験をしたいという動機もありました。どうせ作るなら社内のメンバーと一緒に遊べる形にしたほうが面白い、という理由から、「じゃあ CodeGolf のサービスを自作してみよう」と考えました。

外部サービスを使う選択肢もありましたが、 自分たちで好きなように運営できたほうが、絶対に長く楽しめる という思いが強く、最終的に内製を選びました。

ちなみに作ったサービスは社内で Code Champs と名付けました。毎お題ごとのチャンピオンを決めるという理由で名付けましたw

初期実装では AI を積極的に使い、Slack 投稿やランキング集計などは 3 人日ほどで形になりました。全体の 7〜8 割は AI が補ってくれた感覚です。一方で、提出コードを安全に実行するための採点基盤については、docker-in-docker の構成や提出コードの安全対策など、AI が苦手とする領域で、生成されるコードは動かず、最終的にすべて自力で書きました。ここは最も苦労した部分でした。

こうしてサービスが形になり、徐々にアップデートも取り入れつつ今に至るまで半年ほど社内でほそぼそと運営してきました。 実際に運営してみると、技術面以上に「人と企画」の難しさが大きく見えてきました。

自作した社内コードゴルフのトップ画面


やってよかったこと:何よりも私自身がとても楽しかった

半年続けてみて、やってよかったことの中でも最も大きかったのは、自分自身が本当に楽しめたことです。

まず、社内サービスとしての開発そのものがすごく楽しかったです。CodeGolf の仕組みをどう動かすかを考えて実装するのはもちろん、採点基盤のように難しい部分があると、普段の業務とは別の刺激があって良いリフレッシュになりました。

また、出題を作る過程そのものが面白いというのも大きな発見でした。
「解くときに面白くなるか」「難しすぎず簡単すぎず、ちょうどいい着地になるか」を判断するのは予想以上に難しく、実際に手を動かしながら試行錯誤するのが純粋に楽しかったです。

さらに、社内メンバーと一緒に CodeGolf を競うことも良い経験でした。
普段の自分はマネジメント中心で、日常的にコードを書くことは多くありません。マネージャー陣も同様で、業務で「同じ課題を複数人で書いて競う」という体験自体ほぼありません。
だからこそ、短い課題を通じてみんなでコードを書き、ちょっとした違いを楽しみながら競い合えるのは、とても新鮮で貴重な時間でした。

予想を大きく上回るニューレコードの通知で盛り上がる図


技術的な深掘りの文化が自然と広がった

CodeGolf を続ける中で、思っていなかった良い変化もありました。
それは、参加者同士の会話が増え、言語仕様や関数の挙動についての理解が深まったことです。

短いコードを書くためには、普段はあまり触れない挙動まで把握する必要があります。
そのため、

  • 「この関数ってこのケースだとこう動くんですね」
  • 「この書き方ってこのバージョンだと通るんだ」

といった会話が自然と発生し、疑問があればドキュメントを読み、playground で動作確認をする習慣が強まっていきました。

ランチの時間に軽く集まって、「この書き方見つけましたよ」と話しながらコードを書くような瞬間も多く、自然に技術的な話題が共有される空気ができあがっていきました。


一方での誤算:得られる知識は多少偏る

良い影響がある一方で、運営していて誤算だった点もあります。

PHP の仕様に詳しくなるものの、その中には 通常の開発ではあまり触れない挙動 も多く含まれていました。暗黙の型変換の例外や、関数の境界挙動など、CodeGolf ならではの要素です。

こうした知識は CodeGolf では役に立ちますが、日常の開発で求められる機会は多くありません。
この点は運営して気づいた部分でした。

ただし、知識そのものよりも、仕様を調べ、手を動かし、理解を深める姿勢が身についたことのほうが大きな価値だったと感じています。


忙しいときは自然と参加者が減る

運営開始直後から、忙しい時期は参加者が大きく減る傾向が見えてきました。
自発的に参加する企画なので、本業の忙しさにどうしても影響されます。

半年運営して効果を感じたのは、忙しい時期でも 5〜10 分で取り組める小粒な問題を用意することでした。
短時間で取り組めるため、「とりあえず少しやってみよう」という気持ちを引き出しやすくなります。

また、期末や大型リリース前後は特に参加者が減るため、開催タイミングの調整も運営にとって重要でした。


レベル差が広がることで参加しづらくなる

続けていくと上位勢のコードがどんどん短くなり、初級者が参加しづらくなるという課題もありました。

これに対して途中から導入したのが ランク制(Begginer・Master) です。

  • Begginerランクは過去の出題で1位を取った人は参加禁止とし、かつ問題を少し簡単めにしています。
  • Masterランクは参加は誰でも任意で参加できますが、問題は解きごたえのある難しめのものに設定しています。

それぞれのレベルに合った課題を選べるようになり、全体として参加しやすい環境を維持できるようになりました。

とある月のBegginer問題 - Begginerにふさわしく問題文、サンプルコードともにみじかめ

とある月のMaster問題 - Begginerの問題から発展しており少し問題として複雑な設定、一方で解きごたえはある(短縮すると短くしがいがある)


半年運営してわかった「お題作成の難しさ」

運営を続ける上で意外と大変だったのが、毎回適切なお題を作ることです。
難しすぎても参加しづらく、簡単すぎても物足りない。
さらに、自分自身も楽しめる題材である必要があり、このバランスを取るのがなかなか難しいものでした。

この課題に対しては、AI に大量の叩きを作ってもらい、その中から良さそうなものを選ぶ方法で対応しました。
選んだ題材を軽くアレンジし、AI に「出題文・例示・サンプルコード・テストケース」を整えてもらい、最後に自分で playground で検証して入稿する流れを取りました。 入稿する際にも、システムで必要な項目と形式をあらかじめAIに伝えておくことで「入稿形式で出力して」と言うだけでコピペで済むようになり非常に楽でした。

素材を大量に作る部分を AI に任せることで、運営負荷は大きく軽減できました。


まとめ:CodeGolf は小さな学びの積み重ねを生む

CodeGolf を半年以上続けてみて感じたのは、CodeGolf は単なる遊びではなく、技術的な深掘りを自然と生む取り組みだったということです。

扱う問題はどれも小さく、簡単にやり直せるため、失敗してもすぐに再挑戦できます。
特によかったのは、誰も最適解を知らない中で、各自が試行錯誤しながら小さな改善を積み重ねられることでした。
試したことがうまくいけばスコア(バイト数)で返ってきて、うまくいかなければ別の手を考える。その結果がすぐに目に見えるのは、とても分かりやすく、純粋に楽しい体験でした。

この「試行錯誤 → 小さな改善 → 結果の可視化 → 再挑戦」の流れは、日々のエンジニアリングにおいても重要な考え方です。
問題自体は小さくても、その中で仕様を調べ、理解し、自分の手で確かめながら改善していくプロセスは、普段の開発にも良い影響を与えてくれました。

小さなチャレンジを楽しむ文化は、組織にとって確実に良い影響をもたらします。
もし似たような取り組みを検討している方がいれば、まずは無理なく続けられる仕組みづくりと、小さく挑戦できる題材選びから始めてみると良いのではないでしょうか。

ここまで読んでいただきありがとうございました。
「ウィルゲート Advent Calendar 2025」、翌日は水口さんの
「いつからか見積もりをやめたチーム ― 週次ゴールで開発が変わった話」 です!




以上の内容はhttps://tech.willgate.co.jp/entry/2025/12/12/115500より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14