やあ、エンジニア諸君。現場のプロジェクト管理に頭を抱えていないかな?
Confluenceに溜まっていく膨大なドキュメント。しかし、「それ、本当に誰かの役に立っているのか?」という問いに即答できる人は少ない。標準の分析機能は、せいぜい「誰がいつ見たか」の表面的なログを出すだけで、チームの生産性にどう寄与しているかの本質は見えてこない。
今日は、ConfluenceのログをBigQueryに吸い上げ、BIツールで「ナレッジのROI(投資対効果)」を可視化する、一段上のエンジニアリングを紹介しよう。これを実装すれば、あなたのチームのドキュメントは「書かれっぱなしのゴミ捨て場」から「最強の武器」へと進化する。
—
1. なぜ「標準機能」では足りないのか?
Confluenceの標準アナリティクスは、閲覧数やユニークユーザーのカウントには優れているが、時系列での変化や、どのスペースが開発のボトルネックを解消しているかの相関分析には全く向いていない。
真に必要なのは、以下のデータだ。
- 鮮度管理: 更新から長期間放置されている「負債化したドキュメント」の特定。
- 貢献度可視化: 誰が書いたドキュメントが、どれだけ多くの開発者の助けになっているか(閲覧数 × 滞在時間)。
- 検索効率: 検索キーワードと閲覧ページの乖離。
これらを解決するために、APIで生データを抽出し、データウェアハウスに蓄積する「攻めのナレッジ管理」が必要になるわけだ。
—
2. システム構成の全体像
今回は、以下のシンプルなパイプラインを構築する。
1. Confluence API: 定期的に閲覧ログを取得。
2. Cloud Functions (Python): データの整形とBigQueryへの転送(ETL処理)。
3. BigQuery: データの蓄積。
4. Looker Studio: 経営層やチームが見るべきダッシュボード化。
—
3. HelloWorld: APIから最初のログを叩く
まずは、Confluence CloudのAPIを叩いて、特定のページの閲覧ログを取得する最小構成を試そう。
必要なもの
- Atlassian API Token([Atlassian ID](https://id.atlassian.com/manage-profile/security/api-tokens)で発行)
- Base64エンコードした認証情報(`メールアドレス:APIトークン` をエンコードしたもの)
Pythonサンプルコード
import requests
import base64
設定値
EMAIL = “your-email@example.com”
API_TOKEN = “your-api-token”
DOMAIN = “your-domain.atlassian.net”
PAGE_ID = “12345678”
認証ヘッダーの作成
auth_str = f”{EMAIL}:{API_TOKEN}”
encoded_auth = base64.b64encode(auth_str.encode()).decode()
headers = {
“Authorization”: f”Basic {encoded_auth}”,
“Accept”: “application/json”
}
閲覧統計を取得するエンドポイント
url = f”https://{DOMAIN}/wiki/rest/api/content/{PAGE_ID}/child/page” # 例としてページリストを取得
response = requests.get(url, headers=headers)
if response.status_code == 200:
print(“成功!データを受け取りました:”)
print(response.json())
else:
print(f”失敗: {response.status_code}”)
このコードを実行して、JSONデータが返ってきたなら準備万端だ。これが「ナレッジの可視化」の第一歩となる。
—
4. BigQueryへのロードと自動化の極意
単にデータを取得するだけでなく、「毎日自動で蓄積する」ことが重要だ。
1. Cloud Functionsの作成: 上記コードをPythonランタイムでデプロイする。
2. Cloud Scheduler: これを毎日深夜にキックするよう設定する。
3. BigQueryへの挿入: `google-cloud-bigquery` ライブラリを使用して、取得したJSONをテーブルに挿入する。
BigQuery運用のポイント
- パーティショニング: `date` カラムでパーティションを切るべし。コストが劇的に下がる。
- スキーマ設計: `page_id`, `view_count`, `last_modified`, `author_id` を保持しておくことで、「最も読まれているのに最近更新されていないページ」というアラート条件が作れるようになる。
—
5. Looker StudioでROIを可視化する
BigQueryにデータが入れば、あとはLooker Studioを接続するだけだ。
- KPI 1: 閲覧数ランキング: チームが今、何を参考にしているかを知る。
- KPI 2: 更新頻度 vs 閲覧数: 投資(更新労力)に対してリターン(閲覧数)が低いページを洗い出し、ドキュメントの廃止(アーカイブ)を判断する。
- KPI 3: 貢献者スコア: 誰が書いたドキュメントが最もチームを助けているか。これがわかれば、正当な人事評価の補助材料になる。
—
先輩エンジニアからの最後のアドバイス
ナレッジ管理の最大の敵は「ツールを導入すること」ではなく「データを放置すること」だ。
この仕組みを作れば、あなたは「なんとなくドキュメントを書く人」から「データの裏付けを持ってチームの認知負荷を下げられるエンジニア」へと変わる。まずは週に1回、Looker Studioの画面を眺めることから始めてみよう。
もし詰まったら、いつでも質問してくれ。技術は、使う人の意志によってのみ、価値を持つものだからね。さあ、今すぐコードを書いて、チームの知を「資産」に変えよう!