GitHub Appでコードのタイムスタンプを自動化する
コードに手動でタイムスタンプを付けたことがある人なら、その手順をご存じでしょう。ハッシュを生成し、安全な場所にコピーし、レシートを保管し、意味のあるコミットごとにこれを繰り返す。反復的で忘れやすく、いざという時に脆い仕組みです。GitHub Appによる自動コードタイムスタンプは、その手動の負担をすべて取り除きます。
Timestamp GITはマネージドGitHub Appで、監視対象リポジトリのすべてのコミットハッシュをBitcoinブロックチェーンに自動的にアンカーします。実行するCLIツールも、手動で保管するレシートも、覚えておくべき夜間バッチジョブもありません。一度アプリをインストールすれば、コミットの検出、暗号学的アンカー、証明書の配信をシステムがバックグラウンドで処理します。
この記事では、一度きりのセットアップ、自動化された夜間パイプライン、監視と障害処理、そして永続的な先行技術の証跡を構築するためのベストプラクティスを解説します。
一度きりのセットアップ:GitHub Appのインストール
セットアッププロセス全体はGitHubのインターフェース上で完結します。
- Timestamp GIT GitHub AppをGitHub Marketplaceからインストールします。
- 監視したいリポジトリを選択します。パブリックリポジトリは無料のOpen Sourceプランでサポートされ、プライベートリポジトリはPro AgencyおよびEnterprise ZKプランで利用できます。
- 必要な権限を付与します。
必要な権限はデプロイメントモードによって異なります。
- Standard Mode:アプリはソースリポジトリへの読み取り専用アクセスが必要です。GitHubには「コミットハッシュのみ」という権限がないため、アプリがHEADコミットハッシュを確認するには読み取りアクセスが必要です。また、証明書を保存するターゲットリポジトリへの読み書きアクセスも必要です。
- Enterprise ZK Mode:アプリはソースリポジトリへの読み取りアクセスを一切必要としません。あなたのインフラ上のGitHub ActionがコミットハッシュのみをTimestamp GIT APIにプッシュします。付与するのはターゲットの証明書リポジトリへの読み書きアクセスだけです。
インストールするCLIツールも、保守する設定ファイルもありません。インストール後、アプリはすぐに使用可能です。
エアギャップ環境や完全にセルフホストされた環境向けに、Timestamp GITはDockerイメージとしても提供されています。オンプレミスでの制御が必要な場合は、Dockerによるセルフホストタイムスタンプの専用記事を参照してください。ほとんどのチームにとって、ホスト型GitHub Appが最速の方法です。
自動化パイプライン:コミットからBitcoinアンカーまで
Timestamp GITの中核は、開発者による日々の入力を一切必要としない夜間自動化パイプラインです。
各コミット後に起こること
-
コミット検出
Standard Modeでは、監視対象リポジトリに新しいコミットをプッシュするたびに、GitHub AppがWebhookを受信します。Enterprise ZK Modeでは、あなたのGitHub ActionがコミットハッシュをAPIにプッシュします。 -
ハッシュキュー
コミットハッシュはインメモリのキーバリューストアに保存され、バッチ処理を待ちます。 -
深夜のcronワーカー
毎晩、ワーカーが保留中のすべてのハッシュをグループ化し、リポジトリごとにマニフェストファイルを作成し、Merkleツリーをネイティブに構築し、OpenTimestamps証明書を作成します。日次バッチのMerkleルートはBitcoinブロックチェーンにアンカーされます。 -
証明書の配信
マニフェストと.otsレシートファイルは、専用のtimestampsブランチまたはシャドウリポジトリにプッシュバックされます。Bitcoinの承認には通常約3時間かかるため、証明書ファイルは夜間アンカーの数時間後に表示されます。
このプロセスはアーキテクチャ上ゼロ知識です。Timestamp GITが見るのはコミットハッシュ(一方向のフィンガープリント)のみで、ソースコードを見ることは決してありません。Standard Modeでは、アプリはHEADコミットハッシュのみを読み取ります。Enterprise ZK Modeでは、コミットハッシュはあなた自身のGitHub Actionランナーから送信されるため、ソースコードがあなたの環境から出ることはありません。
GitHub ActionによるEnterprise ZKモード
厳格なソース分離が必要な場合、Enterprise ZKモードがより強力な選択肢です。短いGitHub Actionがあなたのインフラ上で実行され、コミットハッシュのみをTimestamp GIT APIにプッシュします。
典型的なワークフローは次のようになります。
name: Push commit hash to Timestamp GIT
on:
push:
branches:
- main
jobs:
timestamp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Send commit hash
run: |
curl -X POST "${{ secrets.TIMESTAMPGIT_SIGNED_URL }}" \
-H "Content-Type: application/json" \
-d "{\"commitId\":\"${{ github.sha }}\"}"
署名付きURLはEnterpriseセットアップウィザードから取得し、GitHubシークレットとして保存します。このアクションにはソースコードの検査ステップもファイルのアップロードもありません。
2つのデプロイメントモードの比較
| モード | ソースアクセス | 証明書の保存先 | 最適な用途 |
|---|---|---|---|
| Standard GitHub App | ソースリポジトリへの読み取り専用 | 専用ブランチまたはシャドウリポジトリ | 高速でゼロセットアップの自動化 |
| Enterprise ZK | ソースアクセスなし | あなたが管理するターゲットリポジトリ | 企業秘密、コンプライアンス、厳格なセキュリティ |
どちらのモードでも、基盤となるBitcoinアンカーは同一です。日次のMerkleルートがOpenTimestampsプロトコルを使用してBitcoinトランザクションに埋め込まれます。トランザクションがブロックで承認されると、Timestamp GITを含む誰にもタイムスタンプを変更することはできません。
監視と障害処理
自動化は、それがまだ動いていると信頼できる場合にのみ価値があります。Timestamp GITは複数の監視手段を提供します。
公開ステータスダッシュボード
各リポジトリには、以下を表示するステータスページがあります。
- 最古のアンカー日
- 日次アンカーの規則性
- Bitcoinブロックおよびトランザクションデータ
- スタンプされた日のカレンダーヒートマップ
- ダウンロード可能な監査CSVおよびPDF証明書
公開ステータスAPIを通じて、最後にアンカーされたBitcoinブロックを確認できます。
curl https://timestampgit.dev/api/statusLast/your-org/your-repo
レスポンスのサンプルは次のようになります。
{
"blockHeight": 862400,
"timestamp": "2026-09-25T00:37:00Z",
"status": "confirmed"
}
プライベートリポジトリの場合、ステータスURLには暗号化されたHMACが含まれており、許可されたユーザーのみがタイムスタンプステータスを表示できます。HMACはサーバーインスタンスに固有です。
失敗した場合の動作
夜間バッチはスケジュールで実行されるため、ジョブが失敗しても証明書の証跡が黙って失われることはありません。システムはアンカープロセスを自動的に再試行します。ステータスページで日次規則性のギャップを確認し、リポジトリが新しいコミットハッシュの送信を停止していないか調査できます。
コンプライアンスと記録保持のために、完全な監査台帳をCSVとして、特定の日付のPDF証明書をダウンロードできます。
GET /api/audit/{user}/{repo}— 完全な監査CSVGET /api/report/{user}/{repo}/{date}— 単一日のPDF証明書
独立した検証
誰でもTimestamp GITのダッシュボードを信頼せずにタイムスタンプを検証できます。検証ページでは、マルチレベルのMerkleチェーン検証をブラウザ内でローカルに実行します。パブリックリポジトリの場合、.otsレシートファイルは標準のOpenTimestamps検証ツールを使用してBitcoinブロックチェーンに対して検証することもできます。証明書はBitcoinに埋め込まれているため、Timestamp GITサービスが消滅しても検証可能です。
自動タイムスタンプのベストプラクティス
自動アンカーは、リポジトリのライフサイクルのデフォルトの一部になったときに最も効果的に機能します。
- 重要なリポジトリだけでなく、すべてのアクティブなリポジトリで有効にします。 広範な先行技術の証跡は、まばらなものよりも強力です。自動化により、すべてのコミットにスタンプする限界コストは低くなります。
- 独自技術や企業秘密のコードにはEnterprise ZKモードを使用します。 タイムスタンププロバイダーからのソースアクセスをゼロにしたい場合は、自分のGitHub Actionからコミットハッシュのみをプッシュします。
- 監査CSVを定期的にダウンロードし、別の場所に保存します。 GitHubの外部に冗長コピーを保持します。
.otsファイルはすでにリポジトリにありますが、追加のオフラインコピーは法的監査のための安価な保険になります。 - 検証バッジをREADMEに埋め込みます。 公開バッジは、コラボレーター、クライアント、競合他社に、あなたのコミット履歴がアンカーされているという明確なシグナルを送ります。公開検証ビューアとPDFレポートにリンクします。
- PDF証明書をクライアントに送信します。 エージェンシーやフリーランサーにとって、日次のPDF証明書は請求書やマイルストーン納品物に追加して、作業完了日を証明できます。
- エアギャップ環境ではDockerセルフホスティングを検討します。 ホスト型SaaSを使用できない場合、Dockerセルフホストライセンスにより、同じ自動化を自分のインフラ上で利用できます。
FAQ
GitHub Appによる自動コードタイムスタンプとは具体的に何ですか?
GitHub Appによる自動コードタイムスタンプとは、監視対象リポジトリに対して行うすべてのコミットが、手動の介入なしにBitcoinブロックチェーンに自動的に暗号学的にアンカーされることを意味します。アプリは新しいコミットを検出し、毎晩バッチ処理し、不変の証明書レシートを作成します。CLIツールや手動ステップは一切必要ありません。
Timestamp GITはソースコードが決して露出しないことをどのように保証しますか?
Timestamp GITはゼロ知識アーキテクチャを使用しています。Standard Modeでは、アプリはリポジトリからコミットハッシュ(一方向のフィンガープリント)のみを読み取ります。Enterprise ZK Modeでは、あなたのインフラ上のGitHub ActionがコミットハッシュのみをAPIにプッシュするため、アプリがソースコードにアクセスすることは一切ありません。
プライベートリポジトリでTimestamp GITを使用できますか?
はい。Timestamp GITはPro AgencyおよびEnterprise ZKプランでプライベートリポジトリをサポートしています。プライベートリポジトリの場合、ステータスバッジと検証URLには暗号化されたHMACが含まれており、許可されたユーザーのみがタイムスタンプステータスを表示できます。
Timestamp GITのサービスが停止した場合はどうなりますか?タイムスタンプを検証できますか?
Timestamp GITが消滅しても、タイムスタンプは完全に検証可能です。証明書はOpenTimestampsプロトコルを使用してBitcoinブロックチェーンに埋め込まれており、標準ツールでローカルに検証できます。.otsレシートファイルはリポジトリに保存されているため、証拠は常にあなたの手元にあります。
まとめ:設定したら忘れる
手動タイムスタンプは、自動化が完全に排除する負担です。Timestamp GITは、CLIも夜間スクリプトも手動のレシート管理もなしに、すべてのコミットをBitcoinアンカーされた存在証明に変えます。GitHub Appを一度インストールすれば、コミット検出、Merkleツリー構築、Bitcoinアンカー、証明書配信まで、システムがすべてを処理します。
ワークフローに別の手動プロセスを追加せずに先行技術を保護する準備ができているなら、GitHub MarketplaceからTimestamp GITをインストールしてください。料金は、パブリックリポジトリ向けの無料Open Sourceプランから始まり、プライベートリポジトリ向けのPro Agencyが月額$49、ソースアクセスゼロのEnterprise ZKが月額$199です。エアギャップまたはオンプレミス展開向けにDockerセルフホストライセンスも利用可能です。
関連記事
- コミットのタイムスタンプに最適なGitHub App
- 開発者のためのBitcoinタイムスタンプ:初心者ガイド
- Dockerによるセルフホストタイムスタンプ:Timestamp GIT
- ソフトウェアの著作者性を証明する方法:開発者向けガイド
- Gitコミットのタイムスタンプを検証する方法
- GitHub AppでGitコミットに自動タイムスタンプを付ける