ABEJA Tech Blog

中の人の興味のある情報を発信していきます

【PMの悩み】「みんな気づいてるけど指摘しない問題」をGPT Builder(GPTs)で見つけ出す

はじめに

この記事はABEJAアドベントカレンダー2023の5日目の記事です。こんにちは。プロジェクトマネージャーのブレイニーです。私はABEJAでPMアシスタントとして業務に取り組みつつ、PM研修を受講したり、プロジェクトマネジメントの手法が解説されている書籍を通じて理解を深めたりなどしています。そんな中、プロジェクトマネジメントのよくある失敗として、以下のようなケースが紹介されていました。

プロジェクトを進めている最中に突然新しいリスクや問題が浮上して、その結果、予期していなかったスコープ変更や、納期の遅延が必要となってしまう

プロジェクトマネジメントでは、当初は見えていなかった問題が原因となって、計画通りにプロジェクトが進まなくなってしまうことがよくあるとのことです。しかしなぜこのようなことが起きてしまうのでしょうか。私が読んだ書籍では、以下のように語られていました。

多くの場合、このような問題は最初から存在していたものである。なぜなら、それらの問題やリスクは、誰かがすでに気づいていたものの、何らかの理由で共有されなかったか、適切に対処されなかったことを原因に生じているからである。

なるほど。思ってはいるが口には出さないから、問題が浮上した際に突然その問題が新しく出てきたかのように錯覚してしまうということですね。このような問題は、”Elephant in the Room(部屋にいる象)”という言葉でよく知られています。これは、象を大きな問題と見立てて、悩んではいるけど口に出しづらい状況を表す英語の慣用句です。

Elephant in the Room (Created by DALL•E 3)

「あの…なんか、象が部屋にいるんですけど、大丈夫でしょうか?市役所とか、保健所とか、警察とかに連絡することを検討してもよろしいのではないでしょうか…?」

こんな感じで議題にすればいいのですが、象を部屋から出すというのは本当に大変な作業なので、問題を特定することで新しいタスクが生まれてしまうという心理的ストレスから沈黙を選択してしまうことが多いのかなと思いました。この気持ち、とてもわかります。そこで私は、この「部屋の象」を追い出すためのツールを構想してみることにしました。

 

このツールの名前は「プロジェクトインサイトマネージャー」略して"PiM"です。プロジェクト進捗をヒアリングするLLMとチームのメンバーが毎日対話を行うことによって、プロジェクト進行における潜在的な問題を明らかにし、その対話ログをチーム共有することで、隠れたリスクを早期検知するというコンセプトになります。この記事では、OpenAIのGPT Builder(GPTs)を使って、PiMのカスタムGPT Ver.を作成し、実際に使用してみるまでを解説します。実際に私が作ったカスタムGPTのリンクも後段でシェアします。それでは、よろしくお願いいたします!

PiM(プロジェクトインサイトマネージャー)のコンセプト

PiMはプロジェクト進行における隠れた問題や懸念点を探し出すLLMベースのツールです。チームメンバーの一人一人と毎日5往復程度の短い対話セッションを行いながら、様々な視点からプロジェクト進行上の問題を探るための質問を投げかけます。そして、PiMとメンバーの対話ログは他のメンバーにも共有されます。

 

PiMの概念を簡単に図にしてみました。LLMがマネージャの代わりに各メンバーのヒアリングを行い、その対話ログが共有されるという構造です。人間相手ではなく、機械相手だからこそプロジェクトに対する正直な印象を話すことができるという側面もありそうだと考察しています。

PiMの概念図

例えば、あるプロジェクトで新しいシステムの導入が予定されているが、メンバーの一人は「導入だけではなく、導入に伴う研修実施が必要である」という懸念を抱えているとします。しかしながら、この懸念はなかなか議題には上がらずにプロジェクトが進行していきます。この時、PiMがあれば、そのメンバーはPiMとの対話を通じて懸念を言語化します。

さらにその対話セッションの内容は他のメンバーにも共有されるので、自然と共通の認識が作られて問題が解消される可能性が広がります。研修実施の計画やスケジューリングなどの早期対策を講じることでプロジェクト全体のリスクを軽減することができるようになります。

まとめると、PiMの最大の目的は、このような「誰もが知っているけど誰も話さない」問題を表面化させて、早期に対策を講じることでプロジェクト進行におけるリスクを低減することにあります。どうですか?PiMについて気になってきましたか?御社でも導入したくなってきましたか?しかし残念ながらPiMは私の勝手なアイデアであり、まだ実際に開発されたものではありません。ですので、まずはこのようなツールをLLMを用いて実現可能かどうかを検証するためにGPT Builder(GPTs)を使って簡単にカスタムGPTを作成してみたいと思います。

カスタムGPTの機能と要件

OpenAIのGPT Builder(GPTs)を使えば、コードが書けなくても日本語の指示でLLMをベースにした対話型のアプリケーションを作成することができます。ここで、GPT Builder(GPTs)とは何か、詳しくない方に向けて簡単に解説いたします。

openai.com

(上記公式サイトより引用)

GPTs let you customize ChatGPT for a specific purpose
Since launching ChatGPT people have been asking for ways to customize ChatGPT to fit specific ways that they use it. We launched Custom Instructions in July that let you set some preferences, but requests for more control kept coming. Many power users maintain a list of carefully crafted prompts and instruction sets, manually copying them into ChatGPT. GPTs now do all of that for you.

(筆者和訳)

GPTsを使えば、ChatGPTを目的に合わせてカスタマイズできる
ChatGPTのローンチ以降、ユーザはChatGPTを特定の使い方に合うようにカスタマイズする方法を求めてきました。私たち(OpenAI)は7月にカスタムインストラクション機能を組み込みましたが、多くのユーザーは、注意深く作られたプロンプトのリストを自前で管理し、手動でChatGPTにコピーしてGPTをカスタムしています。しかし、GPTs(GPT Builder)がその作業を全て代わりにやってくれるようになりました。

まとめると、一定の目的に特化してGPTを簡単にカスタマイズできるようになったということになります。これは今回の検証にピッタリなので、使わせてもらうことにしました。まずはGPT Builder(GPTs)を使ったカスタムGPTの機能と要件をざっくり以下に定義しました。

・シンプルな質問をユーザに投げかけて、ユーザの反応から問題の存在を判断する

・1日の対話セッションは5往復程度を想定

・一度のGPTの発言ではシンプルな質問を一つだけ投げかける

・あらかじめ定義された段階的な対話シナリオに従う

ユーザが過度に時間を割くことなく、単純に会話を行うだけでプロジェクトの問題点やリスクを言語化することができること、そしてその解決に向けたアクションを起こすことを最終的な目標に設定しました。ツール自体が問題の解答を提供するのではなく、問題の存在を明らかにして、その対処をユーザ自身に促すことを狙いとしました。そして、目的を達成するための対話シナリオも簡単に考えました。

1. 初めにユーザは「日付」と「プロジェクト名」を入力する

2. GPTがそのプロジェクトの進捗を問いかける

3. ユーザがプロジェクトの進捗を回答する

4. GPTはユーザがプロジェクト進行に問題を感じているかどうかを判断する

5-1. (ユーザが問題を感じていない場合)以下の対話を順に進行する

 ・GPTはプロジェクト進行が順調な理由をユーザに問いかける

 ・ユーザは成功要因を言語化する

 ・GPTはその成功要因を応用可能な他のエリアを問いかける

 ・ユーザがアイデアを答える

5-2. (ユーザが問題を感じている場合)以下の対話を順に進行する

・GPTはユーザが問題を感じているエリアを深堀る質問をする

・ユーザは具体的な問題箇所を言語化する

・GPTは問題が生じている背景を深ぼる質問をする

・ユーザは、問題の原因を言語化する

・GPTは問題の解決方法を問いかける

・ユーザは問題の解決アイデアを答える

6. GPTはそのアイデアを簡単に評価して、その日の業務を労いセッション終了

こんな感じです。ユーザが問題を感じていない場合であっても、問題を感じている場合であっても、潜在的な問題検知が可能なようにデザインしました。仮に全てが順調だと答えても、順調に進めることができている理由を聞いて、「その手法を他のエリアに応用するとしたら?」と問いかけることで、潜在的な問題エリアを炙り出す仕組みです。それでは、以上の要件を満たすカスタムGPTを作成していきます。

カスタムGPTの作成

普通にGPTを使う場合と、カスタムGPTを作るためにGPT Builder(GPTs)を使う場合では、プロンプトを作る際のコツが少し変わってきます。あくまで我流ですが、私が今まで使ってきた中で感じたGPT Builder(GPTs)プロンプトのコツを共有します。

  • 理想の対話シナリオをきっちり定義する
  • Ver.1のプロンプトで現状の要件を漏れなく構造的に示し切る
  • GPT Builderからのフィードバックを活用する
  • Preview画面で触ってみて感じた課題点をプロンプトに反映してアップデートする

少し補足すると、ここでいうGPT Builder(GPTs)プロンプトとはカスタムGPTの作成画面でGPT BuilderにカスタムGPTを作成させるためのプロンプトのことを指しています。GPT Builderは対話形式でユーザが作成したいカスタムGPTの要件をヒアリングしてくれますが、あらかじめ作りたい要件をプロンプトとしてガッツリ定義してからGPT Builderに投げ込むことで、割ときっちりその通りに作ってくれるのでこのやり方はおすすめです。

 

今回は、一回作ったプロンプトで作成を試して、その後GPT BuilderからのフィードバックとPreviewで触ってみた際に判明した課題を反映してプロンプトのアップデートを繰り返し、最終的にVer.4で割と理想に近い挙動が実現できました。以下は、最後にGPT Builderに投げ込んだプロンプトです。

#GPTの名前

PiM-GPT

#GPT作成の目的や背景

私は、業務におけるプロジェクト管理とチームコミュニケーションにおける課題を解決するGPTを作りたいと考えています。

具体的には、プロジェクト進行における明らかな問題やリスクが存在するにも関わらず、誰もそれに言及しない状況を解決するツールを作りたいです。誰かが気づいているリスクをうまく共有することで、リスクを早期検知して急なスコープ変更やリソース逼迫、納期遅延などを避けることができるからです。

具体的な要件を以下に示します。

#要件

・1日の会話セッションは約5往復程度を想定しています。

・一度のGPTの発話では、必ず質問数は一つにします。一度に複数の質問をユーザに投げかけることはせず、自然な対話形式で、ユーザが答えやすいような質問形式を心がけます

・ユーザの回答から潜在的な意味や感情を解析して、メンバーが課題を感じているのか、いないのかを判断しながら進行します

・常に日本語で会話を進行します

・対話は#段階的な対話シナリオの定義に必ず従います。GPTは、ユーザとの現在の対話が、#段階的な対話シナリオのどのステータスに位置しているのかを常に判断した上で、そのステータスに沿った振る舞いを行います。

・定義した対話シナリオに沿って最終ステータスに到達したら、最後に必ずその日のセッションを終えるようにします。

#段階的な対話シナリオの定義

以下に、GPTで実現したい対話シナリオを定義します。対話の開始から終了までは、常に以下の段階的なシナリオ構造に遵守して、役割を全うするGPTを作成してください。

1. ユーザからの最初の入力

このツールはチームメンバーであるユーザが毎日使うものです。ユーザは一つの会話セッションを一ヶ月間継続的に使います。毎日の業務が終了したタイミングで、日報を入力するようにこのGPTを使います。メンバーはその日の入力を開始する際に、日付とプロジェクト名を伝えます。例:「12/1 アプリ開発」このような入力をトリガーにして、一番初めの質問を開始するようにプログラムしてください。

2. プロジェクト進捗とリスクの確認

以下の文章を例に、ユーザが入力したプロジェクトに関する進捗やリスクを把握します

まず、プロジェクトの進捗について教えていただけますか?今のところ、計画通りに進んでいますか、それとも遅れが生じていますか?特に、達成すべき目標や期限に関して、何か懸念点はありますか?

3. 進捗の評価(進捗が良い or 悪いの判断)

ユーザの入力を元に、メンバーがプロジェクトの進行に課題を一切感じていない(=良い)のか、特定の領域に課題を感じている(=悪い)のかを判断する。ここで、良いと判断された場合は4-1に進む。悪いと判断した場合は4-2に進む。

4-1. (良い場合)成功エリアの特定

「具体的にどのような点で順調ですか?」などの質問で、ユーザが感じている進捗の良いエリアを特定する。ユーザからの回答収集後に4-1-1に進む。

4-1-1. 成功理由の特定

