Introduction of Xamarin


2013.7.15 jaghama #27

自己紹介


  • amay077
  • 位置情報エンジニア
  • C++ → VB → .NET → Java, Obj-C …
  • Android, iOS …
  • 名古屋通勤→在宅(豊橋)
  • HexRinger というアプリ作りました

開発会社のよくある風景


  • クラ/サバ、Webシステムがメイン

  • 言語は Java,.NET,PHP とか

  • Javascript 分かりません(jQueryなら…)

  • Objective-C やりたくない

  • 当然 Mac などない(あっても数台)

だが案件は降ってくる


  • 「某在庫システム、スマホ対応したいんだけど」

  • もち、iPhone, Android 両対応ね

  • 言い忘れてたけどタブレットでも使うから

  • あ、今後の為に Win8 も考慮しといて

  • XP で動いてる現行システムもメンテ続くから

どうします?


----------ガチネイティブ----------
  • 開発n倍、メンテもn倍で死
  • そもそも Obj-C できる人いない

----Titanium とか PhoneGap----
  • Javascript できません
  • Eclipse や Visual Studio 並みの開発環境がないと…

----いっそ HTML5?----
  • 現実を見ろ!

そこで

Xamarin(ざまりん)!


  • Mono (.NET Framework の Open Source 版)を作った人たちの会社とそのプロダクト
  • Xamarin.iOS : MonoTouch と呼ばれていたもの
  • Xamarin.Android : Mono for Android と呼ばれ(ry


.NET(C#) で Android/iOS アプリが開発できる!

いつもオチに使われるので先に言っとく



有償です!
しかも割と Expensive

Plan Buisiness : $999/year/platform/developer
http://store.xamarin.com/

けど開発&メンテがN倍に比べれば安いもの

あと、先に幻想をぶち壊しておく


"Write once, run anywhere" 

ではありません

「諸君らの愛してくれた Flash(Air) は死(にそう)だ!なぜだ!」

Xamarin が提供するモノ


------------- API --------------
  • iOS, Android で動く .NET の基本的クラスライブラリ
  • iOS API の .NET ラッパー
  • Android API の .NET ラッパー


------------ 開発ツール ------------
  • Xamarin Studio
  • Visual Studio の Add-in

クロスプラットフォーム化できるところとできないところ


-----できる-----
  • 通信処理周り
  • コアロジック、アルゴリズム
  • いわゆる MVC の Model部

-----できない-----
  • UI周り(Activity vs ViewController)
  • デバイスAPI周り(カメラ、GPS、アドレス帳呼び出しなど)

それで十分


  • "Sharing up to 80% code for iOS, Android and Windows platforms, a retail app case study"
    via http://xamarin.com/evolve/2013#session-shy07zqsoz

  • 「慣れれば8割くらいのコードを共有化できる」
    via http://ufcpp.wordpress.com/2013/02/24/xamarin-2-0/

既存.NETライブラリも再利用できる



via http://www.delphifeeds.com/go/t/105853

プラットフォーム依存部はただのラッパ


  • クラス名やアプリケーションライフサイクルはプラットフォームのそれそのもの

  • つまり「つぶし」が効く

  • Objective-C というヘンテコ言語を無視して、iOSアプリの仕組みを学べる

さらに

強力な開発環境


-----Xamarin Studio-----
  • 実用していてまったく問題ないレベル
  • 強力なデバッグ機能(ブレーク、変数のウォッチ等)
  • 本家を超えるレイアウトエディタ
  • Visual Studio互換のプロジェクトファイル

-----Visual Studio Add-in-----
  • Visual Studio で Android/iOSアプリ開発を実現
  • Visual Studio の機能がそのまま使える
  • (iOSアプリのビルドは Mac をサーバにして行う)

Demo

まとめ


  • 複数プラットフォーム間のムリのないコード共有
    (Windows既存システムとも)

  • プラットフォーム固有部は潔く郷に従う

  • 最強の開発環境が使える

クロスプラットフォーム開発のベストプラクティス
「Xamarin」

ありがとうございました











this presentation is created by slid.es