スキマ時間を活用!AIとの対話で実現する効率的なツール開発プロセス
はじめに
レセプトの開発マネージャのマサキです!
日々の開発業務で「こんなツールがあったら便利なのに」と思ったことはありませんか?そんな思いつきを単なるメモで終わらせず、実際に形にするまでの手軽なワークフローを紹介します。特別な準備は不要、スマホ1台から始められる「AIと一緒にプロトタイピングする」方法です。
現代エンジニアあるある:「アイデアの発展と実装」の壁
エンジニアの多くが経験していると思いますが、仕事中に閃いたアイデアや「こうすれば楽になるのに」という気づきが、実装までたどり着かないことがよくあります。主な理由は以下の通りです:
- メモに残すだけで、後から見返す時間がなくて忘れてしまう
- アイデアが曖昧で、具体的な実装イメージまで落とし込めない
- 「ちょっとしたツール」でも環境構築が面倒で腰が重い
- 「業務時間外にコードを書くか」というモチベーションの壁
こういった障壁のせいで、多くの良いアイデアが埋もれたままになっています。では、どうすれば手軽にアイデアを形にできるのでしょうか?
私自身、仕様の調整、打ち合わせ、マネージメントという作業と並行しながら、チーム向けに「こんなツールがあったらいいな」というものを思いついたものを、最近は今回ご紹介する方法で作っています。ご参考になれば幸いです。
ターゲットとなる読者層:
- 開発業務の中で「こんなツールがあったら」というアイデアを持っているエンジニア
- 業務の合間にアイデアを形にしたいと考えている方
- AIを活用した開発プロセスに興味がある方
この記事で伝えたいこと
- スマートフォンとAIを活用した、手軽なツール開発のアプローチ方法
- 通勤時間などのスキマ時間を活用した、効率的な開発フロー
- AIとの対話を通じた要件定義から実装までの具体的なプロセス
AIとの壁打ちから実装までの3ステップフロー
最近私が実践してるのは、隙間時間を活用した「AIとの協働開発」です。スマホ1台から始まって、ほぼコードを手書きすることなく小規模ツールを完成させる流れを紹介します。
1. スキマ時間のスマホでChatGPTと壁打ち
帰宅途中の電車の中や、トイレの中、また打ち合わせと打ち合わせの合間のちょっとした時間。「こういうツールがあれば…」という気づきを、その場でChatGPT-4oと話しながら深めていきます。
[私]
このスプレッドシートに新情報が追加されたらslackに通知するGASを作りたいです。
- 実行は平日毎日実施
- 実行日から日付列のうち、1週間前までの日付を通知対象
- 対象データの内、J列の確認欄に「済み」となっているものは通知しないようフィルター
上記のGASを作る前の要件定義書を作成してください。
[ChatGPT-4o]
以下は、ご要望に基づくGoogle Apps Script (GAS) 作成前の**要件定義書(ドラフト)**です。実装に入る前に関係者間で認識を合わせるためのドキュメントとしてご活用ください。
📄 Google Apps Script 実装 要件定義書
# 以下、詳細...
こんな感じの思いついた仕様を言語化してまとめてChatGPTへ壁打ち、出てきた要件定義書に対してコメントを繰り返し、だんだん具体的な仕様に落とし込んでいきます。特に良いのはこんなところ:
- 自然な会話で要件が整理される: 話してるうちに「あ、そういえばこれも必要だな」ってことが見えてくる
- 実装上の考慮点も先取りしてくれる: 「そういえばデータのエラー処理どうする?」みたいなことも話題になる
- スキマ時間を有効活用: 「スマホいじる時間」を創造的に使える
2. 最終版の要件定義として出力
ChatGPTへのコメントのラリーが終わったら、最後に「これまでの会話を要件定義書っぽくまとめてください」ってお願いします。するとこんな感じで整理されたものが出てきます。
# 📄 Google Apps Script 実装 要件定義書
## 1. 概要
Google スプレッドシートに新たに追加された情報のうち、特定条件を満たす行について、Slackへ通知を行う自動化スクリプトを作成する。
---
## 2. 実行条件
- **実行タイミング**
平日(月〜金)の毎朝、自動で実行(例:9:00 JST)
- **通知対象の判定条件**
- `A列(日付)` の値が「スクリプト実行日から過去7日以内」
- `J列(teamM)` または `K列(teamHanjo)` に「済み」と記載されている行は除外
---
## 3. 通知内容
Slack通知には、以下の列データを含める:
| 列 | 内容 |
|----|------|
| A列 | 日付 |
| B列 | 変更者 |
| C列 | 仕様書ファイル名 |
| D列 | シート名 |
| F列 | 変更内容 |
| G列 | 仕様変更(あり/なし) |
| H列 | 簡単な変更背景 |
### 📌 通知フォーマット(例):
📄 仕様変更通知(過去1週間以内)
【日付】2025/04/17
【変更者】田中
【仕様書ファイル】仕様書_v3.xlsx
【シート名】顧客管理シート
【変更内容】「契約日」列を追加
【仕様変更】あり
【背景】データ管理の精度向上のため
- 通知対象が複数ある場合は、すべて列挙
- 通知対象が1件もない場合はSlack通知なし
---
## 4. スプレッドシート構成
| 列 | 内容 |
|-----|------|
| A列 | 日付 |
| B列 | 変更者 |
| C列 | 仕様書ファイル名 |
| D列 | シート名 |
| E列 | (未使用 or その他) |
// 以下詳細
この要件定義書が、次のステップでの実装時にめちゃくちゃ役立ちます。人間ではなく、AIに作らせた明確な仕様があると、AIによるコード生成の精度がぐっと上がるんですよね。
3. Claudeで一発コード生成&ファイル編集
要件定義書が完成したら、私の場合はClaude Desktopを使ってコード実装に入ります。Claude 3.7 Sonnetを使って、filesystem(MCP: Model Control Protocol)機能でローカルファイルを直接編集できるのが便利です。
なお、VSCode + Clineや、VSCode + Copilotエージェントモード、Cursorなどのエディターでも問題ありません。個人的には、Claude Desktop + filesystem MCPが今のところ対話形式でそのまま要件定義が渡せて、その後の修正もコメントできるので使いやすいと感じています。
Claude Desktop + filesystemMCP の場合、最初にディレクトリを指定してプロジェクトを読みこませています。 今回はGASで作るため、事前にclaspでスプレッドシートに紐づくスクリプトをローカルにダウンロードしています。
その後、要件定義書を読み込ませて、作成させたコードが以下です。
/**
* 仕様変更Slack通知スクリプト
* スプレッドシートに記録された仕様変更を条件に基づいてSlackに通知します
*/
// Slackのwebhook URLを保存するスクリプトプロパティのキー
const WEBHOOK_URL_PROPERTY = 'SLACK_WEBHOOK_URL';
// ★ここにWebhook URLを直接設定できます(緊急時のみ)
// ※本番環境では削除してスクリプトプロパティを使用してください
const WEBHOOK_URL_DIRECT = ''; // ここに実際のWebhook URLを入力可能
/**
* スクリプトのメイン実行関数
*/
function notifyChangesToSlack() {
try {
// アクティブなスプレッドシートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
Logger.log('スプレッドシートを取得しました: ' + sheet.getName());
// データ範囲を取得
const dataRange = getDataRange(sheet);
if (!dataRange) {
Logger.log('データが見つかりませんでした');
return;
}
// 全データを取得
const values = dataRange.getValues();
Logger.log('データ行数: ' + values.length);
// ヘッダー行をスキップ
const data = values.length > 1 ? values.slice(1) : [];
// 通知対象のデータを抽出
const notificationItems = filterNotificationItems(data);
Logger.log('通知対象件数: ' + notificationItems.length);
// 通知対象がなければ終了
if (notificationItems.length === 0) {
Logger.log('通知対象のデータはありませんでした');
return;
}
// Slack通知を送信
sendToSlack(notificationItems);
Logger.log(`${notificationItems.length}件の通知を送信しました`);
} catch (error) {
Logger.log(`エラーが発生しました: ${error.message}`);
Logger.log(error.stack);
}
}
# 以下、実装の詳細...
Claude Desktopの便利なところはこんな感じ:
- ファイル直接編集機能: MCP利用前提ですが、ローカルのファイルを直接いじれる
- コード生成の精度が高い: 要件定義書をベースに、ほぼ完成形のコードを出してくれる
- 対話しながら調整できる: 「ここちょっと変えて」みたいな会話で微調整できる
GASやPythonみたいな軽量ツールなら、ほとんどの場合、この段階でほぼ実装完了!って感じです。実際のこのツールは、チームの運用に活かしています。
AI活用で気づいた3つの発見
この「スキマ時間を活用した小規模ツール開発」プロセスを実践して気づいた重要なポイントをシェアします。
1. AIは「思考の整理」と「設計の加速」の両方に効果的
今まであやふやだったアイデアが、AIとの対話で急速にはっきりしてきます。特に:
- 頭の中でモヤモヤしていたことが言葉になる
- 「あ、そういえばエラー処理や拡張性も考えないと」と気づける
- 「結局自分は何を作りたいんだっけ?」が明確になる
2. 「何を・どこで動かすか」が決まれば、実装はAIにおまかせでOKな時代に
コードを書くより、「何をどう実現するか」を考えることに集中できるようになりました:
- 仕様さえ明確であれば、Claudeのようなモデルでコード実装はほぼ完結する
- キーボードを打つ時間より「考える時間」に投資できる
- 細かいシンタックスより全体設計に頭を使える
3. スマホ1台で始まる開発プロセス
PCも開発環境も必要なく、アイデアの具体化から設計までが進められるのは大きな変化:
- 通勤電車内でも開発の第一歩が踏み出せちゃう
- 「ふと思いついたこと」から「形になるもの」への敷居がめちゃくちゃ下がる
- 「あ、こんなのあったら便利かも」をその場で検証できる
まとめ:AIが手を動かす時代の「考える」エンジニアへ
今のAI技術を使えば、通勤中に「あ、こんなツールあったら便利かも」と思ったアイデアを翌日には動くものにできちゃう時代です。特に小規模ツールや業務効率化のためのものなら、このアプローチめちゃくちゃ効率的ですよね。
AIがコーディングをおまかせできる時代に、エンジニアとして私たちは何に集中すべき?って考えると、私の答えは「設計思考とビジネス価値の創造」です。業務の本質的な課題を見抜いて、適切な解決策を考える—この部分こそが今後さらに重要になってくると思います。
最後に
今回の方法だけだと、既存のすでに複雑なコンテキストを必要とする開発プロジェクトでは、適さない箇所があるため、AIを開発に具体的にどうつかっていくかの運用は別途試行錯誤してまとまったら記事にしたいと思います!
みなさんもスキマ時間で、スマホを開いてAIとおしゃべりしてみませんか?ちょっとした思いつきが、便利なツールに化けるかもしれませんよ!
この記事が皆さんの業務をちょっとでもラクにするヒントになれば嬉しいです!質問やご意見あれば、コメント欄でお待ちしてます!
Discussion