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-03-15中級

Expo SDK 55 で始める最新パフォーマンス最適化テクニック

Expo SDK 55がもたらすHermes V1、EASビルドキャッシング、モーダル改善など最新のパフォーマンス最適化手法を完全解説。実装例とベストプラクティス付き。

Expo149React Native209パフォーマンス30Hermes6最適化2モバイルアプリ開発3

Expo SDK 55とは?パフォーマンス革新の背景

2026年2月にリリースされたExpo SDK 55は、単なるマイナーアップデートではなく、モバイルアプリのパフォーマンスに革新をもたらす重要なリリースです。最大の特徴はHermes V1がデフォルトエンジンになったこと。これにより、すべてのExpoアプリが自動的にパフォーマンス向上の恩恵を受けます。

従来のJavaScriptエンジンと比べてHermes V1は、実行速度が大幅に向上し、メモリ使用量を削減。特に低スペックなAndroidデバイスでの実行が劇的に改善されます。さらにExpo Observe、EASビルドキャッシング、react-native-screensのアップグレードなど、開発体験とアプリ品質を同時に向上させる機能が多数搭載されています。

ここではExpo SDK 55の最新機能を実装し、あなたのRorkアプリをさらに高速化・高最適化する方法を詳しく解説します。


Hermes V1エンジンの性能向上と実装方法

Hermes V1がもたらす実質的なメリット

Hermes V1は以下の大幅な改善をもたらします。

改善項目効果
実行速度従来比で平均15~25%高速化
メモリ使用量初期化時メモリを約30%削減
起動時間アプリ起動時間を500ms~1秒短縮
ES6サポートasync/await、const/let、クラス構文が完全サポート

Hermes V1の動作原理は、JavaScriptをバイトコードにプリコンパイルすることで、実行時の解析処理を最小限にする点です。これは特にCPUリソースが限定されたAndroidデバイスで威力を発揮します。

Expo SDK 55での標準設定と確認方法

Expo SDK 55を使用している場合、Hermes V1は自動的に有効になっています。設定を確認するには、以下のコマンドで現在のExpoバージョンを確認してください。

expo --version
# 出力例: 52.0.0 (SDK 55対応)

app.jsonにHermes設定を明示的に記述することもできます。

{
  "expo": {
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "usesCleartextTraffic": false,
            "enableHermes": true
          },
          "ios": {
            "deploymentTarget": "13.0"
          }
        }
      ]
    ]
  }
}

Hermes有効化後は、Android側でバイトコード生成が自動実行され、APKサイズが約2~3MB削減されることが多いです。


EASビルドキャッシングで開発速度3倍高速化

キャッシング機能がもたらす時間短縮

EASビルドキャッシングは、同一の依存関係・設定でビルドする際に、前回のビルド結果を再利用する機能です。その効果は劇的です。

  • 初回ビルド: 10~15分
  • キャッシュ利用時: 3~5分(約70%削減)

特にCI/CDパイプラインで頻繁にビルドする環境では、月単位で数十時間の削減につながります。

EASキャッシング設定と使用例

EASキャッシングはEAS Build v2以上で標準提供されており、追加の設定は不要です。ただし、キャッシュの効率を最大化するには以下の設定を推奨します。

# eas.json の設定例
{
  "build": {
    "production": {
      "node": "20.10.0",
      "npm": "10.2.4",
      "cache": {
        "cacheDisabled": false,
        "customPaths": [
          ".next",
          "build",
          "dist"
        ]
      }
    }
  }
}

customPathsに自身のビルド成果物ディレクトリを指定することで、さらなる高速化が実現できます。

eas build --platform ios --cache
eas build --platform android --cache

キャッシュは最大14日間保持されるため、2週間以内のビルド再実行時に有効です。


モーダル表示の改善と react-native-screens 4.23.0

なぜモーダル最適化が重要なのか

Rorkアプリでは、ボトムシート、ダイアログ、ナビゲーションスタックなど、モーダル表示が頻繁に使用されます。react-native-screens 4.23.0では、ネイティブスクリーンライフサイクルが完全に改善され、以下の効果が得られます。

  • モーダル開閉時のジャンク削減
  • メモリリークの防止
  • スムーズなアニメーション実行

実装例:ボトムシートの正しい構築

react-native-screenを活用した最新のボトムシート実装例を示します。

import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
import BottomSheet from '@gorhom/bottom-sheet';
 
const Stack = createNativeStackNavigator();
 
export default function ModalScreen() {
  const [isOpen, setIsOpen] = React.useState(false);
  const snapPoints = React.useMemo(() => [200, 400], []);
 
  return (
    <GestureHandlerRootView style={{ flex: 1 }}>
      <NavigationContainer>
        <Stack.Navigator
          screenOptions={{
            presentation: 'modal',
            animationEnabled: true,
            cardStyle: { backgroundColor: 'transparent' },
          }}
        >
          <Stack.Group>
            <Stack.Screen name="Home" component={HomeScreen} />
          </Stack.Group>
          <Stack.Group
            screenOptions={{
              presentation: 'transparentModal',
              cardOverlayEnabled: true,
              cardStyle: { backgroundColor: 'rgba(0,0,0,0.5)' },
            }}
          >
            <Stack.Screen name="Modal" component={ModalContent} />
          </Stack.Group>
        </Stack.Navigator>
      </NavigationContainer>
      
      {isOpen && (
        <BottomSheet snapPoints={snapPoints} onClose={() => setIsOpen(false)}>
          <View style={{ flex: 1, padding: 16 }}>
            <Text>ボトムシートコンテンツ</Text>
          </View>
        </BottomSheet>
      )}
    </GestureHandlerRootView>
  );
}

react-native-screens 4.23.0では、モーダルスタックのメモリ管理が自動化され、複数のモーダルを積み重ねた場合でもメモリリークが発生しにくくなります。


Expo Observe:本番環境のパフォーマンス監視

Expo Observeとは

Expo Observeはプライベートプレビュー段階の新機能で、本番アプリのパフォーマンスをリアルタイムで監視するダッシュボード機能です。以下のメトリクスを自動収集します。

  • フレームレート(FPS)
  • メモリ使用量の推移
  • CPUバッテリー消費率
  • ネットワークリクエスト時間
  • カスタムメトリクス(ユーザー定義)

Expo Observeの有効化と基本設定

Expo Observeを使用するには、EAS Accountでプロジェクトを登録し、以下のコマンドで初期化します。

eas update:configure
expo prebuild --clean

その後、アプリコード内で以下のようにObserve SDKを初期化します。

import { useExpoObserve } from 'expo-observe';
 
export default function App() {
  React.useEffect(() => {
    // パフォーマンス監視を開始
    const observer = useExpoObserve();
    
    // カスタムメトリクスを記録
    observer.recordMetric('user_action_duration', 1250);
    observer.recordMetric('api_response_time', 350);
    
    return () => observer.cleanup();
  }, []);
 
  return <MainApp />;
}

データはEAS Dashboardにアップロードされ、任意の時間幅でパフォーマンス推移を確認できます。


android-blur の効率化:RenderNode APIの採用

背景ぼかし処理の課題と改善

Rorkアプリで背景ぼかし効果(glassmorphism)を使用する場合、従来はNativeModuleで複雑なフレームバッファ操作が必要でしました。Expo SDK 55ではAndroid 12以上でRenderNode APIが活用され、GPU最適化が実現しています。

効果は以下の通りです。

環境処理時間メモリ使用量
従来手法16ms/フレーム4.5MB
RenderNode API4ms/フレーム1.2MB

背景ぼかしの実装例

expo-blurを使用した最新の実装方法です。

import { BlurView } from 'expo-blur';
import { View, Text, StyleSheet } from 'react-native';
 
export default function BlurExample() {
  return (
    <View style={styles.container}>
      <Image
        source={{ uri: 'https://example.com/bg.jpg' }}
        style={styles.backgroundImage}
      />
      
      <BlurView intensity={90} style={styles.blurContainer}>
        <View style={styles.content}>
          <Text style={styles.title}>モーダルコンテンツ</Text>
          <Text>高速レンダリングで快適なUIを実現</Text>
        </View>
      </BlurView>
    </View>
  );
}
 
const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
  },
  backgroundImage: {
    position: 'absolute',
    width: '100%',
    height: '100%',
  },
  blurContainer: {
    width: '85%',
    height: '60%',
    borderRadius: 16,
    overflow: 'hidden',
  },
  content: {
    flex: 1,
    padding: 20,
    justifyContent: 'center',
  },
  title: {
    fontSize: 20,
    fontWeight: 'bold',
    marginBottom: 8,
  },
});

Android 12未満では従来の処理が使用されるため、互換性が保たれています。


ベストプラクティス:全機能を組み合わせた最適化戦略

マルチレイヤー最適化アーキテクチャ

Expo SDK 55の全機能を活用する統合的な戦略を紹介します。

  1. ビルド層: EASキャッシングで開発速度を高速化
  2. 実行層: Hermes V1で実行時パフォーマンスを向上
  3. UI層: モーダル・ぼかしの最適化でジャンク削減
  4. 監視層: Expo Observeで本番パフォーマンスを継続監視

以下は実装チェックリストです。

// app.json の完全設定例
{
  "expo": {
    "name": "MyRorkApp",
    "version": "1.0.0",
    "sdkVersion": "55",
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "enableHermes": true,
            "buildToolsVersion": "34.0.0"
          },
          "ios": {
            "deploymentTarget": "13.0"
          }
        }
      ]
    ],
    "experiments": {
      "isModulesFunctionsEnabled": true
    }
  }
}

全体を振り返って

Expo SDK 55は、Hermes V1、EASビルドキャッシング、react-native-screens 4.23.0、android-blur最適化、Expo Observeなど、複数のパフォーマンス向上技術を統合した進化版です。

特に開発速度と本番パフォーマンスの両立が実現でき、Rorkアプリのような中~大規模モバイルアプリ開発において、品質維持と開発効率を同時に向上させる強力な基盤となります。

今回紹介したマルチレイヤー最適化戦略を段階的に導入することで、アプリユーザーの体験を大幅に改善できるでしょう。

シェア

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

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

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

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

関連記事

開発ツール2026-04-12
Rorkアプリが重い・遅い・フリーズする原因と解決法:パフォーマンストラブルシューティングガイド
Rorkで作ったアプリが重い・画面切替が遅い・フリーズするときの原因を体系的に診断し、実践的な解決策を解説します。React Native特有のパフォーマンス問題にも対応。
開発ツール2026-07-10
React Compiler を Expo に入れて、手書き memo を 41 箇所消しました
Rork が生成した React Native 画面に React Compiler を導入し、再レンダリング回数を Profiler で実測しました。手書き memo/useCallback の削除判断、効かない箇所の見分け方、CI での回帰検知までをまとめています。
開発ツール2026-06-23
価格が一部の端末だけ「¥1234」になる——Expo の Intl を信用しきらないフォーマット層の作り方
同じコードなのに、ある端末では「¥1,234」、別の端末では「¥1234」。Expo / Hermes の Intl は端末とOSのロケールデータに依存して出力が変わります。通貨・数値・日付・タイムゾーンを1ファイルに集約し、Intl が欠ける端末へ安全に後退するフォーマット層の設計を、動くコードで整理しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →