Xamarinクロスプラットフォームでモバイルアプリ開発
竹内孝志
アジェンダXamarin について使ってみた結果
UI ローカル DB 生産性
Xamarinについてクロスプラットフォーム開発環境ネイティブアプリが開発可能開発言語は C#Mono ランタイムで動く
なぜ Xamarinか?ネイティブアプリが開発が可能
高パフォーマンスなアプリの開発
クロスプラットフォーム開発環境比較費用 言語 ネイティブ 備考
Xamarin 有料 C# ○
Adobe air 無料 actionScript ○Cordova 無料 HTML ×Titanium 無料 Javascript ×
Corona 有料 Lua ○ ゲームエンジンcocos2D-x
無料 C++ ○ ゲームエンジン※ 有料無料はストアに配信可能かどうかで判断
ライセンスについて
計 \24,3000
Xamarin Android BusinessXamarin.iOS Business
\127,800\127,800
・価格が2倍のコンポーネントやサポートが充実したエンタープライズ版がある。・ xamarin は永久ライセンスなため一度支払えば永久的に使用することが可能。・サポートやバージョンアップに関しては1年間のみ。
Xamarinを使ってみるXamarin Studio という IDE がある。
評価版のライセンスで使用してみた。
評価版ライセンスについて・ Business 版と同じ機能を提供・ 30 日間のみ使用可能・ビルドしてから 24 時間経過後にアプリの起動不可
課題 (注目すべきところ )
機能 UI の実装 ローカル DB の実装
生産性 プラットフォーム共通コードの量 開発ツールの使いやすさ
コストを抑えつつ、高パフォーマンスなアプリを開発したい。iOS 、 Android 両方とも同じ UI で開発したい。■課題
サンプル開発できるだけコードを共通させたいため Xamarin.Forms で開発した。
共通コード
iOS 用コード Android 用コード
共通コード
共通コードUI
アプリロジックForms を使用しない Forms を使用する
サンプル開発S プロジェクトで導入可能かの検証を目的とするため、似たような機能を持つアプリを開発。 ( 最後にデモをします。 )
AP サーバAPI でリストを取得
画面を取得する
UIの実装Children
Label 2Label 1
・レイアウトに対して UI 要素を配置。・ UI 要素にアクションを記述。・レイアウトにレイアウトも配置可。
Cli
UIの実装 (コード )
※ サンプルアプリのコードとは関係ありません
入れ子構造で要素を記述していくイメージ
ローカルDBについて
ローカル DB 接続コード(Android 用 )
ローカル DB 接続コード(iOS 用 )
SQLite.Net-PLC(追加ライブラリ)
DB 操作共通ロジック
SQLite.Net-PLC(追加ライブラリ)
iOS デバイスに保存 Android デバイスに保存
ローカルDBについて (コード )
※ サンプルアプリのコードとは関係ありません
SQLite.Net は ORM を搭載しているため簡単に記述できる
生産性について (コード量 )今回は一部の DB 処理以外は共通コードとして記述できた。
共通コード
Android専用コードiOS専用コード
生産性について (ツール )
・環境構築が簡単 → IDE のインストールのみ・ライブラリの追加が簡単 → IDE 上から NuGet で導入・ iOS と Android のコードを同時に管理できる・動作確認において iOS と Android の切り替えが設定1つでできる
XamarinStudioは使いやすい印象を受けた
導入する上での問題点Xamarin.form を使用した場合に iOS と Android で UI が大きく異なる。
■Android ■iOS
導入していくなら
依頼者 開発者
① ワイヤーをもらう
②Android と iOS の UI サンプルを作り それぞれのイメージを渡し合意を得る
Xamarin.forms だけでは iOS 、 Android 共にワイヤー通りの UI を実現するのは難しい。ある程度妥協してもらう必要がある。
導入していくならもしくは、 Xamarin.form での開発を諦めて UI は独自に実装する。
共通コード
iOS 用コード Android 用コード
共通コード
共通コードUI
Forms を使用しない Forms を使用する
おまけXamarin は工夫次第ではプラットフォーム毎のコードを共通化できる。例えば、ローカル DB を使うとき、公式のライブラリ SQLite.Net を使用した場合は iOS 、 Android の独自なコードを記述しなければならなかったが、 Akaveche という独自の DB 実装したオープンソースのライブラリがある。これを使用すれば iOS 、 Android 共通でローカル DB を使用できる。
参考xamarin公式https://xamarin.com/xamarinドキュメントhttp://developer.xamarin.com/akavachehttps://github.com/akavache/Akavachebuildinsider.net(Xamarinの記事がたくさん )http://www.buildinsider.net/tagcloud?tag=Xamarin
ご清聴ありがとうございました