システム開発ではテストの自動化が欠かせません。
私たちも C# / .NET 2022 を使った開発で、品質向上とリグレッション防止のために MSTest を利用した自動テストを積極的に導入しています。
そんな中で、ある問題にぶつかりました。
Mockが使いたい
単体テストを書いていると、外部サービスやデータベースへアクセスする処理を切り離してテストしたくなります。
そのために利用されるのが「Mock」です。
例えば、
・データ取得処理だけ差し替えたい
・API呼び出しを偽装したい
・戻り値を自由に変更したい
といったケースです。
テストコードを書いていると、
「このクラスだけ入れ替えられればテストが簡単なのに」
という場面が頻繁に出てきます。
あれ?Enterprise版しか使えない
Visual StudioにはMicrosoft Fakesという仕組みがあります。
しかし調べると、”Visual Studio Enterprise限定”という現実に直面しました。
開発チーム全員分のライセンスをすぐに用意するのは簡単ではありません。
もちろん有名なサードパーティ製ライブラリもありますが、
・学習コスト
・ライセンス
・利用ルール
・将来の保守
などを考えると、プロジェクトによっては導入判断が難しいこともあります。
それなら作ろう
無ければ作る。
非常にシンプルな発想でした。
私たちが欲しかったのは、
・MSTestで利用できる
・軽量
・学習コストが低い
・最低限の機能だけ持つ
そんなMockライブラリです。
そこで開発空き時間を利用して、自分たちで実装を始めました。
作ったもの
今回開発したのは
dotnet-mini-mock
という小規模なMockライブラリです。
特徴は非常にシンプルです。
・インターフェースを対象に利用可能
・戻り値を簡単に指定できる
・MSTestでそのまま使える
・小規模案件向け
・ソースコードが読みやすい
巨大で多機能なライブラリを目指したわけではありません。
むしろ
「新人でも中身が理解できる」
ことを重視しました。
AI時代の開発
今回の開発で面白かったのは、実装のかなりの部分をAIと対話しながら進めたことです。
仕様を整理し、
・Claude Code
・GitHub Copilot
・ChatGPT
・Codex
などの支援を受けながら設計を進めました。
もちろん最終的な品質確認や設計判断は人間が行います。
しかし、
「アイデアを形にする速度」
は数年前とは比べものにならないほど向上しています。
技術者に求められるものも変わってきた
最近は
「ライブラリを知っている」
ことよりも
「課題を解決できる」
ことの方が重要になってきたと感じています。
必要なものが市場にあれば使う。
無ければ作る。
そしてAIを活用して素早く検証する。
そんな開発スタイルが当たり前になりつつあります。
株式会社オフグリッドでは
私たちは受託開発だけでなく、
・業務改善
・DX推進
・AI活用支援
・外部情シス
・Webシステム開発
などを行っています。
今回のように「困ったから作る」という文化を大切にしています。
経験の有無よりも、
・学ぶ姿勢
・調べる力
・作ってみる行動力
を重視しています。
もし、
「AIを活用しながら開発してみたい」「新しい技術を試したい」「課題解決型のエンジニアになりたい」
そんな方がいましたら、ぜひ一度お話しましょう。
GitHub
https://github.com/offgrid-jp/dotnet-mini-mock
「Enterprise版が無いから諦めた」ではなく、
「無いなら作ってみよう」
そんな話でした。