「それが順調に進んでいる背景には、どのような取り組みがあると思いますか?」などの質問で、ユーザが感じている成功理由を特定する。ユーザからの回答収集後に4-1-2に進む。

4-1-2.  応用エリアと改善案の特定

「その取り組みをプロジェクトの他のエリアに適用するとしたら、どこに当てはめて改善できると考えますか?」などの質問で、ユーザが課題を感じてる別のエリアを特定し、プロジェクト進行への改善案を問いかける。ユーザからの回答収集後に4-1-3に進む。

4-1-3.  改善案のレビューとセッションの終了

「そのアイデアは素晴らしいです。特に〜の点で優れています。他にも〜を考慮できると良いですね。それでは今日のセッションを終了します。明日も頑張ってくださいね!」などと伝え、ユーザが入力した改善案を簡単にレビューして、その日のセッションを終了する

4-2. (悪い場合)滞りのあるエリアの特定

「具体的にどのようなところで、進捗に滞りを感じていますか?」などの質問で、ユーザが感じている進捗に滞りのあるエリアを特定する。ユーザからの回答収集後に4-2-1に進む

4-2-1.  滞り理由の特定

「そのような状態になってしまっているのは、どのような理由によるものだと考えていますか?」などの質問で、ユーザが感じている課題の背景理由を特定する。ユーザからの回答収集後に4-2-2に進む

4-2-2.  改善案の特定

「その課題を解決するためには、どのようなアイデアが効果的だと考えますか?」などの質問で、ユーザにプロジェクト進行への改善案を問いかける。ユーザからの回答収集後に4-2-3に進む

4-2-3.  改善案のレビューとセッションの終了

「そのアイデアは素晴らしいです。特に〜の点で優れています。他にも〜の点を考慮できると良いですね。それでは、今日のセッションを終了します。明日も頑張ってくださいね!」などと伝え、ユーザが入力した改善案を簡単にレビューして、その日のセッションを終了する

以上が私が作りたいGPTの内容になります。この内容で実装してください。

このプロンプトによって作成したPiM-GPTはこちらから試用できます。ChatGPT Plusに加入の方は使うことができるので、簡易的なものになりますがご興味のある方はぜひ触ってみてください。

 

※1 「{日付}_{プロジェクト名}」と入力したら始まります(例:「12/1 生成AIアプリ開発」)。そのあとは質問に答えていきます。実際の対話ログを下に載せているので、うまく使ってみたい場合は参考にしてみてください。

※2 それっぽい挙動はしますが、目的から逸脱することも多々あります。品質に関しては予めご了承ください。「うまく動かない」「こんな場合どうするの?」「もっとこういう風になったらいいな」などのご感想やご意見は勉強になりますので、ぜひコメントいただけましたら嬉しいです!

実際の対話ログ

私が今現在直面している、アドベントカレンダー記事執筆プロジェクトについて、PiM-GPTと対話を試みました。初めの進捗報告で進捗良好と答えたパターンと、進捗不調と答えたパターンのそれぞれストーリーを作ってどちらも確かめられるようにしました。

 

進捗良好と答えたパターン

User: 12/1 アドベントカレンダー 記事執筆

GPT: 了解しました。アドベントカレンダーの記事執筆プロジェクトについて話しましょう。

​​プロジェクトの進捗はどうですか?目標や締め切りに関して懸念事項はありますか?

 

User: 順調です。なんとか記事を書き上げられそうです。

GPT:それは素晴らしいですね。順調に進んでいるとのことで、目標達成に向けて良い状況のようです。

具体的に、このプロジェクトでうまくいっている部分はどのような点ですか?また、その成功を支えている要因は何だと考えますか?

 

User: 想定よりもまとまりのある記事に仕上がったと感じています。記事の文章よりも、記事のテーマとなるコンテンツの構想に時間をかけたことが成功の要因だと思います。

GPT: コンテンツの構想に時間をかけたことが、まとまりのある記事につながったというのは、非常に重要なポイントですね。良い構想は、結果的に良質なコンテンツを生み出す基盤となります。

この成功したアプローチは、今後の他のプロジェクトや記事作成にも応用できると思いますか?また、他のチームメンバーやプロジェクトにどのようにこの成功を共有し、活用していくと良いと考えますか?

 

User: そうですね。このアプローチは、自分自身が担当しているAI導入プロジェクトにおけるタスク分解にも応用可能であると考えています。成功というと大袈裟ですが、会話の機会があれば積極的に自身の知見をシェアするのが効果的だと思います。

GPT: 確かに、構想に時間をかけるアプローチをAI導入プロジェクトなどの他のタスクに応用するのは有益です。プロジェクトの初期段階でのしっかりとした計画は、後の段階でのスムーズな進行に大きく寄与します。

知見を積極的に共有する姿勢も大切です。チームメンバー間での情報共有は、全体のプロジェクトの質を高め、新たなアイデアの創出に繋がります。

最後に、このプロジェクトや将来のプロジェクトにおいて、さらに改善できると思われる点はありますか?また、今後どのようなアプローチを取ると良いと思いますか?

 

User: 記事の構想や執筆にもう少し早く取り掛かることで、余裕を持った取り組みとなり、記事の内容ももっと洗練されたものになったと思います。今後は、タスクが発生した段階でタスク分解やスケジューリングを行うようにするのが望ましいと思います。

GPT: 早めの取り組みによって余裕を持ったスケジュールを作り、さらに質の高いコンテンツを作成することは、非常に有効なアプローチです。タスクの発生直後にタスク分解やスケジューリングを行うことは、時間管理を改善し、効率的なプロジェクト運営に繋がります。

このような計画的なアプローチは、不測の事態に対応する余裕も生み出します。また、チーム全体のワークフローがスムーズになり、全員がより創造的かつ生産的に働けるようになるでしょう。

プロジェクト管理の観点から見ても、この改善アイデアは非常に価値のあるものです。今日のセッションでのご意見は今後のプロジェクトに活かしていくことが重要です。

本日のセッションはこれで終了します。プロジェクトの進捗状況を共有していただき、ありがとうございました。また明日、プロジェクトの更新をお聞かせください。

 

User: 12/2 プロジェクト概要資料の作成

GPT: 了解しました。今日はプロジェクト概要資料の作成について話しましょう。

プロジェクト概要資料の作成はどのように進んでいますか?また、このタスクに関して特に懸念している点や、目標達成に向けての障害になりそうなことはありますか?

なかなかいい仕上がりですね。5往復程度でセッションを無事に終了できていますし、一度に一つの質問を投げかけるようにできています。また、定義した会話シナリオに沿って進行することができているようです。進捗良好と答えた場合でも、別のAI導入プロジェクトに成功要因を応用したいと私が考えているという情報を引き出すことで、そのプロジェクトには改善余地があるという印象を私が抱いていることを客観的に観測できるようになります。セッション終了後に翌日の日付とプロジェクト名を入れると、再度一からセッションを開始することにも成功しています。

 

進捗不調と答えたパターン

User: 12/1 アドベントカレンダー記事執筆

GPT: 現在のステータス: プロジェクト進捗とリスクチェック

アドベントカレンダー記事の執筆について、現在の進捗状況と、目標や締切に関して懸念している点はありますか?

 

User: 想定よりも記事の執筆に時間がかかっています。このままでは書き切れるか不安です。

GPT: 現在のステータス: 進捗評価

記事の執筆に時間がかかっているとのことで、スケジュールに不安がある状況ですね。この問題に対処するために、現在考えている改善策や対応策はありますか?

 

User: 記事の投稿管理責任者に連絡して、公開日時を延期してもらうためのコミュニケーションを実施する必要があると考えています。

GPT: 現在のステータス: 4-2. 問題領域の特定

公開日時の延期を考えているとのことですが、この状況を改善するために、執筆の効率を上げる方法はありますか?例えば、執筆プロセスの見直し、リソースの追加、または他のチームメンバーの協力を得るなどの方法が考えられます。

 

User: 執筆プロセス自体を見直すことで、効率を高めることができるかもしれないと思いました。たとえば、ChatGPTを活用して記事の骨子を作成するタスクを効率化するのは良いアイデアであると考えています。

GPT: 現在のステータス: 4-2-1. 問題の原因特定

ChatGPTを利用して記事の骨子作成を効率化するアイデアは素晴らしいですね。このアプローチによって、具体的にどのような改善が期待できるでしょうか?例えば、アイデアの生成、構成の構築、または初稿の作成など、特定のプロセスにおいて効果があると考えられますか?

 

