RORK LABEN
BUILD — Rork Max はクラウド上の実機 Mac に Xcode と iOS SDK を載せ、SwiftUI を書き、ビルドし、エラーを読んで直す反復を回します。コードを吐いて終わりではない点が生成物の質に効いていますNATIVE — 生成されるのは React Native ではなく純粋な Swift / SwiftUI です。AR や Metal、ウィジェットなど React Native からは届かない機能に手が届くことが、他ビルダーとの実質的な差になりますPLATFORMS — 対応は iPhone・iPad・Apple Watch・Apple TV・Vision Pro に加えて iMessage まで含みます。ウォッチや拡張から入る設計を試すのに向いていますCOMPANION — Rork Companion により、有料の Apple Developer アカウントなしで生成したアプリを実機の iPhone で確認できます。最初の一本を試す段階の障壁が一段下がりましたPRICING — 無料で開始でき有料プランは月額25ドルから、Rork Max は月額200ドルの Max プランです。回収できる本数と規模を先に見積もっておく価値がありますDEADLINE — Google Play は2026年8月31日以降、新規アプリと更新の双方に対象 API レベル36 以上を要求します。残り10日で、生成物の targetSdkVersion は自分で確認が必要ですBUILD — Rork Max はクラウド上の実機 Mac に Xcode と iOS SDK を載せ、SwiftUI を書き、ビルドし、エラーを読んで直す反復を回します。コードを吐いて終わりではない点が生成物の質に効いていますNATIVE — 生成されるのは React Native ではなく純粋な Swift / SwiftUI です。AR や Metal、ウィジェットなど React Native からは届かない機能に手が届くことが、他ビルダーとの実質的な差になりますPLATFORMS — 対応は iPhone・iPad・Apple Watch・Apple TV・Vision Pro に加えて iMessage まで含みます。ウォッチや拡張から入る設計を試すのに向いていますCOMPANION — Rork Companion により、有料の Apple Developer アカウントなしで生成したアプリを実機の iPhone で確認できます。最初の一本を試す段階の障壁が一段下がりましたPRICING — 無料で開始でき有料プランは月額25ドルから、Rork Max は月額200ドルの Max プランです。回収できる本数と規模を先に見積もっておく価値がありますDEADLINE — Google Play は2026年8月31日以降、新規アプリと更新の双方に対象 API レベル36 以上を要求します。残り10日で、生成物の targetSdkVersion は自分で確認が必要です
記事一覧/ビジネス
ビジネス/2026-08-11中級

新規インストールが止まる4か国を、6本のアプリの流入比率で確かめました

Android の開発者認証は2026年9月30日にブラジル・インドネシア・シンガポール・タイの4か国で始まります。自分のアプリがその期日に本当に影響を受けるのかを、国別インストール比率から判定する手順をまとめました。

Android46Google Play27アプリ配信2個人開発198Expo175

プレミアム記事

手元のメモには「2026年9月に完全義務化」と書いてありました。Android の開発者認証の話です。9月といえば来月で、私が個人で運用しているアプリのうち2本は Google Play で配信しています。慌てて公式の説明を読み直したところ、そこに並んでいたのは4つの国名でした。

ブラジル、インドネシア、シンガポール、タイ。

2026年9月30日に始まるのはこの4か国での運用であって、世界全体ではありません。グローバル展開は2027年と明記されています。「9月に全部止まる」という理解のまま8月を過ごしていたら、優先順位を大きく間違えていました。

とはいえ、この4か国が自分にとって小さいかどうかは別の話です。壁紙アプリのように言語依存が薄いカテゴリでは、新興国からの流入が想像より大きくなります。「4か国だけ」で安心できるかは、自分の数字を見ないと決められません。この記事は、その確かめ方の記録です。

確定している日程と、対象になるストア

まず、いま公式に確定している部分を並べておきます。推測を混ぜないために、日付と国名は Android Developer Console のヘルプに記載された内容だけを使います。

時期内容
2025年11月早期アクセス登録者が、Google Play 外で配信するアプリの認証を開始
2026年3月Android Developer Console が全開発者に開放
2026年9月30日ブラジル・インドネシア・シンガポール・タイで、認証済み開発者が登録したアプリのみが対象ストアから新規インストール可能に
2027年認定 Android 端末向けの配信全体へグローバル展開

そして、この初期フェーズで対象になるストアが明示されています。ここが読み飛ばされがちな部分でした。

事業者ストア
GoogleGoogle Play
HonorHONOR App Market
OPlusOPPO App Market
SamsungGalaxy Store
TranssionPalm Store
vivoV-Appstore
XiaomiGetApps

一覧の先頭に Google Play が入っています。私は当初、この制度をサイドロード規制の話だと受け取っていました。APK を直接配る人向けの制度で、Play にしか出していない自分には関係が薄い、と。実際には逆で、Play 経由のインストールも認証の対象に含まれます。「Play にしか出していないから無関係」という読み方が、いちばん危ない誤読でした。

サイドロード自体が禁止されるわけでもありません。未認証の開発者のアプリは、リスクを承諾したうえで一度きりの設定を済ませる「高度なフロー」を経ればインストールできますし、ADB は開発用の手段として従来どおり使えます。ただしこれは端末を触れる本人向けの逃げ道であって、ストアから普通に落としてもらう配信の話ではありません。

「4か国だけ」が自分にとって小さいかを先に出す

ここからが本題です。4か国という範囲が確定したなら、次に必要なのは「その4か国が自分のインストールの何割か」という一つの数字だけです。この数字が1%なら9月30日は緊急事項ではなく、20%なら8月中に手を動かす必要があります。

Play Console の「統計情報」から国別のインストール数を CSV で書き出して集計します。ここで一つ、毎回つまずく点があります。Play Console が配布するレポート CSV は UTF-16LE(BOM 付き)で、UTF-8 として読むと列名の照合に失敗します。列が見つからないというエラーが出たら、まずエンコーディングを疑ってください。

// scripts/enforcement-share.mjs
// Play Console > 統計情報 > エクスポート で取得した国別インストール CSV を集計します。
// 使い方: node scripts/enforcement-share.mjs installs_country_202607.csv
import fs from "node:fs";
 
// 2026-09-30 に運用が始まる4か国(ISO 3166-1 alpha-2)
const ENFORCED = new Map([
  ["BR", "ブラジル"],
  ["ID", "インドネシア"],
  ["SG", "シンガポール"],
  ["TH", "タイ"],
]);
 
const file = process.argv[2];
if (!file) {
  console.error("使い方: node scripts/enforcement-share.mjs <国別インストールCSV>");
  process.exit(1);
}
 
// ⚠ Play Console のレポートは UTF-16LE + BOM。utf8 で読むと列名が一致しません。
const raw = fs.readFileSync(file, "utf16le").replace(/^/, "");
const lines = raw.trim().split(/\r?\n/);
if (lines.length < 2) {
  console.error("行が読めていません。エンコーディング(UTF-16LE)を確認してください。");
  process.exit(1);
}
 
const cols = lines[0].split(",").map((c) => c.trim());
const iCountry = cols.findIndex((c) => /country/i.test(c));
// 「Store listing acquisitions」など複数の指標が並ぶため、端末単位の指標を優先します
const iInstalls = cols.findIndex((c) => /install/i.test(c) && /device|unique/i.test(c));
const iFallback = cols.findIndex((c) => /install/i.test(c));
const target = iInstalls >= 0 ? iInstalls : iFallback;
 
if (iCountry < 0 || target < 0) {
  console.error("列名を特定できませんでした。実際のヘッダー:", cols.join(" | "));
  process.exit(1);
}
 
let total = 0;
const hits = new Map();
 
