まえがき〜Googleの20%ルールを導入しました〜
わたしがフリーで仕事をしはじめて感じたことは、ついつい目の前の仕事やその周辺くらいしか目に入らなくなってしまうなー、ということです(あくまで個人の感想です)。もちろん目の前の仕事をキチンとやることは大事です。しかし、このままでは広がりがなくなって、やがてはしりすぼみになってしまうと危機感をおぼえました。
そこで、Googleの20%ルールを真似して、『一週間に一日はメインとなる仕事以外の勉強をする』というルールを導入してみました。
ちなみにGoogleの20%ルールとは
Google には、20% の時間は自分の好きなことを自由にやっていてもよい、という「20%ルール」があります。 Google News や AdSense などの製品はこの 20%ルールが元となって生まれています。
引用元『Google Japan Blog: 20%ルールの話』
というものです。
Realmの勉強はじめました
Realmとは、Objective-CやSwiftやJavaで使えるデータベースです。
Realm is a mobile database: a replacement for SQLite & Core Data
まだ具体化していませんが、いずれはアプリにデータベースを組み込みたいなあと考えていたところ、アプリクリエイター道場やアプリ開発キャンプでお世話になっているあきおさん(@akio0911)にRealmを教えてもらったので勉強することにしました。
まえがきが長くなりましたが、そんな理由(ワケ)でアプリガールRealm編がはじまります。丈夫(たけお)たちといっしょにRealmを楽しく学んでいただければ幸いです。
登場人物紹介
小津 丈夫(おづ たけお)
MacとiPhoneが好きな高校生。幼なじみの理沙に誘われて、しぶしぶながらもアプリ開発をはじめた。ひょんなことからアプリガールの凛子を呼び出してしまった。
理沙(りさ)
丈夫の幼なじみで同じクラスの女の子。開発者である父親の影響で、アプリ開発をはじめた。丈夫と一緒に開発をしたくて、丈夫をアプリ開発の世界へと勧誘している。
丈夫と凛子が仲良くしてるとなぜかイライラしちゃう内気な子。
凛子(りんこ)
髪の色と同じ碧い瞳とツインテールが特徴の自称(?)アプリガール。アプリの世界からやってきて、『こちらの世界』にアプリ開発を広めるのが目的らしい。本人いわくアプリ開発のことならなんでもござれとのこと。ただし、現在は記憶喪失でアプリ開発初心者同然に。
交換留学生の名目で、丈夫の家に生息中。
本編
Realmの設定方法(Swift編)
「アプリのデータを保存するんは、どういうやり方がええんやろか?」
僕(やあ、小津丈夫だよ。一応この物語の主人公なんだ)と理沙がMacにむかっていると、凛子がトレードマークの碧いツインテールをゆらしながらたずねた。
「そうねー、少量ならNSUserDefaultsかなあ……」
Macの画面をみていた理沙は、いったん言葉をきって凛子のほうへとふりむいた。理沙の髪がふわりとゆれて、三台のMacの熱気であたたまった僕の部屋にさわやかな香りがただよう。ふじりんごのような甘い香りにのせて、理沙がたずねる。
「ねえ、凛子ちゃん。いったいどういうデータを保存するの? そして、それをどんなふうに使いたいの?」
「うち、日記アプリをつくりたいねん。『こっち』の世界にきてからというものいろんなことがおこるし、写真がたまってきたもんやから日記をつけようおもてな。ほんで、その日のできごとに『おもろい』とか『うれしい』みたいなタグをつけて分類して、あとから見かえしたらええと思わへん?」
「ということは、日記の文章や写真にタグをつけて保存して、あとからタグで検索して見たいのね?」
「せやせや、そのとおりや! さすが理沙は頭の回転が速いな」
「そんなことないわ。凛子ちゃんこそすごく記憶力がいいじゃない。アプリのことパパッと答えちゃうし」
「なんたってうちはアプリガールやからな。まあ、誰かさんのせいで記憶喪失やから、答えられんこともようさんあるけどな」
凛子は、ジロリと音が聞こえそうな視線をこちらにおくってくる。僕のせいで記憶喪失になった凛子に申しわけなさを感じると同時に、骨まで灼かれそうなあつい視線を感じながら考える。そうか、いまならイカロスの気持ちがわかる。たとえロウで固めた羽がとけておちようとも、身体が灼きつくされようとも、それでも太陽にむかったイカロスの気持ちが。太陽にはあらがいがたい魅力があるんだ。だから自分をとめることができない。
「丈夫くん!」
ハッ、僕は理沙の声でわれにかえった。また凛子に見とれていたのか……。ちらりと理沙のほうを向くと、さわやかな香りがするはずの髪が逆立っている。なるほど、これが『怒髪天を衝く』というものなのか。って、冷静に分析してる場合じゃない!
「そういえば、理沙のお父さんがいいものあるって言ってなかったっけ?ほら、データを保存するときに使えるやつ」
「ああ、Realm(レルム)のこと? そうか、凛子ちゃん、Realmなら凛子ちゃんの目的にピッタリかも」
「Realmってなんや?」
「Realmっていうのは、データベースなの。XcodeにはもともとCoreDataっていうデータベース機能があるでしょ。それと同じような機能をもっと簡単に提供してくれるのがRealmなの」
「CoreDataならなんとなくおぼえてるような……。そうか、いまはRealmゆうデータベースがあるんやな。ほんならアプリガールとしては、それに挑戦してみなあかんな」
ほっ、理沙の気がそれてなんとか元にもどったみたい。僕はそのまま場をもりあげるためになるべく明るい声で言う。
「じゃあさ、せっかくだからみんなでRealmを使いながら勉強してみようよ」
「せやせや、みんなでやろうや」
「わたしもパパからちょっと教えてもらっただけだからくわしくないし、ちょうどいいわね。それなら、まずはRealmのホームページを見ながらXcodeにインストールしてみましょう」
「よっしゃ、Realmで検索や。えーっと、あ、これやな」
Realm is a mobile database: a replacement for SQLite & Core Data
「まずはここから必要なデータをダウンロードするのよ。今回はSwiftをつかうから、『Swift』を選んでね」
「どれどれ。おっ、Realmフォルダができてるやん」
「つぎはね、RealmフォルダのなかにあるiOSフォルダを開いて、そのなかのSwift-1.2フォルダを開いてね」
「そのなかにあるふたつのファイル『Realm.framework』と『RealmSwift.framework』をXcodeのプロジェクトの『Embedded Frameworks』にドラッグ&ドロップするの」
「ほうほう、こいつらやな。よいしょっと。理沙、なんかメッセージがでたで!」
「それはね、ふたつのファイルをこのプロジェクトに追加してもいい? って聞いてるの。『Copy items if needed』にチェックをいれて『Finish』ボタンを押してね」
「ポチッとな」
凛子ってときどきネタが古いんだよな。ホントに『向こう』の世界からやってきたんだろうか? そもそも何歳なんだ?
「おい丈夫! 自分、いまうちのワルクチ考えとったやろ?」
「いやいやいやいや。まさかそんなワケないよ(なんでわかったんだろ?)」
「ほんまか〜? あやしいなあ」
凛子はずいっと体をよせると、僕の顔をのぞきこんだ。その碧い瞳に僕のすがたが映ると、僕はまるで凛子の世界に閉じこめられたような錯覚をおぼえる。逃れられないおりのなかで、しっぽをまるめてふるえるリスのように……。
「まあええわ。ほんで理沙、つぎはどうするんや?」
おっと、いけない。よそ見してたら、また理沙に怒られてしまう。
「つぎはこのプロジェクトの設定をするのよ。ねー、た・け・お・く・ん!」
ああっ、やっぱり怒ってる。なんで理沙はああいうときにいつも怒るんだろう?
「設定って、なにするんや?」
「まずは、ここにパスをいれるの」
「えっと、画面左のナビゲータエリアでプロジェクト名が書いてるとこをクリックしてと。ほんで、『TARGETS』のなかにある白いブロックみたいなユニットテストのターゲットを選択してと」
「それから、『Build Settings』タブのなかにある『Search Paths』の『Framework Search Paths』に、さっき追加した『RealmSwift.framework』の親フォルダのパスを追加するの」
「親フォルダのパス、パス、ぱーす、ゆうことは、『$(PROJECT_DIR)』でええんやな。ほんでつぎは?」
「『TARGETS』のなかにあるもうひとつのアイコンがあるでしょ」
「鉛筆とペンとさしがAみたいになってるやつのことか?」
「そうそう。そのアプリケーションのターゲットアイコンを選択して、『Build Phases』タブで『+』ボタンを押すの。それから『New Run Script Phase』を選んで、つぎのスクリプトをそのままコピペしてね」
bash “${BUILTPRODUCTSDIR}/${FRAMEWORKSFOLDERPATH}/Realm.framework/strip-frameworks.sh”
「はい、これでおしまいよ」
「よっしゃあ! ほんならさっそくRealmをつかってみようやないか」
「まって、凛子ちゃん!」
「なんや、理沙? なにか問題でもおこったんか!?」
「紙面のつごうで今回はここまでなの。Realmをつかうのはまた次回ね」
「紙面って、これブログやん!」
「シッ! 作者のひとがそのネタをつかいたかっただけなのよ。そこはつっこまないであげて」
「そっ、そうか。ほんならしゃーないな。じゃあ、みなさん。また次回よろしゅうな」
「さようなら〜」
「僕のことも忘れないでね〜」
「それではまた次回お会いしましょう」
晴れた日も、曇った日も、素敵な一日をあなたに。
参考文献&アプリ
【関連する記事】
新感覚ふわふわアクションゲームAstrowandererをリリースしました! | はれときどきくもりZ
新しいぱぱんだっこでパパも健康になろう! iOS8のヘルスケアアプリに対応しました。 | はれときどきくもりZ
ぱぱんだっこLINEスタンプをリリースしました! ゆるくて楽しいほのぼのスタンプです。 | はれときどきくもりZ
アプリガール 〜キーボードをシュッとねPart1〜【創作の本棚】 | はれときどきくもりZ
Written with MyEditor.
本を出版しました!