windows azure と xamarin で作るマルチプラットフォームアプリケーション

92
Windows Azure Xamarin ととと ととととととととととと とととととととと 2014/03/22 DevLOVE とと &JAZUG とと とと とと

Upload: yamamoto-masaki

Post on 25-Dec-2014

767 views

Category:

Technology


3 download

DESCRIPTION

MVP Community Camp 2014 - Tohoku(エフスタ!!SENDAI 2)で発表した資料です。 http://atnd.org/event/E0023838

TRANSCRIPT

Page 1: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Windows Azure とXamarin で作るマルチプラットフォームアプリケーション

2014/03/22DevLOVE 仙台 &JAZUG 仙台山本 誠樹

Page 2: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

本日のアジェンダ• 自己紹介

• Windows Azure 概要

• Windows Azure モバイルサービスとは

• Xamarin とは

• マルチプラットフォーム開発

Page 3: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

本日のアジェンダ• 自己紹介

• Windows Azure 概要

• Windows Azure モバイルサービスとは

• Xamarin とは

• マルチプラットフォーム開発

Page 4: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

自己紹介• 山本 誠樹 (Yamamoto Masaki)

• @nnasaki

• Facebook, Twitter, github, hatena 等

Page 5: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

本日の開催会場

Page 6: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Xamarin 率 5/8 !!

Page 7: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

なぜ私はここにいるか?

Page 8: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

2013 年の Community Open Day

Page 9: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Build Insider の記事

Page 10: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

こんな感じで大体自分からぶっ込んでる

Page 11: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

私のコンテキスト• 請負の開発会社に所属• 社名は表には出せない• 開発内容は守秘義務があるので公開できない

Page 12: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

なぜこんな話をしているか?

Page 13: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

• 請負の開発会社に所属• 社名は表には出せない• 開発内容は守秘義務があるので公開できない

同じような境遇の方いませんか?

Page 14: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

勇気を出して行動すればちょっとは道が広がります。

Page 15: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

コミュニティを探そう

Page 16: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

本日のアジェンダ• 自己紹介

• Windows Azure 概要

• Windows Azure モバイルサービスとは

• Xamarin とは

• マルチプラットフォーム開発

Page 17: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

クラウド プラットフォーム

物理 PaaS SaaS仮想化 IaaS

プラットフォーム活用のパターン

Windows Azure ハンズオンラボテキストより引用

Page 18: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

パターン毎の責任範囲の考え方

ストレージ

サーバー

ネットワーク

OS

ミドルウエア

仮想化

データ

アプリケーション

ランタイム

ストレージ

サーバー

ネットワーク

OS

ミドルウエア

仮想化

データ

アプリケーション

ランタイムユー

ザー

管理

ストレージ

サーバー

ネットワーク

OS

ミドルウエア

仮想化

アプリケーション

ランタイム

データ

ベンダー

管理

ストレージ

サーバー

ネットワーク

OS

ミドルウエア

仮想化

アプリケーション

ランタイム

データ

仮想マシンWindows Server Web サイトモバイルサービス

Office 365Dynamics CRM

ベンダー管理

ベンダー

管理

ユー

ザー

管理

ユー

ザー

管理

オンプレミス IaaS PaaS SaaS

Windows Azure ハンズオンラボテキストより引用

Page 19: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

ネットワーク

仮想ネットワーク

トラフィックマネージャー

コンピューティング

仮想マシン

クラウドサービス

Webサイト

モバイルサービス

開発言語

キャッシュ メディア CDN データ分析HPC 統合ID サービスバス

アプリケーションバックアップ

データ管理

SQLデータベース ビックデータ テーブル BLOB

世界規模のクラウド基盤データセンター: 北米 4 か所、ヨーロッパ 2 か所、 アジア 2 か所にて稼働中 日本( 2014 年に東日本、西日本開設予定) 豪州(開設予定)、中国(中国国内から利用) CDN : 全世界に 24 カ所

Windows Azure ハンズオンラボテキストより引用

Page 20: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

たくさんありすぎて何をすればいいかわからない

Page 21: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

この3つがオススメ

仮想マシンWeb サイトモバイルサービス(イチオシ)

Page 22: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

ネットワーク

仮想ネットワーク

トラフィックマネージャー

コンピューティング

仮想マシン

クラウドサービス

Webサイト

モバイルサービス

開発言語

キャッシュ メディア CDN データ分析HPC 統合ID サービスバス

アプリケーションバックアップ

データ管理

SQLデータベース ビックデータ テーブル BLOB

世界規模のクラウド基盤データセンター: 北米 4 か所、ヨーロッパ 2 か所、 アジア 2 か所にて稼働中 日本( 2014 年に東日本、西日本開設予定) 豪州(開設予定)、中国(中国国内から利用) CDN : 全世界に 24 カ所

仮想マシン: IaaSWindows Server / Linux 選択

可能オンプレミスとの容易な連携

Web サイト: Web サイト構築専用 PaaS モバイルサービス:

マルチデバイス向けアプリ用バックエンドサービス

Windows Azure ハンズオンラボテキストより引用

Page 23: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Windows Server と Linux のサポート 多くの既存ワークロードを稼動可能 オンプレミスと仮想マシンを移動可能

Windows ベースの汎用 PaaS 事実上無限のスケーラビリティ 運用管理の自動化

Web サイト構築に最適なサービス オープン ソース ソフトの活用 無償で開始、成長に合わせた利用

マルチデバイス向けアプリ構築に特化 Windows 8, iOS, Android に対応 開発工数を削減

Windows Azure コンピューティング機能

仮想マシン

クラウドサービス

Web サイト

IaaS

PaaS モバイルサービス

Windows Azure ハンズオンラボテキストより引用

Page 24: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

最近 Web サイトすごく良いですよJava (New!)• Tomcat OR Jetty

PYTHONPHP• WordPress をワンクリックで実行

Ruby ちょっと裏技的

Page 25: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Web サイトで Ruby Web サイトの実態は IIS Java に対応したこと

で、 httpPlatformHandler が追加 詳細はしばやんさんの記事参照

http://shiba-yan.hatenablog.jp/entry/20140315/1394889702

Page 26: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

使っている人いるの?

Page 27: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

海外はもちろん国内でも採用実績多数あります!

Page 28: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Windows Azure 事例 (企業向けサービス )TOYOTA が考える新たなモビリティ社会・低炭素・省エネルギー社会の実現に向けて、 2015 年までに次世代テレマティクス向けグローバル クラウド プラットフォームを構築する

デジタル放送の未来へ備えるプラットフォームを Windows Azure メディア サービスで実現

NISSAN ディーラー マネジメントシステム( Microsoft Dynamics CRM ベース)の開発によるパートナー関係の維持

Linux ベースの 学術リポジトリ システム

インターネット通販を中心に展開してきた Juliette は請求書や納品書入力の大幅な時間短縮を実現。 SQL データベース に集積したデータをマーケティング分析に活用

高効率風力発電と太陽光発電、蓄電池を組み合わせた最新エコ住宅を管理するハウスマネージメントシステム

震災復興のために各府省、県、市町村と横断的な情報連携を実施。数百の支援制度を横串検索できる「復旧・復興支援制度データベース 」を Windows Azure 上に構築

「 GEOSPACE CDS」 GIS コンテンツをネット配信

Windows Azure ハンズオンラボテキストより引用

Page 29: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Windows Azure 事例 ( コンシューマーサービス )

2011 年に続き、 2012 年も mixi Christmas は Windows Azure を 採用250万会員が集中アクセスするクラウド向きアプリ

Docomo の動画配信プラットフォームである、「 d マーケット VIDEO ストア」をご支援

55万人の国内最大イベントであるコミックマーケットにて「コミケ Web Catalogue」の構築・運用を サポート

即応性の高いクラウドベースのビッグ データ ソリューションを使用して BI 情報をすばやく配信

PHP や Unity などを利用したソーシャルアプリ、 iPhone/Androidアプリなどの開発基盤として採用

フィーチャーフォンの公式メニューやスマートフォンから利用できる デコレーション メール サービス。

複数の映画会社と興行会社が参加する世界でも初の試みとなる、映画観賞券の前売券購入と座席予約ができるオンライン サービス Windows Azure ハンズオ

ンラボテキストより引用

Page 30: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

でも、お高いんでしょ?

Page 31: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

無料で利用できるプランがありますAWS さんより割安なことが多いです

仮想マシン(無料プランなし)Web サイト( 1 年無料)モバイルサービス( 1 年無料)

Page 32: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

本日のアジェンダ• 自己紹介• Windows Azure 概要• Windows Azure モバイルサービスとは• Xamarin とは• マルチプラットフォーム開発

Page 33: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Windows Azure モバイルサービスとは

Page 34: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

DEMO

Page 35: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

モバイルサービス作成時のポイント

東アジアを選ぶ• 残念ながら日本は準備中。リクエスト

中なので清き一票を!• http://bit.ly/1hPmZVB

.NET を選ぶ

Page 36: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

WINDWOS AZUREモバイルサービス

認証 データ

カスタム API

スケジューラ

プッシュ

ログ

Page 37: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

デバイス モバイルサービス

.NET

IDtwitter

facebook

Google

Microsoft

Page 38: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

開発期間の短縮

クライアントアプリ開発 サーバーサイド開発

クライアントアプリ開発 サーバーサイド開発

モバイルサービス導入前

モバイルサービス導入後

Page 39: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

ちなみに略称Windows Azure Mobile Services ⇒ WAMS Windows Azure Media Services とかぶる

Windows Azure Mobile Services

ZUMO (ずーも?)

Page 40: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Windows Azure モバイルサービスの便利なポイント4つ

Page 41: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

ここが便利だよ ZUMO!

動的スキーマ.NET FrameworkGitNew Relic

Page 42: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

ここが便利だよ ZUMO!

動的スキーマ.NET FrameworkGitNew Relic

Page 43: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

サーバーに保存したらカラム自動生成NO SQL ではないSQL Server にカラムが追加され

る本番運用時は設定で OFF すること

が可能

Page 44: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

ここが便利だよ ZUMO!

動的スキーマ.NET FrameworkGitNew Relic

Page 45: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

.NET Framework

C#

Page 46: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

.NET Framework

TDD

Page 47: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

DEMO

Page 48: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

折り返し地点

Page 49: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

ここが便利だよ ZUMO!

動的スキーマ.NET FrameworkGitNew Relic

Page 50: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Git

バージョン管理が可能にサーバーにプッシュすれば即時反映

Page 51: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

ここが便利だよ ZUMO!

動的スキーマ.NET FrameworkGitNew Relic

Page 52: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

NewRelic

運用管理が 楽にボトルネックの可視化

Page 53: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

バックエンドに .NET 選んだ場合

JavaScript よりポータルで出来ることが減ります

VisualStudio が必須

Page 54: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

バックエンドに .NET 選んだ場合

JavaScript よりポータルで出来ることが減ります

VisualStudio が必須

Page 55: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

バックエンドに .NET 選んだ場合

赤枠の部分が .NET には無い

Page 56: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

バックエンド .NET Pro Tips

データについては Azure SQL で確認可能• ダッシュボードの右下のリンクをク

リック• 画面下部の管理をクリック

Page 57: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

バックエンド .NET Pro Tips

データについては Azure SQL で確認可能

Page 58: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

バックエンド .NET Pro Tips

API はメニューには無いが Visual Studio から作れます

Page 59: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

バックエンド .NET Pro Tips

ダウンロード出来ないプラットフォームは JavaScript から持ってくる

Page 60: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

バックエンド .NET Pro Tips

API キーを確認する

Page 61: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

バックエンド .NET Pro Tips

URL と API キーを変えれば良い

Page 62: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

バックエンドに .NET 選んだ場合

JavaScript よりポータルで出来ることが減ります

VisualStudio が必須

Page 63: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

VisualStudio が必須• ダウンロードしてビルドして発行する必

要があります• バックエンドが JavaScript の場合は不要

です• メンドクセーって人は JavaScript のほうが

良いです。

Page 64: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

本日のアジェンダ• 自己紹介• Windows Azure 概要• Windows Azure モバイルサービスとは• Xamarin とは• マルチプラットフォーム開発

Page 65: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Xamarin とは• 「ザマリン 」と呼びます

• c# で Android・ iOS・Windows・Mac の開発ができるプラットフォーム

Page 66: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

なぜ Xamarin が必要なの?

Page 67: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

今までのマルチプラットフォーム開発

Java

Page 68: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

今までのマルチプラットフォーム開発

Java

こんなに覚えられない!

Page 69: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Xamarin マルチプラットフォーム開発

C#

Page 70: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Xamarin マルチプラットフォーム開発

C#

これでかつる!

Page 71: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

使っている人いるの?

Page 72: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

たくさんいます

http://www.xlsoft.com/jp/products/xamarin/

Page 73: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

NHK紅白のアプリも Xamarin製

http://biz.fenrir-inc.com/application_development/casestudy_app/nhk_kouhaku.html

Page 74: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

遅いんじゃないの?

Page 75: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

いいえ、高速です• Android は JIT コンパイラで動作• iOS は AOT コンパイラで動作

つまり、通常のアプリとまったく同じ実行形式になります。

Page 76: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

でも、お高いんでしょ?

Page 77: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

はい。ちょっと高いです

http://www.xlsoft.com/jp/products/xamarin/price.html

1ヶ月の試用期間があります

サブスクリプション終了後も使用可能

キャンペーン中!

Page 78: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

本日のアジェンダ• 自己紹介• Windows Azure 概要• Windows Azure モバイルサービスとは• Xamarin とは• マルチプラットフォーム開発

Page 79: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Xamarin を利用したアーキテクチャ

Page 80: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

サーバーサイド

ModelView

Controller

クライアントWebView

肥大化する

イベントを 投げて表示するだけ

肥大化する

従来の Web アプリ

Page 81: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

クライアント

サーバーサイドModel

Controller

ViewModel

データに特化してシンプルに

最近の Web アプリ

View

HTMLからデータ中心に

JSONmsgpack

View 用のModel を追加View がサーバーからクライアントへ移動

Page 82: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

クライアント

サーバーサイド

MBaaS

Controller

サーバー側はコーディングしない

さらにこれからのアプリ

View

データのみJSONmsgpack

すべての実装がクライアントに集約 ViewM

odel

Model

Page 83: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Android Windows 8iOS

サーバーサイドMBaaS

Controller

こんなことになるんじゃ?

View

JSONmsgpack

ViewModel

Model

Controller

View

ViewModel

Model

Controller

View

ViewModel

Model

Page 84: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

iOS

サーバーサイド

MBaaS

そこでXamarin

View

JSONmsgpack

View

View

Xamarin ControllerModelViewModel

ロジックはXamarin で管理して、View は個別に作成

Page 85: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

よくある誤解:

Xamarin さえ覚えれば全部できる!!

Page 86: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Xamarinだけ覚えれば良い?• 答えは NO• Xamarin が共通化できるのはコアロジッ

ク• View は個別に作成

iOS View

View

View

Xamarin ControllerModelViewModel

Page 87: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Xamarinだけ覚えれば良い?• アプリのイベントはそれ ぞれのプラット

フォームで異なる• 例えば画面表示のイベント名は 違う• Android : OnCreate• iOS : ViewDidLoad• Xamarin は薄いラッパーに過ぎない

Page 88: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Xamarin マルチプラットフォーム開発

C#

各プラットフォームの知識は必要

Page 89: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

DEMO

Page 90: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

Xamarin Studio ( Mac )のバグ• 日本語入力でハングする• ちょっと致命的。現状は他のテキストエディ

タからコピペするしかないです。• https://bugzilla.xamarin.com/

show_bug.cgi?id=18385

Page 91: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

続きは記事にて

Page 92: Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション

ご静聴ありがとうございました