こんにちは「なかむら」です。
システム開発を行うにあたって、「AIを活用しよう!」みたいな触れ込みは見かけますが、じゃあ実際どうやって使うのさ、と思う人もいるのではないかなと思い、この記事を書こうと思いました。
今回はアプリ開発をする疑似プロジェクトを例に、実際のプロンプト例を使って示していこうと思います。
今回の記事を通して、AIを活用できる/できないで大きく差がつくと感じてもらえればと思います。また、PMOの方々も品質をチェックするうえで網羅性の確認なんかにも使えるかもと思って読んでもらえると嬉しいです。
本記事の想定読者
システム開発でAIを活用してみたい人
プロジェクト発注側で、開発者にイメージを伝えたい、レビューする人
アプリ開発前提条件・準備
はじめに「群馬県みなかみ町の観光サポートアプリ」の開発を頼まれた人、の前提で進めていきたいと思います。※今度わたしが旅行にいくので
まずは「みなかみ町にはどんな観光スポットがあるのか」を下調べすることから始めます。※これは誰でもやることと思いますが
Microsoft Copilotに聞いてみる事にしました。
みなかみ町がどんなところかわかりましたね。これをベースにどのようなアプリにするか考えてみます。
要求事項~要件定義
まずはどんなアプリを作るかですが、要求からどのような使われ方をするか(ユースケース)をChatGPTに考えてもらいます。以下はプロンプトの例ですが、役割を記載することで、回答精度が上がります。
文章は下調べした内容から、ユーザが考えそうなことを箇条書きしています。
いくつかのユースケースをあげてくれました。指示が緩くても、ある程度細かなことを考えてくれるのが生成AIのいいところですね。
次にユースケースから機能要件に落とし込みます。項目をこちらで提示してあげると精度があがります。
項目に沿った機能要件を提供してくれました。さらに追加として要件実現のための考慮事項まで作ってくれています。この開発規模のアプリで且つこのスピード感であれば、機能要件のドラフトとしてはかなり優秀なのではないかなと思いました。
さて、機能要件が出されたので、次は非機能要件のアシストをしてもらおうと思います。
このまま指示を書くことで、このアプリの非機能要件を考えてもらいます。非機能要件の項目は、非機能要求グレード(https://www.ipa.go.jp/archive/digital/iot-en-ci/jyouryuu/hikinou/ent03-b.html)を参考にするとよいかなと。
要件は、あえてものすごくざっくり書きました。
非機能要件も出てきました。
要件がそろったところで、図を書いてみましょう。アーキテクチャの図を書いてもらうように指示します。ここでポイントはMermaid記法で作ってもらうことです。Mermaid Live Editor(https://mermaid.live/edit)の形式を指示してみます。
コードで記載できるので、生成AIと相性がよいです。
出来上がったコードをコピーしてMermaid Live Editorに貼り付けると…
アーキテクチャの図が完成します。
イメージを共有するものとしては十分かと思います。
今度はこの図をコピペしてChatGPTに見せ、具体的なソリューションに落とし込みます。今回はAWSで作る想定で指定しました。
少しだけ条件を加え、サービスをなるべく絞っていくように指示しています。
上記のようなサービスが選定されました。あれ、認証とかどうするんだろう…と思いますが、一旦いまは先に進めようと思います。
次に画面遷移図を作ってもらいましょう。ここでもMermaid Live Editorを活用します。
先ほどと同じようにEditorで貼り付けると。。。
出来ました!画面遷移図で、よりアプリのイメージが深まりますね。これで会話できると実装者との齟齬も格段に少なくなるはずです。
スケジュール作成
ある程度要件が固まったので、スケジュールを作成してもみましょう。これもMermaid Live Editor形式で。
条件としてリリース時期と開発メンバー数をいれています。
同じようにコードをコピペします。
スケジュールも作成できました。もちろん実際には微調整が入ると思いますが、項目洗い出しとしては素晴らしいですね。
ここまでで、発注側、開発側どちらの立場であろうともかなり有用な資料のドラフトが出来ているのではないでしょうか。
【参考】設計~実装
これ以降は設計~実装の話ですが、触り程度「こんなこともできちゃうよ!」という紹介になります。
◆データモデル作成
データモデル考えてもらうことにしました。
ER図でデータモデルが作られました。
◆DB作成
サンプルデータをDBに取り込む方法を聞いてみました。DBは要件定義でソリューションとしてあがったDynamoDBとしています。
NoSQLのDynamoDBに対して「SQL文を発行せよ」という指示のチョンボがありましたが、きちんと意図を理解して正しい回答を出してくれました。
◆画面実装
画面の実装です。Vueで作成する前提です。
コードがたくさん出力されすぎたのでここでは省略していますが、ベースとなる部分がきちんと作成されました。
このように開発者にとってもChatGPTはかなり有用のツールになりそうですね。
もう一度ソリューションを確認
ChatGPTとやりとりを繰り返してきたところで、もう一度ソリューションを確認してみました。
今度は認証機能のCognitoが出てきましたね!会話しているうちに具体的にやりたいことをより深く理解してくれた、ということでしょうか。
ChatGPTは同じ質問でも毎回微妙に回答が異なったりするので、何度か会話を繰り返すのも1つのやり方になります。
まとめ
今回、小規模のアプリ開発においてChatGPTが有用なツールとなることがわかりました。
ここで大事なことは、このやり方を知っているだけで開発スピード、品質においても大きく差がつく点です。いままで上流工程がうまく出来なかった人も出来る事が増えます。プロジェクトをレビューしていく人も網羅性を確認したり、開発者とは違うセカンドオピニオンとして使うのもありかと思います。
AIが使える、使えないで差がつく世の中になりはじめている、と感じてもらえたでしょうか。
【今日の格言】
「道具を尊重せよ、そうすれば道具もまたお前を尊重するだろう。」
レオナルド・ダ・ヴィンチ
Comments