Weitere ähnliche Inhalte Ähnlich wie Xamarin で始めるクロスプラットフォーム開発 (20) Xamarin で始めるクロスプラットフォーム開発2. / 48
自己紹介
石崎 充良 ( @mishi_cs )
Japan Xamarin Users Group ( JXUG )
Microsoft MVP for Visual Studio and Development Technologies
言語: C# XAML
活動:
・JXUG (もくもく会) (connpass)
・城東.NET Users Group (connpass)
・C# もくもく会 (connpass)
※主に秋葉原
2
6. / 48
今日話さないこと
・Windows、Tizen
Windows や Tizen アプリもターゲットです
・F# (.NET 界の関数型言語)
F# (関数型言語)でも作れます
・C# と Mono/.NET 言葉の明確な使い分け
Java と JVM Javaクラスライブラリ のような関係。今日は C# のライブラリと表現します
・Visual Studio for Mac
Windows 版と Mac で IDE の UI が異なります
6
8. / 48
Mac は必要
・iOS 向けのビルドは Mac 上で行わなければならない
これはどのクロスプラットフォームアプリ開発でも同様
iOS アプリのビルドは Mac 上で行わなければならない決まり
・Xamarin Live Player はビルドしていない
Mac 不要でアプリのデバッグができるが、アプリのビルドはしていない
浅い動作しかしないため、デバッグとしても UI 定義の確認程度
8
10. / 48
Xamarin とは
・Android / iOS の API を C# から使えるようにしたもの
・C# (.NET) のライブラリを使えるようにしたもの
10
ロジックのみ共通化
UIはネイティブで個別に作りこむ
Shared C# App Logic
(.NET Standard)
iOS
C# UI
Android
C# UI
Windows
C# UI
11. / 48
Xamarin の2つの開発方法
11
Xamarin Native Xamarin Forms
ロジックのみ共通化
UIはネイティブで個別に作りこむ
ロジックとUIを共通化
UIは各プラットフォームの
同じ役割のUIが自動マッピング
Shared C# App Logic
(.NET Standard)
iOS
C# UI
Android
C# UI
Windows
C# UI
Shared C# App Logic
(.NET Standard)
Shared C# UI Code
(Xamarin.Forms)
13. / 48
UI の開発手法
13
Xamarin.Native Xamarin.Forms
概要 ネイティブの技術を使用 UI 共通化ライブラリ
定義 Android では axml
iOS では storyboard など
xaml というシンプルな XML
制約 制限のない UI 各プラットフォームの最大公約数の機能
のみ
特徴 UI が共通化できない UI にこだわらないアプリなら UI まで共
通化可能
使いどころ コンシューマー向けアプリやデザ
インを重視する場合に
ビジネス向けアプリや機能重視のツール
系アプリなどに
Formsで細
かくUIを定
義したい
Custom Renderer で独自にネイティブの
コントロール/プロパティと結合するコン
トロールを作成可能
14. / 48
C# (.NET) のライブラリ
全体像
14
Xamarin
コード共有
Xamarin.Navive Xamarin.Forms.axml /
storyboard
Xamarin.Android
Xamarin.iOS
UI の定義UI の定義 どちらか選択
22. / 48
Xamarin の特徴
・C# / .NET / Visual Studio
◦C# / Visual Studio の新機能はすぐにすべて使える
・(Android・iOS) のAPI カバー率 100 %
◦Android・iOS の新機能はすぐにすべて使える
22
30. / 48
パッケージ追加
取り込んだ UI 定義によってはパッケージを追加する必要がある
※前述のハンズオンにない手順
30
AppCompat、
Constraint.Layout を追加
右クリック
クリック
検索
33. / 48
書き換えポイント例
33
Java C#
名前空間 package namespace
package インポート import using
メソッドオーバーラ
イド
@Override
public void method()
public override void Method()
定数 final const
定数 Double.MAX_VALUE Double.MaxValue
ゲッター/セッター getValue() / setValue(...) プロパティ
public int Value{ get; set; }
種類を表す定数 static final 定数 enum 列挙型
無名クラス ある ない
ボタンクリックなどはラムダ式で設定
インナークラスから
親クラスの参照
できる できない
親クラスの参照を渡す必要がある
35. / 48
Xamarin とは
・Android / iOS の API を C# から使えるようにしたもの
・C# (.NET) のライブラリを使えるようにしたもの
35
ロジックのみ共通化
UIはネイティブで個別に作りこむ
Shared C# App Logic
(.NET Standard)
iOS
C# UI
Android
C# UI
Windows
C# UI