こんにちは!日々の開発やインフラ管理、お疲れ様です。
「あそこのリポジトリ、今のディスク使用量どうなっているっけ?」「全プロジェクトの最新コミット状況をまとめてレポート出してよ」……そんな面倒な頼み事を受けて、ブラウザをポチポチクリックして回った経験はありませんか?
エンジニアたるもの、手作業での情報収集なんてスマートじゃありませんよね。
今回は、GitLabの心臓部である「GitLab API」を叩いて、リポジトリ情報を自動で取得・管理する裏技を伝授します。これさえマスターすれば、毎日の作業が劇的に楽になりますし、「おっ、こいつデキるな」と周りを唸らせることができますよ。
初心者の方でも迷わないよう、準備のステップから「おっ!」と驚くような実用スクリプトまで、優しく丁寧に解説していきますね。
—
1. GitLab APIってそもそも何? なぜ使うの?
GitLab APIは、ブラウザでポチポチ操作しているGitLabの機能を、「プログラムから命令して代行させるための窓口」です。
例えば、以下のようなことが一瞬でできるようになります。
- 組織内にある数百個のリポジトリ情報を一括で取得する
- 毎晩自動で全リポジトリのバックアップ(アーカイブ)を取る
- メンバーの権限を一括チェックしてセキュリティレポートを自動生成する
ブラウザの画面を何時間も眺める必要はもうありません。APIに「これちょうだい!」とお願いすれば、一瞬でデータを返してくれるのです。
—
2. 魔法の鍵を手に入れよう:Personal Access Tokenの発行
APIを叩くには、「私は正当な権限を持つユーザーです」と証明するパスポートが必要です。これがPersonal Access Token(個人アクセストークン)と呼ばれる文字列です。
さっそく発行してみましょう。
1. GitLabの画面右上にある自分のアイコンをクリックし、「Preferences(設定)」を開きます。
2. 左側メニューの「Access Tokens(アクセストークン)」をクリックします。
3. トークンの名前(例:`api-automation-script`)を入力し、有効期限を設定します。
4. Scopes(権限スコープ)で、少なくとも `api` (API全体の読み書き権限)にチェックを入れます。
5. 「Create personal access token」のボタンを押します。
> ⚠️ 超重要(先輩からの教え):
> 画面に表示された長い文字列(これがトークンです)は、この瞬間しか二度と表示されません。 必ずメモ帳などにコピーして安全に保管してください。万が一紛失したら、新しく作り直せばOKです。
—
3. まずは基本!curlコマンドで「Hello World」
準備ができたら、まずは自分の端末(ターミナル)から、APIを直接叩いてみましょう。GitLabのAPIを叩く「HelloWorld」です。
以下のコマンドをターミナルに貼り付けてみてください(`YOUR_TOKEN` と `your-gitlab.com` はご自身の環境に書き換えてくださいね)。
curl –header “PRIVATE-TOKEN: YOUR_TOKEN” “https://gitlab.com/api/v4/user”
【実行結果のイメージ】
{
“id”: 12345,
“username”: “your_name”,
“name”: “Your Full Name”,
“state”: “active”,
“avatar_url”: “https://…”,
…
}
おめでとうございます!あなたのGitLabアカウントのプロフィール情報がJSON形式で返ってきましたね。これがGitLab APIとの最初の握手です。
—
4. 本番:Pythonでプロジェクト情報を自動取得する
「curlコマンドだけだと、ちょっと味気ないな」と思いましたか?
ここからが本番です。Pythonを使って、自分のアクセスできる全プロジェクトの名前とURLを優雅にリストアップしてみましょう。
Pythonには標準ライブラリの `urllib` や `json` がありますが、今回はより直感的に書ける `requests` ライブラリを使います(もし入っていなければ `pip install requests` でインストールしておいてください)。
プロジェクト一覧取得スクリプト
import requests
設定情報
GITLAB_URL = “https://gitlab.com” # セルフホストの場合は社内URLに変更
TOKEN = “YOUR_TOKEN” # 先ほど発行したPersonal Access Token
APIのエンドポイント(プロジェクト一覧を取得)
url = f”{GITLAB_URL}/api/v4/projects”
認証ヘッダーにトークンを仕込む
headers = {
“PRIVATE-TOKEN”: TOKEN
}
取得するパラメータ(自分が見られるものを所有者順に100件まで)
params = {
“per_page”: 100,
“membership”: “true” # 自分所属しているプロジェクトに限定
}
try:
# APIへGETリクエストを送信
response = requests.get(url, headers=headers, params=params)
# ステータスコードが 200 (OK) 以外の場合は例外を発生させる
response.raise_for_status()
# JSONデータをパース(Pythonの辞書・リスト型に変換)
projects = response.json()
print(f”— 取得成功!合計 {len(projects)} 件のプロジェクトが見つかりました —“)
for project in projects:
print(f”📌 Project Name: {project[‘name’]}”)
print(f” URL: {project[‘web_url’]}”)
print(“-” 40)
except requests.exceptions.RequestException as e:
print(f”エラーが発生しました: {e}”)
このスクリプトを実行すると、あなたがアクセスできるプロジェクトの数々がターミナルに美しく出力されます。ワクワクしませんか?
—
5. 現場で使える応用アイデア:全リポジトリの一括バックアップ
さて、基礎ができると、一気に「現場で使える自動化」が見えてきます。
最後に、応用アイデアとして「全プロジェクトのソースコード(アーカイブ)を自動でローカルにバックアップするスクリプト」の概念をご紹介します。
GitLab APIには、各プロジェクトのソースコードを `.tar.gz` などの圧縮ファイルとしてダウンロードするエンドポイントが用意されています。
擬似コード的なイメージ
for project in projects:
project_id = project[‘id’]
project_name = project[‘path’]
# バックアップ用エンドポイントを叩く
archive_url = f”{GITLAB_URL}/api/v4/projects/{project_id}/repository/archive”
# ストリーミングでファイルをごそっとダウンロードしてローカルに保存
# 実際にはここにファイル書き込みの処理を追加します
print(f”Backing up: {project_name} … Done!”)
これを、社内サーバーのCron(定期実行タスク)や、GitLab CI/CD自体のパイプラインに組み込んでおけば、「気づいたらバックアップが毎日自動で完了している最強の環境」の出来上がりです。面倒な手動バックアップ作業から完全に解放されます。
—
まとめ:自動化の第一歩を踏み出そう
今回は、GitLab APIの基本から、Tokenの発行、Pythonを使った実用的なデータ取得までを駆け足でご紹介しました。
- Personal Access TokenでAPIの通行証を手に入れる
- `curl`でまずは軽くAPIのレスポンスを体感する
- Pythonなどの言語を組み合わせて、定型作業を自動化・効率化する
これをマスターすれば、日々の面倒なリポジトリ管理作業が一瞬で終わり、よりクリエイティブな開発に集中できるようになります。
「これを応用して、次はこんなレポートを出したいな」と思った瞬間から、あなたのエンジニアとしてのスキルは一段階上のステージに上がっています。
ぜひ、今日の業務からAPIの魔法を取り入れてみてくださいね!