SlideShare a Scribd company logo
1 of 13
Download to read offline
CoreDataと比較してRealmを使ったまとめ
∼ コメント機能付き記録アプリサンプルで見る実装のちがい ∼
自己紹介
✦
今までの仕事履歴(本業)
石川県金沢市生まれ
本業はサーバーサイドのプログラマ ※Rails&PHP使い
26歳∼31歳:Ruby / PHPのプログラマ
23歳∼25歳:Webデザイナー兼ディレクター
Objective-C歴:7ヶ月くらい Swift歴:半年弱
趣味:シルバーアクセサリー集め・スイーツ作り・開発
女子向け・グルメ・エンタメ関連のお仕事が多い&最近はRailsやLaravelも
Qiita : http://qiita.com/fumiyasac@github
Github : https://github.com/fumiyasac
✦
酒井文也(さかい ふみや)
東京(大塚)住まいの31歳
こんな格好してますが…
遊び人ではなくエンジニアです
フリーランスっぽいですが…
会社からお給料もらっているマンです
経験豊富ではありません
ちゃんとした実務経験は3weekです
※心の叫び❶
※心の叫び❷
※心の叫び❸
これまでつくったもの(2015年)
① 簡易家計簿アプリ「Coffre」
② ゲームアプリ「10秒虫食い算」
・カレンダーを自作しています
・シンプルなお小遣い帳感覚で支出管理できます
・全問正解者ほとんどいません…
・不定期ですがコラムも書いています
・サーバーサイドはRuby on Railsを使用
http://www.coffre.me/
・デザインにもこだわってみました(特にグラフ)
・実はちょっとバグがあります。
・問題は今後追加予定(現在110問収録)
個人的にはなりますが、他にもアプリ・Webサービスなど開発中です(2016年も宜しくお願いします)
・サイト等は次回のアップデートで公開予定
http://blog.just1factory.net/services/284
・若干の中毒性を含みます
サンプル制作でRealmを試してみて
 (ぼくはこう思った)
特に上記に挙げたの3つのポイントは、サーバーサイドの開発経験があればデジャヴ感はあるはず…
✦
今までCoreDataを使っていたけど試してみたら便利だったよ!
① CocoaPods経由のRealmSwiftのインストールがとても手軽
・CocoaPodsだけではなく、手動やCarthageでインストールすることも可能
② PHPやRubyでつくられたフレームワークの書き方に近い
・StackOverflowやサポート専用Slackもあるので気軽に聞ける安心感は大きい
・特に感じたのは、Ruby on Railsの「ActiveRecord」やCakePHPやLaravelなどのORMに近い書き
 方やModelクラスの考え方が個人的に馴染みやすかった(メソッドチェーンだって可能)
・ViewControllerに記載する処理をシンプルにしやすい
③ 充実した公式ドキュメントやQiitaでのノウハウの多さ
・実装例や書き方・メソッドの解説等が本当に豊富(CoreDataのドキュメントはちょっと読みにくい)
※そんな素敵な公式ドキュメント:https://realm.io/jp/docs/swift/latest/
 → この公式ドキュメントとQiitaで公開されているノウハウを元に今回のサンプルを作りました!
今回のサンプルのポイント(1)
 (ぼくはこう思った)
RealmとCoreDaraを比べるには同じ振る舞いの処理を比べようと思った ※Realmだけのブランチもあり
✦
RealmとCoreDataで処理は全く同じことをしている
Realm選択時 CoreData選択時
❶登録されているDBの切り替えが
セグメントコントロールでできる
※Realmのみのものも用意
❷UISearchBarで検索したい
文字列を入れるとタイトル or 詳細内容で
部分一致検索ができる
❸評価の高い順 or 新しい投稿順
で内容がソートできる
今回のサンプルのポイント(2)
 (ぼくはこう思った)
CoreDataのアソシエーションは癖がかなりあるため、今回はあえて使用せずに[1:n]の対応をしました
✦
1件食べ物&おみやげデータに紐づくn件のコメント機能
コメント一覧 データの追加部分
❶まずは食べ物&おみやげデータを
登録する。そしたら評価とコメントをn件
追加できるようになる
❷食べ物&おみやげデータ及び
それに紐づくコメントを画像付きで
追加することができる
❸コメントを登録したタイミング
で評価の平均値を算出する
実現のための構成と設計
 (ぼくはこう思った)
いきなりモデルを作成するのではなく、テーブル定義や初期値に関してはしっかりと定義をしておくと良い
✦
RealmにおけるDB設計をする際のポイント
・プライマリキーやテーブル同士の関連付け、初期値の設定はModelクラスで行う
Omiyage.id
・ビジネスロジックに相当するような処理に関してはできるだけModelクラスに記述する
1 n OmiyageComment.omiyage_id ※今回は手動での関連付け
・画像データ(UIImage型)はRealmに登録する際はNSData?型に変換する必要がある
サンプルとデモの紹介
(ぼくはこう思った)
RealmでのDB定義やメソッド等の解説は後述しますが実装もかなり見通しが良くなっている気がします
✦
実際のサンプルで動きを確認しながら見ていきましょう!
① Github
https://github.com/fumiyasac/DatabasePersistencePattern
② Qiita
・Realmを使用したコメント機能付き記録アプリで見る実装ポイント(CoreDataと比較付き)
http://qiita.com/fumiyasac@github/items/cbdf4d36cc14e213aaa7
 → まだまだ未完全な部分もあるのでサンプル共々今後修正&追記予定。
③ 解説のポイント
・サンプルはCoreDataとRealmで同一のデータの振る舞いをするのでその部分をチェック
・Model側のメソッドのざっくりとした定義と実装方法を知ろう
デモりますので画面に注目!
④ 実際の挙動や操作に関して
CoreDataと比較した際に
✦
個人的な雑感も含むこれはいいと感じた点
PrimaryKeyやIndexに関する設定の考慮
ControllerとModelの明確な分離
・CoreDataは仕様上プライマリキーへのアクセスができなかった
→ このためテーブル定義や関連付けが複雑になってしまう場合には注意が必要
→ UUIDや(最大ID + 1)の値を使って「ダミーの一意な値」を作成するケースが多かった
・Realmではプライマリキーやインデックス等のRDBにもあるような設定が可能
・CoreDataのサンプルではControllerにデータ処理を記述しているものが多い(ViewModelを作る等は可)
→ RealmのサンプルではModelクラスに明確に分離して記述されているものが多い
・画像データ保存時の型変換の必要性やトランザクションのサポート
・最大値 / 最小値 / 平均 / 合計といった集計に関するものも用意されている
 (ぼくはこう思った)
RealmとCoreDataを比較した際に違いはもちろん、CoreDataとの共通点にも着目してみると良いです
RealmでもCoreDataと共通点がある主な事項
サンプルであり得るデータの振る舞い
✦
今回のサンプルであり得るRealmでの書き方のケーススタディ(1)
Omiyageテーブル及びOmiyageCommentテーブルへデータを1件新規登録
※OmiyageCommentに登録するケースで解説
//Realmにデータを1件登録する
let omiyageCommentObject = OmiyageComment.create()
omiyageCommentObject.comment = self.omiyageCommentDetail
omiyageCommentObject.star = self.omiyageCommentStar
omiyageCommentObject.image = self.omiyageCommentImage
omiyageCommentObject.omiyage_id = self.detailId
//登録処理
omiyageCommentObject.save()
・create()メソッドでPrimaryKeyと各プロパティの初期値が入る
・各プロパティに値をセットしていく
・save()メソッドで新規追加を実行
 (ぼくはこう思った)
書き方の部分がちょっとなんか見覚えのある感じですね。各Modelクラスを確認しておきましょう
・ざっくりと解説
create()メソッドでインスタンス
作成タイミングでPrimaryKeyが
付与されるます。
※詳細はOmiyageComment.swift
サンプルであり得るデータの振る舞い
✦
今回のサンプルであり得るRealmでの書き方のケーススタディ(2)
 (ぼくはこう思った)
集計に関する処理の方法やfilter()メソッドでの検索条件の記述方法をしっかりと押さえておきましょう
OmiyageCommentを1件新規登録後にOmiyageデータの評価平均値を更新
//食べもの&おみやげデータの評価平均値の算出 [AddComment.swift]
let average = OmiyageComment.getAverage(1)
Omiyage.updateAverage(average, target_id: 1)
//食べもの&おみやげデータIDに紐づくの評価平均値の計算 [OmiyageComment.swift]
realm.objects(OmiyageComment).filter("omiyage_id = %@", 1).average(“star")
//食べもの&おみやげデータIDに紐づくの評価平均値の更新 [Omiyage.swift]
let omiyages = realm.objects(Omiyage).filter("id = %@", 1)
try! realm.write {
omiyages.setValue(average, forKey: "average")
}
・filter()メソッドで条件を指定する ※今回はomiyage_idでの絞り込み
・RealmSwiftで更新処理を行う場合はwrite {…} 内にsetValueで更新したい値を入れる
・ざっくりと解説
fliter()メソッドでの条件指定の方法
に関しては公式ドキュメントをCheck!
サンプルであり得るデータの振る舞い
✦
今回のサンプルであり得るRealmでの書き方のケーススタディ(3)
 (ぼくはこう思った)
NSPredicateやsorted()・メソッドチェーン等を使用して複雑なクエリに該当する処理も記述できる!
Omiyageデータのソーティングと検索キーワードとの部分一致
//食べもの&おみやげデータのソーティングと検索キーワードに一致するデータの取得 [Omiyage.swift]
//※今回の例では「検索キーワード:牛丼」、「ソーティング:平均評価」、「順番:大きい順」を想定
var omiyages: Results<Omiyage>
let predicate = NSPredicate(format: "title CONTAINS %@ OR detail CONTAINS %@", “牛丼”, “牛丼”)
omiyages = realm.objects(Omiyage).sorted("average", ascending: false).filter(predicate)
・NSPredicate型のインスタンスで検索条件を設定
・CONTAINS %@ で該当カラムに牛丼が含まれているかを見る
・sorted( average , ascending: false)では、
 第1引数:ソート対象のカラム、第2引数:大きい順 or 小さい順の指定
・ざっくりと解説
fliter()メソッドでの条件は
NSPredicateを使うと
複雑な場合何かと便利です。
・SQLでのイメージ
SELECT * FROM omiyage WHERE (title LIKE '%牛丼%' OR detail LIKE '%牛丼%') ORDER BY average DESC;
今後自分のアプリ開発においても積極的に活用してどんどん実際のアプリやショーケースを増やしたい!
✦
RealmでのModelの記載は他のフレームワークのORMとも似ている
セッションのまとめ
✦
ControllerとModelを明確に分けてFatController防止にもなる
✦
CoreDataで使用できるような集計関数等やトランザクションにも対応して
いるので意外と共通点もある
✦ 複雑なクエリになるような処理でも割とシンプル&直感的に記述可能
✦
公式ドキュメントの充実さはもちろんSlack上でのオンラインでのサポート
等の体制が整っているのはとてもありがたい!
ご静聴ありがとうございました!
✦
PrimaryKeyやインデックス等RDBでもよくある設定もModelにできる

More Related Content

What's hot

What's hot (20)

自分のライブラリを1年運用をして見た振り返りと知見
自分のライブラリを1年運用をして見た振り返りと知見自分のライブラリを1年運用をして見た振り返りと知見
自分のライブラリを1年運用をして見た振り返りと知見
 
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
 
ハンドメイドカレンダー(プレゼン用)
ハンドメイドカレンダー(プレゼン用)ハンドメイドカレンダー(プレゼン用)
ハンドメイドカレンダー(プレゼン用)
 
時間制限付きクイズアプリをつくる
時間制限付きクイズアプリをつくる時間制限付きクイズアプリをつくる
時間制限付きクイズアプリをつくる
 
RxSwiftでの実装練習の記録ノートとはじめの一歩
RxSwiftでの実装練習の記録ノートとはじめの一歩RxSwiftでの実装練習の記録ノートとはじめの一歩
RxSwiftでの実装練習の記録ノートとはじめの一歩
 
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Firebaseでのファイルアップロード処理と便利ライブラリの紹介Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
 
言語は違うけどもインスパイアされて作られたとあるライブラリ(PaperclipとLaravel-stapler)
言語は違うけどもインスパイアされて作られたとあるライブラリ(PaperclipとLaravel-stapler)言語は違うけどもインスパイアされて作られたとあるライブラリ(PaperclipとLaravel-stapler)
言語は違うけどもインスパイアされて作られたとあるライブラリ(PaperclipとLaravel-stapler)
 
実装とアプリ開発と独学でiOSアプリ開発と向き合うこと
実装とアプリ開発と独学でiOSアプリ開発と向き合うこと実装とアプリ開発と独学でiOSアプリ開発と向き合うこと
実装とアプリ開発と独学でiOSアプリ開発と向き合うこと
 
カスタムトランジションやアニメーションを活用した「写真を生かすUI」のサンプル
カスタムトランジションやアニメーションを活用した「写真を生かすUI」のサンプルカスタムトランジションやアニメーションを活用した「写真を生かすUI」のサンプル
カスタムトランジションやアニメーションを活用した「写真を生かすUI」のサンプル
 
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
カスタムトランジションやジェスチャーを生かしたUIの実装ポイントカスタムトランジションやジェスチャーを生かしたUIの実装ポイント
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
 
あのアプリの動きをUIKitのみでDIYしてみる(part2)
あのアプリの動きをUIKitのみでDIYしてみる(part2)あのアプリの動きをUIKitのみでDIYしてみる(part2)
あのアプリの動きをUIKitのみでDIYしてみる(part2)
 
デザイナーだった記憶を忘れないために自分なりに気をつけていること
デザイナーだった記憶を忘れないために自分なりに気をつけていることデザイナーだった記憶を忘れないために自分なりに気をつけていること
デザイナーだった記憶を忘れないために自分なりに気をつけていること
 
NativeBaseをはじめとするUIに関する ライブラリを使ったサンプルを作ってみた
NativeBaseをはじめとするUIに関する ライブラリを使ったサンプルを作ってみたNativeBaseをはじめとするUIに関する ライブラリを使ったサンプルを作ってみた
NativeBaseをはじめとするUIに関する ライブラリを使ったサンプルを作ってみた
 
30代からのプライベートiOSデベロッパーのとしての軌跡
30代からのプライベートiOSデベロッパーのとしての軌跡30代からのプライベートiOSデベロッパーのとしての軌跡
30代からのプライベートiOSデベロッパーのとしての軌跡
 
ライブラリでよくある動きをUIKitのみでDIYしてみる(Part1)
ライブラリでよくある動きをUIKitのみでDIYしてみる(Part1)ライブラリでよくある動きをUIKitのみでDIYしてみる(Part1)
ライブラリでよくある動きをUIKitのみでDIYしてみる(Part1)
 
ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)
ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)
ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)
 
Rails5とAPIモードについての解説
Rails5とAPIモードについての解説Rails5とAPIモードについての解説
Rails5とAPIモードについての解説
 
Railsの現場に入る前のお話(勉強法)
Railsの現場に入る前のお話(勉強法)Railsの現場に入る前のお話(勉強法)
Railsの現場に入る前のお話(勉強法)
 
LaravelでDBを使用しないbasic認証を簡単につくるtips
LaravelでDBを使用しないbasic認証を簡単につくるtipsLaravelでDBを使用しないbasic認証を簡単につくるtips
LaravelでDBを使用しないbasic認証を簡単につくるtips
 
デザインにもこだわったUIの事始め (Episode1)
デザインにもこだわったUIの事始め (Episode1)デザインにもこだわったUIの事始め (Episode1)
デザインにもこだわったUIの事始め (Episode1)
 

Viewers also liked

CoreDataでのsubqueryの使い方
CoreDataでのsubqueryの使い方CoreDataでのsubqueryの使い方
CoreDataでのsubqueryの使い方
Masaru Ichikawa
 
MobileCity: Overview of ObjectiveC
MobileCity: Overview of ObjectiveCMobileCity: Overview of ObjectiveC
MobileCity: Overview of ObjectiveC
Allan Davis
 
CoreData 非同期データ処理
CoreData 非同期データ処理CoreData 非同期データ処理
CoreData 非同期データ処理
次朗 永島
 
IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針
Ken Morishita
 
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigiReact Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
Yukiya Nakagawa
 

Viewers also liked (20)

Swiftのswitchはとってもパワフル!
Swiftのswitchはとってもパワフル!Swiftのswitchはとってもパワフル!
Swiftのswitchはとってもパワフル!
 
やはりお前らのCore Dataの使い方も間違っている
やはりお前らのCore Dataの使い方も間違っているやはりお前らのCore Dataの使い方も間違っている
やはりお前らのCore Dataの使い方も間違っている
 
Deep dive into oss written in swift
Deep dive into oss written in swiftDeep dive into oss written in swift
Deep dive into oss written in swift
 
リテラルと型の続きの話 #__swift__
リテラルと型の続きの話 #__swift__リテラルと型の続きの話 #__swift__
リテラルと型の続きの話 #__swift__
 
CoreDataでのsubqueryの使い方
CoreDataでのsubqueryの使い方CoreDataでのsubqueryの使い方
CoreDataでのsubqueryの使い方
 
MobileCity: Overview of ObjectiveC
MobileCity: Overview of ObjectiveCMobileCity: Overview of ObjectiveC
MobileCity: Overview of ObjectiveC
 
Iphone programming: Core Data Tutorial for iOS
Iphone programming: Core Data Tutorial for iOSIphone programming: Core Data Tutorial for iOS
Iphone programming: Core Data Tutorial for iOS
 
StoryboardでUIを使いまわす
StoryboardでUIを使いまわすStoryboardでUIを使いまわす
StoryboardでUIを使いまわす
 
SansanのEightアプリでRealmを導入した件
SansanのEightアプリでRealmを導入した件SansanのEightアプリでRealmを導入した件
SansanのEightアプリでRealmを導入した件
 
CoreData 非同期データ処理
CoreData 非同期データ処理CoreData 非同期データ処理
CoreData 非同期データ処理
 
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumSwift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
 
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニックOSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
 
マルチ テナント クラウド アプリケーションの設計手法
マルチ テナント クラウド アプリケーションの設計手法マルチ テナント クラウド アプリケーションの設計手法
マルチ テナント クラウド アプリケーションの設計手法
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
 
【 ITベンチャーを支えるテクノロジー 】チャットワークを支える技術|Chatwork株式会社
【 ITベンチャーを支えるテクノロジー 】チャットワークを支える技術|Chatwork株式会社【 ITベンチャーを支えるテクノロジー 】チャットワークを支える技術|Chatwork株式会社
【 ITベンチャーを支えるテクノロジー 】チャットワークを支える技術|Chatwork株式会社
 
IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
実践業務を爆速でこなすtipsとgenerics
実践業務を爆速でこなすtipsとgenerics 実践業務を爆速でこなすtipsとgenerics
実践業務を爆速でこなすtipsとgenerics
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigiReact Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
 

Similar to Core dataと比較してrealmを使ったまとめ

西区勉強会用スライド
西区勉強会用スライド西区勉強会用スライド
西区勉強会用スライド
Hiromi Kai
 

Similar to Core dataと比較してrealmを使ったまとめ (14)

Paperclip&amazon s3で画像アップロード
Paperclip&amazon s3で画像アップロードPaperclip&amazon s3で画像アップロード
Paperclip&amazon s3で画像アップロード
 
20150215勉強会
20150215勉強会20150215勉強会
20150215勉強会
 
ハンドメイドカレンダー第15回potatotips用
ハンドメイドカレンダー第15回potatotips用ハンドメイドカレンダー第15回potatotips用
ハンドメイドカレンダー第15回potatotips用
 
いわみくとMeetup第15回
いわみくとMeetup第15回いわみくとMeetup第15回
いわみくとMeetup第15回
 
在宅フリーランスで 失敗した話3選
在宅フリーランスで 失敗した話3選在宅フリーランスで 失敗した話3選
在宅フリーランスで 失敗した話3選
 
Ruby and I at 神奈川Ruby会議01
Ruby and I at 神奈川Ruby会議01Ruby and I at 神奈川Ruby会議01
Ruby and I at 神奈川Ruby会議01
 
西区勉強会用スライド
西区勉強会用スライド西区勉強会用スライド
西区勉強会用スライド
 
React way at_eight
React way at_eightReact way at_eight
React way at_eight
 
2015 12-19-ruby rails
2015 12-19-ruby rails2015 12-19-ruby rails
2015 12-19-ruby rails
 
omotesando.rb_20231005.pdf
omotesando.rb_20231005.pdfomotesando.rb_20231005.pdf
omotesando.rb_20231005.pdf
 
2015 07-04-ruby rails
2015 07-04-ruby rails2015 07-04-ruby rails
2015 07-04-ruby rails
 
田舎暮らし流エンジニアスキルアップ術
田舎暮らし流エンジニアスキルアップ術田舎暮らし流エンジニアスキルアップ術
田舎暮らし流エンジニアスキルアップ術
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
 
YYPHP #13 初めてのコードレビュー
YYPHP #13 初めてのコードレビューYYPHP #13 初めてのコードレビュー
YYPHP #13 初めてのコードレビュー
 

More from Fumiya Sakai

既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
Fumiya Sakai
 
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
Fumiya Sakai
 

More from Fumiya Sakai (20)

RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
 
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒントiOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
 
少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために
 
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwiftMeasures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
 
2022年の抱負とここ数年続けてきたインプット
2022年の抱負とここ数年続けてきたインプット2022年の抱負とここ数年続けてきたインプット
2022年の抱負とここ数年続けてきたインプット
 
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
 
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
 
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)UI実装に関するセッションを 簡単ながら振り返ってみる(仮)
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)
 
最近の業務やAndroid関連のインプットと振り返り
最近の業務やAndroid関連のインプットと振り返り最近の業務やAndroid関連のインプットと振り返り
最近の業務やAndroid関連のインプットと振り返り
 
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
 
少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発
 
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察するUIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
 
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞくレイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
 
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分についてiOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
 
試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine
試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine
試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine
 
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
 
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える
 
アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集
 
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
 
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
 

Recently uploaded

Recently uploaded (12)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

Core dataと比較してrealmを使ったまとめ