皆さん

おはげようございます、こんにちわ、こんばんわ。

Backlog 利用していますか。
私も漏れなく公私共に Backlog を利用させて頂いております。

ところで

Backlog に API が提供されていることは何となくは存じ上げておりましたが、最近になって Backlog の API を利用して業務改善出来るんぢゃないかなーと思いはじめた部分があるので試しに Backlog API を触ってみました。

http://developer.nulab-inc.com/ja/docs/backlog

ということで、Backlog API を叩く CLI ツールを作ってみた

ので課題を作ったり、コメント付けたり、ステータスを変更したりしてみたいと思います。

https://github.com/inokappa/backlog-issue

あくまでもサンプルとして作ったものなのでツッコミどころ満載です。

backlog-issue の準備

Docker があると嬉しい

mruby-cli は mruby でコマンドラインツールが作れる優れもののツールですが、バイナリを生成するにあたり docker-compose を利用しますので、作業環境には Docker エンジンが動いていると嬉しいと思います。

また、mruby ですので、Linux や Windows 版のバイナリについても生成される点も嬉しいですよね。(実際に試せてはいませんのでご容赦下さいmm)

バイナリの生成

git clone https://github.com/inokappa/backlog-issue.git
cd backlog-issue
docker-compose run compile

以上です。

暫く待つとバイナリが生成されますので確認しましょう。

今回試す環境は MacOS X ですので、カレントディレクトリの以下のディレクトリにバイナリが作成されます。

bash-3.2$ ls -l mruby/build/x86_64-apple-darwin14/bin
total 2328
-rwxr-xr-x  1 kawahara  staff  1190464 Nov 20 08:31 backlog-issue

API キー

API キーを事前にダッシュボードから払い出しておきましょう。そして、以下のように環境変数にセットします。

export BACKLOG_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

ヘルプ

ヘルプを見てみましょう。

bash-3.2$ cd mruby/build/x86_64-apple-darwin14/bin
bash-3.2$ ./backlog-issue --help
Please set Backlog Space Name.

上記の通り、Backlog のスペース名が必要になります。今回は hage-pika というスペース名の Backlog を操作する体でいきます。

bash-3.2$ ./backlog-issue --help --space hage-pika

Usage: backlog-issue [options]

  -h, --help               Display help.
  -v, --version            Display version.
  --space Space_Name       Set Backlog Space Name(Required).
  --project Project_Key    Set Project Key(Project ID = ).
  --issue Issue_Title      Set Issue Title.
  --type Issue_Type        Set Issue Type(Issue Type ID = ).
  --status Status_ID       Set Issue Status ID( 未対応 = 1, 処理中 = 2, 処理済み = 3, 完了 = 4,).
  --priority Priority_ID   Set Issue Priority ID( 高 = 2, 中 = 3, 低 = 4,).
  --desc Description       Set Issue Description.
  --key Issue_Key_Name     Set Issue Key Name.
  --comment Comment        Set Comment.

さらに、対象のプロジェクト名を --project で指定すると以下のように出力されます。今回は FAMというプロジェクトで操作する体でいきます。

bash-3.2$ ./backlog-issue --help --space hage-pecha --project FAM

Usage: backlog-issue [options]

  -h, --help               Display help.
  -v, --version            Display version.
  --space Space_Name       Set Backlog Space Name(Required).
  --project Project_Key    Set Project Key(Project ID = xxxxx).
  --issue Issue_Title      Set Issue Title.
  --type Issue_Type        Set Issue Type(Issue Type ID =  タスク = 1xxxx1, バグ = 1xxxx2, 要望 = 1xxxx3, その他 = 1xxxx2,).
  --status Status_ID       Set Issue Status ID( 未対応 = 1, 処理中 = 2, 処理済み = 3, 完了 = 4,).
  --priority Priority_ID   Set Issue Priority ID( 高 = 2, 中 = 3, 低 = 4,).
  --desc Description       Set Issue Description.
  --key Issue_Key_Name     Set Issue Key Name.
  --comment Comment        Set Comment.

上記のようにプロジェクトの ID と Issue Type(種別 ID) についてはプロジェクト単位で生成される為、対象となるプロジェクト毎の値が返ってくるようになります。

backlog-issue を操作する

課題を起票する

せっかくなので backlog-issue コマンドのバグ報告をしてみましょう。

bash-3.2$ ./backlog-issue --space hage-pika \
>   --project FAM \
>   --title "これはバグだろうこんちきしょう" \
>   --type 1xxxx2 \
>   --desc "これは mruby のコマンドラインツールからの投稿です" \
>   --priority 2

以下のようなレスポンスが返ってきます。レスポンス内容は Backlog API が返す値そのままをダンプしています。必要に応じて jq コマンド等で整形しましょう。

