実験やワークショップの時間管理を効率化する

実験やワークショップを行うとき、5分のセッション、1分の入れ替え、10分のディスカッション、、、こうした時間管理をするとき、計画や実行でつまずくことがあります。タイムライン君はこうした時間管理をサポートするためのツールです。
タイムライン君は、CSVファイルで指定したスケジュールのタイマーを生成してくれるアプリケーションです。ダウンロードはこちら(Windows版)、ZIPファイルを解凍して使用してください。
CSVファイルは以下のような形式で作成します。
titlememberstartdurationfixedinstruction
セッション1Member0:05:00durationセッション5分間
入れ替えManager0:01:00duration入れ替えを行ってください
セッション2Member0:05:00durationセッション5分間
入れ替えManager0:01:00duration入れ替えを行ってください
セッション3Member0:05:00durationセッション5分間
ディスカッションManager0:10:00durationディスカッション10分間
このCSVファイルを読み込むと、アプリケーション画面では以下のような表示になります。全体の所要時間や各セッションの時間の割り振りが視覚的に把握できて便利です。 タイムライン君のスクリーンショット 右上にある「Send to timer」ボタンを押すと、以下のような画面が出てきてタイマーが開始されます。
タイムライン君のタイマー画面のスクリーンショット

ChatGPT用のスキーマを用意する

CSVファイルはExcelやテキストエディタで簡単に編集することができますし、部分的な修正であればタイムライン君のアプリケーション内で直接編集することも可能です。しかし、複雑なスケジュールを作成する場合にはChatGPTを活用するとより便利です。 ここでは、タイムライン君用のCSVファイルを生成するためのChatGPTプロンプトの例を紹介します。
プロンプトの前に、スキーマについて説明します。今回私たちがほしいのは、タイムライン君が読み込むことのできるフォーマットに従ったCSV形式のデータです。カラム名(一行目のtitleやmemberなど)は正確である必要がありますし、時刻のフォーマット(h:mm:ss)も曖昧であってはいけません。
そういうとき、スキーマを提示することで、得られるデータの精度を高めることができます。タイムライン君はChatGPT向けのスキーマを公開しており、具体的には以下のようなものです。CSVの各カラムの意味やフォーマット、生成例をJSON形式で指示しています。
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Timeline-kun CSV",
  "description": "An array of CSV rows for Timeline-kun",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "title": { "type": "string", "description": "Event name" },
      "member": { "type": "string", "description": "Person or group" },
      "start": { "type": "string", "pattern": "^\\d{1,2}:[0-5]\\d:[0-5]\\d$", "description": "Start time H:MM:SS" },
      "duration": { "type": "string", "pattern": "^\\d{1,2}:[0-5]\\d:[0-5]\\d$", "default": "0:00:05", "description": "Duration H:MM:SS" },
      "fixed": { "type": "string", "enum": ["start","duration"]},
      "instruction": { "type": "string", "description": "Notes" }
    },
    "required": ["title","member","fixed"],
    "allOf": [
      {
        "if": { "properties": { "fixed": { "const": "start" } } },
        "then": { "required": ["start"] }
      },
      {
        "if": { "properties": { "fixed": { "const": "duration" } } },
        "then": { "required": ["duration"] }
      }
    ]
  },
  "x-notes": {
    "csvHeaderOrder": ["title","member","start","duration","fixed","instruction"],
    "rowOrdering": "Array order is execution order. Do not reorder rows.",
    "instructionTrigger": "The instruction field triggers recording only if it contains the exact substring '(recording)' with matching case",
    "rowRules": [
      "All column values may be duplicated across rows",
      "If duration is not specified, default to 0:00:05"
    ],
    "examples": [
      { "title": "Wake up",    "member": "all member", "start": "0:00:00", "fixed": "start", "instruction": "Good morning! (recording)" },
      { "title": "Stand by",   "member": "group A",    "start": "0:10:00", "fixed": "start" },
      { "title": "Walking",    "member": "group B",    "start": "0:11:00", "duration": "0:05:00", "fixed": "start" },
      { "title": "Stand by",   "member": "sub-001",    "duration": "0:00:20", "fixed": "duration" },
      { "title": "Monitoring", "member": "sub-001/ses-01",    "duration": "0:20:00", "fixed": "duration", "instruction": "Skip when core body temperature reaches 38.5°C" }
    ]  }
    }
上記の記述をそのままプロンプトにコピペするか、こちらのリンクを右クリック→名前を付けてリンクを保存し、ChatGPTに渡すことで使用できます。
次に、実際にChatGPTに投げるプロンプトの例を示します。
このスキーマに従ってCSVファイルを生成してほしい。
5分のセッションを3回、間に入れ替え時間が1分、最後に10分のディスカッション
CSVファイルで提供してください。言語は日本語
実際のChatGPTの応答例は以下のとおりです。 ChatGPTの応答例のスクリーンショット 指示に矛盾や抜け漏れがなければ、このように簡潔な指示でも正確なCSVファイルが生成されます。ちなみにこのとき生成されたCSVファイルの中身は以下のとおりでした。
titlememberstartdurationfixedinstruction
セッション1グループA0:00:000:05:00start記録を開始します (recording)
入れ替え1全員0:05:000:01:00start
セッション2グループB0:06:000:05:00start
入れ替え2全員0:11:000:01:00start
セッション3グループC0:12:000:05:00start
ディスカッション全員0:17:000:10:00start意見交換まとめ
titleやinstructionの内容を修正すれば、そのままタイマーとして使用できるCSVファイルが得られました。
タイムライン君に限らず、スキーマを提示することでChatGPTからより品質の高いデータを得ることができます。ぜひ試してみてください。