Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

ユーザー作業の一覧 (初回リリース前: 配布・App Store・CloudKit の作業と実機での確認)

Abierto
#72 4 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
git, github, github-actions, ios, macos, swift

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

初回リリースまでに 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
Lenguaje dominante
Swift
Estrellas
0
Forks
0
Merge medio
16 h 55 min
PR fusionados (30 d)
24

Preparar el entorno

  • Sin Dockerfile ni archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de bannzai/SecChain

Todos los issues de bannzai/SecChain

Issues similares

Más issues de Swift

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.