Todoist APIを使って、Todoist CLIクライアントを作ってみた。
はじめに
Todoistは人気のタスク管理ツールですが、普段ターミナルを多用する開発者にとっては、CLIからタスクを管理できると便利です。そこで、Todoist APIを活用して、シンプルなCLIクライアントを作成しました。本記事では、その概要と使い方を紹介します。
Todoistとは?
毎日のやるべきことをオンライン上で管理できるタスクツールです。ブラウザとスマホアプリケーションどちらも対応しているため、外ではIphoneで開いて、家ではパソコンで開いてなんて使い方もできます。
⇒ Todoist公式
僕の普段の使い方
普段はTodoistをメモ、後でやること、タスクがごちゃごちゃになったとき書き込むという使い方をしています。毎日使う分には、様々な機能は使わないというのが正直なところです。
欲しかったもの
パソコン作業中にわざわざTodoistのブラウザを開いたりするのはめんどうです。また、普段はコマンドラインで作業をしていることが多くマウスに持ち替えるのもめんどうです。
なので、コマンドライン上でTodoistを扱えたら最高じゃん!ってことになりました。
既存のものではだめなの?
Github上にはいくつかのTodoist CLIクライアントが存在します。
しかし、様々な機能がついていたので、とにかくシンプルなものを作りたかったです。
リポジトリ情報
今回作成したCLIツールのソースコードは、GitHubで公開しています。
このツールを使用することで、ターミナル上でTodoistのタスクを追加、一覧表示、完了することができます。
機能概要
このCLIツールでは、以下の操作を行うことができます。
-
タスクの追加 (
todo add
) -
タスクの一覧取得 (
todo ls
) -
タスクの完了 (
todo check
)
すべての操作は、Todoist APIを通じて行われます。
環境構築
-
Python のインストール
本ツールは Python で作成されているため、Python 3.7 以上が必要です。
-
リポジトリのクローン
git clone https://github.com/kentyja12/todoist-CLI.git cd todoist-CLI
-
必要なパッケージのインストール
pip install -r requirements.txt
-
環境変数の設定
.env
ファイルを作成し、以下の情報を記載します。TODOIST_TOKEN=your_todoist_api_token INBOX_ID=your_todoist_inbox_project_id
TODOIST_TOKEN
は Todoist API から取得できます。
使い方
タスクを追加
タスクを追加するには、以下のコマンドを実行します。僕は基本的にこのコマンドしか使ってません。
todo add "新しいタスク"
また、特定のプロジェクトに追加したい場合は -p
オプションを指定します。
todo add "プロジェクト用タスク" -p 123456789
タスクの一覧表示
現在のタスクを表示するには、以下のコマンドを実行します。またまた僕はこのコマンドしかつかってm
todo ls
特定のプロジェクトのタスクを表示したい場合は -p
オプションを使用します。
todo ls -p 123456789
タスクの完了
タスクを完了するには、タスクの番号またはタスク名を指定します。
todo check 1
または、複数のタスクを一度に完了することも可能です。
todo check 1 2 "特定のタスク名"
実装のポイント
このツールの主なポイントは以下のとおりです。
-
Todoist APIを活用
-
todoist_api_python
ライブラリを利用して、API経由でタスクを操作
-
-
タスクをプロジェクトのセクションごとに管理
- タスクを最初のセクションに追加する仕組みを実装
-
リポジトリの自動更新
- 一日の最初の実行時に
git pull
でリポジトリを更新
- 一日の最初の実行時に
-
エラーハンドリングの実装
- API通信やリポジトリ操作で発生するエラーを適切に処理
まとめ
本記事では、Todoist APIを活用して作成したCLIツールについて紹介しました。このツールを使えば、ターミナルから簡単にTodoistを操作できるため、タスク管理がより効率的になります。
興味のある方は、ぜひ GitHubのリポジトリ をチェックしてみてください!
今後も機能追加を行っていく予定なので、コントリビューションも歓迎です!
参考
- Todoist 公式サイト: https://www.todoist.com/ja
- Todoist Developing with Todoist: https://developer.todoist.com/guides/#developing-with-todoist