はじめに
元々日常使いでは、ChatGPTを利用していたのですが、自社プロジェクトでClaude Codeを使用する機会があり
大きなプロジェクトでも、開発でClaudeCodeを利用しています。そのときに思ったAI自動化楽だったなってところと、ここはAIに任せるより、自分でやったほうがいいなってところをまとめました。
あくまで、個人の感想です。
また、複数人でやる開発を想定していて、個人開発とは切り離して考えて書いています。
ClaudeCodeに任せたときに得意だと思ったこと。不得意だと思ったこと
| 得意だと思ったこと | 不得意だと思ったこと |
|---|---|
| ✅ テンプレート生成 | ❌ オートパイロット |
| ✅ セルフコードレビュー | ❌ 初期状態からのテスト作成 |
| ✅ テスト用モック作成 |
得意だと思ったこと① セルフコードレビュー
mainブランチとの変更点を読み込ませて、レビューしてもらうと、簡単な記述誤りを事前に見つけてくれます。
但し、指摘される内容が、プロジェクトのルールと合っていないこともあるので全てを鵜呑みにすることはできません。
セキュリティや潜在バグなどのクリティカルなところや、ドキュメントのコメントなどは自分で記載するより、生成AI
に任せてしまったほうが楽です。
得意だと思ったこと② テンプレートの作成
複雑な要件のページを一から作成してもらうと、希望した要件の画面でなかったり、
要件に書いていないコードを作成してしまうが、プロンプトに直接記載できるレベルのページ
のテンプレートであれば、プロンプトで一気に作ってもらうと楽です。
以下は、テンプレートを作成するときのサンプルコードです。
1. シンプルなNavigator.pushで画面遷移を実装
【技術要件】
- Go-routerは使用しない(シンプルなNavigatorを使用)
- MaterialデザインのElevatedButtonを使用
- 各画面は別ファイルに分離
【コード要件】
- サンプルコードは以下の形式にしてほしい
$
``` dart
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('タイトル'),
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// タイトル
const Text(
'ボタン名',
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
ElevatedButton(
child: const Text('移動'),
onPressed: () {
Navigator.pop(context);
},
),
],
),
),
);
}
```$
得意だと思ったこと③ テスト用モックの生成
Swaggerを元にAPIのモックサーバーを作成するところなどが、かなり楽にできた印象でした。
予め、Swaggerでルールを決めておけば、GitHubによるコード管理が出来るようになりますし。
openapi-generatorで型の厳格化、特にFlutterのようなフロントエンドのアプリでは、サーバースタブを作成するのが、とても楽になります。
不得意だと思ったこと① オートパイロット
現場に入って初めてGithubCopilotを利用することができました。
初めはどう開発するのが一番効率がいいのか分からなかったので、全部Copilotに記述してもらっていました。
その結果、設計書にない記述が書かれていたり、不要な変数定義があったりしました。
最近は、Copilotの「Askモード」を利用してAIのウィンドウに表示させるだけにしている。
一度自身で見て、問題ないか確認できるため、余計なコードを埋め込まなくなった。
不得意だと思ったこと② 初期状態からのテスト作成
個人で使っていたときは、プログラミング書いたら自動的にテストコードまで書いてくれて、めっちゃ便利!!
と思っていました。ただ、現場でテストコードを書いてもらうと、想定されていないテストのコードを書いていたり
逆に複雑な条件のテストコードが書かれていなかったりするので、最終的にその精査が必要になりました。
一から書かなくなった分、楽は出来ているのだろうとは思うのですが、テストケースの過不足の精査
慎重にチェックする必要がある印象でした。
まとめ
私の上司が話していたのだが、そもそも新規開発プロジェクトの場合は、要件自体
が不明確なのもありソースコードを生成するにも元ネタが不安定だと、人の手間が多く発生
する傾向にあるということだった。
一方で、簡単なツールを作成する、変更管理におけるリグレッションテスト
などにおいては、多くの部分でAI活用できると感じた。
まだまだAIを使いこなせていないので、今後もっと活用していきたい。