antist.ai
シナリオ一覧

図面セット · L0–L3

アプリを作る

スマホアプリは他人のルールの中で生きています。ストアが公開の可否を決め、OS がコードの実行タイミングを決め、すべての更新は審査の列に並びます。この図面セットは、アプリのようにインストールできるウェブサイトから、バックエンド付きのネイティブアプリまで、アプリがとりうる形と、それぞれが代償に見合う時期を示します。

設計思想

アプリは、自分のものではないスマホに泊まる客です。持ち主の電池、注意、信頼をどれだけ丁寧に使うかで評価されます。

  1. 求めるのは最小限

    要求する権限はすべて、アンインストールされる理由です。必要になったその瞬間に理由を添えて求め、断られても使い続けられるようにします。

  2. ストアに即時修正はない

    サーバーのバグは数分で直りますが、アプリのバグは審査とユーザーの更新を待ちます。頻繁に変わるロジックはバイナリではなくサーバーに置きます。

  3. ボスは OS

    OS はいつでもあなたを停止し、終了し、隔離できます。ルールと戦うのではなく、中断される前提で設計します。

一人で最初のアプリなら、インストール可能なウェブアプリかクロスプラットフォームから始めます。通話、バックグラウンド処理、センサーなど、OS が普通のアプリから隠す機能が必要になって初めてネイティブへ。

図番L0

プロトタイプ

使う人自分のスマホで試すあなた
月額$0

①なぜ上がるか

アイデアを手に取り、自分が本当に 2 回目を開くかを確かめたい段階です。ストアもユーザーもなく、守るものもありません。

②アーキテクチャ

ホーム画面に追加できるウェブアプリか、開発用アプリで自分の端末に入れたクロスプラットフォーム版です。バックエンドはなく、データは端末に残ります。

Δ この段階で追加

  • + 自分のスマホで動くアプリ
  • + 1 画面で完結する中核の流れ

地図上の形: インストール可能なウェブアプリ(PWA) · クロスプラットフォーム(一つのコード)

③ツール

実機に一番早くビルドを入れられる方法を選びます。シミュレーターはタッチ、キーボード、性能について嘘をつきますが、ポケットの中の端末は嘘をつきません。

④コードとテスト

  • シミュレーターだけでなく実機で、できれば古い端末でテストする。
  • 誰かに見せる前に、自分で 1 週間使う。
図番L1

実ユーザー

使う人インストールした見知らぬ人
月額$0–10

①なぜ上がるか

会ったこともない人が、見たこともない端末にアプリを入れています。クラッシュしても教えてはくれず、ただ削除します。

②アーキテクチャ

アプリはまずストアのテストトラックを通り、それから公開されます。クラッシュ報告は初日から組み込みます。システム機能が中核なら、そのプラットフォームをネイティブにするのは今です。

Δ この段階で追加

  • + ストア掲載とテストトラック
  • + クラッシュ報告
  • + CI が作る署名済みリリースビルド
  • + ストア向けのプライバシー開示

地図上の形: クロスプラットフォーム(一つのコード) · ネイティブアプリ(Kotlin / Swift)

③ツール

この段階でクラッシュ報告は必須です。自分のものではない端末を見る唯一の窓です。署名鍵は必ずバックアップを。失うと二度と更新できなくなることがあります。

④コードとテスト

  • 毎回、本番の前にクローズドテストのトラックへ出す。
  • アプリの署名鍵を 2 か所にバックアップする。再生成できません。
  • うまくいく道だけでなく、権限を拒否された道もテストする。
図番L2

お金とデータ

使う人アプリにアカウント、支払い、データを持つ人
月額$10–50

①なぜ上がるか

アカウント、購入、同期データが現れました。ストアの決済ルールが適用され、データ漏えいは何百万台で同時に起きます。

②アーキテクチャ

アプリは自前の API のクライアントになります。アカウント、購入、頻繁に変わるものはサーバーへ移し、ストア審査なしで直せるようにします。サーバーは、まだインストールされているすべてのバージョンからのリクエストを受け付ける必要があります。

Δ この段階で追加

  • + バックエンド API
  • + アカウントとサーバー側の購入検証
  • + 古いビルドのための API バージョン管理
  • + 要求に応じたデータ削除

地図上の形: アプリ + バックエンド API

③ツール

ストアの購入ルールに厳密に従います。多くのデジタル商品はストア自身の決済を使う必要があります。購入はアプリ内だけでなく必ずサーバーで検証します。

④コードとテスト

  • 購入と権利はサーバーで検証する。アプリはユーザーが改変できます。
  • API は後方互換を保つ。ユーザーは古いバージョンを何か月も使います。
  • 実際に動くアカウント削除の手段を用意する。ストアが求めています。
図番L3

スケール

使う人多くの端末とバージョンの大勢のユーザー
月額$100–1000+

①なぜ上がるか

複数のバージョンが同時に動き、悪いリリースは気づく前に多くの人に届き、端末の種類は手作業で試せないほど多くなりました。

②アーキテクチャ

リリースは割合ごとに段階的に広げ、自動で止められるようにします。新機能はサーバーから切り替えられるフラグの裏で出し、ビルドごとに実機群でテストします。

Δ この段階で追加

  • + 停止ルール付きの段階的リリース
  • + サーバー管理の機能フラグ
  • + 多機種での自動テスト

地図上の形: アプリ + バックエンド API · ネイティブアプリ(Kotlin / Swift)

③ツール

この段階の目標は、新しいビルドなしですべてのリリースを取り消せることです。リモートで止められないものは、目隠しで出すリスクです。

その他の選択肢 · 本サイト未検証

④コードとテスト

  • まず一部のユーザーに出し、クラッシュ率の急増で自動停止する。
  • 危険な機能は既定でオフのフラグの裏で出す。
  • 実機の機種と OS バージョンの組み合わせでテストを回す。

アーキテクチャ全景

取り得るすべての形。その大半は「まだ作るべきでないもの」を知るためにある。

インストール可能なウェブアプリ(PWA)

アイデアの検証。コンテンツとフォーム中心で端末の深い機能は不要

$0 + ドメイン · 低

△ 全プラットフォームでのプッシュ、バックグラウンド処理、見つけてもらえるストア掲載が必要になった

クロスプラットフォーム(一つのコード)

一つのチームで iOS と Android。多くの日常的なアプリ

$0–25/月 + ストア費用 · 低〜中

△ システム機能に届くためにフレームワークと戦う、または性能が中核体験を制限する

ネイティブアプリ(Kotlin / Swift)

通話、バックグラウンドサービス、センサーなど深いシステム権限(URDialer の形)

$0–25/月 + ストア費用 · 中。両プラットフォームならコードも二つ

△ アカウント、同期、決済が現れ、アプリ専用のサーバーが必要になった

アプリ + バックエンド API

アカウント、端末間の同期、決済、共有データ

$5–100/月 · 中〜高

△ 多くのバージョンが同時に出回り、機能フラグと段階的リリースが必要になった

本当に必要な概念

各概念に平易な一文とたとえ話をひとつずつ。ツールモジュールをクリックしても同じ解説が出る。

ストア審査
リリースはユーザーに届く前にストアの確認を受けます。却下には通常、具体的なガイドラインが示されます。
≈ 新しい階を開けるたびに検査官の署名が要る。
実行時の権限
カメラ、位置情報、通話など敏感な機能は、実行中にユーザーへ求める必要があり、いつでも取り消されます。
≈ 玄関で頼んで借りる鍵。持ち主はいつでも取り返せる。
バックグラウンド制限
電池節約のため、見ていないアプリは停止されます。後で動かす処理はシステムのスケジューラに任せる必要があります。
≈ 外出すると部屋の電気を切るホテル。モーニングコールはフロントで予約する。
リリーストラック
ストアでは、全員の前にテスターや一部のユーザーだけへビルドを出せます。
≈ 新しい料理を、メニューに載せる前に一つのテーブルで出してみる。