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.5k
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
Introduction of Aizome - 多言語対応とスタイル適用を両立する書式付き文字列ライブラリ
iseebi
0
110
Bitriseで本をビルドする / Build a book with Bitrise
iseebi
0
150
BitriseでmacOSアプリをビルドする / Build macOS apps with Bitrise
iseebi
1
790
iOS/Androidアプリ転送ツール TransporterPadの紹介
iseebi
0
6.1k
Apple Developer Enterprise Program でどこまでいけるのか
iseebi
0
780
ReactiveProperty を使ったアプリの設計に Realm Xamarin を組み合わせる
iseebi
0
650
ReactiveProperty で Xamarin アプリの作り方が変わった
iseebi
3
1.7k
600件のPull RequestからみたXamarinのはまりどころ
iseebi
3
4.3k
Yet Another Cross Platform Development
iseebi
0
4.2k
Other Decks in Programming
See All in Programming
Nuances on Kubernetes - RubyConf Taiwan 2025
envek
0
120
[DevinMeetupTokyo2025] コード書かせないDevinの使い方
takumiyoshikawa
2
270
AI Ramen Fight
yusukebe
0
130
Vibe Codingの幻想を超えて-生成AIを現場で使えるようにするまでの泥臭い話.ai
fumiyakume
21
10k
オホーツクでコミュニティを立ち上げた理由―地方出身プログラマの挑戦 / TechRAMEN 2025 Conference
lemonade_37
2
450
AIコーディングエージェント全社導入とセキュリティ対策
hikaruegashira
16
9.5k
Strands Agents で実現する名刺解析アーキテクチャ
omiya0555
1
110
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
a_suenami
10
1.7k
構文解析器入門
ydah
7
2k
Infer入門
riru
4
1.3k
#QiitaBash TDDで(自分の)開発がどう変わったか
ryosukedtomita
1
350
AIのメモリー
watany
13
1.4k
Featured
See All Featured
Practical Orchestrator
shlominoach
190
11k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Faster Mobile Websites
deanohume
308
31k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
47
9.6k
For a Future-Friendly Web
brad_frost
179
9.9k
Six Lessons from altMBA
skipperchong
28
3.9k
Building an army of robots
kneath
306
45k
Docker and Python
trallard
45
3.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
800
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
ご清聴ありがとうございました