NozbeとTogglの連携

Nozbeは、GTDのコンセプトに忠実なオンラインタスク管理システムで、チームのタスク管理にも拡張することもできるアプリケーションです。僕は、これをProライセンスで使用しているのですが、一つタスク管理上の悩みがありました。

Nozbe

Nozbeで行ったタスクがどれだけ時間がかけられたのかが記録として残らないということです。実際に、使用した時間を計測したいと思っても、Nozbeには記録する機能がありません。NozbeはあくまでもGet Things Doneのツールであり、やってしまったら後のことは別のシステムで管理すべきという発想なんだと思います。

それはそれでいいのですが、生産性向上をはかる上では、時間の記録も必要だろうと思うのが必然です。

そこで、定評のあるタイムシートシステムであるTogglと連携させることを検討しました。Togglは、プロジェクト別の時間計測が可能なオンラインのタイムシートシステムです。無料のライセンスを使用しています。

最初、IFTTTで連携できないか確認してみたのですが、IFTTTではNozbeとTogglと連携できませんでした。そこで、Zapierを使用して連携できないか確認してみたところ、可能そうであることがわかりましたが、どうも、本格的に連携させたいと思ったら(後で説明しますが、EvernoteやSlackとも連携させることにしたかったのです)、高価なライセンスを買わないといけなさそうでした。そこで、Google SpreadsheetとGoogle Appを使って連携させてみました。実際、今、これを使って運用しています。

30分バッチ処理で、Nozbeで作成したプロジェクトを、Togglのプロジェクトに追加し、また、Nozbeで完了したプロジェクトをTogglでCloseするというインタフェースを利用しています。

要求分析

システム統合をするにあたって、まずは要求分析です。自分がユーザーなので、要求分析といっても簡単なものですが、以下のような要求事項があげられます。

  1. Nozbeで作成したプロジェクトをTogglのプロジェクトに連携させたい。新規作成、完了をTogglに連携させる。Nozbeで新規プロジェクトを作成したら、Togglにも同じプロジェクトを登録したい。
  2. Nozbeで新規プロジェクトを作成したらEvernoteにも対応するNoteを自動的に作成したい。
  3. Evernoteに連携されたNoteに作業記録を書きながら、Togglで時間計測をしたい。
  4. Togglの時間計測を完了したら、SlackにPostして作業時間報告をしたい。

さて、実際の実装に行く前に、要件定義と基本設計を行います。

要件定義

(経済性要件)ソフトウェアの新規購入や、ウェブサービスに対する追加的な支払は0にしなければならない。NozbeはProライセンスを許す。Togglは無料ライセンスを継続したい。追加のライセンスやサブスクリプションを行うソリューションを採用してはならない。

(同期頻度)1時間あたり2回以上、同期が行われなければならない。

(利用技術)開発言語は、JavaJavaScriptのいずれかでなければならない。

(製品)タスク管理ツールは、Nozbeを使う(そもそもの要求事項なので、変えないことにします。Toodoledoを使うとか、タスクシュートを使うとかいろいろ選択肢はありますが、自分が気に入っている基本のツールを変えると、生産性を落としてしまうので、ここでは変えないことを優先します)

ノート管理ツールは、Evernoteを使う(これも、そもそもの要求事項なので、変えないことにします。OneNoteを使うとか、いろいろ他の選択肢もありますが、やはり、使い慣れたものが一番なので)

時間計測ツールは、Togglを使う(これもやっぱり要求事項。以下略)。

報告ツールは、Slackを使う(これも、以下略)。

(連携基盤)Google Spreadsheetと、Google Appを使う。AWSレンタルサーバーを使って、実装することも考えられましたが、経済性要件を満たすようなインフラは見つけられませんでした。そこで、Google Appを使って実装することにします。また、EvernoteGoogle AppでアクセスできるAPIを公開していないので、最小限の範囲でZapierを併用する。

基本設計

機能を大きく4つに分解し実装箇所を以下の通りにする。

 

Google App

1. SyncProject: Synchronize project list of Toggl based on Nozbe prioject

2. Post to slack when toggl timer is stopped

 

Zapier

3. Create Evernote note when Nozbe projec is created

4. Create Evernote tag when Nozbe project is created

 

詳細設計&実装

SyncProjectのGitHubはこちら。

GitHub - bawbr/Nozbe2Toggl: Nozbe2Toggl

SyncTimeEntryのGitHub

GitHub - bawbr/Toggl2Slack: Post to slack when toggl time entry has finished