UserDefaultにデータを保存しよう

サルでき.jp > 97.サルでき本 原稿以前 > UserDefaultにデータを保存しよう

2011/12/13 15:52 投稿先 97.サルでき本 原稿以前 投稿者 カワサキ タカシ

調が良くなってきました。いい薬が見つかった模様。

「おきのどくですが ぼうけんのしょは きえてしまいました」。この言葉を聞くと、ブワッとイヤな記憶が蘇える方、大勢いるのではないだろうか。一世を風靡したRPG(ロールプレイングゲーム)、ドラゴンクエストにおける、セーブデータが消えたときのメッセージである。RPGという種類のゲームは、一連のストーリーが長大に作られており、その長い旅路を一度にプレイすることができないため、道中、現在の状況をデータとして保存しつつ進めていく、というのがお約束なのだが、諸般の事情(カセットを落としたり、雑に扱ったり)でデータが消えてしまうことがまれにある。そんなとき、とっても不吉なサウンドと共に、このメッセージが表示されるのだ。ああ、古傷が痛む。

そういえば、iPhoneアプリって、データをセーブすることができるのだろうか。という素朴な疑問について、今回は考えてみよう。今まで見てきた各種変数。あれは確かにデータを保持してくれているのだが、あくまでもひとつのアプリ内でのみ有効な機能なので、アプリを終了してしまったら、保持していた値も全部一緒に消えてしまいそうに思える。当然だ。アプリはあくまでアプリなので、終わるときには、むしろ綺麗サッパリ終わってしまわないと逆に問題なのだ。つまり、セーブするということは、iOSとか、iPhoneとか、そういう「もう一段上」の部分で、データの保存ができないといけないことになる。そんなこと、できるのだろうか。

その答えは、「できる」が正解である。しかも、「超簡単に」できる。そんなリクエストもあろうかと、アップルの方で事前にしっかり考えられていたらしい。気が利くじゃないの、アップルのくせに(純粋にホメています)。どんな感じにセーブできるかというのをイメージでお伝えすると、iPhoneの中に予め「貸し金庫」みたいなものが用意されていて、各アプリの中から、無くなったら困るデータを、その貸し金庫に預けておき、必要に応じて、取り出しに行く。そんな感じである。

その貸し金庫。iPhoneアプリの中ではNSUserDefaultと呼ばれている。ユーザーデフォルト、少し詳しく分解して書くと、ユーザー固有のデフォルト(標準)設定を保存しておくための場所、という意味である。あれ?逆に難しくなってしまった気がする。うーむ。まあ、ザックリ分類すると、アプリの設定等を保存しておくための場所らしい。よくありますな、アプリのオプション設定機能。ああいう画面で設定しておくようなデータを保存しておけ、と。ほうほう。…まっ!それはそれとして!折角保存できるわけですし。ありがたく、いろいろな用途で使わせていただきましょう!

ということで、このユーザーデフォルト。値であれば大抵のものを保存しておくことが出来るようになっている。文字列や数値はもちろん、配列もOK。もっと言ってしまうと、値、という範囲から少しハズレてしまうのだが、画像等も、上手くデータ変換すれば、保存できてしまったりする。おまけに、使う場所を選ばない。ビューが立ち上がる前後でも、自分で作った処理の間でも、一行で呼び出せるし、一行で保存できる。便利すぎるぞ、ユーザーデフォルト。

「町に着いたら、一旦セーブ」、RPGの基本である。今こそ思い出そう、そして、もう二度とあの苦い思い出は味合わないように、胸に刻み込もう。「処理の間で、一旦セーブ」、iPhoneアプリ開発の、次の基本として、ワタシからの提案である。


※この記事は今度出す本の下書きの下書きです。
※全ボツになることもありますので、番外編としてお楽しみください。

【業務連絡】
NSUserDefaultの説明が続きます。

関連する記事:


Advertisement