当社ではプロジェクト管理ツールとして全社的にNulab社のBacklogを使いまくっているのですが、社内の研修課題やお客様へのヒアリング課題を一斉登録したり、昔のプロジェクトで作ったwikiを新しいプロジェクトに移管したりとか、何かとAPIが使えたらいいなぁ、というシーンに遭遇します。
そういうときに使える道具として、ごく簡単なPythonラッパーを作ってみましたのでご紹介します。
※詳しくは以下のPyPIプロジェクトページやGitHubをご覧ください。
使い方
PyPIには python-backlog
という名称で登録しています。以下のコマンドで利用可能です。
pip install python-backlog
backlog.base.BacklogAPI
がAPIオブジェクトです。引数としてspace, api_keyを受け取ります。
READMEにも書いていますが、 backlog.util.load_conf()
でyamlから認証の設定を引っ張ることも可能です(これを実装するために本質的な機能とは無関係なPyYAMLへの依存が発生してしまっています。執筆時点ではこの依存をあまりポジティブに捉えておらず、将来的には消すかもしれません)。
from backlog.util import load_conf
from backlog.base import BacklogAPI
conf = load_conf("conf.yml")["backlog"]
api = BacklogAPI(conf["space"], conf["api_key"])
例えばwikiのリストが欲しい場合は以下のように書きます。
import json
# list wikis
wikis = api.wiki.list("SampleProject")
print(json.dumps(wikis[0], indent=2))
API Clientオブジェクトの配下にBacklogリソースの名前空間があり、そのリソースに関連する操作、例えばwikiのリストは backlog_client.wiki.list()
のように wiki
のメソッド呼び出しとして利用します。パラメータの仕様はBacklogのAPIリファレンスに準拠します。
メソッドのdocstringには対応するBacklog APIのリファレンスのリンクを記述していますので、メソッドが要求するパラメータを確認したければ対象メソッドのdocstringを参照してください。
注意
- MacOS(or Linux) + Python3.6を前提としています。Python2.xだと(たぶん)動かないです
- Windowsも多分動きません。現状ではdocker上の環境で利用するくらいかなと思います
- サポートしていないリソースもまだまだ多いです。リソースオブジェクト自体が未定義であるか、あるいはメソッドが
NotImplemented
を吐いて落ちるような仕様になっています
まとめ
自作パッケージをPyPIに公開するところまでやったのは初でしたが、色々と勉強になることが多かったです。まだBetaバージョンではありますが是非使ってみていただけると嬉しいです。
最終形のイメージはこれを更にラップしたCLIツールなので、そちらも(最近サボってるけど)開発中です。
こんな感じ↓で使えたらいいなぁと妄想しています
# あるプロジェクト配下のwikiをリスト表示
backlog wiki ls --project xxx
# プロジェクトA配下のwikiをプロジェクトBに移行
backlog wiki cp backlog://project-A/* backlog://project-B/
反響あれば再開するかも。。。拙作ではありますが、python-backlogをよろしくお願いします。