イノベーション エンジニアブログ


株式会社イノベーションのエンジニアたちの技術系ブログです


このエントリーをはてなブックマークに追加

自分の煩雑な業務をHackしたいシリーズ~その1~

こんにちは。オザサです。

みなさんタスク管理には何を利用しているでしょうか。
手書きのメモや付箋などアナログなやり方を使っている人もいれば、
Todoアプリなどデジタルなツールを用いてタスクを管理しているかと思います。
特に4月から社会人になった方々は先輩から何か指摘をもらう人もいるかもしれません。

そんなタスク管理ツールの一つとしてTrelloというものがあります。
(正確にはタスク管理ツールなのかカンバンツールなのか・・・?)
最近JIRAで有名なAtlassianに買収されてその名前を聞いた人もいるかもしれません。

個人的にも使ったりしているツールなのと、
最近は開発以外のタスクが様々あり、
それらを管理するためにも色々と調べつつ今後の業務Hackツール作成の足がかりとしたいと思います。

ということでやはりここはAPIを叩いていきましょう!

まずはAPIを叩くのに必要な準備を行います。

準備

・API Key の取得

上記のURLにアクセスしましょう!

表示されたAPI Keyは忘れないように記録しておきましょう。

・API Token の取得

上記URLのTokenという文字がリンクになっていますからそこにアクセスしましょう!
許可すれば以下の画面になるかと思います。

trelloToken.png

Tokenが表示されますので記録しておきましょう。

ここまで完了すればAPIを叩く準備は完了です。
今回はどんなAPIがあるかを調べつつ実際の動きを確認できればいいので、
ローカルからcurlコマンドを用いて叩く程度でバンバン叩いていきましょう!

Trelloには複数APIがありますので、確かめるだけでも時間がかかりそうです。

やってみましょう

とりあえずボードの情報を取得

curl "https://trello.com/1/members/[username]/boards?key=[key]&token=[token]&fields=name"

さて、この時点で思ったのですが、
そのままの形式だと返り値がコンソール上で見にくいです。(あくまで個人的な感想です)

ちょっと本題とは脱線しますが、
JSON形式のデータをいい感じに加工するjqコマンドを使いましょう。

jqコマンド

インストールはMacOSであればHomebrewを使う下記コマンドでサクッといけるかと思います。

brew install jq

では、先ほどのボード取得のコマンドにパイプでjqコマンドをつなげてみましょう。

curl "https://trello.com/1/members/[username]/boards?key=[key]&token=[token]&fields=name" | jq
boardJq.png

うん、いい感じと思います。
WebサービスがJSONを扱うことは多いと思いますので、
サクッと見やすくしてくれるだけでも重宝しそうです。

・リストの情報を取得

https://api.trello.com/1/boards/[boardId]/lists?fields=name&key=[key]&token=[token]

これによりDoingリストのIDを取得することができます。

cardsをパラメータに追加すればカードの情報も取得できませすが、 結構な量になると思うのでここではリストの情報だけを取得しておくこととします。

さらにjqコマンドを活用すればDoingリストのみを表示することも可能です。

curl "https://api.trello.com/1/boards/[boardsId]/lists?fields=name&key=[key]&token=[token]" | jq '.[] | select(.name == "Doing")'
listDoingJq.png

・Doingリストにあるカードの確認

curl "https://api.trello.com/1/lists/[listId]?fields=name&cards=open&card_fields=name&key=[key]&token=[token]" | jq
doingJq.png

事前に追加しておいたカードが確認できますね。
カードにもそれぞれIDが付与されていることがわかります。

・カードの詳細な情報を取得

カードのIDを確認することができたので、今度はカードの中身を見てみましょう。

curl "https://api.trello.com/1/cards/[cardId]?key=[key]&token=[token]" | jq
cardJq.png

一つのカードに情報が複数設定できることが推察されますね。
正直Trelloのどの情報がどのパラメータと紐付いているのか、
利用者ではありますが、パッとわかりませんでした・・・

調べます!!

さておき、逆にAPIを用いてカードを追加してみましょう。

・カードの追加

curl -X POST "https://api.trello.com/1/cards?key=[key]&token=[token]&idList=[listId]&name=temp3" | jq

登録時にも返り値として取得時と同じようなデータを返してくれます。
この時点で新規のカードに関してはIDが振られますので活用する際には注意が必要です。

終わりに

さてこんな感じでローカルからではありますが、
jqコマンドを使いながら、ある程度TrelloのAPIを活用できる感が出てきました。

今後の流れとしては
・Doingにある課題にどれくらい時間を使っているのかトラッキング
・Slackのmessage-buttonsAPIを用いてタスクをSlackで一元管理化する
などなどにTryして自分の業務をHackしてみたいと思います。

すでに着手はしていますので、
今回のような感じで各所切り出して少しずつアウトプットできればと思います。

こちらからは以上です!!