個人のタスク管理をRaycastを使って工夫してみた話

この記事は[Hacobu Advent Calendar 2024](https://qiita.com/advent-calendar/2024/hacobu)の12日目の記事です。

こんにちは。株式会社Hacobuでエンジニアリングマネージャー(EM)を担当しているうちだです。

今回は、日頃行っている工夫の1つであるタスク管理について書いてみようと思います。

## タスク管理の課題

私は2024年6月からEMに就任し、現在6ヶ月くらい経過しました。

EMに就任後、例に漏れず打ち合わせが増えたことは就任前の想定通りだったのですが、タスクの依頼があちこちから五月雨に飛んでくるようになったことで、依頼が来るたびにタスク管理してるツールを開いて登録することができなくなりました。

弊社ではNotionを活用しており、私のタスク管理もNotionのデータベースを使って管理していました。

https://www.wantedly.com/companies/hacobu/post_articles/518125

そんな中、タスク管理ツールにタスクを追記しようにも、私がファシリテーションをする打ち合わせが連続していたりすると追記漏れが発生してだんだんと管理できないタスク量に忙殺されるようになってしまいました。(忘れっぽい自分乙・・・)

そんなとき、「なるべく手数少なく簡単にタスクに登録できるようになるいい方法はないだろうか」と、世の中の賢人たちが編み出した仕組みがないかなーと調べているとランチャーアプリを使ったタスク管理をされている方を発見。[Alfred](https://www.alfredapp.com/)を活用した方法でした。

これいいな！と思ったのですが、実現するにはPowerpackという有償ライセンスが必要で、「タスク管理するためだけにこれに課金するにはtoo muchだな」と感じました。

そこで代替手段を探していると[Raycast](https://www.raycast.com/)というツールに出会いました。

Alfred同様のランチャーアプリで、自分のやりたいことも実現できそうだったので試してみることにしました。

## Raycastを使ったタスク登録連携のセットアップ

まずはRaycastをインストールします。

```bash
brew install --cask raycast
```

好みに応じてHotkeyなど変更してもらえればと思います。

私は `⌘ + Space` で起動できるように設定しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3946310/9a588939-da21-e1c8-31de-0837b2cbdcd5.png)

ここからがタスク管理との連携です。

RaycastにはScript Commandsという機能があり、自分で独自のコマンドとそれに反応するスクリプトを実装することが出来ます。この機能を活用し、 `todo` コマンドを実装してタスク管理と連携しています。

セットアップの部分は下記リポジトリのREADMEに説明を譲りますが、特にここでは躓くことなくセットアップできると思います。

https://github.com/raycast/script-commands

セットアップが終わったらコマンドに反応するスクリプトを実装します。

Raycastを起動して、 `create script` などと入力します。すると下記のように候補が出て来るので `Create Script Command` を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3946310/13af4bef-2571-423c-cf94-a761460292cc.png)

今回はコマンドを `todo` にするので、タイトルに `todo` と入力して `⌘ + Enter` を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3946310/26f34a59-5cdb-4044-4f86-19b5fdf73ebe.png)

するとシェルスクリプトが保存できるので、保存します。

あとはスクリプトを実装すればOK。今回必要なのは、NotionのAPIをcurlコマンドで叩くだけのシンプルなものです。参考までに実際に私が使っているスクリプトを以下に置いておきます。

```bash
#!/bin/bash

# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title todo
# @raycast.mode compact

# Optional parameters:
# @raycast.icon 🤖
# @raycast.argument1 { "type": "text", "placeholder": "新しいTODOをここに入力してください" }

# Documentation:
# @raycast.author Takayoshi Uchida

NOTION_API_KEY=XXXXX
DATABASE_ID=XXXXX
curl -X POST https://api.notion.com/v1/pages \
  -H 'Authorization: Bearer '"$NOTION_API_KEY"'' \
  -H "Content-Type: application/json" \
  -H "Notion-Version: 2022-06-28" \
  --data '{
	  "parent": { "type": "database_id", "database_id": "'$DATABASE_ID'" },
	  "properties": {
      "Name": {
        "type": "title",
        "title": [{ "type": "text", "text": { "content": "'$1'" } }]
      },
      "Status": {
        "type": "status",
        "status": { "name": "Todo" }
      }
    }
  }'

```

ここまで来れば、Raycastを起動して `todo` と入力すると下記の状態になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3946310/ce1b9b89-dba2-ecc5-a1c2-b7444a6a57c8.png)

ここで、Tabを押してタスクの内容を入力したらEnterで上記のスクリプトが実行されてタスクが登録されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3946310/6d398c90-7189-f550-688e-2d04d4ea6310.png)

登録されたらあとはちゃんと消化するだけ！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3946310/0894e2d1-cf63-4990-6463-dd8801929380.png)

## おわりに

この仕組みを作ってからは、会話しながらでも咄嗟にタスクを追加することが出来るようになり、タスクの存在を忘れることが減った気がします。(なくなったわけではないですが)

タスク管理いいのないかなーという人の参考になれば幸いです！

cf. スクリプト内で使用している Notion API key や Database Id をどこから持ってくればいいかについては下記の動画などが参考になると思います。

https://www.youtube.com/watch?v=Hoge2RZCrl0