SlideShare ist ein Scribd-Unternehmen logo
1 von 49
/ 48
Xamarin で始める
クロスプラットフォーム開発
~Xamarin.Android から始める
クロスプラットフォーム~
1
JAPAN ANDROID GROUP
2018年03月14日
石崎 充良
/ 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
/ 48
[1ページでわかる]
Xamarinの概要
3
/ 48
Xamarin とは
・クロスプラットフォーム
・ネイティブアプリ
・(Android ・iOS) のAPI カバー率 100 %
・C# / .NET / Visual Studio
・クロスプラットフォームでコードを共通化する
4
/ 48
今日話さないこと
5
/ 48
今日話さないこと
・Windows、Tizen
Windows や Tizen アプリもターゲットです
・F# (.NET 界の関数型言語)
F# (関数型言語)でも作れます
・C# と Mono/.NET 言葉の明確な使い分け
Java と JVM Javaクラスライブラリ のような関係。今日は C# のライブラリと表現します
・Visual Studio for Mac
Windows 版と Mac で IDE の UI が異なります
6
/ 48
注意点
7
/ 48
Mac は必要
・iOS 向けのビルドは Mac 上で行わなければならない
これはどのクロスプラットフォームアプリ開発でも同様
iOS アプリのビルドは Mac 上で行わなければならない決まり
・Xamarin Live Player はビルドしていない
Mac 不要でアプリのデバッグができるが、アプリのビルドはしていない
浅い動作しかしないため、デバッグとしても UI 定義の確認程度
8
/ 48
[再放送]
Xamarinの概要
9
/ 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
/ 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)
/ 48
ネイティブの UI
12
/ 48
UI の開発手法
13
Xamarin.Native Xamarin.Forms
概要 ネイティブの技術を使用 UI 共通化ライブラリ
定義 Android では axml
iOS では storyboard など
xaml というシンプルな XML
制約 制限のない UI 各プラットフォームの最大公約数の機能
のみ
特徴 UI が共通化できない UI にこだわらないアプリなら UI まで共
通化可能
使いどころ コンシューマー向けアプリやデザ
インを重視する場合に
ビジネス向けアプリや機能重視のツール
系アプリなどに
Formsで細
かくUIを定
義したい
Custom Renderer で独自にネイティブの
コントロール/プロパティと結合するコン
トロールを作成可能
/ 48
C# (.NET) のライブラリ
全体像
14
Xamarin
コード共有
Xamarin.Navive Xamarin.Forms.axml /
storyboard
Xamarin.Android
Xamarin.iOS
UI の定義UI の定義 どちらか選択
/ 48
C#
・C 言語の流れをくむオブジェクト指向言語で比較的素直で覚えやすい
・言語の進化も歩みを止めていない
15
/ 48
C# 拡張メソッド
・null 対策など頻出するコードなども拡張メソッドを使って簡潔に(書けるようにできる)
※やりすぎ注意
16
/ 48
拡張メソッド例
・null でなければ値を編集し自身のインスタンスを return する例
17
/ 48
拡張メソッド例
前述の 2 例をまとめたコード
18
/ 48
APIカバー率100%
薄いラッパーとも呼ばれる。
19
Android / Java Xamarin / C#
/ 48
プログラミング言語はなんでしょう?
20
/ 48
プログラミング言語はなんでしょう?
21
Android / Java Xamarin / C#
/ 48
Xamarin の特徴
・C# / .NET / Visual Studio
◦C# / Visual Studio の新機能はすぐにすべて使える
・(Android・iOS) のAPI カバー率 100 %
◦Android・iOS の新機能はすぐにすべて使える
22
/ 48
ARKit
23
/ 48
コード
24
参考: https://qiita.com/shu223/items/e55e1426c9e036254761
Github: https://github.com/m-ishizaki/XamARKitSample
/ 48
Xamarin.Android
で始める
Xamarin開発
25
/ 48
ハンズオン例
https://github.com/m-ishizaki/XamarinAndroidHandsOn01
26
移植するアプリ
/ 48
プロジェクトの新規作成
27
/ 48
出来上がるプロジェクト
28
/ 48
Android の UI 定義を取り込み
29
ドラッグ& ドロップ
/ 48
パッケージ追加
取り込んだ UI 定義によってはパッケージを追加する必要がある
※前述のハンズオンにない手順
30
AppCompat、
Constraint.Layout を追加
右クリック
クリック
検索
/ 48
コードをコピペして調整
31
コピーして貼り付け
/ 48
実行
32
/ 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 列挙型
無名クラス ある ない
ボタンクリックなどはラムダ式で設定
インナークラスから
親クラスの参照
できる できない
親クラスの参照を渡す必要がある
/ 48
コード共有化
34
/ 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
/ 48
コード共有
36
共有コード
Android 用コード
iOS 用コード
参照して使用
Android の API
C# の API
/ 48
実行
37
/ 48
Xamarin.Forms
38
/ 48
プロジェクトの新規作成
39
/ 48
プロジェクトの新規作成
40
以前は “PCL” だった
/ 48
出来上がるプロジェクト
41
共有コード
Android 用コード
iOS 用コード
UI 定義
/ 48
XAML による UI の定義
42
/ 48
C# によるコード
43
/ 48
一目で分かった気になる Xamarin.Forms
44
データバインディング
リストの要素ごとの定義
ListView
TextView
LinearLayout
C# の API でコード共有
ページクラスの
メンバーとして
自動で定義される
/ 48
実行
45
/ 48
手を動かしてみる
~ハンズオンの紹介~
46
/ 48
Xamarin.Android
https://github.com/m-ishizaki/XamarinAndroidHandsOn01
47
移植するアプリ
/ 48
クロスプラットフォームに向けて
・iOS 版ハンズオン
・Xamarin.Forms のハンズオン (クロスプラットフォーム開発)
・Custom Renderer のハンズオン (独自コントロールの作成)
JXUG への参加
・Japan Xamarin User Group
(https://jxug.connpass.com/)
48
/ 48
ありがとうございま
した!
49

Weitere ähnliche Inhalte

Was ist angesagt?

.NET界隈で最近気になる話題
.NET界隈で最近気になる話題.NET界隈で最近気になる話題
.NET界隈で最近気になる話題
Makoto Nishimura
 

Was ist angesagt? (20)

ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
 
BoxViewの美味しい食べ方
BoxViewの美味しい食べ方BoxViewの美味しい食べ方
BoxViewの美味しい食べ方
 
証券取引アプリについて
証券取引アプリについて証券取引アプリについて
証券取引アプリについて
 
.NET界隈で最近気になる話題
.NET界隈で最近気になる話題.NET界隈で最近気になる話題
.NET界隈で最近気になる話題
 
Programmer's Brain
Programmer's BrainProgrammer's Brain
Programmer's Brain
 
Computer Vision と Translator Text API 使ってみた
Computer Vision と Translator Text API 使ってみたComputer Vision と Translator Text API 使ってみた
Computer Vision と Translator Text API 使ってみた
 
Developers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよDevelopers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよ
 
Friendly
FriendlyFriendly
Friendly
 
はじめてのChu カッコカリ
はじめてのChu カッコカリはじめてのChu カッコカリ
はじめてのChu カッコカリ
 
証券取引アプリとNote app作ってみた
証券取引アプリとNote app作ってみた証券取引アプリとNote app作ってみた
証券取引アプリとNote app作ってみた
 
モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点
モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点
モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点
 
WinFormsからWPFへ
WinFormsからWPFへWinFormsからWPFへ
WinFormsからWPFへ
 
20171202 Xamarinの歩き方
20171202 Xamarinの歩き方20171202 Xamarinの歩き方
20171202 Xamarinの歩き方
 
WPF Interoperability
WPF InteroperabilityWPF Interoperability
WPF Interoperability
 
Uno Platform 入門
Uno Platform 入門Uno Platform 入門
Uno Platform 入門
 
Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-
 
C#のココが好き!
C#のココが好き!C#のココが好き!
C#のココが好き!
 
Xamarin概要+最新情報
Xamarin概要+最新情報Xamarin概要+最新情報
Xamarin概要+最新情報
 
C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠
 

Ähnlich wie Xamarin で始めるクロスプラットフォーム開発

Xamarin でクラシックデスクトップアプリ
Xamarin でクラシックデスクトップアプリXamarin でクラシックデスクトップアプリ
Xamarin でクラシックデスクトップアプリ
m ishizaki
 

Ähnlich wie Xamarin で始めるクロスプラットフォーム開発 (20)

Xamarin概要と活用方法
Xamarin概要と活用方法Xamarin概要と活用方法
Xamarin概要と活用方法
 
Xamarin概要と活用方法
Xamarin概要と活用方法Xamarin概要と活用方法
Xamarin概要と活用方法
 
.NET Standard で SQLServer と接続してみた
.NET Standard で SQLServer と接続してみた.NET Standard で SQLServer と接続してみた
.NET Standard で SQLServer と接続してみた
 
Visual Studio Code でプログラムをデバッグしよう!
Visual Studio Code でプログラムをデバッグしよう!Visual Studio Code でプログラムをデバッグしよう!
Visual Studio Code でプログラムをデバッグしよう!
 
NET Standard と Xamarin
NET Standard と XamarinNET Standard と Xamarin
NET Standard と Xamarin
 
Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発
 
Uno Platform 入門 2020/04/03
Uno Platform 入門 2020/04/03Uno Platform 入門 2020/04/03
Uno Platform 入門 2020/04/03
 
Xamarin の概要と活用事例
Xamarin の概要と活用事例Xamarin の概要と活用事例
Xamarin の概要と活用事例
 
Xamarin の Api カバー率 100% について
Xamarin の Api カバー率 100% についてXamarin の Api カバー率 100% について
Xamarin の Api カバー率 100% について
 
Xamarin でクラシックデスクトップアプリ
Xamarin でクラシックデスクトップアプリXamarin でクラシックデスクトップアプリ
Xamarin でクラシックデスクトップアプリ
 
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントXamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
 
わんくま名古屋 #38 (20160521) Xamarin入門
わんくま名古屋 #38 (20160521) Xamarin入門わんくま名古屋 #38 (20160521) Xamarin入門
わんくま名古屋 #38 (20160521) Xamarin入門
 
【de:code 2020】 2020 年の最新 Xamarin 概要
【de:code 2020】 2020 年の最新 Xamarin 概要【de:code 2020】 2020 年の最新 Xamarin 概要
【de:code 2020】 2020 年の最新 Xamarin 概要
 
DEV-023_Xamarin Deep Dive - Xamarin.Forms の可能性
DEV-023_Xamarin Deep Dive - Xamarin.Forms の可能性DEV-023_Xamarin Deep Dive - Xamarin.Forms の可能性
DEV-023_Xamarin Deep Dive - Xamarin.Forms の可能性
 
Bait and switch
Bait and switchBait and switch
Bait and switch
 
インフラジスティックスおよび Xamarin.Forms コントロールのご紹介
インフラジスティックスおよび Xamarin.Forms コントロールのご紹介インフラジスティックスおよび Xamarin.Forms コントロールのご紹介
インフラジスティックスおよび Xamarin.Forms コントロールのご紹介
 
ちょっとエモい話
ちょっとエモい話ちょっとエモい話
ちょっとエモい話
 
XAML Islands その2
XAML Islands その2XAML Islands その2
XAML Islands その2
 
デスクトップアプリ最新事情201912
デスクトップアプリ最新事情201912デスクトップアプリ最新事情201912
デスクトップアプリ最新事情201912
 
Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209
 

Mehr von m ishizaki

Mehr von m ishizaki (20)

継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#
 
継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET する
 
Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話
 
「スタバ」する話
「スタバ」する話「スタバ」する話
「スタバ」する話
 
エンジニアと「スタバ」ツイートについて
エンジニアと「スタバ」ツイートについてエンジニアと「スタバ」ツイートについて
エンジニアと「スタバ」ツイートについて
 
Build 2022 / Uno Platform
Build 2022 / Uno PlatformBuild 2022 / Uno Platform
Build 2022 / Uno Platform
 
7 つの Blazor
7 つの Blazor7 つの Blazor
7 つの Blazor
 
C# Tokyo コミュニティ説明 202205 版
C# Tokyo コミュニティ説明 202205 版C# Tokyo コミュニティ説明 202205 版
C# Tokyo コミュニティ説明 202205 版
 
仮想環境に MAUI 環境を構築する話
仮想環境に MAUI 環境を構築する話仮想環境に MAUI 環境を構築する話
仮想環境に MAUI 環境を構築する話
 
2022 抱負
2022 抱負2022 抱負
2022 抱負
 
モバイルディスプレイ
モバイルディスプレイモバイルディスプレイ
モバイルディスプレイ
 
Windows フォームアプリ 2022
Windows フォームアプリ 2022Windows フォームアプリ 2022
Windows フォームアプリ 2022
 
dotnet tool
dotnet tooldotnet tool
dotnet tool
 
C#10
C#10C#10
C#10
 
C# Tokyo コミュニティについて Short 版
C# Tokyo コミュニティについて Short 版C# Tokyo コミュニティについて Short 版
C# Tokyo コミュニティについて Short 版
 
C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内
 
C# 9 のおすすめ新機能
C# 9 のおすすめ新機能C# 9 のおすすめ新機能
C# 9 のおすすめ新機能
 
C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版
 
秋葉原 C# もくもく会
秋葉原 C# もくもく会秋葉原 C# もくもく会
秋葉原 C# もくもく会
 

Xamarin で始めるクロスプラットフォーム開発