はじめに
cacika は macOS で動く GitHub 生産性レポートツールです。GitHub リポジトリの PR 数・コミット数・インシデント率を時系列で集計し、チームや個人のパフォーマンスを スタンドアローン HTML レポートとして出力します。
動作環境
macOS
必要なもの
GitHub Personal Access Token
ライセンス
年間 ¥1,000
必要な GitHub スコープ
| スコープ | 用途 |
|---|---|
repo | プライベートリポジトリを含む場合 |
public_repo | パブリックリポジトリのみの場合 |
セットアップ
アプリを起動する
購入後にダウンロードした cacika.app を
Applications フォルダへ移動して起動します。初回起動時にライセンスキーの入力を求められます。
GitHub Token を登録する
メニューバーの 設定 → 一般 タブを開き、GitHub Personal Access Token を入力します。 Token は AES-256-GCM で暗号化されてローカルの SQLite に保存されるため、 設定ファイルに平文で記載する必要はありません。
config.yaml を作成する
以下のテンプレートを参考に config.yaml を作成します。
最低限 github_owner と
github_repositories が必要です。
github_owner: "your-org"
github_repositories:
- name: "your-repo"
base_branch: "main"
incident_label: "incident"
github_members:
- "alice"
- "bob" 詳細なフィールドの説明は config.yaml リファレンス を参照してください。
config.yaml をインポートする
設定 → コンフィグ タブを開き、作成した
config.yaml をインポートします。
インポート後はアプリ内でプレビューして内容を確認できます。
データを取得してレポートを生成する
メイン画面の 「最新のデータを取得」 でデータを収集し、 「レポートを出力」 で HTML レポートを生成します。 生成された HTML ファイルはブラウザで開くだけで閲覧できます。
config.yaml リファレンス
config.yaml はアプリの設定ファイルです。集計対象のリポジトリ・メンバー・チームを定義します。 以下に全フィールドを記載した完全なサンプルを示します。
完全サンプル
# 必須 ──────────────────────────────────────────────────
# GitHub の Organization 名またはユーザー名
github_owner: "your-org"
# 集計対象のリポジトリ(複数指定可)
github_repositories:
- name: "backend-repo"
base_branch: "main"
exclude_label: "dependencies" # このラベルの PR を除外
incident_label: "incident" # インシデントとして扱うラベル
exclude_prefix_pr_titles: # このプレフィックスで始まる PR を除外
- "Revert"
- name: "frontend-repo"
base_branch: "main"
exclude_label: "dependencies"
incident_label: "hotfix"
# オプション ──────────────────────────────────────────────
# 追跡対象のメンバー
github_members:
- "alice"
- "bob"
- "charlie"
# チーム構成(Teams ページで使用)
team_members:
backend:
github_members:
- "alice"
- "bob"
frontend:
github_members:
- "charlie"
# API レート制限設定
github_api_rate_limit:
default_max_get_pr_count: 500 # PR 取得の上限(デフォルト: 500)
default_max_commit_count: 1000 # コミット取得の上限(デフォルト: 1000)
# リポジトリ別に個別設定することも可能
# max_get_pr_counts:
# backend-repo: 1000
# max_commit_counts:
# backend-repo: 2000
# リリース進行レポート設定(GitHub Project 連携)
release_progress:
github_project_number: 1 # GitHub Project V2 の番号
github_project_owner: "your-org" # Project 所有者名
project_owner_type: "org" # "org" または "user"
spec_repositories: # 仕様 issue のリポジトリ
- "spec-repo"
dev_repositories: # 開発 issue のリポジトリ
- "backend-repo"
- "frontend-repo"
test_repositories: # テスト issue のリポジトリ
- name: "test-repo"
exclude_prefix_issue_titles: # 除外する issue タイトルのプレフィックス
- "【QA環境】"
# インシデントトレンドチャート設定
incidents_trend:
incident_display_scale: 10 # インシデント数の表示倍率(PR 数と差が大きい場合に設定) github_repositories のフィールド
| フィールド | 必須 | 説明 |
|---|---|---|
| name | ✓ | リポジトリ名(org/name の name 部分) |
| base_branch | ✓ | ベースブランチ名(例:main, master, develop) |
| exclude_label | — | このラベルが付いた PR を集計から除外(例:dependencies) |
| incident_label | — | インシデントとして扱うラベル(例:incident, hotfix) |
| exclude_prefix_pr_titles | — | このプレフィックスで始まる PR を除外(例:Revert) |
team_members の構造
任意のチーム名をキーとして、各チームに所属するメンバーを指定します。 チームを設定するとレポートの Teams ページ が有効になります。
team_members:
backend: # チーム名(任意)
github_members:
- "alice"
- "bob"
frontend:
github_members:
- "charlie" github_api_rate_limit のフィールド
大規模なリポジトリで取得に時間がかかる場合に上限を引き上げます。通常はデフォルト値で問題ありません。
| フィールド | デフォルト | 説明 |
|---|---|---|
| default_max_get_pr_count | 500 | PR 取得の上限数 |
| default_max_commit_count | 1000 | コミット取得の上限数 |
| max_get_pr_counts | — | リポジトリ別の PR 取得上限(リポジトリ名: 上限数) |
| max_commit_counts | — | リポジトリ別のコミット取得上限 |
release_progress のフィールド
GitHub Project V2 と連携してリリース進行レポートを生成する機能です。 仕様 issue → 開発 issue → テスト issue の階層をたどり、各フェーズの所要日数を集計します。
| フィールド | 必須 | 説明 |
|---|---|---|
| github_project_number | ✓ | GitHub Project V2 の番号(URL の末尾の数字) |
| github_project_owner | ✓ | Project の所有者(org 名または user 名) |
| project_owner_type | ✓ | "org" または "user" |
| spec_repositories | — | 仕様記載 issue を含むリポジトリ名のリスト |
| dev_repositories | — | 開発 issue を含むリポジトリ名のリスト |
| test_repositories | — | テスト issue を含むリポジトリのリスト(name / exclude_prefix_issue_titles) |
incidents_trend のフィールド
インシデント数が PR 数に比べて非常に少ない場合、グラフ上でインシデントのラインが見づらくなります。
incident_display_scale
を設定すると表示上の倍率を調整できます(ツールチップには実数値と倍率後の値の両方が表示されます)。
incidents_trend:
incident_display_scale: 10 # インシデント数 × 10 でグラフに表示(デフォルト: 1) 自動スケジュール
設定 → スケジュール タブで、データの自動取得スケジュールを設定できます。 バックグラウンドで定期的に GitHub からデータを収集します。
取得間隔
2 / 4 / 8 / 12 時間
バックグラウンドで自動実行
実行曜日
曜日を個別に指定
例:平日のみ実行
除外時間帯
時間帯を指定して除外
例:深夜〜早朝は実行しない
Tips
前回の自動取得日時は次回スケジュール実行時の起点として自動的に提案されます。 重複してデータが取得されることはありません。データ管理
収集したデータはローカルの SQLite データベースに保存されます。 JSON 形式でのバックアップ・復元と、データの完全削除をサポートしています。
エクスポート(バックアップ)
設定 → データ管理 からデータベースの内容を JSON ファイルとして書き出します。 リポジトリ・PR・コミット・実行履歴が含まれます。
対象テーブル
※ github_tokens はセキュリティのため除外されます
インポート(復元)
エクスポートした JSON ファイルからデータを復元します。2 つのモードがあります。
Upsert モード(デフォルト)
既存データを保持しながら新しいデータを追加・更新します。 段階的な復元や差分インポートに適しています。
Clean モード
既存データを削除してから JSON の内容で完全に置き換えます。 特定時点の状態に完全復元したい場合に使用します。
データリセット
収集したデータを削除します。削除前に確認ダイアログが表示されます。 テーブル単位での部分削除も可能です。
レポートの見方
生成された HTML ファイルはスタンドアローンで動作します。サーバー不要でブラウザで開くだけで閲覧でき、 日次・週次・月次・四半期など集計粒度を切り替えられます。
All Users ページ
全メンバーの PR 数とコミット数を一覧表示します。期間タイプ(日次〜年次)を選択でき、 前の期間との比較(増減率)も確認できます。
Teams ページ
チーム単位で集計した指標を表示します。
config.yaml
の team_members
を設定した場合に有効になります。
Incident Rate ページ
全 PR に対するインシデントラベル付き PR の割合を時系列で表示します。
incident_label
で指定したラベルが付いた PR がインシデントとしてカウントされます。