xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

66
Xamarin 概要 2014/10/18 わんくま同盟 東京勉強会 #92 Xamarin Day エクセルソフト株式会社 Business Development Manager 田淵 義人 [email protected] 03-5440-7875 / 080-7015-3586

Upload: yoshito-tabuchi

Post on 27-Jun-2015

503 views

Category:

Technology


4 download

DESCRIPTION

2014/10/18 わんくま同盟 東京勉強会 #92 ( http://www.wankuma.com/seminar/20141018tokyo92/ ) で発表した資料です。 基本的な内容はあまり変わっていませんが、Evolve 2014 から Sketches のネタを追加しています。

TRANSCRIPT

Page 1: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Xamarin 概要

2014/10/18わんくま同盟東京勉強会#92 Xamarin Day

エクセルソフト株式会社

Business Development Manager

田淵 義人

[email protected]

03-5440-7875 / 080-7015-3586

Page 2: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

自己紹介 • 田淵義人• エクセルソフトの Xamarin 担当。非開発者。

• Xamarin でググれ

• Twitter, SNS, Web, HTML5/CSS/JS, モバイル/ガジェット, Web マーケティングなどが好き

• Twitter: @ytabuchi

• Blog: http://ytabuchi.hatenablog.com/

Page 3: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

自己紹介 • 田淵義人• エクセルソフトの Xamarin 担当。開発者になりたい。

• Xamarin でググれ (まだまだ実力不足w)

• Twitter, SNS, Web, HTML5/CSS/JS, モバイル/ガジェット, Web マーケティングなどが好き

• Twitter: @ytabuchi

• Blog: http://ytabuchi.hatenablog.com/

Page 4: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

本セッションのゴール

お知らせ

• Xamarin についてイメージを掴んでいただくこと

• 出来ること出来ないことをご理解いただくこと

• Xamarin に興味を持っていただくこと

• スライド下にソースへのリンクを張ってあります。

Page 5: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

はじめに

Page 6: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

モバイル デバイスのシェア

家庭の所有率はタブレット20%、スマートフォン50% - IDC Japan (2013/10)

2012年度の法人向けタブレット出荷は79万台。2015年度には2.2倍に- ICT総研 (2013/8)

http://j.mp/1jDKQMx | http://j.mp/1flA8Dp | http://j.mp/1cBUTdc

Page 7: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

モバイル向けクロスプラットフォーム開発環境“no silver bullet”

Page 8: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

今までのアプリ開発

Page 9: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

今までのハイブリッド開発

共通化による最小限の機能

分厚いラッパー

リリースまでの日数

App Generation

Page 10: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

何を使えばいいの?

• ネイティブ (Objective-C/Swift, Java)• Xcode, Android Studio/eclipse

• HTML5,JS• Cordova (PhoneGAP, Monaca)

• Sencha Touch

• C++/Delphi• RAD Studio XE/Appmethod

• JS• Titanium

• ActionScript• Flash/AIR

Page 11: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Xamarin(ザマリン)API 100% 移植“ネイティブ” アプリC# / .NETコード共通化

Page 12: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

API 100% 移植

• Xamarin.iOS• iOS SDK リリースと同日• iOS 8 SDK Beta (Xcode 6 Beta) と Xamarin.iOS

Alpha で iOS 8 対応アプリを開発可能• Xcode 6 Beta は Mac OS X 10.9.3 または 10.10

が必要• Introduction to iOS 8 | Xamarin

• http://developer.xamarin.com/guides/ios/platform_features/introduction_to_ios8/

• Xamarin.Android• 1ヶ月~3ヶ月程してリリース• Android L, Android wear は対応済み• Introduction to Android L | Xamarin

• http://developer.xamarin.com/guides/android/platform_features/android_l/introduction_to_android_l/

Page 13: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

“ネイティブ”アプリ

• C# + .NET ランタイム

• ネイティブ UI

• ネイティブ “パフォーマンス”

Page 14: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

C# で開発 • async/await, LINQ, ラムダ式などの実装が使える

• Java, Objective-C, Swift を書く必要がない

• TFS, Resharper などのエコシステム

button.TouchUpInside += (s, e) => {message.Text = "Hello!";

};

from p in Table<Person> ()where p.ID == idselect p;

Page 15: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

iOSAPI

100% 対応

Page 16: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

AndroidAPI

100% 対応

Page 17: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

DEMO

Page 18: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

コード共通化

Page 19: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

.NET BCL (Mono)

• System.IO• ファイル操作の共通化

• System.NET• ネットワーク操作の共通化

• System.Linq• データ操作の簡素化、共通化

• System.XML• XML 操作の簡素化、共通化

• System.Threading• 上記全般もですが、非同期処理の恩恵

Page 20: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Xamarin を使用した開発

Page 21: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

共有方法 • PCL• Visual Studio 2012 / Xamarin Studio 4.2 (w/

追加ライブラリ)• PCL (Portable Class Library) - Xamarin 3 の新し

いコード共有テクニック : XLsoft エクセルソフト• http://www.xlsoft.com/jp/products/xamarin/port

able_class_libraries.html

• Shared Project• Visual Studio 2013 Update 2 / Xamarin Studio

5.0• Shared Project - Xamarin 3 の新しいコード共有テク

ニック : XLsoft エクセルソフト• http://www.xlsoft.com/jp/products/xamarin/shar

ed_projects.html

• Xamarin.Forms• 後述

Page 22: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Shared Project

Page 23: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Xamarin.Forms - 画面の共通化

UI “コード”の共通化

ビルド時にネイティブUI にマップ

XAML で書ける!(ただし手動)

Phone

Page 24: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Pages

Content MasterDetail Navigation Tabbed Carousel

Page 25: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Layouts

Stack Absolute Relative Grid ContentView ScrollView Frame

Page 26: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Controls

ActivityIndicator

BoxView Button DatePicker Editor

Entry Image Label ListView Map

OpenGLView Picker ProgressBar SearchBar Slider

Stepper TableView TimePicker WebView EntryCell

ImageCell SwitchCell TextCell ViewCell

Page 27: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Xamarin.Forms では物足りない?

• ExportRenderer を活用して機能追加• http://www.slideshare.net/amay077/xama

rinforms が超参考になると思います。サンプルコード付き!あめいさんありがとうございます。

• Mvvm 的なふるまい• あめいさんの資料参照

Page 28: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

DEMO

Page 29: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

コード共有方法の違いが良く分かるTasky

• PCL 版 Tasky• https://github.com/xamarin/mobile-

samples/tree/master/TaskyPortable

• Shared Project 版 Tasky• https://github.com/xamarin/mobile-

samples/tree/master/Tasky

• Xamarin.Forms 版 Tasky• https://github.com/xamarin/xamarin-

forms-samples/tree/master/Todo

Page 30: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Evolve 2014

Page 31: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Xamarin AndroidPlayer

• Xamarin 製の Android Player• x86 エミュレーター不要。

Genymotion 不要

• 画面サイズ、グイングイン

• OpenGL サポート

• GPS エミュレート

• バッテリー量可変

• 紹介記事

Page 32: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Sketches • iOS, Android, Mac でインスタントプログラミング

• “C#” で Xamarin.Forms を作る人には良いかも

• 紹介記事

Page 33: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Xamarin Profiler

• Mono log profiler を GUI で見れるように

• 更に Xamarin.iOS, Xamarin.Android, Xamarin.Forms のプロファイリングを追加

• 紹介記事

Page 34: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

XamarinInsights

• Analytics ツール

• Preview 版なのでサブスクリプションを持っている方は試せます。

• 紹介記事

Page 35: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

DEMO

Page 36: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

できること・できないこと FAQ

Page 37: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

FAQ 0 • C# T シャツかっこいい!• http://xamarin.com/prebuilt/sharp-shirt か

らサンプルプロジェクトをダウンロードしてビルドしてください。船便で Tシャツが届きます!

Page 38: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

FAQ 1 • でも、お高いんでしょう?• はいw

• 無料の STARTER というのがあると聞きました• http://xamarin.com/starter

• ただし・・・

• Mac が必須と聞いたんですが…• iOS アプリをビルドするのに Xcode が必要なんです。

• Visual Studio Express でも大丈夫?• VS は Pro 以上が必要です。

• Windows ストアアプリも対応してますか?• Visual Studio があるじゃない (Mac では無理ゲー)

Page 39: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

FAQ 2 • ネイティブで作ったライブラリは使えるの?• Binding して Xamarin 用 dll にする。• ネイティブライブラリを組み込んで P/Invoke や JNI 経由• iOS Framework を Android で、Android の jar を

iOS では使えません。

• Xamarin で作ったライブラリはネイティブで使えるの?• 使えません。

• NuGet は使えるの?• 使えます。Xamarin 専用の ComponentStore もあり

ます。

• WinForm や WPF 用のライブラリは使えるの?• 基本的には使えないと思います。• Prism (Pattern & Practice 製の Mvvm フレームワー

ク) は PCL 化されているので Xamarin でも使えます。

Page 40: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

FAQ 3 • ソース一回書けばいいと思ってた• ネイティブの知識も必要ですぜ… 旦那…?

• どれくらい共通化できるの?• 30%~60% くらいかと思います。

• OS 毎に開発するのは?• UI を定義する部分• OS 固有の機能を実装する部分

• 共通化できるのは?• ロジック (データベースへのアクセス、通信処理など) 部

分• 定義した UI に対してデータのやり取りをする部分• Xamarin.Forms を使用すると UI も共通化できま

す。

Page 41: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

FAQ 4 • 共有化はどうやってやるの?• Universal App (Shared

Project)

• PCL (Portable Class Library)• Profile に注意

• リンク参照

• MvvmCross などのフレームワーク

Page 42: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

FAQ 5 • テストはどうやるの?• 単体テストとして NUnit, Unit Test Project を使え

ます。

• 受け入れテストとして、Xamarin Test Cloud (有償で超お高いんでしょう…?案件) と Calabash を使えます。

• 多分シロッコとかも使えるのでは…?

• 新機能の Xamarin Profiler や Insights などを活用してみても良いかも…!

Page 43: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

FAQ 6 • 日本語の資料ってあるの?• ・・・

• 鋭意努力します! ><

• 英語ドキュメントは Xamarin が山のように用意していますので、ぜひご覧ください。

• サンプルが欲しいんですが?• Xamarin が山のように (ry なお、Apache 2.0 ラ

イセンスなのでそのまま使っても大丈夫!

• 書籍が欲しいんですが?• http://www.amazon.co.jp/exec/obidos/AS

IN/4822298345/

Page 44: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

評価版

http://xamarin.com/download

Page 45: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

事例

Page 46: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

NHK 紅白

フェンリル株式会社

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

Page 47: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

ルナルナ 体温ノート

株式会社エムティーアイ 様

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

Page 48: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Home Network SDK

ソニーデジタルネットワークアプリケーションズ株式会社

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

Page 49: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

PressSyncPro

早瀬弘晃 様

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

Page 50: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Rdio: 50,000 行のコードを共有

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

Page 51: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

pCloud

オンラインストレージアプリ

自動アップロード、オフラインファイルなど

Android

iPhone

http://xamarin.com/apps/app/pcloud | http://ytabuchi.hatenablog.com/entry/2014/03/20/142755

Page 52: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Kick The Ball

3Dゲーム

iPhone, iPad, Android アプリ

iPhone

Android

http://j.mp/QC8P2o | http://ytabuchi.hatenablog.com/entry/2014/04/07/185112

Page 53: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Hitcents -Draw a Stickman EPIC

MonoGame を利用• XNA 4 の OSS 実

95%コードを共通化

iPhone, iPad, Android, Windows ストアアプリ

http://blog.xamarin.com/draw-a-stickman-epic-now-available-for-iphone-ipad-and-windows-8-2/

Page 54: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

参考資料

Page 55: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

デモで使用したサンプル

• iOS• SingleWordKeyboard

• http://developer.xamarin.com/samples/SingleWordKeyboard/

• Android• Android L Sample

• https://github.com/xamarin/monodroid-samples/tree/android-l/Android-L

• XMLReading• PCL 版

• http://jp.xlsoft.com/demo2/xamarin/XMLReading.zip

• Xamarin.Forms 版• http://jp.xlsoft.com/demo2/xamarin/UniversalXM

LReading.zip

• Sketches• Slappy Salmon

• https://github.com/xamarin/sketches

Page 56: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

サンプル・ブログなど

• Xamarin.iOS サンプル• https://github.com/xamarin/monotouch-

samples

• Xamarin.Android サンプル• https://github.com/xamarin/monodroid-

samples

• Japan Xamarin User Group• http://j.mp/xm-jxug

• 田淵ブログ• http://ytabuchi.hatenablog.com/entry/toc

• Xamarin ブロググループ• http://j.mp/xm-htngrp

• Qiita Xamarin タグ• http://qiita.com/tags/xamarin

Page 57: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Xamarin.Forms について

• Xamarin.Forms 概要• http://www.slideshare.net/amay077/xamarinforms

• Build Insider インサイドXamarin(14) - Xamarin.Formsの基本構想と仕組み

• http://www.buildinsider.net/mobile/insidexamarin/14

• Build Insider Xamarin逆引きTips 連載• http://www.buildinsider.net/mobile/xamarintips

• Xamarin.Forms - SIN@SAPPOROWORKSの覚書• http://furuya02.hatenablog.com/category/Xamarin.Forms

• Xamarin.Forms ドキュメント(英語)• http://developer.xamarin.com/guides/cross-platform/xamarin-

forms/

• API ドキュメント(英語)• http://iosapi.xamarin.com/?link=N%3aXamarin.Forms

• Xamarin.Forms サンプル (C#)• https://github.com/xamarin/xamarin-forms-

samples/tree/master/FormsGallery

• Xamarin.Forms サンプル (XAML)• https://github.com/xamarin/xamarin-forms-

samples/tree/master/XAMLSamples

Page 58: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

開発OS 対象 OS IDE 必要なシステム

Windows

iOSVisual Studio

Windows• Windows 7 以上• Visual Studio 2010/2012/2013 Professional 以上(Express 未対応)• Xamarin.iOS (Xamarin 統合インストーラーに同梱)Mac• OS X Lion 10.8 以上• Xcode 5

Xamarin Studio 未対応

Android

Visual Studio

• Windows 7 以上• Visual Studio 2010/2012/2013 Professional 以上(Express 未対応)• J2SDK 1.6/1.7 32bit (Xamarin 統合インストーラーに同梱)• Android SDK, NDK (Xamarin 統合インストーラーに同梱)• Gtk# (Xamarin 統合インストーラーに同梱)• Xamarin.Android (Xamarin 統合インストーラーに同梱)

Xamarin Studio

• Windows 7 以上• J2SDK 1.6/1.7 32bit (Xamarin 統合インストーラーに同梱)• Android SDK, NDK (Xamarin 統合インストーラーに同梱)• Gtk# (Xamarin 統合インストーラーに同梱)• Xamarin.Android (Xamarin 統合インストーラーに同梱)

Mac

iOS Xamarin Studio• OS X Lion 10.8 以上• Xcode 5• Xamarin.iOS (Xamarin 統合インストーラーに同梱)

Android Xamarin Studio

• OS X Lion 10.7 以上• J2SDK 1.6/1.7• Android SDK, NDK (Xamarin 統合インストーラーに同梱)• Xamarin.Android (Xamarin 統合インストーラーに同梱)

Page 59: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

まとめ

Page 60: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Xamarin(ザマリン)API 100% 移植“ネイティブ” アプリC# / .NETコード共通化

Page 61: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

“ネイティブ”アプリ

• C# + .NET ランタイム

• ネイティブ UI

• ネイティブ “パフォーマンス”

Page 62: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

iOSAPI

100% 対応

Page 63: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

AndroidAPI

100% 対応

Page 64: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Xamarin を使用した開発

Page 65: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

Xamarin.Forms - 画面の共通化

UI “コード”の共通化

ビルド時にネイティブUI にマップ

XAML で書ける!(ただし手動)

Phone

Page 66: Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92

ご清聴ありがとうございます

ご質問がありましたら、田淵までお気軽にどうぞ[email protected] / 03-5440-7875Twitter: @ytabuchiBlog: http://ytabuchi.hatenablog.com/