{"id":xxxxxx,"projectId":xxxxx,"issueKey":"FAM-9","keyId":9,"issueType":{"id":1xxxx2,"projectId":xxxxxxx,"name":"バグ","color":"#990000","displayOrder":1},"summary":"これはバグだろうこんちきしょう","description":"これは mruby のコマンドラ インツールからの投稿です","resolution":null,"priority":{"id":2,"name":"高"},"status":{"id":1,"name":"未対応"},"assignee":null,"category":[],"versions":[],"milestone":[],"startDate":null,"dueDate":null,"estimatedHours":null,"actualHours":null,"parentIssueId":null,"createdUser":{"id":xxxxxxx,"userId":"backlog-api","name":"backlog-api-demo","roleType":1,"lang":null,"mailAddress":"xxx@xxxx.com","nulabAccount":null},"created":"2016-11-19T23:54:55Z","updatedUser":{"id":xxxxxxx,"userId":"backlog-api-demo","name":"backlog-api-demo","roleType":1,"lang":null,"mailAddress":"xxx@xxxx.com","nulabAccount":null},"updated":"2016-11-19T23:54:55Z","customFields":[],"attachments":[],"sharedFiles":[],"stars":[]}

issueKey を確認しておきましょう。

本当に課題が起票されているか、念の為にい確認しておきましょう。

c8e4a75c-67c7-e03c-e809-8154b3afa0e3

課題にコメントを付ける

心をこめてコメントを付けてみましょう。

bash-3.2$   ./backlog-issue --space hage-pika \
>   --key FAM-9 \
>   --comment "すいません、すいません、すいません。すぐ直します"

先ほど控えておいたissueKey--key に指定して --comment にコメントを書きます。

以下のようなレスポンスが返ってきます。

{"id":xxxxxxxx,"content":"すいません、すいません、すいません。すぐ直します","changeLog":[],"createdUser":{"id":xxxxx,"userId":"backlog-api-demo","name":"backlog-api","roleType":1,"lang":null,"mailAddress":"xxxx@xxxxx.com","nulabAccount":null},"created":"2016-11-20T00:04:34Z","updated":"2016-11-20T00:04:34Z","stars":[],"notifications":[]}

本当にコメントがついているか、念の為に確認しておきましょう。

d47f94ab-75ed-3972-a42e-663581d3c2b0

課題のステータスを変える

早速、改修作業に着手しましょう。ということで、コメントを付けて課題のステータスを「処理中」に変更してみたいと思います。

bash-3.2$   ./backlog-issue --space hage-pika \
>   --key FAM-9 \
>   --status 2 \
>   --comment "改修作業を開始しました"

以下のようなレスポンスが返ってきます。

{"id":xxxxxxxx,"content":"改修作業を開始しました","changeLog":[],"createdUser":{"id":184492,"userId":"backlog-api","name":"backlog-api-demo","roleType":1,"lang":null,"mailAddress":"xxx@xxxx.com","nulabAccount":null},"created":"2016-11-20T00:11:20Z","updated":"2016-11-20T00:11:20Z","stars":[],"notifications":[]}
{"id":xxxxxx,"projectId":xxxxxx,"issueKey":"FAM-9","keyId":9,"issueType":{"id":1xxxx2,"projectId":xxxxx,"name":"バグ","color":"#990000","displayOrder":1},"summary":"これはバグだろうこんちきしょう","description":"これは mruby のコマンドラ インツールからの投稿です","resolution":null,"priority":{"id":2,"name":"高"},"status":{"id":2,"name":"処理中"},"assignee":null,"category":[],"versions":[],"milestone":[],"startDate":null,"dueDate":null,"estimatedHours":null,"actualHours":null,"parentIssueId":null,"createdUser":{"id":xxxxxx,"userId":"backlog-api-demo","name":"backlog-api-demo","roleType":1,"lang":null,"mailAddress":"xxx@xxxx.com","nulabAccount":null},"created":"2016-11-19T23:54:56Z","updatedUser":{"id":xxxxxx,"userId":"backlog-api","name":"backlog-api-demo","roleType":1,"lang":null,"mailAddress":"xxx@xxxx.com","nulabAccount":null},"updated":"2016-11-20T00:11:21Z","customFields":[],"attachments":[],"sharedFiles":[],"stars":[]}

本当にコメントがついているか、念の為に確認しておきましょう。

b13af362-c042-6472-9b46-baf1f35f89cf

課題を閉じる

頑張った改修の結果、改修は終了ということで課題を完了としたいと思います。

bash-3.2$   ./backlog-issue --space hage-pika \
>   --key FAM-9 \
>   --status 4 \
>   --comment "改修作業が完了しましたけん"

本当に完了しているか、念の為に確認しておきましょう。

29f7acbf-6dd3-4129-96ef-826c173536db

良かった、良かった。

ということで

駆け足で Backlog API をラップした backlog-issue というコマンドの使い方を紹介しつつ、Backlog API を触ってみましたが、とても簡単に Backlog 課題を操作出来たと思います。

もう少し、自分の中でやりたいことを整理した上で、Backlog API を使った心のこもった課題運用について検討していきたいと考えています。

ありがとうございました。

元記事はこちら

mruby-cli + Backlog API を利用した心のこもった Backlog 課題運用のご提案(課題を作って、コメント付けて、ステータス変更する)