SlideShare uma empresa Scribd logo
1 de 12
Xamarin + Azure Mobile Appsの現実
第2章「オフライン同期」の光とちょっと影
JXUGC #23 Xamarin 無料化一周年記念勉強会!
2017.05.27
株式会社ケイ・ジェイ・システムズ
藤森 智
自己紹介
名前:藤森 智(ふじもり さとる)
所属:株式会社ケイ・ジェイ・システムズ
• 電子辞書や金融関係のデータ生成
• 印刷物のデータをクラウドで活用するための開発支援
• 古典データの検索サービス
Xamarin歴:3年くらい(開発経験がライセンス歴が)
趣味:料理
• ひたすら刻むかひたすら包むのが好き
• 「レシピもサンプルコードも三回作れば(書けば)自分のもの」
Twitter:@masatoru
Blog:http://masatoru.hatenadiary.jp/
オフライン同期とは
オフライン同期とは
• ネットワークがつながらない環境でもアプリを使えるようにする方法
• 通常はローカルのデータベースを参照する
• オンラインの時に(必要な時に)バックエンドと同期を取る
オフライン同期の利点
• ローカルのデータベースを参照するのでアプリケーションの応答性が向上する
• ネットワークに問題がある場合でも使用可能な信頼性の高いアプリを作成できる
• ネットワークに接続できない状態でもデータの追加や修正を可能にする
• 複数のデバイス間でデータを同期させ、同じレコードが2つのデバイスによって変更されたと
きに競合を検出する。
• 待ち時間の長いネットワークや従量制ネットワークの使用を制限する
https://docs.microsoft.com/ja-jp/azure/app-service-mobile/app-service-mobile-offline-data-sync
デモ
環境
• バックエンド:Win+VS2017でデバッグ
• Xamarin.Forms:VisualStudio For Mac + iOSシミュレータでデバッグ
• Parallels Desktop for Mac
https://github.com/masatoru/OfflineSyncSample
(多分Androidでも動作します。未確認でごめんなさい。)
実際に同期処理をやってみる
→オフラインでも動くよー
オフライン同期の実装方法
バックエンド側
1. VS2017→Azure Mobile Appテンプレートから作成
2. TableControlerによる実装
3. テーブルコントローラー機能の追加(AddTablesWithEntityFramework)
Xamarin.Forms側
1. Azure Mobile Client SDK / Azure Mobile SQLiteStoreを追加(nuget)
2. SDKの初期化コードを記述(iOSのみ)
3. Modelを定義(SQLDatabaseと合わせる)
4. SDKを使用したManagerクラスの作成
同期処理、クライアントのストアのデータ取得
https://docs.microsoft.com/ja-jp/azure/app-service-mobile/app-service-mobile-xamarin-forms-get-
started-offline-data
SharpProxyを使おう
ローカルのポートを外部のポートにすり替えるツール
https://github.com/jocull/SharpProxy
Mac側からPostmanで動作確認
SQLiteのファイルが作成される場所
シミュレータのフォルダの場所
~/Library/Developer/CoreSimulator/Devices
.default_created.plist にデバイスの一覧とフォルダ名が記載されている
Finderでは探せない(謎)
コンソールで探す(下記はSQLiteのファイルを削除する方法)
$ cd ~/Library/Developer/CoreSimulator/Devices
$ cd 17EC55D3-2F14-43AD-AF7A-xxxxxxxxxx
$ find . -name 'localstore.db' -print | xargs rm
SQLiteの閲覧
• DB Browser for SQLite(Mac)
• SQLite / SQLServer Compact Toolbox(VSの拡張機能)
Connectivity Pluginを使おう
プラグインを使うとネットワークの接続状態の検知や取得できる
「 Connectivity Plugin for Xamarin and Windows 」をNugetから取得
オフラインでも正常に動作していることを確認するツールとして使える
使い方は簡単
Text = CrossConnectivity.Current.IsConnected ?“つながってるよ”:“オフラインだよ";
Text = await CrossConnectivity.Current.IsReachable(“http://xxxxx.jp”)
?“URLに到達したよ”:“そんなURLはないよ";
他にも種別(Wifi,Bluetooth)の取得や状態(つながったとか切れたとか)を取得できたりする
ちょっと影の話
VS2017のTableControllerがスキャフォールディングから作成できない
http://bit.ly/2r1kgUV(修正された?)
リレーショナルなテーブルに対応していない
1対nのようなやつは無理
AzureSearchなどのサービスとの組み合わせ
使えないこともないけど完全な“オフライン同期機能を実装!”とは言えない
まとめ
オフライン同期の実装は簡単
ローカルでバックエンドとXamarinをやるときはSharpProxyを使おう
SQLiteのフォルダの場所や閲覧方法を知っておこう
ネットワークの状態の管理はConnectivity Pluginを使おう
最後に
App Mobile Appsはいいぞ!
Xamarinはいいぞ!2017
JXUGはいいぞ!2017
各種Xamarin本はいいぞ!
ご清聴ありがとうございました。

Mais conteúdo relacionado

Mais procurados

XamarinでAzure AD認証 (リフレッシュトークン対応)
XamarinでAzure AD認証 (リフレッシュトークン対応)XamarinでAzure AD認証 (リフレッシュトークン対応)
XamarinでAzure AD認証 (リフレッシュトークン対応)Kazuyuki Miyake
 
S3を使った簡単Webサイトの作り方
S3を使った簡単Webサイトの作り方S3を使った簡単Webサイトの作り方
S3を使った簡単Webサイトの作り方Yasuhiro Matsuda
 
Azure Web Apps 入門
Azure Web Apps 入門Azure Web Apps 入門
Azure Web Apps 入門Miho Kurosawa
 
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)Tomotsune Murata
 
