Novemade
すべての記事

11 の製品、一つの制作システム、そして根拠を読む順序

ローンチの高くつく部分は毎回同じです。それを共有するのは分かりやすい半分。どの文書を信じるかを知ることが、繰り返し失敗してきた半分です。

スタジオノート · · 読了 6 分

この規模のスタジオが 11 の製品を抱えるのに、11 回のローンチをすることはできません。抱えられているのは、ローンチのうち毎回同じ部分 — ストア素材、リリースのチェックリスト、サブスクリプションの配管、画面キャプチャ、プライバシー文書、公開パイプラインそのもの — を、製品ごとに手作業で一度ずつではなく、一つのシステムで一度だけやっているからです。

ここまでは分かりやすい半分で、面白い半分ではありません。インフラを共有するのはよく理解された取引です。繰り返し失敗するのは、3 週間前に出した製品について何が真なのかを知ることです。

自動化を再開可能にする二つの規則

システム内の作業は、自身の入力の決定的なハッシュで同一性を与えられます。二重のトリガー、リトライ、クラッシュからの再起動はすべて同じ同一性に解決されるので、システムは二重に生成することも二重に投稿することもできません。この一つの性質がリトライを安全にし、安全にリトライできることが、放っておける自動化と誰かが見張らなければならない自動化の差です。

二つめの規則は、公開が人の後ろにあることです。自動化が未完成だからではありません。誤った公開の費用が非対称だからです。一度も使われない門は安く、一度欠けている門は安くありません。このスタジオからは、誰かがそう言わないかぎり何も出ていません。

バグではない故障

9 月 30 日、2 つの製品が App Store で公開になりました。このサイトはそのうち一つをベータで、どちらのストアにも公開掲載されていないと書いていました。このリポジトリの中で間違っているものは何もなく、どんなレビューでも捕まえられませんでした。ローンチはリポジトリの外で起きる出来事だからです。ファイルは変わらないので、読む差分もなく、落ちられるテストもありません。

これが、習慣ではなくデプロイ前の門であるべき理由のすべてです。スクリプトが Apple にすべてのバンドル識別子を問い合わせ、開発者アカウントのすべてのアプリを列挙し、Google Play に各パッケージページを要求します。何かおかしく見えたときではなく、デプロイの前に走ります。何かおかしく見えるころには、3 日間問題なく見えていたはずだからです。

どの文書を信じるか

同じ間違いはこのスタジオでこれまで 7 回起きていて、不注意だったのは 1 回だけです。残りの 6 回はすべて同じ形でした。機械可読の根拠が同じフォルダに、より新しく、別のことを言って置かれているのに、主張をプロジェクトの説明文書から取ってきてしまうのです。

Veyra が実例です。このサイトのページは、生成は一度も走ったことがなく、モデルの重みは一度も読み込まれたことがないと書いていました。これは 9 月 11 日付のステータス文書と readme から来たもので、ここで 2 週間繰り返されました。その間、同じリポジトリには実機から取り出したファイルがあり、2 回の実際の生成が記録されていました。各回 4 候補、画像はどれも別のサイズ、本物のモデルでタグ付けされ、所要時間は端末自身のデータベースから読まれていました。このページは 2 週間、自分の製品を過小に述べていました。過大に述べるよりは優しい失敗ですが、それでも偽のページです。

だから順序は書き出されていて、下の段は、どれだけ最近書かれ、どれだけ自信をもって書かれていても、上の段を覆すことはありません。

  • 認証されたプロバイダの状態 — ストア自身が言うこと。サインインして読んだもの。
  • 出荷された成果物と機械可読の根拠 — リリースビルド自身のメタデータ、端末から取り出したデータベース、取得した応答、タグ。
  • 現在のソースと設定 — ビルドが実際に読み込むファイル。
  • 日付のある受け入れ文書 — 文章ですが、実際に起きた実行に対して書かれたもの。
  • ステータスと引き継ぎの説明 — readme、ステータスファイル、引き継ぎ書。
  • 計画文書とブリーフ — 製品をこのサイトに紹介したブリーフも含みます。

この順位づけは、誰が丁寧に書くかについての主張ではありません。何が劣化するかについての主張です。ストアの掲載情報は製品が変わると変わります。readme は誰かが思い出したときに変わります。

共有システムが実際に何のためにあるのか

上の規則はどれも、ある一つの製品で具体的に何かがうまくいかなかったことから始まり、どれも今はその製品の手元の写しではなく共有システムに住んでいます。本当の複利はこれです。5 回目のローンチが 1 回目より安いことではなく — 安いのは事実ですが — 5 回目のローンチが最初の 4 回の間違いを繰り返せないことです。その間違いが、どちらの製品のものでもない場所で落ちるテストになっているからです。