◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Expo SDK 58 が 10/15 に正式リリースされました(Beta は 09/15 から)。上げる前に依存の対応状況を確認しましょう●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Expo SDK 58 が 10/15 に正式リリースされました(Beta は 09/15 から)。上げる前に依存の対応状況を確認しましょう●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/Rork入門
◈ Rork入門/2026-09-04初級

Rork Companion で動いた画面を、私はまだ完成とは呼びません

Rork Companion で iPhone に入れて動いた画面と、実際にストアへ並ぶビルドのあいだには段差があります。無料の署名が数日で切れる理由から、Companion で確かめられること・確かめられないことの切り分け、画面にビルド情報を出しておく小さな実装までをまとめました。

Rork Companion10実機テスト15Expo221iOS115リリース12

壁紙アプリに新しい設定画面を足した夜のことです。Rork Companion で iPhone に送り、指で触れて、余白もスクロールも思ったとおりに動きました。その時点で私は「できた」と口に出しておりました。

段差に気づいたのは翌週です。配布用に組み直したビルドで同じ画面を開くと、見た目は寸分違わないのに、課金の導線だけが反応を返してくれませんでした。実機で動いていたのは確かで、けれど動いていたのは「開発中のビルド」であって、利用者の手元に届くビルドではなかったのです。

最初にお伝えしたいのは、これは Companion の欠点ではないということです。Companion は自分の役割をきちんと果たしています。私の側が、確かめた範囲を実際より広く見積もっておりました。

Companion に入れるまでの三つの操作と、つまずくのはたいてい三つ目

手順そのものは短いものです。

  1. Rork のインストール用ページを iPhone の Safari で開きます
  2. 表示されたリンクまたは QR コードから Companion を入れます
  3. 「設定」→「一般」→「VPN とデバイス管理」で、開発者プロファイルを信頼します

引っかかるのは、ほぼ毎回この三つ目です。「信頼されていないデベロッパ」と出たまま先へ進めない、という相談をよくいただきます。ここで押さえておきたいのは、この表示はエラーではなく、iOS が正しく仕事をしている合図だということです。ストア以外の経路で入ったアプリを、端末の持ち主の明示的な同意なしに起動させない——それが iOS の既定の姿勢です。

もうひとつ、無料の Apple ID で署名された開発用のプロファイルは寿命が短く、数日から一週間ほどで期限を迎えます。昨日まで開けていたアプリが今朝は開かない、というのは壊れたわけではなく、期限が来ただけです。同じ手順で入れ直せば戻ります。

私はこの「入れ直し」を、面倒な作業ではなく、ちいさな棚卸しの機会だと思うようにしております。入れ直すたびに、自分がいま何を確かめようとしているのかを一度言葉にできるからです。

Companion が見せてくれるもの

実機に載せて初めて分かることは、想像よりずっと多くあります。

見えるものなぜブラウザでは分かりにくいのか
指の当たり判定マウスの点と、指の腹の面積は別物だからです
セーフエリアとノッチ端末ごとの実寸は、寄せた枠では再現しきれません
文字サイズ設定の影響端末側の設定を大きくしている利用者は珍しくありません
キーボードに隠れる入力欄実機のキーボード高さと表示の遅れが絡みます
実回線での待ち時間手元の回線速度では、遅い環境の体験が見えません

ここまでを Companion で潰しておけると、その後の作業がずいぶん楽になります。私自身、画面まわりの手直しはほとんどこの段階で終わらせております。

Companion では確かめられないもの

一方で、Companion のままでは答えの出ない問いがあります。私が実際に取りこぼした課金の導線も、ここに含まれます。

確かめられないことどこで確かめるか
実際の購入・サブスクの更新ストアの内部テストや TestFlight の配布ビルド
リリースビルドでの速度と使用メモリ開発用の束ね方と最適化が違うため、配布ビルドで計測します
審査で見られる文言・スクリーンショット・プライバシー項目ストアの申請画面と、実際の提出物
OTA 更新の配信チャンネルチャンネルを指定して組んだビルド
ウィジェットなどの拡張ターゲット拡張を含めて署名した配布ビルド

通知については、もう一行だけ足しておきます。開発中のビルドと配布ビルドでは通知の配送経路が別になりますので、テスト中にきれいに届いたことは、利用者の端末に届くことをほとんど保証してくれません。私はいま、「通知が届いた」と「本番の経路で通知が届いた」を、別々の日に確かめる別々の項目として扱っております。

表にすると当たり前に見えるのですが、実際の作業中には境目が溶けます。目の前で動いている以上、動いていない可能性を疑うのは、なかなか難しいことです。

「動くか」は Companion が答えられる問いで、「出せるか」は配布ビルドにしか答えられない問いです。 この一行を作業メモの先頭に置いてから、私は同じ取りこぼしをしなくなりました。

画面に「いまどのビルドか」を出しておきます

境目が溶けるなら、溶けないように印を付ければよいのだと考えました。開発中と内部配布のときだけ、画面の隅にビルド情報を出す小さな部品を置いています。

// components/BuildBadge.tsx
import { Text, View } from 'react-native';
import Constants from 'expo-constants';
import * as Application from 'expo-application';
import * as Updates from 'expo-updates';
 
export function BuildBadge() {
  const forced = Constants.expoConfig?.extra?.showBuildBadge === true;
  if (!__DEV__ && !forced) return null;
 
  const lines = [
    `env: ${Constants.executionEnvironment}`,
    `id: ${Application.applicationId ?? '-'}`,
    `ver: ${Application.nativeApplicationVersion ?? '-'} (${Application.nativeBuildVersion ?? '-'})`,
    `channel: ${Updates.channel ?? '(none)'}`,
    `embedded: ${String(Updates.isEmbeddedLaunch)}`,
  ];
 
  return (
    <View
      pointerEvents="none"
      style={{ position: 'absolute', right: 8, bottom: 8, padding: 6, borderRadius: 6, backgroundColor: 'rgba(0,0,0,0.6)' }}
    >
      {lines.map((line) => (
        <Text key={line} style={{ color: '#fff', fontSize: 10 }}>{line}</Text>
      ))}
    </View>
  );
}

読み方を補足します。Constants.executionEnvironment は、いま動いているのがストア配布のクライアント経由なのか、自分で組んだビルドなのかを教えてくれます。Updates.channel は、更新をどのチャンネルから受け取る設定で組まれたビルドかを示し、開発中は値が入りません。Updates.isEmbeddedLaunch が true なら、ビルドに同梱されたコードで起動していて、まだ OTA 更新を受け取っていない状態です。

有効にする条件は設定側に寄せておきます。

// app.config.ts
export default ({ config }) => ({
  ...config,
  extra: {
    ...config.extra,
    showBuildBadge: process.env.SHOW_BUILD_BADGE === '1',
  },
});

こうしておくと、内部配布のビルドを組むときだけ SHOW_BUILD_BADGE=1 を渡せば印が出て、ストアへ出す本番のビルドでは自動的に消えます。

この印は、不具合の報告を受け取るときにもう一度効いてくれます。テストをお願いしている方には、画面の隅の文字ごとスクリーンショットを送っていただくようにしています。以前は「購入ボタンが反応しません」という一文だけを頼りに、違うビルドで一晩再現を試みたことがありました。いまは報告の一行目が、その問いに先に答えてくれます。

以前の私は、この判定を __DEV__ だけで書いておりました。すると内部配布のビルドでは印が消えてしまい、テスターから届いた不具合の報告が、どのビルドの話なのか分からなくなりました。判定の軸を二つに分けたのは、そこで一度困ったからです。

私が通している順番

いまは次の順で確かめています。前の段で終えたことを、次の段でもう一度見ないための区切りでもあります。

段そこで見ることそこでは見ないと決めること
Companion画面・操作感・実回線での待ち時間課金、通知の本番経路、起動速度
内部配布購入の流れ、更新チャンネル、拡張ターゲット細かな余白の調整
段階的な公開実利用者の環境での安定性新機能の追加

意外だったのは、三列目が作業の速さを変えたことです。内部配布の段では余白を見ない、と先に決めておくのは雑に思えて、しばらくは落ち着きませんでした。けれども実際には、一度決着した画面を開き直さずに済み、テストの往復が短くなりました。すべてを見ようとする段は、結局どれも丁寧に見られないのだと思います。

段を分けておくと、不具合が出たときに疑う範囲が狭まります。公開後の配り方については段階的リリースとホットフィックスの進め方に運用の詳細を書いております。ビルドそのものが通らない段階でしたら、先にアプリがビルドできないときの確認事項を見ていただくほうが早いと思います。

無料の範囲でどこまで進めるか、有料プランへいつ移るかで迷っておられる方には、料金プランを実際に使って比べた記録が判断の材料になるかもしれません。

今日できること

もし手元に Companion で動かしているアプリがあるなら、まずビルド情報の表示だけを足してみてください。五分ほどの作業ですが、「いま自分が見ているのはどのビルドか」という問いに、画面の隅がいつでも答えてくれるようになります。

私も最初は勘で切り分けようとして、ずいぶん遠回りをしました。読んでくださってありがとうございました。同じ段差でつまずく方が一人でも減れば嬉しく思います。

シェア

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

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

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

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

◈ Rork 入門2026-04-09
Rork Companion で iPhone 実機テスト — Apple Developer登録不要でQRコード1枚から始める
Rork Companionアプリを使えば、Apple Developerアカウントなしで作成したiOSアプリを実機iPhoneでテストできます。QRコードのスキャン手順、つながらないときの切り分け、実機でしか確認できないポイントと、Companionでは試せない領域まで正直に解説します。
◈ Rork 入門2026-09-11
同じ Wi-Fi のはずなのに、Rork Companion のプレビューが出てこないとき
Rork Companion で QR を読んでもプレビューが出ないとき、ルーターの再起動より先に見る場所があります。iPhone 側の四つの設定とルーター側の二つ、そして一分で原因を半分に絞るテザリング法をまとめました。
◈ Rork 入門2026-09-08
Rork Max が要るかどうかは、料金表ではなく権限の棚卸しで判断できます
Rork Max に上げるべきか迷ったとき、料金表を先に見ないようにしています。app.json と Info.plist から実際に要求している OS 機能を抜き出し、標準版で届くもの・設定で届くもの・ネイティブが要るものへ仕分ける手順を書き残します。