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.3k
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
120
BitriseでmacOSアプリをビルドする / Build macOS apps with Bitrise
iseebi
1
670
iOS/Androidアプリ転送ツール TransporterPadの紹介
iseebi
0
5.9k
Xamarinアプリとプッシュ通知
iseebi
2
1.6k
Apple Developer Enterprise Program でどこまでいけるのか
iseebi
0
700
ReactiveProperty を使ったアプリの設計に Realm Xamarin を組み合わせる
iseebi
0
580
ReactiveProperty で Xamarin アプリの作り方が変わった
iseebi
3
1.6k
600件のPull RequestからみたXamarinのはまりどころ
iseebi
3
4.1k
Yet Another Cross Platform Development
iseebi
0
4.1k
Other Decks in Programming
See All in Programming
Harnessing Large Language Models for Training-free Video Anomaly Detection
tereka114
1
1.3k
Clean Architecture by TypeScript & NestJS
ryounasso
0
150
みんなのオブザーバビリティプラットフォームを作ってるんだがパフォーマンスがやばい #mackerelio #srenext
ne_sachirou
0
380
さきがけから振り返るアーキテクチャ刷新 / Reflecting on the Architectural Renewal from the Vanguard
nrslib
2
780
Webエディタライブラリ 「CodeMirror」から学ぶ Webアプリ開発のテクニック
ryosukeigarashi
0
250
GraphQL はいいぞ! ~Laravel で学ぶ GraphQL 入門~
azuki
1
160
Architectures with Lightweight Stores: New Rules and Options
manfredsteyer
PRO
0
100
Jetpack for KMP
fornewid
1
290
ドメイン駆動設計の実践
masuda220
PRO
19
5.2k
DDDを志して3年経ったら「DDDの皮を被ったクリーンアーキテクチャ」になった話【デブサミ2024夏】
texmeijin
1
620
Trial
cairolibrary720
1
130
Polarsの成長: v0.14からv1.0までの変遷と今後の展望
zerebom
1
350
Featured
See All Featured
Building Applications with DynamoDB
mza
89
5.8k
Building Adaptive Systems
keathley
34
2k
Building an army of robots
kneath
301
42k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
662
120k
Optimizing for Happiness
mojombo
373
69k
What's in a price? How to price your products and services
michaelherold
239
11k
Pencils Down: Stop Designing & Start Developing
hursman
118
11k
Unsuck your backbone
ammeep
666
57k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
44
4.7k
[RailsConf 2023] Rails as a piece of cake
palkan
35
4.4k
For a Future-Friendly Web
brad_frost
173
9.2k
The Pragmatic Product Professional
lauravandoore
29
6.1k
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
ご清聴ありがとうございました