テスト連載2026 の2本目です。
生成AIにコーディングを任せると、特に指示をしなくても自動でライブラリやフレームワークを選定したりします。おそらく、選ばれるのは人気があってよく使われるものかなと思います。じゃあ具体的に何が使われるのか、普段使っているのはCodexなので、ChatGPT自身に聞いてみました。
フレームワークごとの選ばれるフレームワーク+テストのランキング
過去ログ参照とかメモリ機能とか全部オフにしたChatGPTに何度か確認しつつまとめたのが以下のリストです。過去ログ参照で結果が変わったりもしますね。Goは確かにこの通りというか、Go 1.24で入ったパスパラメータ機能は明示的に指示しないと使ってくれないですね。執拗に他のライブラリを使おうとします。
Go
- 第1候補: Gin + 標準 testing
- 第2候補: chi v5 + 標準 testing
- 第3候補: Echo v5 + 標準 testing / Testify
JavaScript
- 第1候補: Next.js 16.2.x + Jest 30
- 第2候補: React 19.2 + Vite系 + Vitest 4.1
- 第3候補: Nuxt 4 + Vitest
E2Eテストは以下の通り
- 第1候補: Playwright
- 第2候補: Cypress
- 第3候補: Puppeteer
Java
- 第1候補: Spring Boot 4.0.5(または成熟ライン 3.5.x)+ JUnit 6
- 第2候補: Quarkus 3.34.x / 3.33 LTS + JUnit
- 第3候補: Micronaut 4.10.x + JUnit
C#
- 第1候補: ASP.NET Core 10.0 + xUnit.net 3
- 第2候補: ASP.NET Core Minimal APIs + xUnit 3
- 第3候補: ASP.NET Core + NUnit
Python
- 第1候補: FastAPI 0.136.0 + pytest 9.0.x
- 第2候補: Django 6.0.4 + pytest
- 第3候補: Flask 3.1.3 + pytest
Ruby
- 第1候補: Rails 8.1.x / 8.0.x + Minitest 6
- 第2候補: Rails + RSpec(RSpec Rails 8.0.4 / RSpec 4 beta〜3.13系)
- 第3候補: Sinatra + RSpec
PHP
- 第1候補: Laravel 13 + PHPUnit 13
- 第2候補: Laravel 13 + Pest 4
- 第3候補: Symfony 8系 + PHPUnit 13
Rust
- 第1候補: axum 0.8.9 + cargo test
- 第2候補: Actix Web 4 + cargo test
- 第3候補: Rocket 0.5.1 + cargo test
どのような基準で選ばれるか?
1位、2位とありますが、常に1位が選ばれるわけではなく条件によって選択が変わるようです。選定では作り物として指定されたものの特性も考慮に入れられるようです。例えば、管理画面も作ってというとFastAPIではなくDjangoになったりとかですかね。
- 既存のコードで使っているもの
- フルスタックかそうじゃないか?: ウェブフロントエンド用のフロント+バックエンドなのか、Rest API中心なのか
- 軽量なのか、フルスタックなのか、性能重視か
まとめとAIの好み(クセ)を知る必要性
生成AIが処理を行う時に参照するのは、モデルそのものと、コンテキストという限られたメモリの2つです。一般的な知識であれば、細かい指示をしなくても、コンテキストにたくさん指示を弾込めしなくてもすいすい動いてくれます。逆に独自なものや使い方を明示的に指示しないと使えないものを指示するとその分コンテキストを消費し、知能が下がった状態で動きます。何度も同じような指示を送るのはいくらプロンプトのキャッシュヒットすれば安くなるからといっても最初から送らない無料の方がリーズナブルでしょうし。最終成果物の質に対して影響を与えない選択肢であればおまかせしてしまい、守りたい部分だけ指示するというのが良いかと思っています。
また、モデルも日々進化しています。テストに関しては昨年8月ごろだと、指示しないと書いてくれませんでしたが、最近のモデルだと何も指示しなくてもテストコードを書いてテストしてくれます。今時点でガチガチにハーネスを固めて思い通りに動かそうとしても、将来のバージョンでは重複した指示になったり、下手すると逆方向にAIが働きにくい指示になってしまうことも想像できます。新しいプロジェクトごとにAGENTS.mdなどを作り直すと、以前よりも必要な指示はだいぶ減ってきているなと感じます。
最近は自分の好みのミニマリストな設計にこだわるのをやめて、生成AIが提案してきたスタイルをなるべく受け入れるようにしています。Goだとinternalパッケージに本体をなるべく押し込もうとする、とかですね。モデルの特性に合わせてこちらも柔軟にスタイルを変えていく。子育てと一緒ですね。
今後も定点観測的に調べていきたいですね。あと他のモデルでも。