📦

個人リポ爆発を一人オーガニゼーションで受け止める話

に公開

TL;DR

  • 個人アカウントは「爆発していてもいい実験場」と割り切る
  • Org を「育てたいリポジトリの置き場」にする
  • ちゃんと棚卸しするのが理想だが、まずは「今すぐ使いたいもの」を動かすところから始めた
  • Org 側に必要なリポジトリを作り、中身を少しずつ移していく
  • .github-private/profile/README.md に「この Org に何があるか」の雑な地図を書く
  • Transfer / Org ピン / エージェントモードなど、AI に教わった機能の実験ログは別記事にまとめている

ある日、GitHubトップを開いて固まる

ある日なんとなく GitHub の自分のトップページを開いたら、見事にこうなっていました。
※実物はまずいんで「適当な感じのリポジトリ名を書いて」とお願いしたところ、いい感じ感が出たのでそのまま採用しています。

  • test
  • aaa
  • hoge
  • 2023-old-tmp
  • zenn-memo-最終版2

…みたいな、「その瞬間の気分で付けた名前」がずらっと並んでいる状態です。

どれも「その時は意味があった」はずなのに、時間が経つとラベルのはがれた段ボール箱の山にしか見えません。

削除すればいいのは分かっているけれど、

  • たまに過去のメモが役立ったりする
  • issue に当時の試行錯誤が残っていたりする

ので、簡単には消せない。
結果として、個人リポジトリはきれいに爆発しました。

もう一個アカウントを作りたくなりましたが、GitHub 的には基本「一人一アカウント」です。

そこで候補に上がったのが、いわゆる一人オーガニゼーションでした。


GitHubの「Org」をどう使うつもりか

GitHub にはおおざっぱに言うと二種類の「主体」がいます。

  • ユーザーアカウント
    自分の個人アカウント。https://github.com/ユーザー名 のアレ。

  • GitHub Organization(以下、Org)
    複数人で使うことを想定した「共有アカウント」。https://github.com/組織名

この記事で扱うのは、この Org をあえて一人で使うパターンです。

  • オーナーは自分ひとり
  • 人間メンバーはゼロ(入れるとしても Bot や AI ツール)
  • でも「個人アカウントとは別の表札」として扱う

という位置づけにします。

イメージとしてはこうです。

この図では、個人アカウント側を「実験やフォークで爆発していてもいいゾーン」、Org 側を「記事や運用など後から見返したいものを置く棚」として分けているイメージを表しています。


方針:全部きれいにするのはあきらめる

最初に決めたのは、全部をきれいにしようとしないことでした。

  • 個人アカウント側

    • その場限りの検証
    • よそのリポジトリからフォークしてきたもの
    • いつでも消せるもの
  • 一人Org側

    • 記事・スライド・教材
    • 長期運用するスクリプトや CI
    • AI に頻繁に読ませたいナレッジ

「爆発している個人アカウントを更地にする」のではなく、

爆発していてもいい場所と、なるべく整えておきたい場所を分ける

ところから始める、という発想です。


移行フローの全体像(理想形)

本当はきちんと棚卸しをしてから移行するのが筋だと思っています。きれいにやるなら、ざっくり次のような一周になります。

この図は、「個人リポジトリ爆発」からスタートして、一人Orgを作り、移行対象を選び、Org側に受け皿を作って中身を移し、最後に .github-private/profile/README.md で全体の地図を更新する、という一連の流れを表しています。

実際の私は、このうち「棚卸しをちゃんとやる」パートはサボっていて、まず Org を作って今すぐ使いたいリポジトリから順に移している、という状態です。


ステップ1:まずOrgだけ作って、細かい棚卸しは後回しにした

本当は、きちんと棚卸し表を作ってから移行するのが王道だと思います。

  • リポジトリ名
  • 現行 URL
  • 中身のざっくり説明
  • 状態(放置 / 活動中 / アーカイブ候補)
  • 移行方針(Org に移す / 個人のまま / 消す)

こういう一覧を作って、「移す/残す/消す」を決めていくやり方です。

が、正直に言うと面倒でまだやっていません。

実際にやったのは、もっと雑です。

  • Org をひとつ作る(例: example-org
  • 説明に「個人リポジトリから、長期運用したいものを集約する場所」とだけ書く
  • 「今すぐ使いたい/今も動いている」リポジトリから優先して、Org 側の置き場所を作る

つまり、

  • きれいな棚卸し → Org作成 → 計画的な移行

ではなく、

  • まず Org だけ用意して、「ここに置いたほうが楽になるもの」から順に持ってくる

という順番で始めています。

棚卸し表のほうは、「いつかちゃんとやるならこうする」という未来メモとしてだけ頭の片隅に置いてあります。


ステップ2:一人オーガニゼーションを作る

具体的な作業としては、まず一人用の Org を作りました。この記事では例として example-org という名前にしておきます。

  • 個人アカウントとは少し雰囲気の違うアイコンと説明文をつける
  • 説明欄に「個人リポジトリから、長期運用したいものを集約する場所」と書いておく
  • 人間メンバーは追加せず、オーナーは自分だけにしておく

やっていることは、別の表札を一枚用意するくらいの感覚です。


ステップ3:今すぐ使いたいリポジトリから移行対象にする

棚卸し表は作っていないので、実際の判断軸はかなり素朴です。

  • 最近よく開いている
  • これからも記事や研修などで使いそう
  • AI に読ませる前提で整えておきたい

こういうリポジトリから順番に、「Org 側に置いたほうが楽そうだな」と感じたものを選んでいきました。

完全に主観ベースですが、

  • とりあえず今すぐ動かしたいもの
  • しばらく個人アカウントで寝かせておいても困らないもの

を分けていくだけでも、目の前の山の輪郭がだいぶ変わります。


ステップ4:Org側にリポジトリを作り、必要なものだけ移す

移し方はいくつかありますが、この段階ではシンプルに、

  • Org 側に新しいリポジトリを作る
  • 個人リポジトリから必要なフォルダやファイルだけコピーして push する

という方法を採用しました。

  • 雑に育ってしまった履歴は、このタイミングで一度リセットできる
  • README も「いまの自分」が分かるように書き直せる

という意味で、割り切ってやっています。

個人側から Org に所有者ごと移動する Transfer repository という機能もありますが、それを実際に試してみた話は別の記事でまとめています。


ステップ5:.github-private に「地図」を書く

Org の中にリポジトリが増えてきたら、その Org 自体の「説明書」が欲しくなります。

そこで、Org に .github-private リポジトリを作り、profile/README.md に雑な一覧を書いておくことにしました。

中身はこのくらい雑でいい、という方針です。

---
# [記事リポジトリ](URL)
記事やスライド、原稿の管理用リポジトリ。

# [運用リポジトリ](URL)
AI エージェントや CI、運用スクリプトなどの基盤系リポジトリ。

# [ナレッジリポジトリ](URL)
案件で使うナレッジを AI 向けに整理しているリポジトリ。

# [Transfer 検証用リポジトリ](URL)
Transfer 機能の挙動確認に使ったテストリポジトリ。
---

このREADMEは、自分が後で見返したときの目次になってくれますし、AI に読ませることで「この Org はだいたいこういう構造です」と共有するための地図にもなります。


ステップ6:一人Org視点のチェックリストで軽く見直す

「とりあえず動かした」あとで、次のような観点で軽く見直しました。

  • Org の説明文に「何を置く場所なのか」が一行で書かれている
  • 「記事」「運用」「ナレッジ」など、役割ごとのリポジトリがある程度整理できている
  • 「今すぐ使うもの」がだいたい Org 側に寄ってきている
  • .github-private/profile/README.md に、主要リポジトリへのリンクがまとまっている
  • よく使う AI / Bot に読ませたいリポジトリが、Org側に集まり始めている

完璧を目指しているわけではなく、

「少なくとも、昨日よりはマシな状態になっている」

くらいを確認するためのチェックです。


やってみての所感

「さすがにそろそろ何とかしないとな…」とは思いつつ、今まで放置してきていたわけですがそろそろ年末のことで、大掃除しようという気持ちから始めたものです。

やってみて良かったのは、

  • 個人リポジトリのカオスを「全部片付ける」のではなく、「見える範囲を狭める」に変えられたこと
  • Org を、自分と AI のための「共同作業スペース」として扱える感覚が出てきたこと
  • .github-private/profile/README.md という、ちょっとした地図を書く場所を確保できたこと

あたりでした。

Transfer や Org ピン、エージェントモードなど、AI に教わった機能を実際に触ってみたログは、別の記事として切り出しています。

この記事はあくまで、

爆発した個人リポジトリを、どうやって一人オーガニゼーション側に逃がしていくか

という設計メモとして残しておくことにしました。

Discussion