Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
shotAlertにおけるRealm活
⽤用事例例
株式会社インディバル  平塚
今回発表させて頂いてる経緯
¡  先⽇日弊社にて、Realmの勉強会を開催させていただ
きました
¡  http://connpass.com/event/14652/
¡  主催者は別の⽅方です
¡  その際に、弊社アプリでもReal...
⾃自⼰己紹介
¡  平塚と申します
¡  株式会社インディバルというところで、Webのエンジニアして
ます。
¡  たまーに、個⼈人でiOSとAndroidのアプリを作っていて、最近
は仕事でもやってます。
¡  https://twi...
会社の紹介
¡  株式会社インディバル
¡  アルバイト、転職、⼥女女⼦子系のバイトなどの求⼈人系のサービスを
やってる会社です
¡  スマホアプリ推進室という今年年出来た部署に所属しています。
¡  shotAlertというアプリを最...
今⽇日は
¡  shotAlertはshotworksというアルバイト検索索サービス
のアプリなのですが、本来、⾃自分のよく使う検索索条件
を登録して、それにマッチする求⼈人が公開されると、
プッシュ通知でお知らせが来るアプリです
¡  2...
shotAlertにおける使ってみた
機能
¡  初期データを⽤用意して、importプロジェクトを⽤用意
して.realmファイルを作成し、そちらをiOS/Android
に読み込ませて、使⽤用する
¡  データを取得して、⼀一覧で表⽰示...
shotAlertでRealmを採⽤用した
理理由
¡  使ってみたかったから!
¡  初期データインポートのプロジェクトが⽤用意されていて、
扱い⽅方もわかりやすい
¡  CoreDataは初期データ作る際などは⾮非常にめんどくさい
¡...
初期データをimportするプロ
ジェクト
¡  アプリを作る際に、リリース時から初期データを必要
とすることは多々あると思います。
¡  Githubに公開されているサンプルの以下を利利⽤用しま
した
¡  https://github...
インポートしたデータの例例
インポート⽤用のオブジェクト
クラス
インポートプログラムの処理理
上がjsonファイルの読み込みと既存のrealmデータの削除
下が、実際のrealmオブジェクトへデータの追加です
インポートプログラムの中⾝身2
上が各オブジェクトにセットしたデータが正しく存在してるか確認しています
(デバッグ⽤用に追記してあるだけなので、基本的には不不要です。)
Realmファイルへの書き出しを⾏行行っています。
Migrationのコード
¡  すみません、objective-cです。。。
コメントにも書いてありますが、初期状態は、migrationは0になります。
なので、構成を変えるたびに1つずつ上げていけばOKです
カラム追加
テーブル追加
Migrationのコード
カラム追加
テーブル追加
Realmの制限
¡  Limitがない
¡  Distinctがない
¡  今後追加予定と聞いてます
¡  Limitは、現在もデータを実際に使うまで、メモリには載
らないので、例例えば、検索索にヒットするものを取り出し
た後、20件...
その他Distinctの実現⽅方法
¡  弊社の例例:以下のようなデータがあったとします
¡  モデル:エリア
¡  エリアコード
¡  エリア名
¡  都道府県名
¡  都道府県コード
¡  エリアは関東、東海などで、都道府県は...
対応⽅方法
¡  Realmのslackで質問してみました。
¡  https://realm-public.slack.com/messages/general/team/
¡  岸川さんにアドバイス頂き、エリアと都道府県のモデルを分け...
ご静聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

Realm meetup presentation

1,199 views

Published on

shotAlertにおけるRealmの扱いについて

Published in: Engineering
  • Be the first to comment

Realm meetup presentation

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

×