エンジニアの皆さん、こんにちは。現場の最前線で日々「コードの複雑性」と戦っているあなたへ、今日は少し視点を変えた話をしましょう。
大規模なチームで開発を続けていると、必ず直面する問題があります。それは「リポジトリの墓場化」です。気づけば数百のリポジトリが並び、どれが最新なのか、誰が権限を持っているのか、もはや誰も把握できない……。そんな状況は、CI/CDの足枷となり、セキュリティリスクを増大させます。
今日は、Bitbucketを使い倒しているプロフェッショナルが実践している「リポジトリの断捨離と棚卸し」という、極めて現場的なテクニックを伝授します。これをマスターすれば、毎日の開発環境が驚くほどスッキリしますよ。
—
1. なぜ「リポジトリの断捨離」が必要なのか?
リポジトリが増えすぎると、以下の「見えないコスト」がチームを蝕みます。
- 検索のノイズ: 必要なライブラリを探すだけで時間が溶ける。
- 権限の腐敗: 退職者や異動者が古いリポジトリにアクセスし続けられるリスク。
- CI/CDのオーバーヘッド: メンテナンスされていないパイプラインが課金とビルド枠を圧迫する。
まずは「整理整頓こそが最強のDevOps」であると心に刻んでください。
—
2. 「非アクティブなリポジトリ」を特定するハック
闇雲に消すのはNGです。まずは「誰にも触られていないリポジトリ」をデータで可視化しましょう。Bitbucket APIを使えば、シェルスクリプト一つで「過去1年間プッシュがないリポジトリ」を抽出できます。
Bitbucket APIを叩いて、最終コミットが1年以上前のリポジトリをリストアップする例
必要に応じてワークスペースIDと認証情報を設定してください
curl -u username:app_password \
“https://api.bitbucket.org/2.0/repositories/{workspace_id}?pagelen=100” | \
jq -r ‘.values[] | select(.updated_on < "2023-01-01T00:00:00Z") | .full_name'
※ `jq` コマンドでJSONを整形し、`updated_on` フィールドを基準にフィルタリングするのがコツです。
---
3. Bitbucket「プロジェクト設定」による権限の自動化
個別のリポジトリに権限を割り当てるのは、大規模チームでは地獄の道です。「プロジェクト(Project)」単位の権限継承を強制してください。
- 戦略: 「個人」ではなく「Bitbucketグループ」で権限を管理する。
- 実装: プロジェクト設定の「Access Management」で、`Developers` や `QA_Team` といったグループを作り、そのグループにプロジェクト全体への読み取り・書き込み権限を付与します。
- メリット: 新規メンバーを追加する際、個別のリポジトリを触る必要はありません。グループにそのメンバーを加えるだけで、必要なすべてのリポジトリへのアクセスが即座に同期されます。
—
4. 「アーカイブ機能」という魔法の杖
どうしても消せないが、邪魔なリポジトリ。これらは「削除」ではなく「アーカイブ(Archive)」しましょう。
- アーカイブの効果:
- 読み取り専用になり、誤ったプッシュを防ぐ。
- メインの検索結果から除外される。
- CI/CDパイプラインは停止し、コストを削減できる。
Bitbucketのプロジェクト設定内から、対象のリポジトリの「Settings」→「Archive」ボタンをポチッと押すだけ。いつでも復元できる安心感を持ちつつ、視界から消せるのは非常に強力です。
—
5. 今日からできる「棚卸し」の3ステップ
もしあなたが今日、チームのリーダーなら、以下のステップを試してください。
1. プロジェクトの再編: 関連するリポジトリを適切なプロジェクトに移動させる(プロジェクトは「チーム」や「プロダクト」の単位で切るのが鉄則です)。
2. アーカイブの実施: 半年以上動いていないリポジトリをすべてアーカイブする。
3. 権限の「グループ化」: 全リポジトリのアクセス権を「グループ単位」に書き換える。
—
最後に:整理は「自動化」の前提条件
CI/CDパイプラインを最適化しようとしても、対象となるリポジトリがゴミの山では意味がありません。「整理されている場所には、秩序ある自動化が宿る」のです。
最初は面倒に感じるかもしれませんが、一度この構造を作ってしまえば、開発チームの生産性は劇的に向上します。不要なノイズが消え、本当に向き合うべきコードだけに集中できる環境を、あなたの手で作り上げてください。
何か具体的なAPIの活用法や、権限設計の悩みがあれば、いつでも聞いてくださいね。応援しています!