【Backlog】 BacklogAPI 用公式パッケージ backlog-js の紹介

 Backlogはプロジェクト管理ツールです。主にプロジェクト単位でのソースコードのバージョン管理、タスク管理、情報共有、を行えます。

タスク管理、ファイル共有もできるプロジェクト管理ツールBacklog

 進捗状況を可視化できたりスケジュールの目安になったりタスクを忘れることの防止になったりで便利なツールなのですが一々タスクを登録するのが手間だったりします。ドラッグ&ドロップとちょっとしたポップアップへの入力で課題の状態を変更できるボード機能が増えたことにより、一度登録したタスクの扱いは非常に楽になりましたが初期化はまだまだ手数がかかります。

 待望のBacklogリリース:カンバンボードをリリースしました!〜すべてのユーザーに順次提供していきます〜 | Backlogブログ

 初期化の解決方法の一つがGoogleスプレッドシートによる入力です。Google

Google スプレッドシートを使って、Backlogに課題を一括登録しよう – Backlog ヘルプセンター
BacklogにGoogleスプレッドシートを使ってタスクを追加する機能が追加! – 株式会社シーポイントラボ | 浜松のシステム・RTK-GNSS開発

 これはこれで便利なのですが多少の制限があります。
 最も自由に使え、ユーザ側で扱いやすくできる様になるのは API 機能でしょう。適当な HTTP ライブラリと組み合わせてコード上からまとめて機能を使えるようにするだけでずいぶん楽になります。

Backlog API とは | Backlog Developer API | Nulab
pythonの人間のためのHTTPライブラリRequests – 株式会社シーポイントラボ | 浜松のシステム・RTK-GNSS開発

 とはいえ API の機能は多く、そのほとんどを使えるようにコーディングするだけでもひと手間です。 backlog-js は Backlog 開発元の nulab が提供する JavaScript 用の BacklogAPI クライアントライブラリです。

backlog-js – npm
nulab/backlog-js: Backlog API version 2 client for browser and node.

 使い方は次の通りです。

import * as backlogjs from 'backlog-js';

// 'xxx.backlog.jp' or 'xxx.backlogtool.com' or 'your package host'
// 使っている Backlog のドメインをフル
const host = 'cpointlab.backlog.jp';
// Backlog の個人設定から取得できる APIキー を設定
const apiKey = 'hogehogehoge';

// Backlog クライアントをインスタンス化
const backlog = new backlogjs.Backlog({ host, apiKey });
// 後は型に従って適宜好きなAPIを叩くのみ
backlog.getProjects().then( projects => {
  console.dir(projects)
});

 API の返り値が未定義で Promise だらけなのが玉に瑕ですがリクエストは容易に飛ばせる様になります。リクエストとレスポンスの定義は次のようにまとまっているのでこれを元に型を記述することで扱いやすいコードにできます。
プロジェクト一覧の取得 | Backlog Developer API | Nulab

import * as backlogjs from 'backlog-js';

const host = 'cpointlab.backlog.jp';
const apiKey = 'hogehogehoge';

// プロジェクト一覧の取得を元にレスポンスの型を記述
type ProjectResponse = {
    id: number
    projectKey: string,
    name: string,
    chartEnabled: boolean,
    subtaskingEnabled: boolean,
    projectLeaderCanEditProjectLeader: boolean,
    textFormattingRule: string,
    archived: boolean
}

const backlog = new backlogjs.Backlog({ host, apiKey });

// 型情報を割り当ててプロパティの把握や値の使いまわしを便利に
backlog.getProjects().then( (projects: Array<ProjectResponse>) => {
  console.dir(projects)
});
>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG