SlideShare a Scribd company logo
shotAlertにおけるRealm活
⽤用事例例
株式会社インディバル  平塚
今回発表させて頂いてる経緯
¡  先⽇日弊社にて、Realmの勉強会を開催させていただ
きました
¡  http://connpass.com/event/14652/
¡  主催者は別の⽅方です
¡  その際に、弊社アプリでもRealmを使ってまして、
その話をLTでした際に、今⽇日のお話をいただきまして、
ここで喋らせてもらっております
¡  本⽇日はよろしくお願いいたします。
⾃自⼰己紹介
¡  平塚と申します
¡  株式会社インディバルというところで、Webのエンジニアして
ます。
¡  たまーに、個⼈人でiOSとAndroidのアプリを作っていて、最近
は仕事でもやってます。
¡  https://twitter.com/shunsuke_h2006
¡  https://github.com/shiratsu
¡  2週に⼀一度度くらい、iOS&Androidもくもく会というものを主催
してますので、もし興味がある⽅方いましたら、connpass⾒見見て
いただけますと幸いです。
¡  http://mokumoku-shibakouen.connpass.com/
会社の紹介
¡  株式会社インディバル
¡  アルバイト、転職、⼥女女⼦子系のバイトなどの求⼈人系のサービスを
やってる会社です
¡  スマホアプリ推進室という今年年出来た部署に所属しています。
¡  shotAlertというアプリを最近更更新しました。
¡  https://play.google.com/store/apps/details?
id=jp.co.indival.shotalert
¡  https://itunes.apple.com/jp/app/duan-qibaito-arubaito-
shotalert/id517642132?mt=8
¡  副業(OKな⼈人)で⼀一⽇日だけとか働きたい⼈人がもしいましたら、
使ってみてください。
¡  こちらのアプリでRealmを採⽤用しています
今⽇日は
¡  shotAlertはshotworksというアルバイト検索索サービス
のアプリなのですが、本来、⾃自分のよく使う検索索条件
を登録して、それにマッチする求⼈人が公開されると、
プッシュ通知でお知らせが来るアプリです
¡  2012年年にリリース後、3年年放置したのでいまプッシュ通
知は⽌止まってますww
¡  shotAlertにおいて、Realmを採⽤用したのですが、そ
の経緯や、どう使ってるかに関して、話してみたいと
思います。
shotAlertにおける使ってみた
機能
¡  初期データを⽤用意して、importプロジェクトを⽤用意
して.realmファイルを作成し、そちらをiOS/Android
に読み込ませて、使⽤用する
¡  データを取得して、⼀一覧で表⽰示する
¡  migration
shotAlertでRealmを採⽤用した
理理由
¡  使ってみたかったから!
¡  初期データインポートのプロジェクトが⽤用意されていて、
扱い⽅方もわかりやすい
¡  CoreDataは初期データ作る際などは⾮非常にめんどくさい
¡  Select系の処理理がsqliteより⾼高速
¡  アプリの性質上、select系の処理理のほうが多い。
¡  RealmSwiftは採⽤用してない
¡  Realmを採⽤用しようとした当時、RealmSwiftはまだなかっ
た(3⽉月くらい)
¡  iOS7をアプリのユーザ層上、切切ることが出来ないので、まだ
ちょっと採⽤用できない
初期データをimportするプロ
ジェクト
¡  アプリを作る際に、リリース時から初期データを必要
とすることは多々あると思います。
¡  Githubに公開されているサンプルの以下を利利⽤用しま
した
¡  https://github.com/realm/realm-cocoa/tree/
master/examples/osx/objc/JSONImport
¡  Jsonで、インポートしたい型に合わせたファイルを
作成し、それを読み込ませ、.realmファイルを出⼒力力
するという仕組みです。
¡  現在objective-c以外のサンプルはない?
インポートしたデータの例例
インポート⽤用のオブジェクト
クラス
インポートプログラムの処理理
上がjsonファイルの読み込みと既存のrealmデータの削除
下が、実際のrealmオブジェクトへデータの追加です
インポートプログラムの中⾝身2
上が各オブジェクトにセットしたデータが正しく存在してるか確認しています
(デバッグ⽤用に追記してあるだけなので、基本的には不不要です。)
Realmファイルへの書き出しを⾏行行っています。
Migrationのコード
¡  すみません、objective-cです。。。
コメントにも書いてありますが、初期状態は、migrationは0になります。
なので、構成を変えるたびに1つずつ上げていけばOKです
カラム追加
テーブル追加
Migrationのコード
カラム追加
テーブル追加
Realmの制限
¡  Limitがない
¡  Distinctがない
¡  今後追加予定と聞いてます
¡  Limitは、現在もデータを実際に使うまで、メモリには載
らないので、例例えば、検索索にヒットするものを取り出し
た後、20件ずつ取り出して、⼀一覧で表⽰示しても、問題
ない
¡  Distionctも、プログラムで⼯工夫すれば、似たようなこと
は実現可能です。この辺りが参考になるかと思います
¡  https://github.com/realm/realm-cocoa/issues/1103
その他Distinctの実現⽅方法
¡  弊社の例例:以下のようなデータがあったとします
¡  モデル:エリア
¡  エリアコード
¡  エリア名
¡  都道府県名
¡  都道府県コード
¡  エリアは関東、東海などで、都道府県は、東京都、神奈奈
川県などです
¡  One to manyの関係になるかと思います
¡  こちらをSQLで⾔言うなら、
¡  Select distinct area_id,area_name from Area
¡  みたく、エリアの情報だけ抜き出すとします。
対応⽅方法
¡  Realmのslackで質問してみました。
¡  https://realm-public.slack.com/messages/general/team/
¡  岸川さんにアドバイス頂き、エリアと都道府県のモデルを分け、
リレーションを貼る⽅方法で実現させました
¡  詳しくはググったほうが早いですww
¡  Realm relationでググれば⾒見見つかると思います。
ご静聴ありがとうございました

More Related Content

What's hot

20150606 mtddc meetup_tohoku
20150606 mtddc meetup_tohoku20150606 mtddc meetup_tohoku
20150606 mtddc meetup_tohoku
Yasufumi Nishiyama
 
だんグラ用お玉コントローラ
だんグラ用お玉コントローラだんグラ用お玉コントローラ
だんグラ用お玉コントローラ
Bizan Nishimura
 
iOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいことiOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいこと
asakahara
 
Xamarin.iOS 開発者から見た Swift
Xamarin.iOS 開発者から見た SwiftXamarin.iOS 開発者から見た Swift
Xamarin.iOS 開発者から見た Swift
Tomohiro Suzuki
 
Spc10 s-16
Spc10 s-16Spc10 s-16
Spc10 s-16
sendenkaigi
 
Swift初心者がSpriteKitで一ヶ月でゲームを作った話
Swift初心者がSpriteKitで一ヶ月でゲームを作った話Swift初心者がSpriteKitで一ヶ月でゲームを作った話
Swift初心者がSpriteKitで一ヶ月でゲームを作った話
Masaaki Kakimoto
 

What's hot (6)

20150606 mtddc meetup_tohoku
20150606 mtddc meetup_tohoku20150606 mtddc meetup_tohoku
20150606 mtddc meetup_tohoku
 
だんグラ用お玉コントローラ
だんグラ用お玉コントローラだんグラ用お玉コントローラ
だんグラ用お玉コントローラ
 
iOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいことiOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいこと
 
Xamarin.iOS 開発者から見た Swift
Xamarin.iOS 開発者から見た SwiftXamarin.iOS 開発者から見た Swift
Xamarin.iOS 開発者から見た Swift
 
Spc10 s-16
Spc10 s-16Spc10 s-16
Spc10 s-16
 
Swift初心者がSpriteKitで一ヶ月でゲームを作った話
Swift初心者がSpriteKitで一ヶ月でゲームを作った話Swift初心者がSpriteKitで一ヶ月でゲームを作った話
Swift初心者がSpriteKitで一ヶ月でゲームを作った話
 

Similar to Realm meetup presentation

Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207
Kanako Kobayashi
 
Realm meet up #17
Realm meet up #17Realm meet up #17
Realm meet up #17
Daisuke Nagata
 
JavaScript祭りLTでmonacaを紹介
JavaScript祭りLTでmonacaを紹介JavaScript祭りLTでmonacaを紹介
JavaScript祭りLTでmonacaを紹介
Yuki Okamoto
 
130329 perl casual_ruik
130329 perl casual_ruik130329 perl casual_ruik
130329 perl casual_ruik
Rui Kimura
 
Swift instagram viewer
Swift instagram viewerSwift instagram viewer
Swift instagram viewer
Shintaro Kaneko
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerTakuro Sasaki
 
イテレーティブでインクリメンタルな技術書の作り方
イテレーティブでインクリメンタルな技術書の作り方イテレーティブでインクリメンタルな技術書の作り方
イテレーティブでインクリメンタルな技術書の作り方
Keiichiro Shikano
 
iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術
Tomoki Hasegawa
 
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
Jun Nogata
 
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応
Tomoki Hasegawa
 
Appmethodで何か作ってみる
Appmethodで何か作ってみるAppmethodで何か作ってみる
Appmethodで何か作ってみる
You&I
 
駅すぱあとWebサービスを使ってAlexaに駅しりとりスキルを ローンチするまで
駅すぱあとWebサービスを使ってAlexaに駅しりとりスキルを ローンチするまで駅すぱあとWebサービスを使ってAlexaに駅しりとりスキルを ローンチするまで
駅すぱあとWebサービスを使ってAlexaに駅しりとりスキルを ローンチするまで
Ryusuke Takeda
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
Yuzo Hebishima
 
なるほどわかった!平成最後のAzureとAppService編
なるほどわかった!平成最後のAzureとAppService編なるほどわかった!平成最後のAzureとAppService編
なるほどわかった!平成最後のAzureとAppService編
Takayuki Fuwa
 
Osc2008tokyo秋 なでしこ勉強会
Osc2008tokyo秋 なでしこ勉強会Osc2008tokyo秋 なでしこ勉強会
Osc2008tokyo秋 なでしこ勉強会kujirahand kujira
 
勉強会20140319 rspec_capybara
勉強会20140319 rspec_capybara勉強会20140319 rspec_capybara
勉強会20140319 rspec_capybaraShugo Numano
 
React way at_eight
React way at_eightReact way at_eight
React way at_eight
Hideharu Okuma
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublishedYoichiro Sakurai
 
Hello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hello Girl's World!!@女子エンジニアLT会 #dotsgirlsHello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hikari Fukasawa
 

Similar to Realm meetup presentation (20)

Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207
 
Realm meet up #17
Realm meet up #17Realm meet up #17
Realm meet up #17
 
JavaScript祭りLTでmonacaを紹介
JavaScript祭りLTでmonacaを紹介JavaScript祭りLTでmonacaを紹介
JavaScript祭りLTでmonacaを紹介
 
130329 perl casual_ruik
130329 perl casual_ruik130329 perl casual_ruik
130329 perl casual_ruik
 
Swift instagram viewer
Swift instagram viewerSwift instagram viewer
Swift instagram viewer
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
 
イテレーティブでインクリメンタルな技術書の作り方
イテレーティブでインクリメンタルな技術書の作り方イテレーティブでインクリメンタルな技術書の作り方
イテレーティブでインクリメンタルな技術書の作り方
 
20150315 realmlt
20150315 realmlt20150315 realmlt
20150315 realmlt
 
iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術
 
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
 
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応
 
Appmethodで何か作ってみる
Appmethodで何か作ってみるAppmethodで何か作ってみる
Appmethodで何か作ってみる
 
駅すぱあとWebサービスを使ってAlexaに駅しりとりスキルを ローンチするまで
駅すぱあとWebサービスを使ってAlexaに駅しりとりスキルを ローンチするまで駅すぱあとWebサービスを使ってAlexaに駅しりとりスキルを ローンチするまで
駅すぱあとWebサービスを使ってAlexaに駅しりとりスキルを ローンチするまで
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
なるほどわかった!平成最後のAzureとAppService編
なるほどわかった!平成最後のAzureとAppService編なるほどわかった!平成最後のAzureとAppService編
なるほどわかった!平成最後のAzureとAppService編
 
Osc2008tokyo秋 なでしこ勉強会
Osc2008tokyo秋 なでしこ勉強会Osc2008tokyo秋 なでしこ勉強会
Osc2008tokyo秋 なでしこ勉強会
 
勉強会20140319 rspec_capybara
勉強会20140319 rspec_capybara勉強会20140319 rspec_capybara
勉強会20140319 rspec_capybara
 
React way at_eight
React way at_eightReact way at_eight
React way at_eight
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublished
 
Hello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hello Girl's World!!@女子エンジニアLT会 #dotsgirlsHello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hello Girl's World!!@女子エンジニアLT会 #dotsgirls
 

Realm meetup presentation