はじめに
人間が「選択」を行うためには「意志力」なるものを使用するらしいが、その「意志力」は1日にどれだけ使えるかの上限が決まっているらしい。
そのため、活動的に行動するためには可能な限り「選択」の回数を減らす必要がある。
そんな「選択」を減らすために活用できるツールとして、リマインダーやTODOリスト、タスク管理ツールなどがあるが、私がよく活用しているものはiOSに標準搭載されている「リマインダー」というアプリだ。
しかしどうにもタスクの入力すらとても面倒に感じるので、「ChatGPT」を用いて整形してもらい、ショートカットに自動で登録してもらおうと思った。
全体の流れ
ショートカット内では、以下の順番で処理を行ってもらう。
- プロンプトで、テキスト(追加したいタスク)を入力する
- 例) 明日、駅へ10時までに到着していたい。駅までは30分ほどかかるため、余裕を持って家を出たい。
- ChatGPTにタスクの抜き出しと整形を行ってもらう
- 例) 以下の2件を戻り値として返す
- 駅に到着,2024/12/12 10:00
- 家を出る,2024/12/12 09:30
- 例) 以下の2件を戻り値として返す
- ChatGPTからの戻り値を、配列として取り込む
- リマインダーに、タスクを追加する
ショートカット内での詳細な処理
1. プロンプトで、テキスト(追加したいタスク)を入力する
アクション「入力を要求」にて、プロンプトからテキスト入力する。
2. ChatGPTにタスクの抜き出しと整形を行ってもらう
「ChatGPT」のアクション「Ask ChatGPT」にて、先ほど入力したタスクを整形してもらう。
整形形式はCSV同様で、タスク間は改行で区切り、タスク名と期日間はカンマで区切る。
また、時刻の指定がないタスクは、デフォルトで23時を設定する。
以下の文章をショートカット内に打ち込む。
これからタスク名と期日の抜き出しを行ってもらいます。
1つのタスクに対して、「タスク名,期日(yyyy/MM/dd hh:mm形式)」で記載してください。
複数タスクある場合は改行区切りで列挙してください。
期日の時刻に指定がない場合には、その日の23:00を設定してください。
タスク名、期日、区切り文字以外は発言しないでください。
以下が抜き出しを行うタスクです。
[入力を要求]
3. ChatGPTからの戻り値を、配列として取り込む
ChatGPTにて成形されたデータを配列として取り込み、1列目をタスク名、2列目を期日としてリマインダーに読み込ませる。
コードで表現すると、以下の通りの処理を行う。
function (resultTextChatGpt) {
let taskDataList = resultTextChatGpt.split("\n");
for (let taskData of taskDataList) {
let task = taskData.split(",");
if (task.length == 2) {
let taskName = task[0];
let taskDue = task[1];
// ここでリマインダーに「taskName」と「taskDue」を読み込ませる
}
}
}
4. リマインダーに、タスクを追加する
さて、ChatGPTから受け取った値の整形は行えたが、iOS標準搭載のリマインダーには困ったバグが存在する。
それは、ショートカットから期日付きのリマインダーを新規で作成ができないこと。
なので、リマインダーを新規作成した後、その作成したものを編集する形で期日を設定していく必要がある。
手順3と手順4をまとめてショートカットに登録すると、以下のようになる。
実行状況
上記のように、ChatGPTが入力したテキストを読み取り整形し、そのままリマインダーへと登録された。
家を出発する時間が9時半ではなくて9時なのは、朝起きるのが苦手な筆者のためを思い「余裕を持って」設定してくれたのかもしれない。
ありがとう、ChatGPT。
さすがだ、ChatGPT。