RORK LABEN
PLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっていますPLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっています
記事一覧/開発ツール
開発ツール/2026-05-27中級

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

Rorkで生成したアプリのHermesを有効にしたまま2ヶ月本番運用した実測記録です。初回起動が38%短縮された中身、Pixel 7でメモリ18%減、クラッシュフリー率の推移と注意点を、広告収益と直結する個人開発の運用感覚から振り返ります。計測環境も明記しています。

Rork547Hermes8React Native233起動時間2メモリ4実体験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/月 または ¥2,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-08-27
メモリが膨らむ原因を自分のコードに探す前に、worklet の数を数えてください
Hermes V1 は worklet 1つにつき 512KB のデバッグ用メタデータを積みます。Reanimated を読み込むだけでメモリが増える仕組みと、自分のコードを疑う前に数えるべき3つの数字、そして4通りの直し方の選び分けをまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →