ある日の我が家
ワイ「う〜ん・・・」
ワイ「どないしたら実現できるんやろなぁ・・・」
娘(8歳)「パパ、どうしたの?」
ワイ「おぉ、娘ちゃん」
ワイ「いやぁ」
ワイ「実は、面白いアイディアを思いついてな?」
娘「へぇ、どんなアイディア?」
ワイ「AIと連携した技術記事投稿サイトがあったら面白いんちゃうかな、って」
娘「何だか、フワッとしたアイディアだね」
娘「よく分かんないけど、パパが自分で作ってみたら?」
ワイ「いや、ワイはフロントエンドしかできへんから」
ワイ「記事投稿サイトはちょっと、作る自信ないわ」
ワイ「サーバサイドとか、データベースとか」
ワイ「よう分からんし」
娘「じゃあ、私が作ってあげるから」
娘「要件を教えてよ」
ワイ「AIがいい感じに記事をアレしてくれるサイトや」
娘「いや、だからフワッとしすぎなんだって」
娘「そのサイトを作りたいと思ってるのは、パパなんだからさ──」
- 何故そのシステムを作りたいのか
- どんな課題を解決したいのか
- どんな体験をユーザーに届けたいのか
娘「そういうの、ちゃんと言語化してくれないと」
ワイ「何故そのシステムを作りたいのか・・・?」
ワイ「う〜ん、頭の中にはイメージがあるんやけどな」
ワイ「全て言語化しろと言われると難しいな」
娘「もう・・・」
娘「でもまぁ、そんなもんだよね」
娘「だってさぁ」
ワイ「・・・ハッ!?」
ワイ「閃いたでぇ!」
ワイ「こんなWebサイトがあったら、なんか、いい気がするでぇ!」
ワイ「これを作りたいやで!」
娘「↑こういう閃きって」
娘「無意識の中から生まれてくる、いわゆる自動思考だから」
娘「その理由は?って聞かれても」
娘「完全には言語化できないよね」
ワイ「そんな感じやわ」
ワイ「ワイの頭の中には理由があるんやろうけど」
ワイ「モヤがかかって、全ては見えんし」
ワイ「言語化するのが難しいわ」
娘「分かった」
娘「じゃあ、アレを使おう」
ワイ「アレ?」
娘「こんな時のために用意しておいたシステムがあるの」
要件定義ネイター
娘「ジャジャーン!」
娘「要件定義ネイター!」
娘「っていうWebサイトだよ」
ワイ「おお、これ娘ちゃんが作ったんか」
娘「そうだよ」
娘「このサイトが、パパの頭の中にある要件を」
娘「言語化するのを助けてくれると思う!」
ワイ「へぇ〜」
ワイ「どんな風に使うん?」
娘「AIが質問してくるから、それに答えていくだけだよ」
ワイ、要件定義ネイターを使ってみる
AI「あなたが作りたいシステムは、業務系のアプリですか?」
ワイ「おっ、さっそく質問が表示されたで」
ワイ「ええと、業務アプリではないな」
ワイ「技術記事を投稿できるやつやで」
AI「いいですね、プログラミングに関する知見を発表できる場になりそうですね!」
ワイ「へへっ、そうやろ」
AI「あなたが作りたいシステムは、どのようなプラットフォームで動くものですか?」
ワイ「プラットホーム?よう分からんな」
ワイ「分かりません、と答えておこか」
AI「そのシステムは、モバイルアプリですか?」
ワイ「うーん、どうかな」
ワイ「モバイルアプリもいいけど、まずはWebサイトを想像してましたやで」
AI「それは、専門家が使用するWebサイトですか?一般の方も使いますか?」
ワイ「専門家かな。主にプログラマー向け」
AI「ログインしなくても、アクセスできるサイトですか?」
ワイ「はい」
AI「おっ、誰でも見れていいですね」
AI「類似サイトとしてQiitaやZennなどがあると思いますが」
AI「あなたのサイトが、特に違うところは何ですか?」
ワイ「ええとな、AIを使ってな・・・」
10分後
AI「あなたがユーザーに届けたい体験は、以下のようなものですか?」
ユーザーストーリー
ユーザー「よし、今日もプログラミングを勉強したぞ」
ユーザー「今日は色々と学びがあったから」
ユーザー「記事としてまとめて、 AI連動技術記事サイト(仮) に投稿してみよう!」
ユーザー「Webブラウザでサイトにアクセスして」
ユーザー「ログインして」
ワイ「お〜、ストーリー形式で提案してくれるんか」
ワイ「ふむふむ、最後まで読んでみよか」
ユーザー「よーし、記事を投稿できたぞ」
ユーザー「じゃあ、SNSシェアボタンで、Xにシェアしてみよう」読者ユーザー「お、〇〇さんが技術記事を投稿したみたいだ」
読者ユーザー「読んでみようかな」
ワイ「お〜、大体こんな感じや」
ワイ「でも、細部がちょっと違うな」
ワイ「ユーザーさんが投稿した記事を、AIがアレンジして表示してくれるんや」
ワイ「箇条書きバージョンで表示できたり」
ワイ「会話形式に変換して表示できたり」
ワイ「その技術の具体的な活用方法を、ストーリー形式で読めたり」
ワイ「その記事の内容を、いろんな形式で読むことができるんや」
AI「分かりました」
AI「ユーザーストーリーを追加・修正します」
読者ユーザー「この記事、詳しく書いてあって素晴らしいな」
読者ユーザー「でも、この技術ってどんな時に役に立つんだろう?」
読者ユーザー「この、『AIで変換する』ボタンを押してみよう」UI上に表示される選択肢
- 箇条書き形式で読む
- 会話形式で読む
- 具体的な活用方法をストーリー形式で読む
- もっと噛み砕いてほしい
読者ユーザー「じゃあ、具体的な活用方法をストーリー形式で読む!」
ワイ「うんうん、こんな感じや」
要件定義ネイターを使ってみた感想
娘「どうだった?」
ワイ「うーん、AIのほうから能動的に質問とか提案をしてくれたから」
ワイ「言語化が苦手なワイには助かったわ」
娘「そうだよね」
娘「さあ、要件を全て言語化してください!って言われても難しいけど」
AI「こうですか?それとも、こうですか?」
娘「って質問してもらえると」
ワイ「そうそう、合ってる!」
娘「とか」
ワイ「そこは違う!」
娘「とか、反応できるもんね」
ワイ「そやねぇ」
ワイ「ワイが何を求めているのかを」
ワイ「AIが上手いこと切り分けてくれる感じやね」
娘「そうそう」
娘「パパの無意識の中にある」
娘「想像上のWebサイトや、想像上のユーザー体験を」
娘「色々な質問によって切り分けて、可視化してくれるんだよね」
ワイ「おぉ〜、そうやな」
ワイ「で、このあとはどうすればええの?」
娘「要件を出力、ってボタンを押してみて」
ワイ「了解やで」
ワイ「ポチッ」
AI連動技術記事サイト(仮)の要件
必要な機能(エンドユーザー用)
- ログイン機能
- 記事の作成・編集・削除機能
- 自分の記事のみ
- ・・・
- ・・・
必要な機能(管理者用)
- お知らせ投稿機能
- 記事の作成・編集・削除機能
- 全ての記事
- ・・・
- ・・・
ワイ「おぉ〜」
ワイ「必要な機能をまとめてくれるんか」
娘「他にも、こういうのも出力してくれるよ」
外部API
- OpenAIのAPIを使用する想定
- 記事の形式をアレンジする目的
データベース構造
必要なテーブル
- ユーザーテーブル
- ID
- アカウント名
- 権限(管理者 or 一般ユーザー)
- ・・・
- 記事テーブル
- ID
- タイトル
- 本文
- ・・・
ワイ「あー、こういうの考えるの苦手やから助かるわ」
「記事」と「タグ」は「多対多」の関係となり、中間テーブルも用意します
ワイ「へぇ〜、そうなんや」
ワイ「なんかもう、このままソースコードも全て吐き出してくれんかな」
ワイ「・・・ん!?」
ワイ「何やこのボタン!?」
- Ruby on Railsのプロジェクトとして出力する
- Laravelのプロジェクトとして出力する
娘「いや、まだその機能は実装できてないの」
ワイ「おぉ、そうなんか」
娘「だから、コードは私が書くよ」
ワイ「おぉ、ありがとうやで!」
娘「要件定義ネイターで、ER図とシーケンス図を出力して、っと」
ワイ「おお、そんなこともできるんか」
娘「うん、テスト項目書も出力できるし」
ワイ「おぉ〜、そうか」
ワイ「詳細なユーザーストーリーまで把握した」
ワイ「ドメインエキスパートAIみたいなもんやもんな」
ワイ「このサイトではこれができるべし!っていう項目も」
ワイ「網羅して吐き出してくれるわけか」
娘「そうだよ」
娘「さぁ、開発、開発ぅ!!!」
その日の夜
ワイ「いや〜、要件定義ネイター、便利やなぁ」
ワイ「AIって、質問に答えてくれるだけじゃなくて」
ワイ「AIの方から質問してくれて、こちらの要望を切り分けて、特定してくれるんやな」
ワイ「能動的に働いてて、偉いなぁ〜」
娘「パパなんて、会社では誰かにタスクを頼まれるまで何もしないもんね!」
ワイ「おぉ〜、せやで」
ワイ「でも、なんで要件定義ネイターを作ろうと思ったん?」
娘「うーん、さっきも言ったけど」
娘「自分の求めているものを全て言語化するって、実は難しいじゃない?」
娘「半分は無意識の中にある感じもするし」
娘「その、無意識というブラックボックスの中にある」
娘「まだ見ぬソフトウェアやユーザー体験を」
娘「可視化するにはどうすればいいか考えたの」
ワイ「なるほどなぁ」
ワイ「確かに、自分の頭の中だって、半分はブラックボックスって気はするな」
娘「そう、それで」
娘「ブラックボックスの中は、直接的に見ることができないから」
娘「IN に対する OUT を見ることで」
娘「無意識の中にあるものをリバースエンジニアリングしようと考えたの」
ワイ「IN に対する OUT を見る・・・?」
ワイ「リバースエンジニアリング・・・?」
娘「そう」
娘「AIが──」
AI「こういうことですか?」
AI「それとも、こういうことですか?」
娘「ってふうに、いろいろ質問してきたでしょ?」
娘「その時、パパはどう思った?」
ワイ「ええと・・・」
AI「それは、モバイルアプリですか?」
ワイ「(どうだろう・・・)」
ワイ「(モバイルアプリだとしたら、ダウンロードして、インストールして使うよな)」
ワイ「(今回ワイが作りたいのは記事投稿システムやから)」
ワイ「(SNSとかからリンクで飛べて、すぐアクセスして読めるのを想像しとったわ)」
ワイ「(将来的にはアプリも欲しいけど、まずはWebサイトやな)」
ワイ「↑こんな感じで思考してたわ」
娘「そうだよね」
娘「そんなふうに、質問を受けると」
ワイ「(もしモバイルアプリだったら?)」
娘「みたいな思考実験が頭の中で起こるわけじゃん」
ワイ「まぁ、せやな」
娘「そして──」
ワイ「(まずはWebサイトやな)」
娘「っていう自動思考が、無意識からアウトプットされてくるわけじゃん」
ワイ「そんな感じやな」
娘「だから、そんな風に」
娘「無意識に対して、質問をインプットしてみて」
娘「どんな自動思考がアウトプットされてくるか」
娘「それを繰り返し確認することで」
娘「パパの頭の中というブラックボックス・・・」
娘「その中にあるソフトウェアとユーザー体験を」
娘「リバースエンジニアリングできるんじゃないかと思ったの」
ワイ「おぉ〜」
ワイ「たしかに、そんな効果あるかもな」
ワイ「特に、ストーリー形式で提案してくれるところが良かったわ」
ワイ「これや!ワイがユーザーさんにお届けしたい体験は、こんな感じや!」
ワイ「とか」
ワイ「いや、ここではもっと、ユーザーさんは別の体験をできるイメージや!」
ワイ「とか、そういう反応が脳から出てきたわ」
娘「うん」
娘「そこは特に力を入れた部分だよ」
娘「想像の中でMVP1を作って、顧客にレビューしてもらうイメージだったの」
ワイ「なんか、コードを書かずにアジャイル開発をしているような感じやな」
娘「まさにそうだね」
ワイ「いやぁ、要件定義ネイター、素晴らしいと思うわ」
ワイ「ワイがボンヤリと思い描いてたサイトを、思いっきり明確化してくれて」
ワイ「感謝、感謝や」
娘「へへ」
ワイ「せや、要件定義ネイターにお礼のメッセージでも入力しとこ」
ワイ「さっきはありがとうやで」
ワイ「助かりましたやで」
ワイ「よし、送信したで」
ワイ「お、回答が表示された」
AI「パパのサイト作りの力になれて、嬉しいな」
ワイ「ん?」
ワイ「パパ・・・?」
娘「しまった」
ワイ「え」
ワイ「もしかして・・・」
娘「ごめんなさい」
娘「ウソついてました」
娘「本当は、要件定義ネイターなんてないの」
娘「AIじゃなくて、私がその場で文を考えて送信してたの」
ワイ「いや、逆にスゴっ」
ワイ「娘ちゃん自身が要件定義ネイターやん」
まとめ
- 「こんなシステムがあったらいいのでは!?」というアイディアが湧いてくることがある
- ただ「何故いいのか」を全て言語化するのは難しい
- なぜなら「これ、いい!」という閃きは、無意識から、ふと湧いてくるものだから
- 思考実験を繰り返すと、無意識の中にあるものが見えてくる
- 本当に欲しいシステムや、本当に届けたいユーザー体験が可視化される
- 何を、どうして作りたいのかが明確化される
ワイ「↑こういうことやな!」
娘「そうだね!」
ワイ「娘ちゃんはすごいな〜」
娘「ううん」
娘「ただ、自分を好きになりたかっただけ」
ワイ「へっ?」
娘「わたし、お友達とか、みんなができるようなこと」
娘「全然できなくて」
娘「どこか自分のことが好きになれなくて」
娘「だから、何か意義のあることがしたくて」
娘「システム開発を勉強したの」
娘「それで、開発スキルは身についたんだけど」
娘「なんのためにシステムを作ってるのかが分からないと」
娘「意義を感じられなくて」
ワイ「ほうほう」
娘「だから」
娘「顧客の作りたいものを、知りたかったの」
娘「顧客が、エンドユーザーにどんな体験を届けたいのかを知りたかったの」
娘「目的を、ゴールを知りたかったの」
娘「私が、開発する意義を感じるために」
娘「そして、自分を好きになるために」
ワイ「なるほどなぁ・・・確かに──」
ワイ「お、今から開発するのは」
ワイ「こんなユーザー体験をお届けするシステムなんやな!」
ワイ「っていう目的が可視化されて、共有されてると」
ワイ「モチベ上がるもんな」
娘「そう!」
娘「それに──」
娘「〇〇することが目的なら、ここの機能は少し変えたほうがいいんじゃないかな!?」
娘「──なんていう場合の、判断の精度も上がるし」
娘「こんな機能もあったほうが、より目的を達成できるんじゃないかな!?」
娘「──なんて、提案もできるし」
ワイ「素晴らしいなぁ〜」
ワイ「これからも、そんなふうに一緒にシステム開発して」
ワイ「一緒に稼いでいこうや」
娘「うん、パパの25倍は稼げると思う!」
よめ太郎「いや、子供を働かそうとすな」
〜おしまい〜
こんな娘ちゃんは現実にはいません
いませんが、似たような人なら弊社に沢山います。
サービスデザイン・要件定義・UIデザイン・開発を依頼してみたいかも?という方はこちらからお問い合わせをお願いしますやで。
おまけ: 実際に「要件定義ネイター」を作ってみました!
ChatGPTのGPTsで作ってみました!
使ってみた結果
- けっこう使えそう・・・!?
スペシャルサンクス
- ミノ駆動さん(@MinoDriven)
- 思想の影響を受けました
- 何よりも「目的」を意識する
- 弱さや辛さを強さに変える
- 思想の影響を受けました
- ヤギのさくらちゃん(@arowM)
- ユーザーストーリーについての考え方を参考にさせてもらいました
- ユーザーストーリーはE2Eテストの時にも活きてくる
- ユーザーストーリーについての考え方を参考にさせてもらいました
-
Minimum Viable Productの略。「必要最低限の機能を備えたプロダクト」という意味。 ↩