Backlog API(V2)のPython3ラッパー "python-backlog" を作った

記事タイトルとURLをコピーする

当社ではプロジェクト管理ツールとして全社的に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をよろしくお願いします。