cacika / docs

ドキュメント

設定・使い方・リファレンス

はじめに

cacika は macOS で動く GitHub 生産性レポートツールです。GitHub リポジトリの PR 数・コミット数・インシデント率を時系列で集計し、チームや個人のパフォーマンスを スタンドアローン HTML レポートとして出力します。

動作環境

macOS

必要なもの

GitHub Personal Access Token

ライセンス

年間 ¥1,000

必要な GitHub スコープ

スコープ 用途
repo プライベートリポジトリを含む場合
public_repo パブリックリポジトリのみの場合
GitHub Personal Access Token は github.com/settings/tokens から発行できます。「Generate new token (classic)」→ 必要なスコープを選択して生成してください。

セットアップ

1

アプリを起動する

購入後にダウンロードした cacika.app を Applications フォルダへ移動して起動します。初回起動時にライセンスキーの入力を求められます。

2

GitHub Token を登録する

メニューバーの 設定 → 一般 タブを開き、GitHub Personal Access Token を入力します。 Token は AES-256-GCM で暗号化されてローカルの SQLite に保存されるため、 設定ファイルに平文で記載する必要はありません。

Token はマシン固有情報から生成したキーで暗号化されます。別のマシンに移行する際は Token を再登録してください。
3

config.yaml を作成する

以下のテンプレートを参考に config.yaml を作成します。 最低限 github_ownergithub_repositories が必要です。

github_owner: "your-org"

github_repositories:
  - name: "your-repo"
    base_branch: "main"
    incident_label: "incident"

github_members:
  - "alice"
  - "bob"

詳細なフィールドの説明は config.yaml リファレンス を参照してください。

4

config.yaml をインポートする

設定 → コンフィグ タブを開き、作成した config.yaml をインポートします。 インポート後はアプリ内でプレビューして内容を確認できます。

5

データを取得してレポートを生成する

メイン画面の 「最新のデータを取得」 でデータを収集し、 「レポートを出力」 で 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・コミット・実行履歴が含まれます。

対象テーブル

repositoriespull_requestscommitsexecution_logs

github_tokens はセキュリティのため除外されます

インポート(復元)

エクスポートした JSON ファイルからデータを復元します。2 つのモードがあります。

Upsert モード(デフォルト)

既存データを保持しながら新しいデータを追加・更新します。 段階的な復元や差分インポートに適しています。

Clean モード

既存データを削除してから JSON の内容で完全に置き換えます。 特定時点の状態に完全復元したい場合に使用します。

データリセット

収集したデータを削除します。削除前に確認ダイアログが表示されます。 テーブル単位での部分削除も可能です。

注意: リセットしたデータは復元できません。実行前に必ずエクスポートでバックアップを取ってください。

レポートの見方

生成された HTML ファイルはスタンドアローンで動作します。サーバー不要でブラウザで開くだけで閲覧でき、 日次・週次・月次・四半期など集計粒度を切り替えられます。

All Users ページ

全メンバーの PR 数とコミット数を一覧表示します。期間タイプ(日次〜年次)を選択でき、 前の期間との比較(増減率)も確認できます。

• メンバー別 PR 数 / コミット数
• 前期間比較(増減率)
• GitHub アバター表示
• 期間タイプ切り替え

Teams ページ

チーム単位で集計した指標を表示します。 config.yamlteam_members を設定した場合に有効になります。

• チーム選択ドロップダウン
• Team Summary Card(総 PR 数・コミット数)
• メンバー別テーブル(PR / コミット)
• 7 期間分のトレンドグラフ
• 1 人あたりの指標
• 前期間比(色付きバッジ)

Incident Rate ページ

全 PR に対するインシデントラベル付き PR の割合を時系列で表示します。 incident_label で指定したラベルが付いた PR がインシデントとしてカウントされます。

• インシデント率(%)の時系列グラフ
• メンバー別・チーム別の集計

集計粒度

日次週次隔週月次四半期半期年次