expo について
Expo React Native開発者向けのパフォーマンス指針です。起動、バンドル、リスト、画像、データ取得、ナビゲーション、描画、アニメーション、メモリを扱う54項目を9分野に分け、優先度順に整理しています。
主な機能
- 019カテゴリの54項目
- 02優先度付きの性能指針
- 03アプリ起動とバンドルの最適化
- 04リストと画像の性能改善
- 05データ、ナビゲーション、描画、メモリの指針
活用シーン
- 01アプリの起動時間の改善
- 02バンドルサイズとメモリ使用量の削減
- 03リスト、画像、アニメーションの最適化
- 04モバイルコードの性能問題の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill expoインストール後、Claude Code で/expoを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdanim-avoid-layout-animation.mdanim-gesture-handler-integration.mdanim-interaction-manager.mdanim-use-native-driver.mdanim-use-reanimated.mdbundle-analyze-size.mdbundle-avoid-barrel-files.mdbundle-enable-proguard.mdbundle-optimize-fonts.mdbundle-remove-unused-dependencies.mdbundle-split-by-architecture.mdbundle-use-lightweight-alternatives.mddata-abort-requests.mddata-cache-strategies.mddata-optimistic-updates.mddata-pagination.mddata-parallel-fetching.mddata-request-deduplication.mdimage-lazy-load-offscreen.mdimage-preload-critical.mdimage-resize-to-display-size.mdimage-use-expo-image.mdimage-use-placeholders.mdimage-use-webp-format.mdlaunch-defer-non-critical.md詳細
Community Expo React Native のベストプラクティス
Expo React Native アプリケーション向けの包括的なパフォーマンス最適化ガイドです。9 つのカテゴリーにわたる 54 のルールを収録し、自動リファクタリングとコード生成の指針となるよう、影響度の高い順に優先順位を付けています。
適用するタイミング
次の場合に、これらのガイドラインを参照してください。
- Expo React Native コンポーネントを新しく作成するとき
- アプリの起動時間と操作可能になるまでの時間を最適化するとき
- リスト、画像、アニメーションを実装するとき
- バンドルサイズとメモリ使用量を削減するとき
- モバイルのパフォーマンスに関する問題がないかコードをレビューするとき
優先度別のルールカテゴリー
| 優先度 | カテゴリー | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | 起動時間の最適化 | CRITICAL | launch- |
| 2 | バンドルサイズの最適化 | CRITICAL | bundle- |
| 3 | リストの仮想化 | HIGH | list- |
| 4 | 画像の最適化 | HIGH | image- |
| 5 | データ取得パターン | HIGH | data- |
| 6 | ナビゲーションのパフォーマンス | MEDIUM-HIGH | nav- |
| 7 | 再レンダリングの防止 | MEDIUM | rerender- |
| 8 | アニメーションのパフォーマンス | MEDIUM | anim- |
| 9 | メモリ管理 | LOW-MEDIUM | mem- |
クイックリファレンス
1. 起動時間の最適化(CRITICAL)
launch-splash-screen-control- アセット読み込み中のスプラッシュ画面の表示を制御するlaunch-preload-critical-assets- スプラッシュ画面の表示中にフォントと画像をプリロードするlaunch-hermes-engine- 起動を高速化するために Hermes エンジンを使用するlaunch-defer-non-critical- 重要度の低い初期化を遅延させるlaunch-new-architecture- 同期的なネイティブ通信のために New Architecture を有効にするlaunch-minimize-root-imports- ルートの App コンポーネントのインポートを最小限にする
2. バンドルサイズの最適化(CRITICAL)
bundle-avoid-barrel-files- バレルファイルからのインポートを避けるbundle-analyze-size- リリース前にバンドルサイズを分析するbundle-remove-unused-dependencies- 使用していない依存関係を削除するbundle-split-by-architecture- アーキテクチャごとの APK を生成するbundle-enable-proguard- Android のリリースビルドで ProGuard を有効にするbundle-optimize-fonts- カスタムフォントを使用する文字だけにサブセット化するbundle-use-lightweight-alternatives- 軽量なライブラリの代替品を使用する
3. リストの仮想化(HIGH)
list-use-flashlist- FlatList の代わりに FlashList を使用するlist-provide-estimated-size- 正確な estimatedItemSize を指定するlist-avoid-inline-functions- renderItem 内でインライン関数を使わないlist-provide-getitemlayout- 高さが固定されたアイテムには getItemLayout を指定するlist-avoid-key-prop- FlashList のアイテム内で key プロパティを使わないlist-batch-rendering- リストのバッチレンダリングを設定するlist-memoize-item-components- リストアイテムのコンポーネントをメモ化する
4. 画像の最適化(HIGH)
image-use-expo-image- React Native Image の代わりに expo-image を使用するimage-resize-to-display-size- 画像を表示サイズに合わせてリサイズするimage-use-webp-format- ファイルサイズを小さくするために WebP 形式を使用するimage-use-placeholders- BlurHash または ThumbHash のプレースホルダーを使用するimage-preload-critical- ファーストビューの重要な画像をプリロードするimage-lazy-load-offscreen- 画面外の画像を遅延読み込みする
5. データ取得パターン(HIGH)
data-parallel-fetching- 独立したデータを並列で取得するdata-request-deduplication- 同時に実行されるリクエストを重複排除するdata-abort-requests- コンポーネントのアンマウント時にリクエストを中止するdata-pagination- 効率的なページネーション戦略を実装するdata-cache-strategies- 適切なキャッシュ戦略を使用するdata-optimistic-updates- 応答性を高めるために楽観的更新を適用する
6. ナビゲーションのパフォーマンス(MEDIUM-HIGH)
nav-use-native-stack- ネイティブスタックナビゲーターを使用するnav-unmount-inactive-screens- 非アクティブなタブ画面をアンマウントするnav-prefetch-screen-data- 画面遷移の前にデータをプリフェッチするnav-optimize-screen-options- 画面オプションを最適化するnav-avoid-deep-nesting- ナビゲーターの深い入れ子を避ける
7. 再レンダリングの防止(中)
rerender-use-memo-components- React.memo で負荷の高いコンポーネントをメモ化するrerender-use-callback- useCallback でコールバックを安定させるrerender-use-memo-values- useMemo で負荷の高い計算をメモ化するrerender-avoid-context-overuse- 頻繁に更新される値に Context を使いすぎないrerender-split-component-state- コンポーネントを分割して、更新される状態を分離するrerender-use-react-compiler- React Compiler を有効にして、メモ化を自動化するrerender-avoid-anonymous-components- JSX 内で匿名コンポーネントを使わない
8. アニメーションのパフォーマンス(中)
anim-use-reanimated- UI スレッドのアニメーションには Reanimated を使うanim-use-native-driver- Animated API で useNativeDriver を有効にするanim-avoid-layout-animation- レイアウトアニメーションより transform を優先するanim-gesture-handler-integration- Gesture Handler を Reanimated と併用するanim-interaction-manager- アニメーション中は負荷の高い処理を後回しにする
9. メモリ管理(低〜中)
mem-cleanup-useeffect- サブスクリプションとタイマーをクリーンアップするmem-abort-fetch-requests- アンマウント時に fetch リクエストを中止するmem-avoid-closure-leaks- クロージャーによるメモリリークを防ぐmem-release-heavy-resources- 不要になった負荷の高いリソースを解放するmem-profile-with-tools- 開発ツールでメモリ使用量をプロファイルする
使用方法
詳しい説明とコード例については、各リファレンスファイルを参照してください。
- セクションの定義 - カテゴリー構成と影響レベル
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
- ルールの例:launch-splash-screen-control、list-use-flashlist
完全版ドキュメント
すべてのルールを展開したガイド全文については、AGENTS.md を参照してください。
コメント
Markdown 対応