エンジニアの皆さん、こんにちは。現場の空気を変え、チームの「見えない詰まり」を解消する。そんなアジャイルコーチとしての矜持を持って、今日はTrelloのデータを武器に変える話をしましょう。
Trelloは直感的で素晴らしいツールですが、カードを動かしているだけでは「なぜ今のスピードなのか?」「どこでボトルネックが起きているのか?」という問いに答えることはできません。
直感をデータで裏打ちし、チームのベロシティを次のステージへ引き上げる。TrelloからBigQuery(BQ)へのデータパイプラインを構築する、その「最初の一歩」を解説します。
—
1. なぜ「Trello × BigQuery」なのか?
Trelloの標準レポートは、今の状態を知るには十分ですが、「過去の推移」を分析するには力不足です。
- 蓄積の欠如: Trelloは「今の状態」を保存するツールであり、過去のカードの移動履歴や滞留時間を時系列で追うのは難しい。
- BigQueryで実現すること: 過去の全データを溜め込むことで、「このタスクは完了まで平均何日かかっているか?」「特定のメンバーに負荷が集中していないか?」といった、現場の真の課題を可視化できます。
—
2. パイプラインの全体像
今回は、最もメンテナンスコストが低く、堅牢な手法として 「Google Apps Script (GAS) を使った定期抽出」 を採用します。
1. Trello API: カードデータを取得
2. GAS: 取得したデータを整形し、BigQueryへプッシュ
3. BigQuery: データを蓄積
4. Looker Studio: データを可視化
—
3. 【HelloWorld】最初の一歩:データ取得と格納
まずは準備です。TrelloのAPIキーとトークンを取得し、Google Cloud Consoleでプロジェクトを作成してください。
① Google Apps Scriptのセットアップ
Googleスプレッドシートを開き、「拡張機能」>「Apps Script」を選択します。
② BigQueryへの書き込みコード
以下のコードは、Trelloの特定のボードから全カード情報を取得し、BigQueryに放り込む最小限のスクリプトです。
/
- Trelloからカードデータを取得してBigQueryへ挿入する
/
function syncTrelloToBigQuery() {
const TRELLO_API_KEY = ‘YOUR_API_KEY’;
const TRELLO_TOKEN = ‘YOUR_TOKEN’;
const BOARD_ID = ‘YOUR_BOARD_ID’;
const PROJECT_ID = ‘YOUR_GCP_PROJECT_ID’;
const DATASET_ID = ‘trello_analytics’;
const TABLE_ID = ‘cards’;
// 1. Trelloからデータを取得
const url = `https://api.trello.com/1/boards/${BOARD_ID}/cards?key=${TRELLO_API_KEY}&token=${TRELLO_TOKEN}`;
const response = UrlFetchApp.fetch(url);
const cards = JSON.parse(response.getContentText());
// 2. BigQueryへ挿入する形式に変換(シンプルにJSON配列として扱う)
const rows = cards.map(card => ({
insertId: card.id, // 重複排除のためのID
json: {
card_id: card.id,
name: card.name,
list_id: card.idList,
due: card.due,
updated_at: new Date().toISOString() // 抽出時刻
}
}));
// 3. BigQueryに送信
BigQuery.Tabledata.insertAll({kind: “bigquery#tableDataInsertAllRequest”, rows: rows}, PROJECT_ID, DATASET_ID, TABLE_ID);
}
※注意: Google Cloudの「BigQuery API」をApps Scriptのサービスとして追加し、プロジェクトIDを設定してください。
—
4. 精度を高めるための「極意」
ただデータを溜めるだけでは、宝の持ち腐れです。以下の観点を設計に盛り込んでください。
1. スナップショット管理: 上記のコードを毎日「トリガー設定(タイマー)」で動かすと、日ごとの「カードの滞留状況」が履歴として残ります。これが「累積フローダイアグラム」を描くための最強のソースになります。
2. 正規化: Trelloの`idList`(リストID)は非常に見づらいです。BigQuery側で「リストIDとリスト名(Doing, Doneなど)」を紐付けるマスターテーブルを作成し、SQLの`JOIN`で結合させるのが、高度な分析の定石です。
3. エラーハンドリング: API制限(レートリミット)を考慮し、もしデータ量が多い場合は`UrlFetchApp`のレスポンスコードをチェックして、リトライ処理を入れるのが「伝説のエンジニア」の嗜みです。
—
5. 次のステップ:Looker Studioとの連携
データがBigQueryに入れば、あとは簡単です。Looker Studioを開き、「データソースを追加」からBigQueryを選択するだけ。
- 「完了カード数」の推移: チームの生産性(ベロシティ)が見えてきます。
- 「リスト間の滞留日数」: どこで仕事が止まっているか(ボトルネック)が色付きのグラフで一目瞭然になります。
—
最後に:あなたへのアドバイス
ツールは単なる手段です。このパイプラインを構築した先に目指すべきは、「データを見てチーム全員で議論する文化」です。
「このグラフ、先週よりDoneの数が増えてるね。何が要因だったんだろう?」
そんな会話が自然と生まれるようになった時、あなたのチームは本当の意味でアジャイルになっているはずです。
まずは今日、手元のボードのカードを一つBigQueryに送り込むところから始めてみてください。その小さな一歩が、数ヶ月後のチームの爆発的なパフォーマンスに直結します。応援していますよ!