<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>永続化 on 怠惰技術ブログ</title>
    <link>/tags/%E6%B0%B8%E7%B6%9A%E5%8C%96/</link>
    <description>Recent content in 永続化 on 怠惰技術ブログ</description>
    <generator>Hugo -- 0.147.7</generator>
    <language>ja</language>
    <lastBuildDate>Sun, 08 Feb 2026 17:50:00 +0900</lastBuildDate>
    <atom:link href="/tags/%E6%B0%B8%E7%B6%9A%E5%8C%96/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>AsyncStorageって裏側何やってんの？ - 2.0と3.0の実装の違いを調べてみた</title>
      <link>/posts/2026-02-08-async-storage/</link>
      <pubDate>Sun, 08 Feb 2026 17:50:00 +0900</pubDate>
      <guid>/posts/2026-02-08-async-storage/</guid>
      <description>&lt;p&gt;私は普段React NativeでExpo触ってるので、AsyncStorageはよく使うんだけど、「そういえばAsyncStorageって裏側何やってんだろう？」って疑問が湧いてきたので調べてみることにした。&lt;/p&gt;
&lt;h2 id=&#34;asyncstorageの裏側&#34;&gt;AsyncStorageの裏側&lt;/h2&gt;
&lt;p&gt;AsyncStorageのバージョンによって実装が少し違う。&lt;/p&gt;
&lt;h3 id=&#34;asyncstorage-20の実装&#34;&gt;AsyncStorage 2.0の実装&lt;/h3&gt;
&lt;p&gt;iOS/Androidのみ調査。&lt;/p&gt;
&lt;p&gt;公式ドキュメント: &lt;a href=&#34;https://react-native-async-storage.github.io/2.0/advanced/Where-data-stored/&#34;&gt;Where your data is stored - Async Storage&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;ios-20&#34;&gt;iOS (2.0)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;manifest.json&lt;/code&gt;ファイルに保存される&lt;/li&gt;
&lt;li&gt;JSONファイル形式&lt;/li&gt;
&lt;li&gt;パス: &lt;code&gt;Documents/RCTAsyncLocalStorage_V1/manifest.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;詳細: 1024文字以下のデータは&lt;code&gt;manifest.json&lt;/code&gt;に、それより大きいデータは個別ファイル(MD5ハッシュ名)に保存される&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;android-20&#34;&gt;Android (2.0)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;SQLiteデータベースに保存される&lt;/li&gt;
&lt;li&gt;データベース名: &lt;code&gt;RKStorage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;パス: &lt;code&gt;/data/data/{package_name}/databases/RKStorage&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;asyncstorage-30-nextの実装&#34;&gt;AsyncStorage 3.0 (next)の実装&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;公式ドキュメント&lt;/strong&gt;: &lt;a href=&#34;https://react-native-async-storage.github.io/3.0-next/&#34;&gt;https://react-native-async-storage.github.io/3.0-next/&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;対応プラットフォーム&#34;&gt;対応プラットフォーム&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Android (SQLite)&lt;/li&gt;
&lt;li&gt;iOS (SQLite) ✨&lt;/li&gt;
&lt;li&gt;macOS (SQLite)&lt;/li&gt;
&lt;li&gt;visionOS (legacy fallback, single database only)&lt;/li&gt;
&lt;li&gt;Web (IndexedDB backend)&lt;/li&gt;
&lt;li&gt;Windows (legacy fallback, single database only)&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;ios-30&#34;&gt;iOS (3.0)&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;SQLiteデータベースに変更された&lt;/li&gt;
&lt;li&gt;Androidと同じ実装に統一&lt;/li&gt;
&lt;li&gt;パフォーマンスと安定性が向上&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;android-30&#34;&gt;Android (3.0)&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;引き続きSQLite&lt;/li&gt;
&lt;li&gt;より洗練された実装&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;3.0からはiOSもAndroidも両方SQLiteになって、実装が統一されるそうだ。&lt;/p&gt;
&lt;h5 id=&#34;互換性&#34;&gt;互換性&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;React Native 0.76以降が必要(iOS/Android)&lt;/li&gt;
&lt;li&gt;Kotlin 2.1.0&lt;/li&gt;
&lt;li&gt;iOS minimum target: 13&lt;/li&gt;
&lt;li&gt;Android minimum SDK: 24&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;なぜiosでmanifestjsonからsqliteに変更したのか&#34;&gt;なぜiOSでmanifest.jsonからSQLiteに変更したのか&lt;/h2&gt;
&lt;p&gt;あくまでも推測ではあるがやってみた。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
