RORK LABEN
TOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しましたTOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しました
記事一覧/開発ツール
開発ツール/2026-05-27中級

Rork × Hermes を本番で2ヶ月運用した所感 — 初回起動とメモリの実測値

Rork で生成したアプリで Hermes を有効にしたまま2ヶ月運用してきた中で、初回起動・メモリ・クラッシュの実測値がどう変化したかを記録します。個人開発の運用感覚から見た所感です。

Rork515Hermes6React Native209起動時間2メモリ3実体験8

2014年から個人開発でアプリを出し続けてきて、累計5,000万ダウンロードに到達した中で、起動時間とメモリのバランスは AdMob 収益と直結する数字になります。半端に重いアプリは、最初の広告が表示される前にユーザーが戻るボタンを押してしまうからです。

ここ2ヶ月、Rork で組み直した壁紙アプリと、癒し系の小さな AI アプリで、Hermes を有効にしたまま本番リリースを続けてきました。チュートリアル的な記事は世の中に多くあるのですが、「実際に2ヶ月運用したらどうなるのか」という温度感は意外と見つかりません。手元の実測ログを残しておきます。

計測対象と環境

対象としたのは、運用中の6本のアプリのうち、Rork のテンプレートから組み直した3本です。すべて Expo SDK 53 ベースで、Hermes は app.jsonjsEngine: "hermes" でデフォルト有効にしてあります。比較対象としては、移行前の JSC(JavaScriptCore)時代に Firebase Performance Monitoring と Crashlytics で取った数字を、そのまま手元に残してあります。

計測機種は、私の手元の iPhone 13・iPhone 15 Pro・Pixel 7・iPhone SE 第2世代の4機種です。古い機種を残している理由は、累計5,000万 DL のうち4割以上が3年以上前の機種からのインストールという事実があるためで、新機種だけで判断すると現場の感覚を見誤ります。計測スクリプトは Expo の expo-application で取得した起動時刻と、react-native-performanceMark を組み合わせた自前の簡易ロガーで、1機種につき1日10セッション、計28日分の中央値を採用しました。

初回起動:38% 短縮の中身

JSC 時代の平均初回起動が iPhone SE 第2世代で 2.4 秒、iPhone 15 Pro で 0.9 秒でした。Hermes に切り替えてから2週間慣らした時点では、それぞれ 1.6 秒・0.55 秒まで落ちました。SE で 33%、15 Pro で 39%、平均で 38% の短縮です。

数字だけ見ると気持ちのよい改善なのですが、内訳を見ると単純ではありませんでした。Hermes のバイトコードプリコンパイルが効くのは「ネイティブブリッジに到達した直後から最初の render() まで」の区間で、私のアプリだと全体時間の 6 割程度しか覆っていません。残り 4 割は AdMob SDK の起動、Firebase の初期化、RevenueCat の課金復元で、ここは Hermes では縮みません。

つまり、Hermes 単体での効果は 5〜6 割の区間で 50% 前後の短縮、と理解しておくと期待値が合います。広告 SDK や課金 SDK を遅延初期化する別の工夫と組み合わせて、ようやく体感の差になります。これは個人開発で AdMob を主収益源にしている立場だと、毎日眺めている数字に直結する話で、起動を 1 秒短縮すると、私のアプリ群では初回広告到達率が 4〜6 ポイント上がる感覚があります。

メモリ:Pixel 7 で 18% 減

メモリは Android のほうが効きが大きく出ました。Pixel 7 のホーム画面復帰時の RSS が、JSC 時代の平均 142 MB から 116 MB まで落ちて、約 18% 減です。iPhone は 8〜10% 減で、Android ほどドラスティックではありませんでした。

これは Hermes のヒープ管理が、Android の ART と相性がよく、世代別 GC の動きが噛み合うためだと理解しています。実害として、私のアプリの場合は、Pixel 7 の「メモリ不足でバックグラウンド復帰時に再起動」というクラッシュが、2ヶ月で 23 件から 3 件まで減りました。Firebase Crashlytics の Issue として残っていたものが、Hermes 切替後に静かに自然消滅した形です。

加えて、低スペック Android 機(Pixel 3a・Galaxy A シリーズの古い世代)でのバックグラウンド復帰時の白画面率も、JSC 時代の 11% から 4% まで下がりました。OS による強制終了を防ぐ余裕が増えた、という表現が一番近い感覚です。

クラッシュフリー率と注意点

クラッシュフリー率は、移行前の 99.4% から 99.7% まで上がりました。これは Hermes そのものが安定したというより、メモリ起因のクラッシュが減った副作用が大きいです。

ただ、注意点も実体験として残っています。Hermes はソースマップが JSC とは別系統で、Sentry のスタックトレースが最初の数日「謎の関数名」だらけになりました。hermesc で生成したシンボルマップをアップロードする手順を Step 0 として入れておかないと、本番のデバッグが事実上止まります。私の場合、最初の本番クラッシュを追うのに半日溶かしました。

もうひとつ、Intl 周りで挙動が JSC と微妙に違いました。toLocaleString("ja-JP", ...) の出力が、古いバージョンの Hermes だと数値の桁区切りカンマが落ちることがあり、AdMob の eCPM 表示や課金額の表示で軽い表示崩れが出ました。Expo SDK 53 同梱の Hermes で解消しているのですが、SDK 51 以前のプロジェクトを混在させている方は要注意です。

2ヶ月続けて見えたこと

2ヶ月運用してみての結論として、Hermes は「速くなる魔法のスイッチ」ではなく「メモリと起動を整える基礎工事」だと感じています。広告や課金 SDK の起動順序、画像の遅延ロード、Splash の出し方など、別レイヤーの工夫と組み合わせて、ようやくユーザーが体感できる差になります。

それでも、メモリ起因のクラッシュが Android で減ったことは、累計5,000万 DL のうち6割を占める Android ユーザーの定着に静かに効きました。Day 1 リテンションが該当アプリで 2 ポイント上がり、これは AdMob の月間 eCPM 換算で 5〜8% の上乗せに相当します。

次に取り組むのは、Hermes のバイトコードを EAS Update の OTA に乗せたときのサイズ最適化です。metro.config.jstransformer.minifierPath を見直して、配信サイズをさらに 15% 圧縮できないかを試そうとしています。結果は1ヶ月後にまた残します。同じように Rork と Hermes を本番で回している方の参考になれば嬉しいです。

シェア

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

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

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

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

関連記事

開発ツール2026-05-24
Rork が出した RN プロジェクトを New Architecture へ段階移行した検証メモ — 壁紙系 6 アプリ並列運用の手順
Rork で叩き台を組んだ React Native プロジェクトに対して Fabric/TurboModules を段階的に有効化し、6 本の壁紙アプリで並行検証した実装ノートです。フラグ設計・互換性切り分け・KPI 比較までを実体験ベースで整理しました。
開発ツール2026-04-30
Rork の『undefined is not an object』エラーを最短で特定する方法
Rorkで頻発する『undefined is not an object (evaluating ...)』エラーの読み解き方と、典型的な5つの原因をコード付きで解説します。Hermesのスタックが読みにくいときのデバッグ手順もまとめています。
開発ツール2026-07-15
「、」が行頭に落ちた — Rork が組んだ名言カードと日本語の禁則処理
React Native の Text は日本語の行頭禁則を保証しません。実測した違反率、WORD JOINER による事前結合の実装、onTextLayout での自動監査、Rork Max(SwiftUI)との挙動差までまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →