top of page

趣味のゲームに1000以上のテスト ― むだ?

執筆者の写真: Marcel Dütscher
Marcel Dütscher
7月2日
読了時間: 2分

私たちのプロジェクトには、今や1000をはるかに超える自動テストがあります。サーバー側に約990、Unity クライアントに約120です。家族のプロジェクトにしては、やりすぎに聞こえるでしょう。でも逆なのです。その理由をお話しします。


テストは、私たちの2人目の開発者です。ひとりで作っているので、コードレビューで「ちょっと待って、それだとクラフトが壊れるよ」と言ってくれる人はいません。テストが、その同僚です。レシピ、酸素、空腹、生き物の行動、ワールドのパスワードなど、ゲームのしくみのすべてに、変更のたびに実行されるテストがあります。こわがらずにリファクタリングできることが、本当の成果です。


じゃまにならない速さ。15分もかかるテストは、だれも実行しません。だから私たちの CI のゲートは、2段階です。プルリクエストのチェックは、速いテストで3分ちょっとで終わります。完全で遅いテスト一式は、そのあとに走ります。こうして、開発のサイクルを軽く保ちつつ、カバー範囲も失いません。


Unity のテストは、それだけで一つのテーマです。クライアントのロジックは、動いているエンジンの中ではテストしにくいものです。私たちの工夫は、クライアントの中核のロジックを、Unity なしで動く専用のライブラリに入れることです。それを、普通のコードのようにヘッドレスでテストします。本当にエンジンが必要なものだけが、EditMode/PlayMode のテストとして動きます。


警告は、エラー。私たちの CI は「warnaserror」でビルドします。コンパイラの警告は、どれもビルドを失敗させます。細かすぎるように聞こえますが、いちばん大事な警告がいつのまにか埋もれてしまう「警告の墓場」を防いでくれます。


正直な結論:テストを書くのに、開発時間のおよそ5分の1がかかります。でも、直した機能は、直ったままでいてくれます。そして、仕事のあとの夜に息を吹き返すプロジェクトにとって、週末の機能が火曜日の機能を壊していないという確信ほど、価値のあるものはありません。

最新記事

すべて表示
新しいバージョンが2026.7.19で、0.9.2ではない理由 🗓️

今日アップデートする人は、バージョン0.9.1から2026.7.19にジャンプします。打ち間違いに見えますが、意図した決定です。バージョンの付け方を、「セマンティック」から日付ベースのバージョン(年.月.カウンター)に変えました。その理由をお話しします。 古い方式は、だれも聞かない質問に答えていました。 セマンティックバージョニング(0.9.1、1.2.3…)は、ソフトウェアライブラリの世界から来

 
 
おそうじ完了:GitHubのキャッシュをようやくちゃんと使えるようになりました 🧹

前回の技術記事では、ビルドとチェックのパイプラインに本当は何がかかっているのかを測りました。わかったのは、お金ではなく、待ち時間と保存容量だということでした。その記事は「おそうじの作業は計画してあるけれど、まだ終わっていない」で締めくくっていました。ところが、思ったより早く進みました。今日のお昼の時点で、メインブランチに入っています。数字をご紹介します。 まず結果から。 リポジトリのキャッシュ使用

 
 
月に1000回のビルド実行、そのどれにもお金はかかっていません ⚙️

まず訂正です。この記事の最初のバージョンでは、GitHubのビルド時間を使い切ってしまい、そのせいでProアカウントにアップグレードせざるをえなかった、と書いていました。それは間違いでした。ドキュメントを一目見ればわかったことです。公開リポジトリでは、GitHubのビルド時間は無料です。アーティファクトもキャッシュもです。うちのリポジトリは5月末から公開されているので、1分もお金を払ったことはあり

 
 

コメント


この投稿へのコメントは利用できなくなりました。詳細はサイト所有者にお問い合わせください。
bottom of page