コンテンツにスキップ

05. Sandboxフォルダ

Sandbox/(またはsandbox/)フォルダは、プロジェクトに関連する実験的なコードや、アイデアの試作(プロトタイピング)を行うための、公式な「砂場」です。

Sandboxのルール

Sandbox/フォルダ内のコードは、本番環境の品質基準を満たす必要はありません。 - コンパイルが通らなくても構いません。 - テストコードがなくても構いません。 - コーディング規約に厳密に従っていなくても構いません。

このフォルダは、失敗を恐れずに、新しいライブラリ、アルゴリズム、APIの設計などを気軽に試すことを目的としています。


Sandboxフォルダの主な利用シーン

  • 新技術の検証 (PoC - Proof of Concept):
    • 新しいライブラリやフレームワークを導入する前に、その使い勝手やパフォーマンスを検証するための簡単なコードを記述する。
  • パフォーマンス比較とベンチマーク:
    • 複数の異なるアルゴリズムや実装方法を試し、どちらが高速かをベンチマークするためのコードを置く。
    • BenchmarkDotNetのようなツールを使い、特定の機能のパフォーマンスを測定する。
    • バージョンごとのパフォーマンス追跡: ベンチマークの実行結果をリポジトリ内のBenchmarkResults/のような専用フォルダに保存・コミットすることで、過去のバージョンとのパフォーマンス比較が可能になります。これは、意図しない性能低下(リグレッション)を検出するのに非常に有効です。
  • API設計の試作:
    • 新しいAPIのインターフェースを実際に使ってみて、その使いやすさ(APIエルゴノミクス)を確認するための、ダミーの呼び出しコードを作成する。
  • 再現コードの作成:
    • 特定のバグを再現するためだけの、最小限のコードを隔離された環境で作成する。
  • 学習と実験:
    • プロジェクトで使われている技術要素について、個人の理解を深めるための学習用コードを記述する。

構成例

通常、Sandbox/フォルダ直下には、実験したいテーマごとにソリューションやプロジェクトを作成します。

Sandbox/
├── Sandbox.sln
│
├── Proto.NewFeatureApi/      # 新機能APIのプロトタイピング用プロジェクト
│   ├── Program.cs
│   └── Proto.NewFeatureApi.csproj
│
└── Bench.AlgorithmCompare/   # アルゴリズムのベンチマーク用プロジェクト
    ├── Program.cs
    └── Bench.AlgorithmCompare.csproj

本番コードへのマージは禁止

Sandbox/フォルダ内のコードを、直接Src/フォルダにマージすることは原則として禁止です。 Sandboxでの実験が成功し、その成果を本番コードに反映させたい場合は、必ずSrc/フォルダ内に、最初からコーディング規約やテスト要件を満たした、新しいコードとして書き直してください。