Submit Search
Upload
僕らのデータ同期プラクティス
•
24 likes
•
24,239 views
Yukiya Nakagawa
Follow
2015年4月25日に行われたDroidKaigiでの発表資料です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 40
Download now
Download to read offline
Recommended
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4
Junya Suzuki
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
僕たちがすべきことはリファクタリングなのか
僕たちがすべきことはリファクタリングなのか
Ito Takumi
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
Yusuke Suzuki
サーバPUSHざっくりまとめ
サーバPUSHざっくりまとめ
Yasuhiro Mawarimichi
確実に良くするUI/UX設計
確実に良くするUI/UX設計
Takayuki Fukatsu
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
Recommended
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4
Junya Suzuki
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
僕たちがすべきことはリファクタリングなのか
僕たちがすべきことはリファクタリングなのか
Ito Takumi
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
Yusuke Suzuki
サーバPUSHざっくりまとめ
サーバPUSHざっくりまとめ
Yasuhiro Mawarimichi
確実に良くするUI/UX設計
確実に良くするUI/UX設計
Takayuki Fukatsu
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
逆境から新規事業をスタートアップする「仮説検証型アジャイル開発」の実践
逆境から新規事業をスタートアップする「仮説検証型アジャイル開発」の実践
toshihiro ichitani
自社で実運用中!Power Apps・Power Automate 活用事例
自社で実運用中!Power Apps・Power Automate 活用事例
Teruchika Yamada
TerraformとJenkinsによる外形監視管理の自動化
TerraformとJenkinsによる外形監視管理の自動化
gree_tech
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
啓 杉本
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
Tatsuo Kudo
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
Yuhei Miyazato
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
オトナのTDD(テスト駆動開発)入門
オトナのTDD(テスト駆動開発)入門
Yoshinori Yamanouchi
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
組織にアジャイルの構造を作る
組織にアジャイルの構造を作る
toshihiro ichitani
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
増田 亨
smarthrを支えるインフラ
smarthrを支えるインフラ
tei-k
なぜなに?ユーザエクスペリエンスマップ(概要編)
なぜなに?ユーザエクスペリエンスマップ(概要編)
Naoki Hashimoto
プロトコルから見るID連携
プロトコルから見るID連携
Naohiro Fujie
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)
DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)
MicroAd, Inc.(Engineer)
デブサミ関西2011 JAZ紹介
デブサミ関西2011 JAZ紹介
Keiji Kamebuchi
垣根のないモノ作り!
垣根のないモノ作り!
Yuka Tokuyama
More Related Content
What's hot
逆境から新規事業をスタートアップする「仮説検証型アジャイル開発」の実践
逆境から新規事業をスタートアップする「仮説検証型アジャイル開発」の実践
toshihiro ichitani
自社で実運用中!Power Apps・Power Automate 活用事例
自社で実運用中!Power Apps・Power Automate 活用事例
Teruchika Yamada
TerraformとJenkinsによる外形監視管理の自動化
TerraformとJenkinsによる外形監視管理の自動化
gree_tech
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
啓 杉本
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
Tatsuo Kudo
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
Yuhei Miyazato
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
オトナのTDD(テスト駆動開発)入門
オトナのTDD(テスト駆動開発)入門
Yoshinori Yamanouchi
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
組織にアジャイルの構造を作る
組織にアジャイルの構造を作る
toshihiro ichitani
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
増田 亨
smarthrを支えるインフラ
smarthrを支えるインフラ
tei-k
なぜなに?ユーザエクスペリエンスマップ(概要編)
なぜなに?ユーザエクスペリエンスマップ(概要編)
Naoki Hashimoto
プロトコルから見るID連携
プロトコルから見るID連携
Naohiro Fujie
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)
DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)
MicroAd, Inc.(Engineer)
What's hot
(20)
逆境から新規事業をスタートアップする「仮説検証型アジャイル開発」の実践
逆境から新規事業をスタートアップする「仮説検証型アジャイル開発」の実践
自社で実運用中!Power Apps・Power Automate 活用事例
自社で実運用中!Power Apps・Power Automate 活用事例
TerraformとJenkinsによる外形監視管理の自動化
TerraformとJenkinsによる外形監視管理の自動化
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
オトナのTDD(テスト駆動開発)入門
オトナのTDD(テスト駆動開発)入門
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
組織にアジャイルの構造を作る
組織にアジャイルの構造を作る
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
smarthrを支えるインフラ
smarthrを支えるインフラ
なぜなに?ユーザエクスペリエンスマップ(概要編)
なぜなに?ユーザエクスペリエンスマップ(概要編)
プロトコルから見るID連携
プロトコルから見るID連携
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)
DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)
Similar to 僕らのデータ同期プラクティス
デブサミ関西2011 JAZ紹介
デブサミ関西2011 JAZ紹介
Keiji Kamebuchi
垣根のないモノ作り!
垣根のないモノ作り!
Yuka Tokuyama
北陸エンジニアず 自己紹介資料
北陸エンジニアず 自己紹介資料
Yuuki Kojima
Androidとインターネット連携
Androidとインターネット連携
高見 知英
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術
vaccho
Android IoTとプログラミング教育
Android IoTとプログラミング教育
Kenichi Yoshida
Io t最初の一歩
Io t最初の一歩
Tsubasa Yoshino
Cloud9のはじめかた
Cloud9のはじめかた
Koichiro Oki
ネイティブ原理主義
ネイティブ原理主義
Kentarou Mukunasi
Global Solution Unit
Global Solution Unit
Jun Saito
ロボットアプリ開発におけるNode-REDの活用
ロボットアプリ開発におけるNode-REDの活用
岡田 裕行
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
Takao Sumitomo
EDIX2015 デジタル教科書の未来と学校ICT
EDIX2015 デジタル教科書の未来と学校ICT
Naoki Kato
【Tokyowebmining】open compute project
【Tokyowebmining】open compute project
Junichiro Tani
香川支部キックオフ 香川支部について
香川支部キックオフ 香川支部について
yohei iwakura
IoTで5days学生インターン
IoTで5days学生インターン
Kazuya Fukumoto
第1回八子クラウドナイト事前配布・趣旨説明資料です。 20170714
第1回八子クラウドナイト事前配布・趣旨説明資料です。 20170714
知礼 八子
Microsoft AzureでスマホからIoTまで
Microsoft AzureでスマホからIoTまで
Masaki Yamamoto
LoRa入門
LoRa入門
akyamajo
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Yukiya Nakagawa
Similar to 僕らのデータ同期プラクティス
(20)
デブサミ関西2011 JAZ紹介
デブサミ関西2011 JAZ紹介
垣根のないモノ作り!
垣根のないモノ作り!
北陸エンジニアず 自己紹介資料
北陸エンジニアず 自己紹介資料
Androidとインターネット連携
Androidとインターネット連携
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術
Android IoTとプログラミング教育
Android IoTとプログラミング教育
Io t最初の一歩
Io t最初の一歩
Cloud9のはじめかた
Cloud9のはじめかた
ネイティブ原理主義
ネイティブ原理主義
Global Solution Unit
Global Solution Unit
ロボットアプリ開発におけるNode-REDの活用
ロボットアプリ開発におけるNode-REDの活用
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
EDIX2015 デジタル教科書の未来と学校ICT
EDIX2015 デジタル教科書の未来と学校ICT
【Tokyowebmining】open compute project
【Tokyowebmining】open compute project
香川支部キックオフ 香川支部について
香川支部キックオフ 香川支部について
IoTで5days学生インターン
IoTで5days学生インターン
第1回八子クラウドナイト事前配布・趣旨説明資料です。 20170714
第1回八子クラウドナイト事前配布・趣旨説明資料です。 20170714
Microsoft AzureでスマホからIoTまで
Microsoft AzureでスマホからIoTまで
LoRa入門
LoRa入門
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
More from Yukiya Nakagawa
Atomic Designは「マルチ」で真価を発揮する
Atomic Designは「マルチ」で真価を発揮する
Yukiya Nakagawa
Androidの入門書を書いたときに気にしたこと #NDS57
Androidの入門書を書いたときに気にしたこと #NDS57
Yukiya Nakagawa
React Nativeの光と闇
React Nativeの光と闇
Yukiya Nakagawa
アグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJ
アグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJ
Yukiya Nakagawa
React Native Androidはなぜ動くのか
React Native Androidはなぜ動くのか
Yukiya Nakagawa
CSS in JSの話 #friday13json
CSS in JSの話 #friday13json
Yukiya Nakagawa
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
Yukiya Nakagawa
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
Yukiya Nakagawa
AndroidLint #DroidKaigi
AndroidLint #DroidKaigi
Yukiya Nakagawa
Android再入門 〜Eclipseのことは忘れろ〜
Android再入門 〜Eclipseのことは忘れろ〜
Yukiya Nakagawa
もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4
Yukiya Nakagawa
アグリノートを支える技術
アグリノートを支える技術
Yukiya Nakagawa
NDS36 Kotlin Cute
NDS36 Kotlin Cute
Yukiya Nakagawa
NDS36 Java7&Java8
NDS36 Java7&Java8
Yukiya Nakagawa
Coworking Business Forum in NIIGATA 2013
Coworking Business Forum in NIIGATA 2013
Yukiya Nakagawa
Niigata.rb#03
Niigata.rb#03
Yukiya Nakagawa
PechaKucha Niigata #3 2013.7.27
PechaKucha Niigata #3 2013.7.27
Yukiya Nakagawa
ぼくのかんがえたふつうのあんどろいどかいはつ
ぼくのかんがえたふつうのあんどろいどかいはつ
Yukiya Nakagawa
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-Javaライブラリ
Yukiya Nakagawa
NFCLAB会津
NFCLAB会津
Yukiya Nakagawa
More from Yukiya Nakagawa
(20)
Atomic Designは「マルチ」で真価を発揮する
Atomic Designは「マルチ」で真価を発揮する
Androidの入門書を書いたときに気にしたこと #NDS57
Androidの入門書を書いたときに気にしたこと #NDS57
React Nativeの光と闇
React Nativeの光と闇
アグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJ
アグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJ
React Native Androidはなぜ動くのか
React Native Androidはなぜ動くのか
CSS in JSの話 #friday13json
CSS in JSの話 #friday13json
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
AndroidLint #DroidKaigi
AndroidLint #DroidKaigi
Android再入門 〜Eclipseのことは忘れろ〜
Android再入門 〜Eclipseのことは忘れろ〜
もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4
アグリノートを支える技術
アグリノートを支える技術
NDS36 Kotlin Cute
NDS36 Kotlin Cute
NDS36 Java7&Java8
NDS36 Java7&Java8
Coworking Business Forum in NIIGATA 2013
Coworking Business Forum in NIIGATA 2013
Niigata.rb#03
Niigata.rb#03
PechaKucha Niigata #3 2013.7.27
PechaKucha Niigata #3 2013.7.27
ぼくのかんがえたふつうのあんどろいどかいはつ
ぼくのかんがえたふつうのあんどろいどかいはつ
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-Javaライブラリ
NFCLAB会津
NFCLAB会津
Recently uploaded
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
Recently uploaded
(9)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
僕らのデータ同期プラクティス
1.
僕らのデータ同期プラクティス Nkzn@ウォーターセル株式会社 2015.4.25 DroidKaigi
2.
裏おもしろそう・・・・・!!! こっち来てくれた皆さんありがとうございます
3.
@Nkzn (なかざん) • 中川
幸哉 (28) • WaterCell Inc. @ Niigata • UIデザイナーとアーキテクトの狭間をうろう ろしている • 日本Androidの会 新潟支部(活動停止中)
4.
私とAndroid • 2009年:卒業研究でAndroid(HT-03A) • 2010年:日本Androidの会
新潟支部立ち上げ • 2011年:現職にJOINして農業者向けアプリ作り • 2013年:Eclipseと決別してAndroid Studioを導入
5.
感想文書いたら 結構話題になってビビった
6.
Where is your
user?
7.
Where is your
user?
8.
自社アプリをオフライン化 ∼試される大地∼
9.
弊社サービスについて • アグリノート http://www.agri-note.jp • 農業生産者向けの農作業管理システム •
Webブラウザ版、Androidアプリで提供 iOS版は開発準備中 • 農業版Redmineに近づいてる
10.
11.
水稲/コシヒカリ ほ場:A-2 作業予定・記録 日付 作業項目 作業者・作業時間 農薬名・使用量 肥料名・使用量 機械 写真 メモ マスタデータと トランザクションデータ
12.
ファーストバージョン 2012年3月リリース。 画面開いた時にフェッチしてくるやーつ。 =電波がないところでは動かない
13.
30km (電波が) 試される大地
14.
気合で同期機能を実装する AlarmManager + IntentService
???
15.
同期処理に必要なもの • 定期的に、または何らかのキックにより • バックグラウンドで通信を行い •
アプリ内のDBを更新する
16.
2013年スタイル AlarmManager IntentService 頑張ってデータを ダウンロードしてきて INSERTする処理 Intent 定期的に実行
17.
れ出るつらみ • AlarmManagerがときどき消える • IntentServiceが連続で走って止まらない •
マルチスレッドでDB叩く状態に突入 • synchronized祭り • ネットワーク有無の検知のために割と頻繁に起動
18.
Androidが提供するデータ同期機能 AccountAuthenticator + SyncAdapter
+ ContentProvider
19.
AndroidManifest.xml SyncService xml/authenticator.xml <service> xml/sync_adapter.xml <service><provider> authorities ContentProvider SyncAdapter contentAuthority accountType accountType onPerformSync() 同期処理を実装 SyncAdapter利用の最小構成
クラス ファイル パラメータ 凡例: AuthenticationService AccountAuthenticator
20.
本当に大事なのは onPerformSyncの中で何をするか public class SyncAdapter
extends AbstractThreadedSyncAdapter { // ... @Override public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) { /* Elegant Synchronization */ } // ... }
21.
設計を分けれるの嬉しい ContentProvider SQLite Data Access Object UI付近のコード
SyncAdapter API Client AccountAuthenticator AccountManager
22.
使ってる人が少ない気がする
23.
ドキュメンテッドになったのが 割と最近? 2013年まで公式ドキュメントなかったっぽ い・・・?(Web Archive調べ)
24.
25.
突然情報が出始めた 2009年 2010年 2011年
2012年 2013年 2014年 Android 2.0 Google I/Oで言及 50 Android Hacks 公式ドキュメントが公開? 50 Android Hacks日本語版 mixi-inc/AndroidTraining 弊社もこの頃から 触り始めた
26.
同期アルゴリズムの検討
27.
参考にした資料 • 50 Android
Hacksのサンプルコード • https://github.com/Macarse/50AH-code/ • Hack 23(Pythonサーバー付き) • Evernote Synchronization via EDAM • https://dev.evernote.com/intl/jp/doc/articles/ synchronization.php • https://github.com/ninjinkun/EDAMSync/blob/master/EDAM- Japanese.md (日本語訳)
28.
採用した仕組み • Full Sync,
Incremental Sync • StatusFlag("dirty" flag)
29.
Full Sync, Incremental
Sync サーバー クライアント 1 2 3 1 2 3 1 2 3 1 2 3 Full Sync Incremental Sync
30.
差分を請求する id data modified_at 1
hoge 10:00 2 fuga" 12:00 3 piyo" 15:00 4 hogehoge" 20:00 http://hoge/hoge?modified_after=13:00 last_fetched = 13:00
31.
StatusFlag ("dirty" flag) 未同期のクライアント環境でデータに変更が あったことを表すフラグ
32.
4つのStatus CLEAN サーバーから受け取ったままの状態 ADD 新規に作成された (まだクライアント側にしかない) MOD サーバーから受け取ったものに変更を施した DELETE
サーバーから受け取ったものを削除した
33.
同期の流れ
34.
同期の流れ 1. データのダウンロードを行う • 初回はFull
Sync, 2回目以降はIncremental Sync 2. サーバーで削除されていたデータをクライアントでも削除する 3. サーバーで更新されていたデータをクライアントでも更新する 4. クライアント側で作成(ADD)・更新(MOD)・削除(DELETE)されたデータ をサーバへ送信する 5. 送信が済んだデータのStatusFlagをCLEANにする 6. last_fetchedを1の時刻に更新する
35.
競合問題 > 2. サーバーで削除されていたデータをクライアントでも削除する >
3. サーバーで更新されていたデータをクライアントでも更新する 同じデータの削除や更新がサーバーとクライアント両方で行われてい た場合、競合する
36.
対応策 • 常にサーバー側が勝つ • 送信を諦める •
常にクライアント側が勝つ • サーバーからのデータを捨てる • クライアント側でマージしてからサーバーへ送る • なんとか全部生かす Evernoteはこれ アグリノートはこれ
37.
同期パターンの確認
38.
39.
まとめ • mixi-inc/AndroidTrainingでSyncAdapterを勉強して • 50AHでSyncAdapterのサンプルを知って •
EDAMの理屈を参考にして同期の仕組みを考える • 競合解決の方針はそのサービスのポリシー次第
40.
最後に ウォーターセル株式会社では、地球人口100億の時 代に見合う食料生産のための農業革命を一緒に引っ 張っていってくれるAndroid/iOSエンジニアを探し ています。
Download now