Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

ChatGPTで、Show Meプラグインを利用してガントチャートを書いてみる

こんにちは。
近頃はとにかく暑すぎて、ネッククーラーが手放せないkonnoです。

今回は、ChatGPTでガントチャートを表示できるのか、ということにチャレンジしたいと思います。

とはいえ、ChatGPT単体で、図を生成できるわけではなく、今回は「Show Me」というプラグインを利用してみます。
このプラグインを利用すると、Mermaid記法というモノに基づき、テキストで記載した内容から図を生成することが可能になります。

Mermaid記法については、以下を参照してください。
mermaid.js.org

ただ、Mermaid記法は以下のようなもので、人にとっては難解な部分も多いです(私の脳がついていけてないだけ?)。
以下は、ガントチャートを作成するためのMermaid記法ですが、これを覚えて作成するのは、なかなか難しいと感じます。

gantt
    title ガントチャート
    dateFormat YYYY-MM-DD

    section sectionA
    task1:done,2023-07-03 ,1d
    …

そのため、そこをChatGPTに助けてもらいましょう。

ガントチャートの作成

タスクのデータを指定して、ガントチャートを出力する

まずShow Meをプラグインとして設定します。

Show Meプラグインを設定する

次に、ChatGPTに以下のプロンプトを入力します。
入力時には、Mermaid記法ではなく、人にわかりやすいMarkdownの表形式で、ガントチャートのデータを指定してみます。

以下のタスクのデータを元に、ガントチャートを出力してください。
 
| セクション  | タスクID  | 開始日     | 終了日      | 進捗率 |
| ----------- | --------- | ---------- | ----------- | ------ |
| セクション1 | タスク1-1 | 2023/07/03 | 2023/07/06  | 100%   |
| セクション1 | タスク1-2 | 2023/07/04 | 2023/07/07  | 80%    |
| セクション1 | タスク1-3 | 2023/07/10 | 2023/07/13  | 20%    |
| セクション2 | タスク2-1 | 2023/07/10 | 2023/07/14  | 60%    |
| セクション2 | タスク2-2 | 2023/07/17 | 2023/07/19  | 0%     |

すると、ChatGPTの画面上に以下のガントチャートが出力されました。
実に簡単です!

ガントチャートが出力される

ガントチャートの表示を整える

ただ改善点が3つあります。

  1. よく見ると各タスクの終了日が1日ずれて表示されています。人間が見るときの認識とずれているため、表示を1日分伸ばすように指示します。
  2. 進捗率を表現できていません。そこで、各タスクIDの横に表示するよう指示します。
  3. 週末を稼働しない日として表示させましょう。

そこで、ガントチャートを修正するために、以下のようなプロンプトを追加入力します。

以下の表示に対応してください。
 
- 終了日が1日ズレているようなので、終了日の表示を1日分延ばす。
- タスクIDの後ろに進捗率を表示する。
- 週末は除外する。

すると、修正されたガントチャートが表示されました。
先ほどの改善点1~3 が反映されていることがわかります!

修正されたガントチャート

遅れているタスクを特定する

さらに使いやすいガントチャートにするため、
遅れているタスクには色をつけたいですね。

そこで、以下のようにプロンプトに追加入力してみます。

遅れているタスクは、赤色にしてください。
今日は2023/07/12です。


すると、一部のタスクに赤色がつきました。
ただ、遅れているタスク1-2には色がつかず
逆に遅れていないはずのタスク2-2には色がついてしまいます。

遅れているタスクに色を付ける


「遅れ」の判定がこちらの期待するものとずれているようです。
ここでは、「遅れているタスク」が何であるかをより具体的に指示してみます。

上記のガントチャートで、遅れているタスクは、赤色にしてください。
ただし、遅れではないタスクはそのままの表示とします。
今日は2023/07/12です。
 
# 遅れているタスクの特定方法
- タスクの終了日が今日より前の日付だが、進捗率が100%未満である。
- (今日-開始日)÷(終了日-開始日)の割合に比べ、進捗率の方が低い。
 
# 遅れているタスクからの除外対象
- タスクの開始日が、今日より未来の場合は、遅れの対象から除外する。

すると、遅れているタスク1-2が赤色になり、
開始日が始まっていないタスク2-2は遅れとは判定されなくなりました。
正確にガントチャートを作図することができました!

具体的に追加の指示を与える

まとめ

一度の指示でガントチャートを作図させようとすると、なかなか上手くいきませんが
このように段階を分けて進めていくと、正確なガントチャートが作図できることが分かりました。

工夫次第で、さらにリッチなガントチャートが作れそうです。
実際のプロジェクトでも、うまく活用していきたいと思います!