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-03-27上級

Rork Max × Expo Modules API でカスタムネイティブモジュールを作り、npm で配布する

Expo Modules APIでカスタムネイティブモジュールを作り、Rork Maxアプリのネイティブ機能を拡張する上級ガイドです。SwiftとKotlinそれぞれの実装、TypeScript APIレイヤーの設計、テスト戦略、npmでの配布までを一通り解説します。

Rork Max232Expo Modules APIネイティブモジュール9React Native234Swift47Kotlin2npm配布

プレミアム記事

取り組みの背景 — なぜカスタムネイティブモジュールが必要なのか

Rork Max は AI 駆動のコード生成と Expo エコシステムにより、多くのアプリ開発ニーズをカバーしています。しかし、プロダクション品質のアプリを構築する段階になると、既存のライブラリだけでは対応しきれない場面が必ず訪れます。

たとえば、独自のハードウェアセンサーへのアクセス、特定の OS API との高速なブリッジ通信、あるいはサードパーティ SDK のラッパー実装など、ネイティブコードを直接書く必要があるケースは少なくありません。

Expo Modules API は、こうした課題に対するモダンな解決策です。従来の React Native Bridge と比較して、型安全性・パフォーマンス・開発体験のすべてにおいて大きく進化しています。

加速度センサーを読むだけの小さなモジュールを題材に、Swift と Kotlin の実装、TypeScript レイヤーの設計、テスト、そして npm 配布までを順に追っていきます。後半には、私が実機で動かして初めて気づいた設計上の落とし穴も併せて記しました。

この記事の対象読者:

  • Rork Max でアプリをリリース済み、またはリリース間近の開発者
  • React Native の基本を理解しており、ネイティブ拡張に踏み込みたい方
  • 自作モジュールを npm で公開して再利用性を高めたい方

Expo Modules API の設計思想とアーキテクチャ

従来の Bridge との違い

React Native の従来のブリッジ(Legacy Bridge)は、JavaScript とネイティブ間の通信を JSON シリアライゼーションで行っていました。この方式は柔軟ではあるものの、いくつかの根本的な問題を抱えていました。

Legacy Bridge の課題:

  • 非同期 JSON シリアライズによるオーバーヘッド
  • 型安全性の欠如(ランタイムエラーが発生しやすい)
  • iOS と Android で別々の実装パターンが必要

Expo Modules API の解決策:

  • JSI(JavaScript Interface)ベースの同期通信で高速化
  • Swift/Kotlin のネイティブ型がそのまま使える型安全設計
  • 両プラットフォーム共通の宣言的 API
// Legacy Bridge(旧方式)— JSON を介した非同期通信
// NativeModules.MyModule.doSomething(callback)
 
// Expo Modules API(新方式)— JSI ベースの同期呼び出し
import { requireNativeModule } from 'expo-modules-core';
const MyModule = requireNativeModule('MyModule');
const result = MyModule.doSomething(); // 同期的に結果を取得

モジュールのライフサイクル

Expo Modules API で作成したモジュールは、以下のライフサイクルに従います。

  1. Registration(登録): expo-module.config.json によるモジュール自動検出
  2. Definition(定義): Swift/Kotlin で Module クラスを継承しモジュールを定義
  3. Linking(リンク): Expo の autolinking が自動的にネイティブプロジェクトに統合
  4. Runtime(実行): JSI を通じて JavaScript から直接呼び出し

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

この記事の続きを読む

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

この記事で得られること
Expo Modules API の設計思想と Swift/Kotlin でのモジュール実装手順を体系的に理解できる
カスタムネイティブモジュールのユニットテスト・E2Eテスト戦略を実践できる
作成したモジュールを npm パッケージとして公開・配布するワークフローを習得できる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-07-18
AR で置いたものが翌朝には消えている — ARWorldMap による配置の永続化とリローカライズ設計
Rork Max が生成する AR アプリは、置いた 3D オブジェクトがアプリ再起動で消えます。ARWorldMap の保存タイミング、カスタムアンカーの符号化、リローカライズ待ちの見せ方、成立しない時の逃げ道までを設計として整理しました。
開発ツール2026-07-17
Rork の App Store 提出が「輸出コンプライアンス」で毎回止まるのを設定1行で終わらせる
Rork と Rork Max のビルドを App Store Connect に上げるたびに出る Missing Compliance 警告。免除の判断基準と、app.json / Info.plist で恒久的に消す設定、消えない場合の原因を整理しました。
開発ツール2026-07-16
Rork Max 生成コードの再生成ゾーン設計 — 手を入れるほど失われる「作り直せる自由」を残す
Rork Maxの生成コードに乗っている「捨てて作り直せる」という見えない資産は、手を入れるたびに静かに失われます。再生成ゾーンの残し方、境界に置く型の決め方、台帳とCI検査によるドリフト検出、四半期ごとの再生成テストまで、個人開発の実運用からまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →