Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Xamarinによるマルチデバイス・クロスプラットフォーム開発の実際
Search
Nobuhiro Ito
September 05, 2014
Programming
4
1.4k
Xamarinによるマルチデバイス・クロスプラットフォーム開発の実際
2014/09/05(Fri) Developers Summit 2014 Kansai (C-3: Mobile Track)
Nobuhiro Ito
September 05, 2014
Tweet
Share
More Decks by Nobuhiro Ito
See All by Nobuhiro Ito
Bitriseで本をビルドする / Build a book with Bitrise
iseebi
0
130
BitriseでmacOSアプリをビルドする / Build macOS apps with Bitrise
iseebi
1
730
iOS/Androidアプリ転送ツール TransporterPadの紹介
iseebi
0
6k
Xamarinアプリとプッシュ通知
iseebi
2
1.6k
Apple Developer Enterprise Program でどこまでいけるのか
iseebi
0
740
ReactiveProperty を使ったアプリの設計に Realm Xamarin を組み合わせる
iseebi
0
610
ReactiveProperty で Xamarin アプリの作り方が変わった
iseebi
3
1.6k
600件のPull RequestからみたXamarinのはまりどころ
iseebi
3
4.2k
Yet Another Cross Platform Development
iseebi
0
4.2k
Other Decks in Programming
See All in Programming
各クラウドサービスにおける.NETの対応と見解
ymd65536
0
110
Effective Signals in Angular 19+: Rules and Helpers
manfredsteyer
PRO
0
110
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
3
470
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
190
Spatial Rendering for Apple Vision Pro
warrenm
0
110
情報漏洩させないための設計
kubotak
2
290
Amazon S3 NYJavaSIG 2024-12-12
sullis
0
100
CSC305 Lecture 26
javiergs
PRO
0
140
ある日突然あなたが管理しているサーバーにDDoSが来たらどうなるでしょう?知ってるようで何も知らなかったDDoS攻撃と対策 #phpcon.2024
akase244
0
130
良いユニットテストを書こう
mototakatsu
8
2.6k
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
2
100
Scalaから始めるOpenFeature入門 / Scalaわいわい勉強会 #4
arthur1
1
340
Featured
See All Featured
A better future with KSS
kneath
238
17k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Side Projects
sachag
452
42k
The Cost Of JavaScript in 2023
addyosmani
45
7k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Navigating Team Friction
lara
183
15k
Building Applications with DynamoDB
mza
91
6.1k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Transcript
Xamarinによる マルチデバイス・クロスプラットフォーム開発の実際 伊藤 伸裕 (@iseebi) フェンリル株式会社
今⽇のお話 クロスプラットフォーム技術として Xamarinを導⼊したときに どうしたか&どうなったかというお話
⾃⼰紹介 伊藤 伸裕 フェンリル株式会社 共同開発部 ⼤阪⽣産課 所属 スマートフォンアプリ共同開発の実開発をしてるセクション スマートフォン/タブレットアプリエンジニア iOS/
Android / Windows (Phone|Store App) (元はPHPを使うWebエンジニア。システム全体設計もしてます) 最近はセールスエンジニア的な動きも(⾒習い) @iseebi / id:iseebi 会社としてはSleipnirというブラウザなどを作っています
今⽇のスライドも Picky-Picsで作りました 誰でもプロ並みのデザインでポスターやチラシ、 プレゼン資料などが作れるオンラインデザインツール
誰でもプロ並みのデザインでポスターやチラシ、 プレゼン資料などが作れるオンラインデザインツール https://picky-pics.com/
スマートフォンアプリの開発 フェンリルの共同開発では 数多くの企業様と http://www.fenrir-inc.com/jp/business/app/casestudy_app 多様なアプリを開発しています。
Xamarin開発事例 その他、複数の案件が進⾏中
iOS / Android ? iOSとAndroidをどちらも作ったアプリは全体の半分以上 ※ストアには両対応で上がっているが、フェンリルが⽚⽅、他社が⽚⽅という場合は両対応としてカウントせず。 iOS/Android iOSのみ Androidのみ 57.1%
33.3% 9.5% フェンリルで作ったアプリの対応プラットフォーム(2013年度) ※2013年4⽉から2014年3⽉までの間にストアリリース・更新・本番化されたものが対象。
Windowsも盛り返しつつある タブレットの分野では盛り返してきている iOS Android Windows 43.8% 45.7% 10.5% 2013年度国内タブレット端末OS別出荷台数シェア 2013年度通期国内タブレット端末出荷概況
- 株式会社 MM総研 http://www.m2ri.jp/newsreleases/main.php?id=010120140521500
リリースまでの素早さは更に求められる 例:ニュースアプリ戦国時代 激しい他社追従・ジャンル特化が⾏われている
通常の複数プラットフォーム開発の流れ 設計 iOS Android 開発 テスト 申請 ※いくつかのパターンのうちの⼀つ 開発 テスト
通常の複数プラットフォーム開発の流れ 設計 iOS Android 開発 テスト 申請 ※いくつかのパターンのうちの⼀つ 開発 テスト
iOS/Android同時リリース ※事前の設計次第ではうまく着地できる
マルチプラットフォーム同時開発で起こる問題 OSごとに処理フローが微妙に異なってしまう 異常系のうち1つが微妙に動作が違う、など 「同じものだから早く安くできるよね」という誤解 お客さんからしたら同じだけど、全く別のものを作っている 速さを求めると設計や試験でカバーしきれず、バグが残ったり... そもそもDRY的な意味でなんかヤダ 同じものを複数回作っちゃダメという原則に反する コストもほぼほぼ各プラットフォームごとに同じくらい
開発期間は少ない、しかもリリースはずれない しかも iOS / Android 両対応 いかにスケジュールを守りつつ、品質を⾼めるか そういう開発は普通にある
クロスプラットフォーム開発 そうだ すればいいんだ!
クロスプラットフォーム開発、遅かった時代 HTML5ベース=ハイブリッドアプリ パフォーマンスを出すのがとても⼤変&APIも最⼤公約数的。 Facebookはハイブリッドだったが、不評だったのでネイティブに戻した。 App Generation
2013/02/20 Xamarin 2.0 がリリースされる iOS / Android の開発がC#ででき、もともとC#のWindowsを含めると 3OSのアプリをC#だけでを全部カバーできる!
Xamarinを使ったクロスプラットフォーム開発 すべてのネイティブAPIをC#から扱える C#の既存資産・ライブラリも使える
⽋点・・・ ライセンスがめっちゃ⾼い 会社で⼊れると 127,800円/1開発者・1OS・1年 きちんと運⽤できればそれを上回る効果は出せると思った。
導⼊ 軽く振っただけでは偉い⼈はもちろん消極的 Xamarinの価格は、チーム分⼊れると⼤きな投資になる 半年近くロビー活動をつづけた 社内ツールをMonoMac(Xamarin.MacのOSS版)で作ってみる 社内の勉強会で紹介しまくる ⾒積をするとき、Xamarinでやったときの⾒積もおまけにつけておく →半年後「Xamarinでやってよい」 という案件を作り出すことができた!
Xamarinでの実開発 iOS / Android のクラスはそのままC#で扱える UIViewController, UITableView, UIButton, AVCaptureSession... ただ使うだけでは効率を上げることができない
Activity, ListView, ToggleButton, Intent... ただ⾔語がC#になっただけで、やってることはObjective-C/Javaと まったく変わらないということは起こりえる。 C#らしく使えるような拡張もある(Clickイベントなど)
いかにして共有コードを 増やすかが勝負!
MVVMを使う!
MVVM: Model-View-ViewModel ソフトウェアデザインパターンの⼀つ WPF/Silverlight 系の環境で培われた ViewとViewModelの間はバインディングなどの定義で接続し、 Model と View と
ViewModel にわけてアプリを作る Viewにはコードをなるべく書かない(書いたら負けと⾔われている) Data Binding Command Message View ViewModel Model
Xamarin+MVVM=コード共有が加速 ViewModelまでは全プラットフォームで共通にできる ビジネスロジック・画⾯の操作の⼤部分を共通にできる Viewにはコードをなるべく書かないというのが活きてくる Model ViewModel Shared C# Backend +
iOS View Android View → →
Xamarin 2⼤MVVMフレームワーク Xamarin⽤のMVVMフレームワークのうち、 広く使われているものは⼆つ MvvmCross オープンソース、⻑く使われていて実積あり、Windows8サポート Xamarin.Forms Xamarin公式、Viewまで共通化できる、モバイル専⽤
DEMO MvvmCrossを使ったアプリの実例
実際に開発をしてみて 確かに効果はあった! 実績値として、60%のコードを共有部分として括りだせた iOSで直したロジックのバグは、Androidではもうでない! Xamarin、MvvmCross特有のところでつまづくことも ネイティブライブラリをリンクする⽅法など、探すのが難しいものもあった MvvmCrossのバグもちらほらある(Pull Request送ったりした) →詰まることもあるけど、だいたいなんとかなる! (最初は学習コスト⾼いかも)
MVVMの感覚に慣れるまでは時間がかかる
Xamarinでこうなる! 設計 iOS Android 開発 テスト 申請 ※いくつかのパターンのうちの⼀つ 開発 テスト
共通化で後発の開発を短く!
MVVMチーム開発・これだけは気をつけたい ViewとViewModelのインターフェイスの決めが重要 画⾯要素とプロパティの紐付けの認識合わせは Data Binding Command Message View ViewModel Model
ドキュメントなどでしっかりしておくこと。 ここの認識合わせ重要
まとめ
誰でもプロ並みのデザインでポスターやチラシ、 プレゼン資料などが作れるオンラインデザインツール https://picky-pics.com/
クロスプラットフォーム開発 ⾼まる複数OS・⾼速開発の 要望に対応するための選択肢
アプリをC#で開発できる Xamarinなら ネイティブの速度で⾼速に動く
⾼速かつ⾼品質なアプリ開発を MVVMで ソースの多くを共通化して
最後に
None
None
None
ご清聴ありがとうございました