Azure Appservice WebAppsでWordPressサイトを構築すると 運用が劇的にラクになる話
Azure Appservice WebAppsでWordPressサイトを構築すると運用が劇的にラクになる話Azure Appservice WebAppsでWordPressサイトを構築すると運用が劇的にラクになる話
Azure Appservice WebAppsでWordPressサイトを構築すると 運用が劇的にラクになる話典子 松本
 
Azure使いから見たAWSの良いところ
Azure使いから見たAWSの良いところAzure使いから見たAWSの良いところ
Azure使いから見たAWSの良いところMasaki Yamamoto
 
Azure Functionsを業務利用する時の勘所
Azure Functionsを業務利用する時の勘所Azure Functionsを業務利用する時の勘所
Azure Functionsを業務利用する時の勘所裕之 木下
 
KUSANAGIを触ってみた (WordFes Nagoya 2016 セッション)
KUSANAGIを触ってみた (WordFes Nagoya 2016 セッション) KUSANAGIを触ってみた (WordFes Nagoya 2016 セッション)
KUSANAGIを触ってみた (WordFes Nagoya 2016 セッション) Kiminori Yokoi
 
懲りずにazure functionsでlinebotを作ってみた
懲りずにazure functionsでlinebotを作ってみた懲りずにazure functionsでlinebotを作ってみた
懲りずにazure functionsでlinebotを作ってみた裕之 木下
 
azure functionsでlinebotを作ってみた
azure functionsでlinebotを作ってみたazure functionsでlinebotを作ってみた
azure functionsでlinebotを作ってみた裕之 木下
 
案件規模で使い分けよう!Microsoft Azure×WordPressの話
案件規模で使い分けよう!Microsoft Azure×WordPressの話案件規模で使い分けよう!Microsoft Azure×WordPressの話
案件規模で使い分けよう!Microsoft Azure×WordPressの話典子 松本
 
Azure DevOpsで技術同人誌作成
Azure DevOpsで技術同人誌作成Azure DevOpsで技術同人誌作成
Azure DevOpsで技術同人誌作成裕之 木下
 
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影gree_tech
 
インフラ知識ゼロの Webデザイナーが AzureWebSitesを使ってみた話
インフラ知識ゼロのWebデザイナーがAzureWebSitesを使ってみた話インフラ知識ゼロのWebデザイナーがAzureWebSitesを使ってみた話
インフラ知識ゼロの Webデザイナーが AzureWebSitesを使ってみた話典子 松本
 
簡単・お手軽!ノンプログラミングで便利BOTを作ってみた話
簡単・お手軽!ノンプログラミングで便利BOTを作ってみた話簡単・お手軽!ノンプログラミングで便利BOTを作ってみた話
簡単・お手軽!ノンプログラミングで便利BOTを作ってみた話典子 松本
 
20190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #420190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #4Issei Hiraoka
 
20130406 awsのいろんな使い道@jawsug名古屋
20130406 awsのいろんな使い道@jawsug名古屋20130406 awsのいろんな使い道@jawsug名古屋
20130406 awsのいろんな使い道@jawsug名古屋Serverworks Co.,Ltd.
 
Microsoft Azure WebAppsで ECサイトを構築してみた話 ~EC-CUBE3で試してみました~
Microsoft Azure WebAppsでECサイトを構築してみた話 ~EC-CUBE3で試してみました~Microsoft Azure WebAppsでECサイトを構築してみた話 ~EC-CUBE3で試してみました~
Microsoft Azure WebAppsで ECサイトを構築してみた話 ~EC-CUBE3で試してみました~典子 松本
 

Mais procurados (20)

XamarinでAzure AD認証 (リフレッシュトークン対応)
XamarinでAzure AD認証 (リフレッシュトークン対応)XamarinでAzure AD認証 (リフレッシュトークン対応)
XamarinでAzure AD認証 (リフレッシュトークン対応)
 
2016 09-03 jazug
2016 09-03 jazug2016 09-03 jazug
2016 09-03 jazug
 
S3を使った簡単Webサイトの作り方
S3を使った簡単Webサイトの作り方S3を使った簡単Webサイトの作り方
S3を使った簡単Webサイトの作り方
 
Azure Web Apps 入門
Azure Web Apps 入門Azure Web Apps 入門
Azure Web Apps 入門
 
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
 
Azure Appservice WebAppsでWordPressサイトを構築すると 運用が劇的にラクになる話
Azure Appservice WebAppsでWordPressサイトを構築すると運用が劇的にラクになる話Azure Appservice WebAppsでWordPressサイトを構築すると運用が劇的にラクになる話
Azure Appservice WebAppsでWordPressサイトを構築すると 運用が劇的にラクになる話
 
Azure使いから見たAWSの良いところ
Azure使いから見たAWSの良いところAzure使いから見たAWSの良いところ
Azure使いから見たAWSの良いところ
 
Azure Functionsを業務利用する時の勘所
Azure Functionsを業務利用する時の勘所Azure Functionsを業務利用する時の勘所
Azure Functionsを業務利用する時の勘所
 
KUSANAGIを触ってみた (WordFes Nagoya 2016 セッション)
KUSANAGIを触ってみた (WordFes Nagoya 2016 セッション) KUSANAGIを触ってみた (WordFes Nagoya 2016 セッション)
KUSANAGIを触ってみた (WordFes Nagoya 2016 セッション)
 
懲りずにazure functionsでlinebotを作ってみた
懲りずにazure functionsでlinebotを作ってみた懲りずにazure functionsでlinebotを作ってみた
懲りずにazure functionsでlinebotを作ってみた
 
azure functionsでlinebotを作ってみた
azure functionsでlinebotを作ってみたazure functionsでlinebotを作ってみた
azure functionsでlinebotを作ってみた
 
案件規模で使い分けよう!Microsoft Azure×WordPressの話
案件規模で使い分けよう!Microsoft Azure×WordPressの話案件規模で使い分けよう!Microsoft Azure×WordPressの話
案件規模で使い分けよう!Microsoft Azure×WordPressの話
 
Azure DevOpsで技術同人誌作成
Azure DevOpsで技術同人誌作成Azure DevOpsで技術同人誌作成
Azure DevOpsで技術同人誌作成
 
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
 
インフラ知識ゼロの Webデザイナーが AzureWebSitesを使ってみた話
インフラ知識ゼロのWebデザイナーがAzureWebSitesを使ってみた話インフラ知識ゼロのWebデザイナーがAzureWebSitesを使ってみた話
インフラ知識ゼロの Webデザイナーが AzureWebSitesを使ってみた話
 
簡単・お手軽!ノンプログラミングで便利BOTを作ってみた話
簡単・お手軽!ノンプログラミングで便利BOTを作ってみた話簡単・お手軽!ノンプログラミングで便利BOTを作ってみた話
簡単・お手軽!ノンプログラミングで便利BOTを作ってみた話
 
20190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #420190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #4
 
Test
TestTest
Test
 
20130406 awsのいろんな使い道@jawsug名古屋
20130406 awsのいろんな使い道@jawsug名古屋20130406 awsのいろんな使い道@jawsug名古屋
20130406 awsのいろんな使い道@jawsug名古屋
 
Microsoft Azure WebAppsで ECサイトを構築してみた話 ~EC-CUBE3で試してみました~
Microsoft Azure WebAppsでECサイトを構築してみた話 ~EC-CUBE3で試してみました~Microsoft Azure WebAppsでECサイトを構築してみた話 ~EC-CUBE3で試してみました~
Microsoft Azure WebAppsで ECサイトを構築してみた話 ~EC-CUBE3で試してみました~
 

Semelhante a Xamarin + Azure Mobile Appsの現実(第2章)

Xamarin + azure Mobile Apps
Xamarin + azure Mobile AppsXamarin + azure Mobile Apps
Xamarin + azure Mobile Apps史也 久米
 
DocumentDBクイックスタート(開発現場編)
DocumentDBクイックスタート(開発現場編)DocumentDBクイックスタート(開発現場編)
DocumentDBクイックスタート(開発現場編)Kazuyuki Miyake
 
Xamarin.Formsで縦書きアプリ
Xamarin.Formsで縦書きアプリXamarin.Formsで縦書きアプリ
Xamarin.Formsで縦書きアプリSatoru Fujimori
 
20140829 山形でJAWS-UGをやって困った2つのこと
20140829 山形でJAWS-UGをやって困った2つのこと20140829 山形でJAWS-UGをやって困った2つのこと
20140829 山形でJAWS-UGをやって困った2つのことSeiji Akatsuka
 
数クリックで瞬時に切り替えられる メンテナンスページの作り方
数クリックで瞬時に切り替えられる メンテナンスページの作り方数クリックで瞬時に切り替えられる メンテナンスページの作り方
数クリックで瞬時に切り替えられる メンテナンスページの作り方Yuta Okoshi
 
Google Home, Amazon Echo, LINE Clova クロス開発& Azure Durable Funcitons で時間のかかる処理...
Google Home, Amazon Echo, LINE Clova クロス開発& Azure Durable Funcitons で時間のかかる処理...Google Home, Amazon Echo, LINE Clova クロス開発& Azure Durable Funcitons で時間のかかる処理...
Google Home, Amazon Echo, LINE Clova クロス開発& Azure Durable Funcitons で時間のかかる処理...Madoka Chiyoda
 
Xamarin.forms+azureで始めるモバイル開発
Xamarin.forms+azureで始めるモバイル開発Xamarin.forms+azureで始めるモバイル開発
Xamarin.forms+azureで始めるモバイル開発Tsukasa Kato
 
3-2)『空気を読む家』とメタバース駆動開発構想
3-2)『空気を読む家』とメタバース駆動開発構想3-2)『空気を読む家』とメタバース駆動開発構想
3-2)『空気を読む家』とメタバース駆動開発構想aitc_jp
 
MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances
MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot InstancesMobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances
MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot InstancesMasafumi Noguchi
 

Semelhante a Xamarin + Azure Mobile Appsの現実(第2章) (10)

Xamarin + azure Mobile Apps
Xamarin + azure Mobile AppsXamarin + azure Mobile Apps
Xamarin + azure Mobile Apps
 
DocumentDBクイックスタート(開発現場編)
DocumentDBクイックスタート(開発現場編)DocumentDBクイックスタート(開発現場編)
DocumentDBクイックスタート(開発現場編)
 
Xamarin.Formsで縦書きアプリ
Xamarin.Formsで縦書きアプリXamarin.Formsで縦書きアプリ
Xamarin.Formsで縦書きアプリ
 
20140829 山形でJAWS-UGをやって困った2つのこと
20140829 山形でJAWS-UGをやって困った2つのこと20140829 山形でJAWS-UGをやって困った2つのこと
20140829 山形でJAWS-UGをやって困った2つのこと
 
数クリックで瞬時に切り替えられる メンテナンスページの作り方
数クリックで瞬時に切り替えられる メンテナンスページの作り方数クリックで瞬時に切り替えられる メンテナンスページの作り方
数クリックで瞬時に切り替えられる メンテナンスページの作り方
 
Google Home, Amazon Echo, LINE Clova クロス開発& Azure Durable Funcitons で時間のかかる処理...
Google Home, Amazon Echo, LINE Clova クロス開発& Azure Durable Funcitons で時間のかかる処理...Google Home, Amazon Echo, LINE Clova クロス開発& Azure Durable Funcitons で時間のかかる処理...
Google Home, Amazon Echo, LINE Clova クロス開発& Azure Durable Funcitons で時間のかかる処理...
 
Xamarin.forms+azureで始めるモバイル開発
Xamarin.forms+azureで始めるモバイル開発Xamarin.forms+azureで始めるモバイル開発
Xamarin.forms+azureで始めるモバイル開発
 
3-2)『空気を読む家』とメタバース駆動開発構想
3-2)『空気を読む家』とメタバース駆動開発構想3-2)『空気を読む家』とメタバース駆動開発構想
3-2)『空気を読む家』とメタバース駆動開発構想
 
MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances
MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot InstancesMobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances
MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances
 
20151016 soracom-araki-02
20151016 soracom-araki-0220151016 soracom-araki-02
20151016 soracom-araki-02
 

Xamarin + Azure Mobile Appsの現実(第2章)