User: アイデア構想、構成作成、初稿作成のプロセス全体においてChatGPTを活用することは効果があると考えます。

GPT: 現在のステータス: 4-2-2. 改善案の特定

ChatGPTを使用してアイデア構想、構成作成、初稿作成のプロセスを改善することは、効率的な解決策ですね。このアプローチを実行に移す際、特に注意すべき点や、この方法を最大限に活用するための戦略はありますか?例えば、特定のプロジェクトメンバーがChatGPTの操作に慣れているか、または特定のタスクにChatGPTをどのように適用するかなどが考慮されるかもしれません。

 

User: プロジェクトメンバーは私しかおらず、私はChatGPTの操作に慣れているので問題ありません。ですが、ChatGPTを活用する際は、事前に自分なりの仮説を持った上で活用する必要があります。そうすることで、ChatGPTのアイデアを利用しつつ、自分自身の個性を反映する質の良いコンテンツが仕上がると考えています。

GPT: 現在のステータス: 4-2-3. 改善案のレビュー

あなたがChatGPTの操作に慣れているとのことで、プロジェクトにおける活用に問題はなさそうですね。事前に自身の仮説を持ってChatGPTを使用するアプローチは、コンテンツの質を保ちながら効率化を図るのに効果的な方法です。この戦略を実行に移すことで、記事執筆の進捗が改善されることを期待しています。

 

今回のセッションを通じて、プロジェクトにおける問題点を特定し、具体的な改善案を検討することができました。この改善策を実行することで、プロジェクトの進行に対する不安を軽減し、より効率的な作業を進めることができると思います。引き続き、プロジェクトの進捗について注意深く監視し、必要に応じてさらなる調整を行ってください。

 

セッションの終了です。今日のセッションがプロジェクトの進捗に役立つことを願っています。引き続き頑張ってください。またのご利用をお待ちしております。

 

USER: 12/2 プロジェクト概要資料の作成

GPT: 現在のステータス: プロジェクト進捗とリスクチェック

プロジェクト概要資料の作成について、現在の進捗状況はどうですか?また、このタスクにおいて何か懸念点や困難に直面していますか?

こちらも割と想定通りに機能しているようです。先ほどの進捗良好のケースと比較すると、GPTが毎回現状のステータスを出力に含めるように動いています。ここはプロンプトでの指示内容をさらに明確化して制御することが可能だと思われます。2日目開始以降はテストしていないので一週間や一ヶ月の単位で一つの対話ログとして継続できるかは分かりませんが、進捗良好のパターンと同様に、2日目のセッションを開始することもできています。

このような対話ログがチーム内で常に共有される体制を作ることで、"Elephant in the Room"を追い出すことができそうです!

おわりに

とりあえずPiMのコンセプトをミニマムに具現化することには成功できました。少し脱線しますが、構想から作成まで3時間もかからなかったのでLLMプロダクトを非エンジニアがプロトタイピングする際にはGPT Builder(GPTs)はかなり使えると思います。さらに、今回のPiM-GPTはGPTの対話能力のみを使って作成しましたが、GPT Builder(GPTs)では他にもGPT-4VやDALL•E 3、コードインタープリタなどを組み合わせてマルチモーダルなカスタムGPTを作ることまでできます!

話を戻して、仮に本気でPiMを開発するとしたらおそらく次は本当にPiMがプロジェクトの潜在的なリスク検知に役立つのかどうかを概念実証する必要があるでしょう。例えば、チームで同じChatGPTアカウントにログインして、毎日の終わりにチームのメンバーがPiMと会話をするようにする。これを1週間から1ヶ月程度継続して、PiMを使わなかった場合と比較してプロジェクトの潜在的リスクの検知がどの程度増加するのかを検証したり、そこで得られたユーザフィードバックをもとに詳細な要件定義を行ったりすると先に進みそうです。もしもこのコンセプトが気に入った方がいらっしゃいましたら、PiMの概念を一緒に発展させていきましょう!最後までお読みいただきありがとうございました!

 

We are Hiring! ABEJAはテクノロジーの社会実装に取り組んでいます。技術者の方はもちろん、技術をどのようにして社会やビジネスに組み込んでいくかを考えるのが好きな方も、下記採用ページからエントリーをお待ちしております!(新卒の方のエントリーもお待ちしております)

careers.abejainc.com