1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ChatGPTと壁打ちして、個人開発アプリの要件定義をやってみた

1
Posted at

1.はじめに

1.1.この記事の背景

個人開発をするときに、このようなことで悩んだことはありませんか?

  • 頭の中にアイデアはあるものの、ゴールや開発方針が漠然としている
  • 想定以上に対応しないといけないことが多く挫折しやすい
  • 手を動かしたはいいものの、行き詰まりや手戻りが発生する

私も個人開発をやって、このような悩みを抱えていたのですが、要件定義をするときにChatGPTを活用することで、頭の中で思い描いたアイデアが形にしやすくなりました。

たとえば、ChatGPTから質問を受けて、それに答えるのを繰り返すことで、曖昧だった仕様を言語化でき、アイデアが少しずつ形になる感覚がありました。

1.2.この記事で扱う内容

この記事では、私が実際に、ChatGPTを壁打ち相手に要件定義を進めていく上で有効だと感じた使い方を具体例を交えて紹介します。

2.要件定義について

2.1.なぜ要件定義が必要だったか

要件定義をせずに、いきなり開発しようとすると、以下の問題に直面しました。

  • 開発のゴールが見えない
  • AIに任せすぎると、AIが書いたコードの理解が追い付かず、自分で開発している感が持てない
  • 開発を進める中で、この場合どうしようといったことに直面することが多くて行き当たりばったりになった

こうしたことを防いで、自分の作りたいアプリの開発を効率よく進めるために、まずは開発の目的やゴール、実装する範囲、主要な仕様を整理する必要があると感じました。

3.ChatGPT活用例

3.1.ChatGPTを活用する上で意識したこと

私がChatGPTを活用する上で意識していたのは主に以下の通りです。

  • 自分はここまで考えているという箇所を明確にして、以降を壁打ちしてもらう形にする
  • 要件を決める上で必要な箇所を私に質問してもらう形にする
  • 質問も、候補をいくつか出して、できれば推奨案を提示してもらう

このような形でChatGPTに投げることで、自分が頭の中で思い描いていたことを整理しやすくなりました。

次節では、私が開発を進めている、「麻雀版セイバーメトリクス作成ツール」の要件定義を例に、ChatGPTの活用方法を紹介します。

3.2.実際のやり取りの一部

私がChatGPTに要件定義の壁打ちをするときは、以下のような形でプロンプトを作成しました。

麻雀版セイバーメトリクス作成ツールを作成するにあたって、要件定義書を途中までですが作成しています。
つきましては、以下の小規模MVP要件定義について壁打ちしてください。
曖昧な部分について、3~5個の選択肢を提示してください。
個人開発として過剰な要件は削減候補として指摘してください。
技術ではなく、目的・入力・出力・判定条件・完成条件を優先してください。
私の回答を基に要件定義書へ反映し、未決事項を更新してください。
(以下に自分で考えた要件定義で決まっているもの決まっていないものを記載。)

この時点で、以下の点について意識してChatGPTに質問しました。

  • ここまでは決まっている・決まっていないを明確にしたものを記載すること
  • ChatGPTに返答してほしい形で依頼すること
    • 今回で言うと、曖昧な部分についての質問と複数個の選択肢と推奨案を提示してもらうこと

このような形で質問したところ、ChatGPTから以下のような返信が返ってきたのでその一部を記載します。

image.png

image.png

image.png

image.png

このように、質問ごとの選択肢と推奨案が返ってきます。
提示された選択肢をもとに回答し、さらに次の質問を受けるというやり取りを繰り返しました。
その結果、開発したいアプリの仕様が少しずつ固まっていきました。

要件定義ができるまで長くはなりますが、ChatGPTから質問されることで、自分では見落としていた論点や、想定していなかった例外に気づけることもありました。

3.3.ChatGPTを活用して感じたこと

ChatGPTと壁打ちしながら仕様を詰めていくことで、仕様を決めるのは意外に細かいところまで決める必要があると感じました。
また、頭の中では指標のイメージがある程度できているつもりでも、質問を受けると頭の中で抜け漏れがあることに気付くことができました。

例えば、ダマテン率を算出する場合においても、一度ダマテン状態になったらカウントするのか、流局時にダマテン状態だったらカウントするかなどの定義も決める必要がありました。
また、様々な指標の定義を決める場合においても、他の指標と整合性が取れないこともあったのでその都度要件を見直しました。

ただ、そのような矛盾を解消させるという意味でも、ChatGPTと壁打ちをするのは有効だと感じました。

なお、ChatGPTの回答や推奨案は必ずしも自分が意図したものになるとは限らないです。
そのため、推奨案をそのまま採用するのではなく、自分の作りたいものや想定と合っているかどうかを検討した上で自分で判断する必要があると考えています。

また、ChatGPTの回答内容も、入力内容だけでなく、現在の会話で共有している文脈や、ChatGPTがメモリとして把握している情報によっても変わります。
そのため、自分の意図に合った回答を得るには、前提条件や求める回答形式などを具体的に伝えることが重要だと感じました。

4.まとめ

ChatGPTは要件を決める主体ではなく、要件を整理するための壁打ち相手として利用することがとても有効だと感じました。

ChatGPTに、質問してもらったり、選択肢と推奨案を提示してもらったりすることで、曖昧だった部分を整理しながら要件を決めやすくなりました。

一方で、ChatGPTの回答をそのまま採用するのではなく、自分の想定した仕様との整合性を考えながら取捨選択する必要があると考えています。

現在はまだ要件定義の途中ですが、作りたいものや実装する範囲が少しずつ明確になり、本格的に実装に入るのが楽しみになりました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?