ユーザー作業の一覧 (初回リリース前: 配布・App Store・CloudKit の作業と実機での確認)
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
Hướng nghiên cứu
Start by reading documents/macos-distribution.md and documents/cloudkit-production-schema.md, then inspect the release workflow and the fastlane/metadata/, fastlane/screenshots/, and fastlane/creative_assets/ paths named here. Run the listed integration and device checks, including make test-integration where applicable. Done means the release prerequisites, distribution steps, CloudKit setup, and real-device checks are completed or explicitly recorded.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
初回リリースまでに bannzai がやることを、この 1 つの issue にまとめる。これまで分かれていた #15 (公開前チェックリスト) と #16 (ユーザー作業の一覧) の未完了項目を 2026-09-28 時点で移し、両 issue は close した。今後の追記はこの issue にコメントで行う。
- 取り組み: SecChain の初回リリース (ロードマップ: #1)
- 上から順に進めると、後の項目の前提が揃う。「リリースの作業」が済まないとリリースできない。「実機・実環境での確認」はリリース前にまとめて 1 回行う
リリースの作業
1. macOS 配布 (GitHub Releases の DMG と Homebrew cask)
- release workflow 用の GitHub Secrets 5 件を登録する (2026-09-28 に
gh secret listで未登録を確認)。agent ができない理由: Developer ID Application 証明書と秘密鍵の .p12 書き出しとパスワードの設定、App Store Connect API key の選択は本人にしかできない。実行方法:DEVELOPER_ID_APPLICATION_P12_BASE64/DEVELOPER_ID_APPLICATION_P12_PASSWORD/ASC_API_KEY_ID/ASC_API_KEY_ISSUER_ID/ASC_API_KEY_P8_BASE64を https://github.com/bannzai/SecChain/blob/main/documents/macos-distribution.md#repository-secrets のコマンドで登録する - 最初のリリースのタグ
v0.1.0を push する (前提: 上の Secrets。2026-09-28 時点で Release は 0 件)。agent ができない理由: 公開する時期は本人が決める (指示があれば agent が実行する)。実行方法:git fetch origin・git tag v0.1.0 origin/main・git push origin v0.1.0 - リリースに添付された
secchain.rbを bannzai/homebrew-tap のCasks/に追加し、tap のaudit.ymlにbannzai/tap/secchainを足す (前提: v0.1.0 のリリース。2026-09-28 時点で tap のCasks/はputs.rbだけ)。agent ができない理由: 別リポジトリへの公開操作で、リリースの後にしか行えない (指示があれば agent が実行する)。実行方法: https://github.com/bannzai/SecChain/blob/main/documents/macos-distribution.md#updating-the-homebrew-tap
2. 遠隔承認の CloudKit スキーマ
- 遠隔承認のレコード型を CloudKit の production 環境に反映する。agent ができない理由: CloudKit Console (Web UI) の操作で、反映したレコード型は production から消せない。Developer ID 版の macOS app・CLI と App Store 版の iOS app は production しか使えないため、反映しないと遠隔承認が動かない。実行方法: https://github.com/bannzai/SecChain/blob/main/documents/cloudkit-production-schema.md (反映の前に development から
DoctorProbeを消す)
3. App Store (iOS app)
- App Store Connect に iOS app のアプリレコードを作る。agent ができない理由: App Store Connect の Web UI 操作。実行方法: https://appstoreconnect.apple.com/apps で bundle ID
com.bannzai.SecChain、名前SecChain、主要言語は英語で作成する - App Store Connect API key を発行し、ローカルの環境変数に設定する (1. の Secrets と同じ key でよい)。agent ができない理由: key の発行は Web UI 操作で、
.p8の値の入手は本人にしかできない。実行方法: https://appstoreconnect.apple.com/access/integrations/api で発行し、ASC_API_KEY_ID/ASC_API_KEY_ISSUER_ID/ASC_API_KEY_P8_BASE64(base64 -i AuthKey_XXXX.p8の値) とFASTLANE_USER/FASTLANE_TEAM_ID/FASTLANE_ITC_TEAM_IDを.envrcに設定する (fastlane/Appfileのコメント参照) - product page header と search results アセットを入稿する (前提: アプリレコード。任意のアセットで、リリースは止めない)。agent ができない理由: App Store Connect の Web UI 操作。実行方法: アプリの Asset Library または対象バージョンの creative assets に
fastlane/creative_assets/product_page_header.pngとfastlane/creative_assets/search_results.pngをアップロードする
アプリレコードと API key が揃えば、次は agent が実行できる (ユーザー作業ではない): メタデータ (英語・日本語) とスクリーンショット (fastlane/metadata/・fastlane/screenshots/、生成済み) のアップロード、Support URL・Privacy Policy URL の登録、App Privacy (収集データなし、fastlane/app_privacy_details.json) の適用。
4. 本人が決めること
- GitHub Sponsors を有効にするか決める (リリースは止めない。支援を受ける場合だけ)。agent ができない理由: 本人確認と受取口座の登録が要る。実行方法: https://github.com/sponsors
実機・実環境での確認
実装はすべて済んでいて、agent の Simulator・ユニットテスト・make test-integration では確かめられない部分だけを残している。移した元の記述は #15 のコメントにある。
同期と保護レベル
- Mac 2 台 (同じ Apple Account・iCloud Keychain 有効) で、片方で登録した同期 Secret がもう片方の
secchain listと app に現れる - Mac で登録した同期 Secret が iPhone の iOS app に現れ、iOS で更新した値が Mac の
secchain runに反映される - iOS app で Secret を追加し、Mac の
secchain listに現れる (iOS → Mac の方向) - 「この端末のみ」と device-bound の Secret が他の端末に現れない
- iCloud Keychain を無効にした Mac でも、ローカルの登録・
runが動く - confirm の Secret を含む
secchain runで Touch ID のプロンプトが出て、キャンセルするとコマンドが実行されない - device-bound の Secret を含む
secchain runで OS のプロンプトが出る - SSH 接続から confirm / device-bound の Secret を読もうとすると、値を読まずに認証エラーになる
- 対話端末で
secchain set <NAME>を実行すると値の入力が画面に表示されず、保存した値がsecchain runの子プロセスに渡る - iOS app で値の表示を要求し、Face ID / Touch ID を通した後に値が出る
- device-bound の Secret を environment へ移せる:
secchain set DEVICE_BOUND_CHECK --level device-bound(ダミー値) →secchain env migrate local DEVICE_BOUND_CHECKで確認が 1 回だけ出てMoved DEVICE_BOUND_CHECK ... to the environment local.になり、secchain run --env local --only DEVICE_BOUND_CHECK -- sh -c 'test -n "$DEVICE_BOUND_CHECK"'が確認の後に exit 0。最後にsecchain delete DEVICE_BOUND_CHECK --env local
配布物
- 公証済み DMG を別の Mac にダウンロードして、Gatekeeper にブロックされずに起動できる
- GitHub Releases の
SecChain-0.1.0.dmgから/Applicationsに入れた app の同梱 CLI で、ダミー値のset→runが動き、値がどこにも表示されない (手順は #15 の 2026-09-16 のコメント) - Homebrew cask (
brew install --cask bannzai/tap/secchain) で入れたsecchainが app の Secret を読める - アプリアイコン (macOS / iOS) の実機での見え方
遠隔承認 (iPhone と Mac の往復)
前提: CloudKit スキーマの反映 (上の 2.) と、Face ID を登録し iCloud にサインインした iPhone。
- DEBUG ビルドの「Run Remote Approval Checks」で、Face ID を要求する Secure Enclave の鍵の作成と、Face ID なしで署名を拒むことが ok になる
- 同じ画面の CloudKit の項目 (レコードとサブスクリプションの保存・取得・削除) が ok になる
- iPhone のペアリング画面で鍵ができ、アプリを終了して起動し直しても同じ照合番号が出る
-
secchain pairが iPhone と同じ照合番号 (4 桁 3 組) を表示し、目で確かめてから Touch ID / パスワードで登録できる - ペアリング画面の「この iPhone」の名前が、Mac の
secchain pairの一覧の名前と一致する (機種名になる想定。見分けられるかを確認) -
secchain pair confirm-on-iphone on/offが Touch ID / パスワードを要求し、secchain pair statusの表示が変わる - confirm の Secret の
secchain run --approve-remotelyで iPhone に通知が届く (届くまでの秒数を記録する)。通知のタップで承認画面がその依頼で開き、SecChain を開いたままでもバナーが出る - Face ID を通して承認すると Mac の
runが続行する。承認のたびに Face ID が出る (1 回の認証が使い回されない) - 承認画面の Secrets に、各 Secret の名前と「<scope 名> scope」(リポジトリ自身のものは「repository scope」) が出る。
secchain set <NAME> --scope <name> --approve-remotely(confirm の Secret の更新) でも「 scope」が出る - iPhone で拒否すると
runが「拒否された」と分かるエラーで終わり、Secret を読まない。2 分待つと期限切れのエラーになる (認証失敗と同じ終了コード) - 待機中に Mac で Ctrl-C を押すと、iPhone を開いた時にその依頼が一覧から消える
- SSH 越しの
secchain run(ペアリング済み) が、ローカルのプロンプトを出せないことを検出して iPhone に切り替わり、承認で通る。先に~/.ssh/authorized_keysに鍵を置き、ssh localhost '/Applications/SecChain.app/Contents/Helpers/secchain.app/Contents/MacOS/secchain doctor'のLocalAuthentication refuses to authenticate when it may not show a promptの行の LAError コードが -1004 であることも見る (-1004 以外なら切り替えの条件を足す必要があるので、この issue にコメントする) - Touch ID の無い Mac で、パスワード入力の代わりに iPhone の承認を使える
- 「ペアリングをやり直す」で照合番号が変わり、やり直す前にペアリング済みだった Mac の
runが承認を受け付けなくなる (その Mac でsecchain pairをやり直すと通る) - 「ペアリングを解除」した後、
secchain pairを実行した Mac にこの iPhone の鍵が出なくなる。secchain pair removeが Touch ID / パスワードを要求し、その後はローカルのプロンプトに戻る - Developer ID 署名・公証済みのビルドと App Store / TestFlight 版 (production の CloudKit) でも、上と同じ往復になる
移さなかった項目
- #15「紹介サイト・プライバシーポリシー・サポートページの公開 URL が 200 を返す」: 2026-09-28 に agent が確認して 3 つとも 200 (
https://bannzai.github.io/SecChain/、/privacy/、/support/) - #15「README のインストール手順が公開済みの Release と cask を指している」: リリース後に agent が確認できる
- #15「iOS app の設定画面等からプライバシーポリシーとサポートへ到達できる」: 2026-09-28 時点で iOS app にリンクが無い。ユーザー作業ではなく実装が要るため、別 issue で扱う
- #15「App Store の Support URL・Privacy Policy URL・App Privacy」「スクリーンショットとメタデータ」: 素材は揃っていて、アップロードと登録はアプリレコードと API key の後に agent が行う (上の 3. の注記)
- #16「App Store スクリーンショットの訴求内容を決める」: PR #52 で 7 枚を生成済み
- #16「Gemini API のスペンドキャップ」: PR #61 でヘッダー画像を作成済みのため不要
- #16「release workflow 用の GitHub Secrets を登録する」(body): 同じ issue のコメントで具体化された 5 件の項目にまとめた
- #16「CloudKit コンテナの作成と割り当て」: agent の操作で済んだ (#16 のコメント)
セッション再開
cd /Users/bannzai/worktrees/bannzai/SecChain/issue-70
claude --resume 3380f118-10d7-491c-b81c-c358743f802a
- Ngôn ngữ chính
- Swift
- Star
- 0
- Fork
- 0
- Merge trung bình
- 16 giờ 55 phút
- Pull request đã merge (30 ngày)
- 24
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của bannzai/SecChain
-
SecChain 初回リリースまでのロードマップĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
bannzai/SecChain#1 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của bannzai/SecChain
Issue tương tự
-
ci-failure ci:assertion test
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
openwatersio/slackwater-ios#811 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 63/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
foxglove/mcap#1907 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
good first issue help wanted translation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 83/100
-
[Tool] AnnotatorĐang mởhas-image has-license has-readme new-tool ready-to-approve repo-verified
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
shanselman/TinyToolTown#873 ·
Maintainer thường phản hồi trong vòng 5 ngày