Bot

🛠️開発記録#213(2025/5/7)「コードは秘匿、開発は加速── Private GitHub 運用ガイド」

想定読者

  • 個人/少人数で仮想通貨Botを開発し、ソースは絶対に公開したくない方
  • それでも テスト自動化・デプロイ高速化 は捨てたくないエンジニア

1. はじめに ―― そもそも何がモヤモヤするの?

  1. 問題はココ
    「GitHub って“オープンソースの人たち”が使う場所でしょ?」
    「秘密のボットコードを置いたら流出しそう…」
  2. ほんとうに解決したいこと
    • コードを外に漏らさず
    • ミスったら元に戻せて
    • 自動テストや自動デプロイもタダで回したい
    • ついでに PC が壊れても 30 秒で復旧できたら最高
  3. そこで発想をひとつ転換
    「GitHub を 非公開専用ツール としてフル活用する」
    こう割り切ると ◎
    • GitHub が勝手に冗長化 → バックアップを自分で意識しなくていい
    • 変更履歴&監査ログ → いつ/どこを触ったか丸わかり
    • GitHub Actions → “push したらテスト/Slack 通知” を無料で自動化
  4. この記事の進み方(ざっくり地図)
    1. メリット編 「何が便利になるの?」
    2. リスク編  「とはいえ、どこが危ない?」
    3. 実装チェックリスト 今日から出来る “具体的な設定&コマンド”
    4. 用語ミニ辞典 CI?PR?なにそれ?を 1 行でサクッと

先に“全体像”をつかんで、興味のある所だけ真似すれば OK。
「コードを隠しつつ開発スピードは落とさない」──そのコツを順番に見ていきましょう。


2. Private GitHub がくれる 7 つの武器―― 超ざっくり解説

#武器これが起きるとラク!
1完全な履歴「あれ…いつからスプレッドがおかしい?」→ git bisect コマンドで 10 分あれば犯人コミットを突き止め、git revert で即ロールバック。
2ワンクリック冗長化ノート PC が煙を吐いても git clone → 30 秒 で作業復活。クラウド側がバックアップしてくれる。
3無料 CI/CDgit push したら自動で
pytest 実行 → ② Docker イメージ作成 → ③ Slack に緑/赤ランプ通知
― Private Repo でも月 2,000 分(約33 時間)までは無料<br>※macOS ランナーは 500 分。超えたら従量課金だが、個人 Bot 開発ならまず収まり切る。
4Secrets ストアAPI キーを .env にベタ書きして冷や汗…を防止。
secrets.BYBIT_KEY と書くだけで AES-256 で暗号化保管 → ワークフロー実行時にだけ展開
👉 フォーク PR には自動で渡らない仕組みなので、外部コントリビューションの OSS と使い分けも安心。
5操作履歴(Audit Log)誰(自分でも)が、いつ、どの PC から、どんな push をしたかを ブラウザで時系列表示。誤 force-push や PAT 盗難をすぐ発見。
6タスク & セルフレビューIssue で「やること」をポチッと立て、ブランチを切って “自分 PR → 自分マージ” を習慣化。1 クリック増えるだけでミス激減。
7Copilot / CodeSearchAI 補完で for 文が 3 倍速。個人利用は無料(2025/5 時点)だが月 200 コミットが上限
Pro 契約(月額)なら無制限+商用ライセンスもクリア。過去スニペット検索も一瞬。

ポイント: 1〜3 だけ導入しても 開発スピードが体感で倍になります。
4〜7 は“慣れてきたら”順番にオンにしていけば OK。


3. “意地悪な”反論と超具体 現実解

ツッコミ起こり得る影響現実解:やること/コマンド
「GitHub が落ちたら終わり」サーバーダウン・アカBAN → コードも CI も停止週1ミラーを自動化
① バックアップ先を登録(1回だけ)
git remote add backup git@gitlab.com:USER/REPO.git
② cron で毎週日曜 03:00 に完全同期
0 3 * * 0 cd /path/to/repo && \
git push backup --mirror --force
「CI/CD はミスの自動デプロイ装置」テスト抜け → 致命バグを秒速デプロイセルフ PR + Status Check 強制
1. GitHub GUI 設定
Settings → Branches → main
Require pull request reviews before merging
Require status checks to pass
2. セルフ PR 開発フロー
git checkout -b fix/typo
…ファイルを修正して保存…
git commit -m "fix: typo"
git push -u origin fix/typo
GitHub で PR を作成し、「LGTM」コメントを 1 行入れて自分で Approve
3. Tests が緑でないと Merge ボタンが押せない仕組み完成
「Secrets も YAML 改ざんで漏れる」悪意ワークフローが echo $SECRET → ログ漏洩「Secrets も YAML 改ざんで漏れる」
── Secrets 漏洩を防ぐ“2重ガード” ──
1) レビュー必須
PR を経由し YAML の diff を毎回目視チェックする
2) Self-hosted Runner を最小権限で登録 (必要な人だけ)
./config.sh --url https://github.com/USER/REPO \
--token PAT_WITH_repo:read,actions:write \
--labels self-hosted
※ PAT に secrets:read は付けない = ワークフロー内から外部送信不可
3) 裏側情報メモ
- GitHub Secrets は AES-256 で暗号化保存
- フォーク PR には自動で渡らない
- ログに echo $SECRET しない限り閲覧不可
「内部犯がコピー公開したら?」コード流出 ➜ アルファ崩壊契約+監査ログで抑止
1. GitHub Audit log を有効にしておく(Settings › Audit log)
2. コントリビューターと NDA を結ぶ
3. README に「ログ記録中。無断公開は法的措置」と 1 行入れる
「学習コストが高すぎ」YAML 地獄で心折れ → 放置テンプレをコピペして動かす → 動いたら理解
─ “とりあえず CI を動かす” 3 ステップ ─
1) テンプレ yml をダウンロード
curl -O https://gist.githubusercontent.com/…/ci.yml -o .github/workflows/ci.yml
2) Git に登録
git add .github/workflows/ci.yml
git commit -m "bootstrap CI"
3) push して Actions タブが緑になるか確認
git push origin main
→ GitHub → Actions → latest run が ✔︎ なら OK

4. 今すぐ入れたい“安全×高速”チェックリスト

🔒 安全×高速チェックリスト(個人開発者用・具体アクション付き)

優先やること具体アクション(クリックルート or コマンド)
★★★ブランチ保護 + PR必須1. Settings → Branches → Add rule
2. Branch name = main
3. チェックをON:
  • Require pull request reviews before merging
  • Require status checks to pass
4. セルフPR運用でOK:
  git checkout -b work/xxx → 変更 → PR → 自分で Approve & Merge
★★★Secrets スキャン CIgitleaks/gitleaks-action@v2 を追加:
yaml<br>- name: Secrets Scan<br uses: gitleaks/gitleaks-action@v2<br>
Push 時に API キー混入を自動検知
★★☆CI ランナー選択コスト優先なら Hosted Runner だけでOK(無料枠)
VPSを使う場合は:
bash<br>./config.sh --url <repo-url> \\\n --token <PAT> \\\n --labels self-hosted --ephemeral\n
PAT 権限は repo:read, actions:write のみに絞る
★★☆Dependabot セキュリティ PR(手動マージ)1. .github/dependabot.yml を追加:
yaml<br>version: 2\nupdates:\n - package-ecosystem: "pip"\n directory: "/"\n schedule:\n interval: "weekly"\n open-pull-requests-limit: 2\n
2. PR は 必ず自分でレビューしてマージ
★☆☆週1(or 月1)ミラー初回:
git remote add backup git@gitlab.com:user/repo.git
手動 or cron:
git push backup --mirror
★☆☆誤公開→即 Private 手順メモREADME の最上部に以下を貼る:
緊急時: Settings → General → Change visibility → Make private → I understand
1クリックで再非公開化

★★★=必ず実装 / ★★☆=強く推奨 / ★☆☆=余裕ができたら
セルフPR+Hosted Runnerだけでも“最小ガード”は成立します。


5. GitHub が死んだ時の“逃げ場”マップ

逃げ場マップ(クラウド依存が切れたら?)
目的 オンライン代替 備考
Git + CI GitLab.com / Bitbucket Cloud UI・YAMLの書き換えが必須
バックアップ GitHub → GitLab ミラー Settings › Mirroring 自動
目的 オフライン代替 メモ
Git + CI Gitea + Drone CI (自VPS) VPS 1台でも可
バックアップ 裸Gitを
rsync -av --delete でNAS保存
clone → fetch --all --prune を cron
最終手段 Zipアーカイブ暗号化 → aws s3 sync CIは一旦あきらめる

6. 用語ミニ辞典(60秒で把握)

用語説明
git cloneリポジトリを丸ごとローカルにコピー
CI/CDテスト自動実行と自動デプロイの連続パイプ
GitHub ActionsGitHub内で動くCIランナー
PR (Pull Request)変更差分のレビュー枠
Issue / Projectsタスク可視化&カンバン
Copilot / CodeSearchAI補完と全文検索
サプライチェーン攻撃依存ライブラリ汚染経由の侵入
Private Repo非公開GitHubリポジトリ
repo convert to private公開→Privateへ即時切替
GitHub Secrets暗号化環境変数ストア
truffleHog / gitleaksキー漏洩スキャナ
Dependabot セキュリティPR脆弱ライブラリ自動更新PR
ActionsランナーActionsを実行するマシン (GitHub or Self-host)
ガバナンス必須権限管理・監査 “決めておく文化”

7. おわりに

速さこそ優位、でもコードは最大の資産」。
GitHubをフルに使えば “秒速ロールバック・秒速デプロイ” を手にできる。
しかし ガバナンスと冗長化 を忘れると、
“秒速で漏洩・秒速で全損” の地雷原も広がる。

チェックリストを丸ごと導入→テンプレに落とし込む
これだけで “クローズド DevOps” が回り始め、
仮想通貨市場の激変でも 最速・最小リスク で追従できるはずです。

👇ラジオで話したこと


こんにちは、Yodaka です。
きょうは 「コードは秘匿、開発は加速──Private GitHub 運用ガイド」
“ソースは墓場まで持って行きたい、でも CI/CD は全力で回したい”
そんな個人ボッターさんに向け、完全非公開 GitHub の始め方
超・基礎から解説します。


◆ざっくり結論だけ先取り

  1. GitHub は“公開する場”だけじゃない。
    Private リポは無料枠でも
    Linux ランナー 2 000 分/月=約 33 h Actions がタダ。GitHub Docs
  2. 秘密鍵は GitHub Secrets に AES-256 で暗号保管できる。GitHub Docs
  3. ブランチ保護 + Self PR をオンにするだけで
    “テスト落ちバグの秒速デプロイ”を防げる。GitHub Docs

この3つを押さえれば “クローズド DevOps” が今日から回ります。

0. 用語ミニ辞典

用語読み1行説明
CI/CDシーアイ/シーディーテスト&デプロイ自動パイプ
PRピーアールPull Request、差分レビュー枠
Secrets Storeシークレット ストア暗号化された環境変数庫
gitleaksギットリークスキー混入スキャナ
Branch Protectionブランチ保護main 直 push 禁止ルール

1. そもそも何がモヤモヤ?

  • 「GitHub = OSS の人向け」→ 誤解
    Private Repo は誰にも見えません。
  • 怖いのは流出より “手元クラッシュ × バックアップ無し”
    ノートPCが煙を吐いても git clone 30 秒で復旧。Massachusetts Institute of Technology
  • 使わない理由が“もったいない”だけになったら、
    “非公開専用ツール”として割り切る が正解。


2. Private GitHub がくれる 7 つの武器

#武器ラクになる瞬間
1完全履歴git bisectで「どのコミットでスプレッド壊れた?」を10分で特定。Git
2クラウド冗長化PC 全損→git cloneで30秒復活。
3無料 CI/CDgit push→pytest→Docker→Slack。月2 000分まではタダ。GitHub Docs
4Secrets ストアsecrets.BYBIT_KEY が AES-256 で暗号化。fork PR には渡らない。GitHub Docs
5Audit Log“誰がいつ強制 push?”をブラウザで確認。GitHub Docs
6タスク & Self PRIssue立て→ブランチ→自分 PR→Approve でミス激減。
7Copilot / CodeSearchAI 補完で for 文が 3 倍速(個人は月 200 コミット無料)。Massachusetts Institute of Technology

ポイントは 1〜3 だけ 先に回す。
4 以降は慣れてから小出しで OK です。


3. “意地悪な”反論と現実解

3-1 GitHub が落ちたら?

  • 週1 自動ミラーを GitLab へ:
git remote add backup git@gitlab.com:user/repo.git
0 3 * * 0 git push backup --mirror

GitHub Docs

3-2 CI はバグを秒速デプロイ?

  • ブランチ保護 → Self PR → StatusCheck 必須
    テストが赤なら Merge ボタンが灰色で押せません。GitHub Docs

3-3 Secrets が YAML 改ざんで漏れる?

  • PR レビュー必須+
    Self-hosted Runner には secrets:read 権限を外すGitHub Docs

3-4 学習コスト高すぎ?

  • テンプレ .yml をコピペ → 動いたら理解 の順で。
    成功体験が先、意味づけはあと。

4. 今すぐ入れる“安全×高速”設定

優先ToDoワンポイント
★★★ブランチ保護 + PR必須GUI3クリックで完了。
★★★gitleaks Secrets スキャンAction 1 行追加でキー混入を検知。GitHub
★★☆Dependabot セキュPR毎週ライブラリ脆弱性を自動 PR。GitHub Docs
★★☆自ランナー(任意)長時間ジョブを無料で。
★☆☆週1 GitLab ミラークラウド障害対策。


というわけで、“非公開で攻める GitHub” の要点をぎゅっとお届けしました。
まとめると──

  • 履歴・冗長化・無料 CI は今すぐオン。
  • ガバナンスとミラー を忘れない。
    これで「コードは秘匿、開発は加速」が両立します。

次回は Actions 10 行で pytest→Docker→Slack を流す方法などについてもお伝えしていく予定です。
それでは、良き開発と強い構築を!よだかでした!


引用に使用した主な公開情報:GitHub 公式 Docs(Actions 無料枠・Secrets・Audit Log・Branch Protection)、Loguru ガイド、gitleaks README、Unix tail 解説等 GitHub Docs/GitHub Docs/GitHub Docs/Unix & Linux Stack Exchange/Better Stack/GitHub/GitHub Docs/Git/Massachusetts Institute of Technology/GitHub Docs

おまけ:用語解説

セキュリティ用語

キー混入スキャナ

コードにうっかり貼り付けた API キーやパスワードを機械的に検出 する CLI。代表例は gitleakstruffleHog。Git History も ZIP もスキャン可で、GitHub Actions に 1 行で組み込める。GitHubMedium

Secrets ストア(=環境変数庫)

GitHub Settings → Secrets & variables に登録すると、値は AES-256 で暗号化 され、ワークフロー実行時だけ環境変数として展開。fork PR には自動で渡らない。GitHub Docs

secrets:read 権限

Self-hosted Runner 登録時に PAT へ付ける/外すスコープ。外せばランナー側から Secrets を読み出せず、流出経路が 1 段減るGitHub Docs


2. Git/レビュー系

差分レビュー枠(Pull Request)

変更前後の “diff を見せる箱”。ブランチを比較し、コメント・Approve を経て Merge ボタン が押せるようになる仕組み。GitHub Docs

git bisect――「どのコミットでスプレッド壊れた?」

バイナリ検索で バグを混入した犯人コミットを自動特定 する Git コマンド。good/bad を打つたびに対象範囲が半分になる。DEV Community

ブランチ保護 → Self PR → Status Check 必須

  1. Branch Protection Rule に “Require PR review / Require status checks” をオン → main 直 push 不可。
  2. 開発は自分 PR → 自分で Approve(Self PR)。
  3. CI が緑にならないと Merge ボタンがアクティブにならない。GitHub Docs

3. CI/CD・ランナー系

自動パイプ(CI/CD パイプライン)

コード → build → test → deployイベント駆動で自動 する一連の流れ。ヒューマンエラーを減らしリリースを均質化。The world's open source leader

GitHub Actions無料枠「月 2 000 分」

“分” は 実行時間の合計。Private Repo でも Linux ランナーなら 2 000 分/月が無料。超過すると従量課金。GitHub Docs

Self-hosted Runner

自分の VPS/PC を Actions ランナーに登録する仕組み。分課金ゼロ、GPU も使えるがメンテは自己責任。Codefresh

Actions 10 行

最小サンプル:name, on, jobs, runs-on, steps, usesrun 等を合わせ 10 行前後 で“pytest→Docker→Slack”程度のワークフローは書ける。Codefresh


4. 依存・アップデート系

Dependabot セキュPR

脆弱ライブラリを検知して 自動でバージョンアップ PR を投げる GitHub 標準ボット。手動マージなら意図せぬアップが起きない。GitHub Docs


5. GitHub 補助サービス

Copilot / CodeSearch

  • Copilot: AI 補完。個人 Free プランは月 200 コミットまで無償。Pro に入ると無制限。GitHub Docs
  • CodeSearch: “昔書いた utils.parse_spread() どこ?”をミリ秒で検索できる全文インデックス。

for 文が 3 倍速 ─ Copilot が次の行・変数名・ドキュメント文字列を予測入力してくれる体験的速度感の比喩。


6. 外部サービスとの比較

GitLab

GitHub と同じ Git リポ+CI を提供。Private Repo も無料、Built-in ミラーリング で GitHub → GitLab 片方向同期が GUIで設定可。GitLab Forum


7. ワークフロー保護ワザ

キーワード要点
YAML 改ざん悪意ある PR が echo $SECRET を書くと漏えい。→ PR レビュー必須 で YAML diff を目視。
GUI 3クリックBranch 保護設定は Settings › Branches › Add rule → チェック2つオン → Save で完了。
Action 1 行追加- name: Secrets Scan\n uses: gitleaks/gitleaks-action@v2 を workflows に足すだけでキー検知 CI が動く。

8. 自ランナー vs Hosted ランナー

項目Hosted (GitHub)Self-hosted
料金月2 000 分無料0円(自前電気代)
スペック固定 (2 CPU/7 GB)自由(GPU可)
Secrets アクセスありPAT権限次第
管理GitHub側自力アップデート

9. まとめ

「守り」を自動化すると「攻め」に 100 %時間が割ける。
Private GitHub の無料枠と最小ガードを組み合わせれば、ソースを一切漏らさずに テスト→デプロイ→ロールバック まで“1 push”で回せます。これが個人ボッター最速の安全装置です。

-Bot