for (const line of lines.slice(1)) {
  const cells = line.split(",");
  const code = (cells[iCountry] ?? "").trim().toUpperCase();
  const n = Number((cells[target] ?? "0").replace(/[^\d.-]/g, "")) || 0;
  if (!code || n <= 0) continue;
  total += n;
  if (ENFORCED.has(code)) hits.set(code, (hits.get(code) ?? 0) + n);
}
 
const affected = [...hits.values()].reduce((a, b) => a + b, 0);
const share = total > 0 ? (affected / total) * 100 : 0;
 
console.log(`集計対象インストール: ${total.toLocaleString()}`);
for (const [code, label] of ENFORCED) {
  const n = hits.get(code) ?? 0;
  const pct = total > 0 ? ((n / total) * 100).toFixed(2) : "0.00";
  console.log(`  ${label}(${code}): ${n.toLocaleString()} (${pct}%)`);
}
console.log(`4か国合計: ${affected.toLocaleString()} (${share.toFixed(2)}%)`);
console.log(
  share >= 5
    ? "→ 8月中の着手を推奨します(登録待ちが発生しても間に合う日程)"
    : "→ 9月30日は緊急事項ではありません。2027年のグローバル展開までに整えれば十分です"
);

期待する出力はこの形になります。

集計対象インストール: 412,880
  ブラジル(BR): 21,043 (5.10%)
  インドネシア(ID): 38,512 (9.33%)
  シンガポール(SG): 1,204 (0.29%)
  タイ(TH): 9,870 (2.39%)
4か国合計: 70,629 (17.11%)
→ 8月中の着手を推奨します(登録待ちが発生しても間に合う日程)

しきい値を5%に置いたのは、私の判断です。個人開発の場合、登録作業そのものは長くても数時間で終わります。数時間の作業で守れる配信が全体の5%を超えるなら、後回しにする理由がないという線引きです。ここは事業の規模で変わるので、数字を見てから自分で決めてください。

なお、この集計を各アプリで走らせると、比率がアプリごとに大きく違うことに気づきます。日本語圏に寄せたアプリと、言語をほとんど使わないアプリでは、同じ開発者が出していても新興国比率がまるで別物になります。私が運用しているアプリでも、壁紙のようにテキストが少ないものほど東南アジアの比率が高く出ます。「うちのアプリは国内向けだから」という感覚は、アプリ単位で確かめないと当てになりません。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
自分のアプリが2026年9月30日の対象に本当に入るのかを、国別インストール比率から30分で判定できるようになります
登録の締切そのものより先に詰まる「法人登録に必要な番号の取得待ち」を、締切を過ぎてから知る事態を避けられるようになります
複数のアプリを持っている場合に、どれを先に登録しどれを後回しにできるかを、数字を根拠に決められるようになります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

ビジネス2026-08-20
target API 36 の8月31日は、更新を出す人と出さない人で意味が違います
Google Play の8月31日には、更新提出に必要な API 36 と、新規ユーザーへの配信を保つための API 35 という別々の条件が重なっています。6本のアプリを運用する側の仕分け方と、延長フォームが誰に出るのかを整理しました。
ビジネス2026-05-12
RorkアプリをAndroidに展開して最初に驚いたこと — App StoreとGoogle Playの設計思想の違い
10年超の個人開発・累計5,000万DL超の経験から語る、RorkアプリをAndroidに展開したときに発見したApp StoreとGoogle Playの根本的な違い。Short DescriptionやASO戦略など、知らないと損するポイントをまとめました。
ビジネス2026-07-11
アプリを公開すると本名は表示されるのか — App Store と Google Play の開発者名義の決め方
個人開発者がアプリを公開すると本名や住所はどこまで表示されるのか。App Storeの販売者名、Google Playの表示名と住所公開の要件、EU配信での事業者情報の扱いを整理し、公開範囲を抑えたい場合の現実的な選択肢と名義を最初に決めておく意味を説明します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →