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

Preview:

DESCRIPTION

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

Citation preview

Xamarin 概要

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

エクセルソフト株式会社

Business Development Manager

田淵 義人

ytabuchi@xlsoft.com

03-5440-7875 / 080-7015-3586

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

• Xamarin でググれ

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

• Twitter: @ytabuchi

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

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

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

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

• Twitter: @ytabuchi

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

本セッションのゴール

お知らせ

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

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

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

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

はじめに

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

家庭の所有率はタブレット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

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

今までのアプリ開発

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

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

分厚いラッパー

リリースまでの日数

App Generation

何を使えばいいの?

• ネイティブ (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

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

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/

“ネイティブ”アプリ

• C# + .NET ランタイム

• ネイティブ UI

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

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;

iOSAPI

100% 対応

AndroidAPI

100% 対応

DEMO

コード共通化

.NET BCL (Mono)

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

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

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

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

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

Xamarin を使用した開発

共有方法 • 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• 後述

Shared Project

Xamarin.Forms - 画面の共通化

UI “コード”の共通化

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

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

Phone

Pages

Content MasterDetail Navigation Tabbed Carousel

Layouts

Stack Absolute Relative Grid ContentView ScrollView Frame

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

Xamarin.Forms では物足りない?

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

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

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

DEMO

コード共有方法の違いが良く分かる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

Evolve 2014

Xamarin AndroidPlayer

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

Genymotion 不要

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

• OpenGL サポート

• GPS エミュレート

• バッテリー量可変

• 紹介記事

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

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

• 紹介記事

Xamarin Profiler

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

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

• 紹介記事

XamarinInsights

• Analytics ツール

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

• 紹介記事

DEMO

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

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

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

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

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

• ただし・・・

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

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

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

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 でも使えます。

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

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

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

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

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

す。

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

Project)

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

• リンク参照

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

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

ます。

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

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

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

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

• 鋭意努力します! ><

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

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

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

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

IN/4822298345/

評価版

http://xamarin.com/download

事例

NHK 紅白

フェンリル株式会社

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

ルナルナ 体温ノート

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

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

Home Network SDK

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

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

PressSyncPro

早瀬弘晃 様

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

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

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

pCloud

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

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

Android

iPhone

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

Kick The Ball

3Dゲーム

iPhone, iPad, Android アプリ

iPhone

Android

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

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/

参考資料

デモで使用したサンプル

• 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

サンプル・ブログなど

• 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

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

開発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 統合インストーラーに同梱)

まとめ

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

“ネイティブ”アプリ

• C# + .NET ランタイム

• ネイティブ UI

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

iOSAPI

100% 対応

AndroidAPI

100% 対応

Xamarin を使用した開発

Xamarin.Forms - 画面の共通化

UI “コード”の共通化

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

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

Phone

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

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

Recommended