RORK LABEN
NATIVE — Rork Max では AR / LiDAR スキャン、Metal を使った 3D、Dynamic Island、Siri Intents、HealthKit、NFC、App Clips、Core ML まで届きますIOS27 — iOS 27 Developer Beta 4 で Siri AI の対象が iPhone 15 Pro / 15 Pro Max・16 シリーズ・17 系へ広がり、応答が初期ベータより明確に速くなりましたDESIGN — iOS・iPadOS・macOS 27 向けの Apple 純正デザインキットが Figma と Sketch 向けに公開されました。新 OS の UI を組む段階で参照できますCANARY — Android 17(Cinnamon Bun)は従来の Developer Preview を廃し、継続更新される Canary ビルドへ移行しました。検証のタイミング設計が変わりますSPARK — Android 17 の Gemini Spark は、アプリを直接操作して配車の予約や注文といった複合的な作業を自動化しますSCALE — Rork は a16z から $2.8M を調達し、月間訪問は74万件規模まで伸びていますNATIVE — Rork Max では AR / LiDAR スキャン、Metal を使った 3D、Dynamic Island、Siri Intents、HealthKit、NFC、App Clips、Core ML まで届きますIOS27 — iOS 27 Developer Beta 4 で Siri AI の対象が iPhone 15 Pro / 15 Pro Max・16 シリーズ・17 系へ広がり、応答が初期ベータより明確に速くなりましたDESIGN — iOS・iPadOS・macOS 27 向けの Apple 純正デザインキットが Figma と Sketch 向けに公開されました。新 OS の UI を組む段階で参照できますCANARY — Android 17(Cinnamon Bun)は従来の Developer Preview を廃し、継続更新される Canary ビルドへ移行しました。検証のタイミング設計が変わりますSPARK — Android 17 の Gemini Spark は、アプリを直接操作して配車の予約や注文といった複合的な作業を自動化しますSCALE — Rork は a16z から $2.8M を調達し、月間訪問は74万件規模まで伸びています
記事一覧/開発ツール
開発ツール/2026-06-19中級

Rork で作ったリストのスクロールが重い — 画像キャッシュとプリフェッチの設計

Rork が生成した FlatList は画像が増えるとスクロールがカクつきます。expo-image のキャッシュ、recyclingKey、プリフェッチ、FlashList への移行を実機の数値とともに整理し、滑らかさを取り戻すまでの設計を残しました。

Rork525React Native218expo-image5FlatList9パフォーマンス32

プレミアム記事

Rork で作った画像ギャラリーを実機で動かしてみたとき、最初の数件はなめらかなのに、スクロールを続けるうちにカクつきが目立ってきました。Simulator では気づかなかった現象で、手元の少し古い端末で初めて表面化したのです。

原因はすぐに想像がつきました。リストの各セルが、表示のたびにネットワークから画像を取り直し、毎回デコードし直していたのです。Rork が生成する FlatList は素直で読みやすい一方、画像の枚数が増えたときの負荷までは設計してくれません。

App Store で個人開発の壁紙アプリを長く運用し、画像中心の画面を何度も作ってきた立場から、ここでは Rork が出したリストを土台に、スクロールの滑らかさを取り戻すまでの工程を、実機で測った数値とともに残しておきます。

なぜスクロールがカクつくのか

カクつきの正体は、たいてい「メインスレッドの取り合い」です。画面は毎秒 60 回(端末によっては 120 回)描き直されますが、その合間に大きな画像のデコードが割り込むと、1 フレームの描画が間に合わず、見た目が飛びます。

最初にやるべきは、原因の切り分けです。私は次の順で疑います。まず画像が毎回ネットワークから取り直されていないか。次にキャッシュがあってもメモリに展開した画像を使い回せていないか。最後にセルの再利用時に不要な再レンダリングが起きていないか。この三つを順に潰すと、ほとんどのカクつきは収まります。

生成直後のコードがやりがちなこと

Rork が出力するコードは、よく次のような形をしています。

import { FlatList, Image } from "react-native";
 
export function Gallery({ items }) {
  return (
    <FlatList
      data={items}
      keyExtractor={(item) => item.id}
      renderItem={({ item }) => (
        <Image source={{ uri: item.url }} style={{ width: 180, height: 180 }} />
      )}
    />
  );
}

このコードは動きますが、標準の Image はキャッシュ制御が弱く、セルが再利用されるたびにデコードが走りがちです。画像が数十枚を超えたあたりから、スクロールの引っかかりとして表面化します。私自身が試した手元の端末では、この実装のままだとスクロール中のメモリ使用量が階段状に増え続け、しばらくすると古い端末では画面が一拍遅れて反応するようになりました。

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

この記事の続きを読む

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

この記事で得られること
FlatList のスクロールがカクつく原因を、画像デコードとメモリの観点で切り分ける手順
expo-image のキャッシュ設定と recyclingKey で再デコードを止める具体的な実装
可視範囲の先を読み込むプリフェッチ設計と、FlashList へ移すべき判断ライン
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-06-25
壁紙アプリの画像キャッシュが静かに膨らんでメモリで落ちる — Rork運用で効いた計測と上限設計の運用メモ
画像が主役のRorkアプリで、ディスクキャッシュとメモリ常駐が少しずつ膨らみ、OOMクラッシュとして表面化する問題への対処。実測フック・キャッシュ上限・配信側リサイズまで、運用で効いた順に実装コード付きで整理します。
開発ツール2026-05-22
FlatList の onEndReached が連続発火して API を叩きすぎる問題の原因と対処
FlatList の onEndReached が画面遷移時や初期描画時に何度も呼ばれて、ページネーション API を多重に叩いてしまう問題。Rork で生成したリスト画面でも頻発するこの挙動の原因と、実運用で使える対処パターンを整理しました。
開発ツール2026-05-02
FlatList でカクつき始めたら読む — Rork アプリを FlashList v2 で快適にする実装手順
Rork で生成したアプリの長いリストが重くなったとき、FlashList v2 へ移行することでスクロールが大幅に滑らかになります。estimatedItemSize が不要になった v2 の思想を踏まえた、現実的な移行手順を解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →