SlideShare a Scribd company logo
Xamarin.Formsの概要と 
カスタムコントロール 
Microsoft MVP C# 
増田智明 
Moonmile Solutions
自己紹介 
 増田智明masdua@moonmile.net 
 執筆業&プログラマ 
 C#によるiOS, Android, Windowsアプリケーション開発入門 
 逆引き大全Visual C# 2013, Visual Basic 2013 
 逆引き大全iPhone/iPad アプリ開発 
 作って覚えるiPhone/iPad アプリ入門
アジェンダ 
Xamarin.Forms とは何か? 
何故Xamarin.Forms を使うのか? 
MS-XAML とは何か? 
Xamarin.Froms の弱点 
Xamarin.Forms を拡張する手法
Xamarin.Forms とは?
Xamarin.Forms とは何か? 
 iPhone, Android, Windows Phone 
の3機種のUI を同時に作れるライ 
ブラリ 
 ひとつのXAML で同時に3機種に 
対応できる
Xamarin.Forms とは何か? 
 Visual Studio あるいはXamarin 
Studio でコードで書く。 
 Visual Studio あるいはXamarin 
Studio でXAML を書く。 
 XAML デザイナのようなものはな 
い
Xamarin.iOS/Android の共通部品 
 Pages 
 Layouts 
 Views 
 Cells
何故Xamarin.Forms を使うのか?
何故Xamarin.Forms を使うのか? 
 ひとつのUI で複数プラットフォームに対応 
 対応UI がひとつであれば、Xamarin.iOS/Android を選択 
 共通ライブラリであれば、PCL やShared Project を使う 
 UI にXAML フォーマットを使う 
 MS-XAML 互換のフォーマット
Xamarin.iOS/Android/Windows Phone 
Xamarin 
PCL or Shared 
Xamarin.Android 
axml 
Xamarin.iOS 
Storyboard(xml) 
Windows Phone 
XAML 
Android 
iOS 
Windows Phone 
ロジックをPCL or Shared で書くそれぞれのUI を書く
Xamarin.Formsのレンダリング 
2014年5月末de:code の前日に発表 
Xamarin-XAML 
XAML or Code 
ContentPage 
PCL or Shared 
Android 
AndroidActivity.SetPage 
iOS 
Page. CreateViewController 
Windows Phone 
Page.ConvertPageToUIElement 
XAML 解釈とUI のレンダリングが 
異なる場所にある
Xamarin.Forms のXAML とは? 
 MS-XAML 規格 
 XAML 構文の詳細 
 MS-XAML 
 Microsoft Domain-Specific Languages 
WPF やSliverlight など各種規格がある 
 XAML for Xamarin.Forms 
 MS-XAML 規格に則る 
 XAML Markup Extensions 
 Data Binding to MVVM
XAMLの条件 
 マークアップ拡張 
 x:Name で名前付け 
 x:Class でコードとの対応付け 
 データバインディング 
 <TagName Text=“{Binding Name}” が有効 
 ドット付きのタグ名 
 Grid.Row などのドット付きのタグ名を有効にする 
WinStore-XAML 
XAML 
 よって、各種部品の名前は異なるがXamarin.Forms はXAML である。 
TextBlock など 
Xamarin-XAML 
Label など
Xamarin.Forms の弱点
Xamarin.Forms の弱点 
 3 機種の共通部分しか提供されない 
 レンダラー時に、各プラットフォー 
ムの共通コントロールに置き換えら 
れるため 
 デバイス依存の部品は提供されない 
 カメラ機能、GPS、マップなど 
iOS Android 
Windows Phone 
Xamarin.Forms
デザイナがない 
 現状、Xamarin.Forms はコードで書くか、 
XAML を直書きするか。 
 スマートフォンの場合は、StackLayout で十 
分だが、タブレットになるとデザイナ無し 
では難しくなる。 
 Xamarin Sketches を利用する 
 Xamarin Sketches 
 Mac のみ、現在ベータ版 
 Xamarin.Forms Preview を自作中 
(ちょっと頓挫)by moonmile
Xamarin.Forms で拡張する手法
拡張する手法 
 既存のコントロールを組み合わせる 
 DependencyService を使う 
 カスタムレンダラを使う
既存コントロールの組み合わせ 
 Windows ストアアプリのようにユーザコントロールを作る 
1. *.xaml ファイルを作る 
2. コントロールを並べる 
3. コードビハイドで独自コードを書く 
4. clr-namespace でインクルード 
xmlns:cc="clr-namespace:XamarinMyCustom.Views;assembly=XamarinMyCustom“ 
5. 作成したコントロールを配置 
<cc:CustomButton />
既存コントロールの組み合わせ 
カスタムコントロール 
既存コントロール 
既存コントロール 
既存コントロール 
XAML 
iOS 
Android 
Windows Phone
DependencyService を使う 
 インターフェースを利用した委譲/Listenerパターン 
1. PCL にインターフェースを作る 
public interface IDependencyCalc … 
2. 内部動作をiOS/Android/Windows Phone 側で実装する 
[assembly: Dependency(typeof(DependencyCalcImpl))] 
class DependencyCalcImpl : IDependencyCalc 
3. PCL 側でDependencyService.Get<...> で呼び出し 
_dep = DependencyService.Get<IDependencyCalc>();
DependencyService 
Portalbe Class Library 
Interface 
IDependencyCalc 
iOS 
Android 
Windows 
Phone 
Implement 
DependencyCalc 
DependencyService 
.Get<> 
Implement 
DependencyCalc 
Implement 
DependencyCalc
カスタムレンダラを使う 
 表示/動作のみ機種依存させる 
1. PCL に空のコントロールを作る(実は空でなくてもよい) 
public class MyEntry : Entry 
2. 内部動作をiOS/Android/Windows Phone 側で実装する 
[assembly: ExportRenderer(typeof(MyEntry), typeof(MyEntryRenderer))] 
public class MyEntryRenderer : EntryRenderer { 
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e) { 
3. PLC でXAML に配置する 
xmlns:cc=“clr-namespace:XamarinMyCustom.Views;assembly=XamarinMyCustom” 
<cc:MyEntry x:Name="myentry" Text="Sample" />
カスタムレンダラを使う 
XAML 
Portalbe Class Library 
class 
MyEntry 
iOS 
Android 
Windows 
Phone 
EntryRenderer 
OnElementChanged 
MyEntry 
描画 
EntryRenderer 
OnElementChanged 
EntryRenderer 
OnElementChanged
使い分け 
ユーザコントロール方式カスタムレンダラ方式 
Xamarin.Forms 
機種依存 
カメラ、画像描画、マップ 
など 
UI 以外 
DependencyService方式 
他に、Xamarin.Forms.Labs やリフレクション方式がある
参考文献 
 英語 
 3. XAML Markup Extensions 
 Accessing Native Features via the DependencyService 
 Customizing Controls for Each Platform 
 Creating Mobile Apps with Xamarin.Forms, Preview Edition (Developer Reference) Kindel 版 
 日本語 
 Xamarin.Formsの基本構想と仕組み 
 Xamarin.Forms でユーザーコントロール的なView を作る 
 Xamarin.Formsからプラットフォーム固有の機能を利用するには?(DependencyService利用) 
 Xamarin.Formsでカメラを使う– Android編 
 Xamarin.Forms 「付箋紙を張るやつ」を作ってみた(画面構成) 
 MS-XAML 
 XAML 構文の詳細 
 Microsoft Domain-Specific Languages

More Related Content

What's hot

Realm Mobile Platform 概要
Realm Mobile Platform 概要Realm Mobile Platform 概要
Realm Mobile Platform 概要Yoshito Tabuchi
 
Xamarin 概要 2017/01/15
Xamarin 概要 2017/01/15Xamarin 概要 2017/01/15
Xamarin 概要 2017/01/15Yoshito Tabuchi
 
10分でわかる無料になったXamarin
10分でわかる無料になったXamarin10分でわかる無料になったXamarin
10分でわかる無料になったXamarinYoshito Tabuchi
 
ゆるふわ Xamarin Tips
ゆるふわ Xamarin Tipsゆるふわ Xamarin Tips
ゆるふわ Xamarin TipsDaiki Kawanuma
 
Developers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよDevelopers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよShinichi Hirauchi
 
10分で分かるxamarin
10分で分かるxamarin10分で分かるxamarin
10分で分かるxamarinYoshito Tabuchi
 
Xamarin開発環境の選択
Xamarin開発環境の選択Xamarin開発環境の選択
Xamarin開発環境の選択Miho Kurosawa
 
ちょっとエモい話
ちょっとエモい話ちょっとエモい話
ちょっとエモい話Yoshito Tabuchi
 
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2Yoshito Tabuchi
 
Xamarin を使用したC# によるモバイルアプリ作成
Xamarin を使用したC# によるモバイルアプリ作成Xamarin を使用したC# によるモバイルアプリ作成
Xamarin を使用したC# によるモバイルアプリ作成Yoshito Tabuchi
 
Xamarin.forms実践投入してみて
Xamarin.forms実践投入してみてXamarin.forms実践投入してみて
Xamarin.forms実践投入してみてMasahiko Miyasaka
 
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~de:code 2017
 
Xamarin を使用したC# によるモバイルアプリ作成
Xamarin を使用したC# によるモバイルアプリ作成Xamarin を使用したC# によるモバイルアプリ作成
Xamarin を使用したC# によるモバイルアプリ作成Yoshito Tabuchi
 
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編Yoshito Tabuchi
 
20171202 Xamarinの歩き方
20171202 Xamarinの歩き方20171202 Xamarinの歩き方
20171202 Xamarinの歩き方Yoshito Tabuchi
 

What's hot (20)

Xamarin.Forms概要
Xamarin.Forms概要Xamarin.Forms概要
Xamarin.Forms概要
 
Realm Mobile Platform 概要
Realm Mobile Platform 概要Realm Mobile Platform 概要
Realm Mobile Platform 概要
 
Xamarin 概要 2017/01/15
Xamarin 概要 2017/01/15Xamarin 概要 2017/01/15
Xamarin 概要 2017/01/15
 
10分でわかる無料になったXamarin
10分でわかる無料になったXamarin10分でわかる無料になったXamarin
10分でわかる無料になったXamarin
 
Xamarin 基礎講座
Xamarin 基礎講座Xamarin 基礎講座
Xamarin 基礎講座
 
ゆるふわ Xamarin Tips
ゆるふわ Xamarin Tipsゆるふわ Xamarin Tips
ゆるふわ Xamarin Tips
 
Developers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよDevelopers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよ
 
10分で分かるxamarin
10分で分かるxamarin10分で分かるxamarin
10分で分かるxamarin
 
Xamarin開発環境の選択
Xamarin開発環境の選択Xamarin開発環境の選択
Xamarin開発環境の選択
 
Xamarinの歩き方
Xamarinの歩き方Xamarinの歩き方
Xamarinの歩き方
 
ちょっとエモい話
ちょっとエモい話ちょっとエモい話
ちょっとエモい話
 
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
 
Xamarin を使用したC# によるモバイルアプリ作成
Xamarin を使用したC# によるモバイルアプリ作成Xamarin を使用したC# によるモバイルアプリ作成
Xamarin を使用したC# によるモバイルアプリ作成
 
Xamarin.forms実践投入してみて
Xamarin.forms実践投入してみてXamarin.forms実践投入してみて
Xamarin.forms実践投入してみて
 
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
 
インフラジスティックスおよび Xamarin.Forms コントロールのご紹介
インフラジスティックスおよび Xamarin.Forms コントロールのご紹介インフラジスティックスおよび Xamarin.Forms コントロールのご紹介
インフラジスティックスおよび Xamarin.Forms コントロールのご紹介
 
Xamarin を使用したC# によるモバイルアプリ作成
Xamarin を使用したC# によるモバイルアプリ作成Xamarin を使用したC# によるモバイルアプリ作成
Xamarin を使用したC# によるモバイルアプリ作成
 
Xamarin概要
Xamarin概要Xamarin概要
Xamarin概要
 
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
 
20171202 Xamarinの歩き方
20171202 Xamarinの歩き方20171202 Xamarinの歩き方
20171202 Xamarinの歩き方
 

Similar to Xamarin.formsとカスタムコントロールの話

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 の可能性decode2016
 
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントXamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントMasuda Tomoaki
 
Xamarin.Forms アプリケーション 設計パターン
Xamarin.Forms アプリケーション 設計パターンXamarin.Forms アプリケーション 設計パターン
Xamarin.Forms アプリケーション 設計パターン一希 大田
 
WPF開発者がXamarin.Macを触るその前に
WPF開発者がXamarin.Macを触るその前にWPF開発者がXamarin.Macを触るその前に
WPF開発者がXamarin.Macを触るその前にKazuhiko Shimada
 
Xamarin.Forms.WPF を試してみた
Xamarin.Forms.WPF を試してみたXamarin.Forms.WPF を試してみた
Xamarin.Forms.WPF を試してみたm ishizaki
 
Xamarin の概要と活用事例
Xamarin の概要と活用事例Xamarin の概要と活用事例
Xamarin の概要と活用事例Yoshito Tabuchi
 
20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreapps20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreappsTakayoshi Tanaka
 
Xamarin.Forms のこれまでとこれから
Xamarin.Forms のこれまでとこれからXamarin.Forms のこれまでとこれから
Xamarin.Forms のこれまでとこれからYoshito Tabuchi
 
Xamarin 101 ~環境構築からビルド・テストまで~
Xamarin 101 ~環境構築からビルド・テストまで~Xamarin 101 ~環境構築からビルド・テストまで~
Xamarin 101 ~環境構築からビルド・テストまで~Masaki Takeda
 
xamarin for android試してみた
xamarin for android試してみたxamarin for android試してみた
xamarin for android試してみたLee Choong Geun
 
Xamarin Dev days 2 xamarin.forms ja
Xamarin Dev days 2   xamarin.forms jaXamarin Dev days 2   xamarin.forms ja
Xamarin Dev days 2 xamarin.forms jaAtsushi Nakamura
 
Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発友太 渡辺
 
NET Standard と Xamarin
NET Standard と XamarinNET Standard と Xamarin
NET Standard と XamarinYoshito Tabuchi
 
JXUG ハンズオンもくもく会
JXUG ハンズオンもくもく会 JXUG ハンズオンもくもく会
JXUG ハンズオンもくもく会 Tomohiro Suzuki
 
Xamarin ハンズオン Android の部
Xamarin ハンズオン Android の部Xamarin ハンズオン Android の部
Xamarin ハンズオン Android の部m ishizaki
 
Xamarin.Android ハンズオン 2018/11
Xamarin.Android ハンズオン 2018/11Xamarin.Android ハンズオン 2018/11
Xamarin.Android ハンズオン 2018/11m ishizaki
 
2018/06/24 .NETラボ Xamarinトーク
2018/06/24 .NETラボ Xamarinトーク2018/06/24 .NETラボ Xamarinトーク
2018/06/24 .NETラボ XamarinトークKenshiro Fukuda
 

Similar to Xamarin.formsとカスタムコントロールの話 (20)

Visual Studio + xamarin で始めるモバイル アプリ開発
Visual Studio + xamarin で始めるモバイル アプリ開発Visual Studio + xamarin で始めるモバイル アプリ開発
Visual Studio + 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 の可能性
 
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントXamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
 
Xamarin.Forms アプリケーション 設計パターン
Xamarin.Forms アプリケーション 設計パターンXamarin.Forms アプリケーション 設計パターン
Xamarin.Forms アプリケーション 設計パターン
 
WPF開発者がXamarin.Macを触るその前に
WPF開発者がXamarin.Macを触るその前にWPF開発者がXamarin.Macを触るその前に
WPF開発者がXamarin.Macを触るその前に
 
Xamarin.Forms.WPF を試してみた
Xamarin.Forms.WPF を試してみたXamarin.Forms.WPF を試してみた
Xamarin.Forms.WPF を試してみた
 
Xamarin の概要と活用事例
Xamarin の概要と活用事例Xamarin の概要と活用事例
Xamarin の概要と活用事例
 
20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreapps20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreapps
 
Xamarin Overview
Xamarin Overview Xamarin Overview
Xamarin Overview
 
Xamarin Overview
Xamarin Overview Xamarin Overview
Xamarin Overview
 
Xamarin.Forms のこれまでとこれから
Xamarin.Forms のこれまでとこれからXamarin.Forms のこれまでとこれから
Xamarin.Forms のこれまでとこれから
 
Xamarin 101 ~環境構築からビルド・テストまで~
Xamarin 101 ~環境構築からビルド・テストまで~Xamarin 101 ~環境構築からビルド・テストまで~
Xamarin 101 ~環境構築からビルド・テストまで~
 
xamarin for android試してみた
xamarin for android試してみたxamarin for android試してみた
xamarin for android試してみた
 
Xamarin Dev days 2 xamarin.forms ja
Xamarin Dev days 2   xamarin.forms jaXamarin Dev days 2   xamarin.forms ja
Xamarin Dev days 2 xamarin.forms ja
 
Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発
 
NET Standard と Xamarin
NET Standard と XamarinNET Standard と Xamarin
NET Standard と Xamarin
 
JXUG ハンズオンもくもく会
JXUG ハンズオンもくもく会 JXUG ハンズオンもくもく会
JXUG ハンズオンもくもく会
 
Xamarin ハンズオン Android の部
Xamarin ハンズオン Android の部Xamarin ハンズオン Android の部
Xamarin ハンズオン Android の部
 
Xamarin.Android ハンズオン 2018/11
Xamarin.Android ハンズオン 2018/11Xamarin.Android ハンズオン 2018/11
Xamarin.Android ハンズオン 2018/11
 
2018/06/24 .NETラボ Xamarinトーク
2018/06/24 .NETラボ Xamarinトーク2018/06/24 .NETラボ Xamarinトーク
2018/06/24 .NETラボ Xamarinトーク
 

Recently uploaded

Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)keikoitakurag
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一瑛一 西口
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptxyassun7010
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)NTT DATA Technology & Innovation
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...atsushi061452
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptxssuserbefd24
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdfAyachika Kitazaki
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizesatsushi061452
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルCRI Japan, Inc.
 

Recently uploaded (11)

Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 

Xamarin.formsとカスタムコントロールの話

  • 2. 自己紹介  増田智明masdua@moonmile.net  執筆業&プログラマ  C#によるiOS, Android, Windowsアプリケーション開発入門  逆引き大全Visual C# 2013, Visual Basic 2013  逆引き大全iPhone/iPad アプリ開発  作って覚えるiPhone/iPad アプリ入門
  • 3. アジェンダ Xamarin.Forms とは何か? 何故Xamarin.Forms を使うのか? MS-XAML とは何か? Xamarin.Froms の弱点 Xamarin.Forms を拡張する手法
  • 5. Xamarin.Forms とは何か?  iPhone, Android, Windows Phone の3機種のUI を同時に作れるライ ブラリ  ひとつのXAML で同時に3機種に 対応できる
  • 6. Xamarin.Forms とは何か?  Visual Studio あるいはXamarin Studio でコードで書く。  Visual Studio あるいはXamarin Studio でXAML を書く。  XAML デザイナのようなものはな い
  • 7. Xamarin.iOS/Android の共通部品  Pages  Layouts  Views  Cells
  • 9. 何故Xamarin.Forms を使うのか?  ひとつのUI で複数プラットフォームに対応  対応UI がひとつであれば、Xamarin.iOS/Android を選択  共通ライブラリであれば、PCL やShared Project を使う  UI にXAML フォーマットを使う  MS-XAML 互換のフォーマット
  • 10. Xamarin.iOS/Android/Windows Phone Xamarin PCL or Shared Xamarin.Android axml Xamarin.iOS Storyboard(xml) Windows Phone XAML Android iOS Windows Phone ロジックをPCL or Shared で書くそれぞれのUI を書く
  • 11. Xamarin.Formsのレンダリング 2014年5月末de:code の前日に発表 Xamarin-XAML XAML or Code ContentPage PCL or Shared Android AndroidActivity.SetPage iOS Page. CreateViewController Windows Phone Page.ConvertPageToUIElement XAML 解釈とUI のレンダリングが 異なる場所にある
  • 12. Xamarin.Forms のXAML とは?  MS-XAML 規格  XAML 構文の詳細  MS-XAML  Microsoft Domain-Specific Languages WPF やSliverlight など各種規格がある  XAML for Xamarin.Forms  MS-XAML 規格に則る  XAML Markup Extensions  Data Binding to MVVM
  • 13. XAMLの条件  マークアップ拡張  x:Name で名前付け  x:Class でコードとの対応付け  データバインディング  <TagName Text=“{Binding Name}” が有効  ドット付きのタグ名  Grid.Row などのドット付きのタグ名を有効にする WinStore-XAML XAML  よって、各種部品の名前は異なるがXamarin.Forms はXAML である。 TextBlock など Xamarin-XAML Label など
  • 15. Xamarin.Forms の弱点  3 機種の共通部分しか提供されない  レンダラー時に、各プラットフォー ムの共通コントロールに置き換えら れるため  デバイス依存の部品は提供されない  カメラ機能、GPS、マップなど iOS Android Windows Phone Xamarin.Forms
  • 16. デザイナがない  現状、Xamarin.Forms はコードで書くか、 XAML を直書きするか。  スマートフォンの場合は、StackLayout で十 分だが、タブレットになるとデザイナ無し では難しくなる。  Xamarin Sketches を利用する  Xamarin Sketches  Mac のみ、現在ベータ版  Xamarin.Forms Preview を自作中 (ちょっと頓挫)by moonmile
  • 18. 拡張する手法  既存のコントロールを組み合わせる  DependencyService を使う  カスタムレンダラを使う
  • 19. 既存コントロールの組み合わせ  Windows ストアアプリのようにユーザコントロールを作る 1. *.xaml ファイルを作る 2. コントロールを並べる 3. コードビハイドで独自コードを書く 4. clr-namespace でインクルード xmlns:cc="clr-namespace:XamarinMyCustom.Views;assembly=XamarinMyCustom“ 5. 作成したコントロールを配置 <cc:CustomButton />
  • 20. 既存コントロールの組み合わせ カスタムコントロール 既存コントロール 既存コントロール 既存コントロール XAML iOS Android Windows Phone
  • 21. DependencyService を使う  インターフェースを利用した委譲/Listenerパターン 1. PCL にインターフェースを作る public interface IDependencyCalc … 2. 内部動作をiOS/Android/Windows Phone 側で実装する [assembly: Dependency(typeof(DependencyCalcImpl))] class DependencyCalcImpl : IDependencyCalc 3. PCL 側でDependencyService.Get<...> で呼び出し _dep = DependencyService.Get<IDependencyCalc>();
  • 22. DependencyService Portalbe Class Library Interface IDependencyCalc iOS Android Windows Phone Implement DependencyCalc DependencyService .Get<> Implement DependencyCalc Implement DependencyCalc
  • 23. カスタムレンダラを使う  表示/動作のみ機種依存させる 1. PCL に空のコントロールを作る(実は空でなくてもよい) public class MyEntry : Entry 2. 内部動作をiOS/Android/Windows Phone 側で実装する [assembly: ExportRenderer(typeof(MyEntry), typeof(MyEntryRenderer))] public class MyEntryRenderer : EntryRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Entry> e) { 3. PLC でXAML に配置する xmlns:cc=“clr-namespace:XamarinMyCustom.Views;assembly=XamarinMyCustom” <cc:MyEntry x:Name="myentry" Text="Sample" />
  • 24. カスタムレンダラを使う XAML Portalbe Class Library class MyEntry iOS Android Windows Phone EntryRenderer OnElementChanged MyEntry 描画 EntryRenderer OnElementChanged EntryRenderer OnElementChanged
  • 25. 使い分け ユーザコントロール方式カスタムレンダラ方式 Xamarin.Forms 機種依存 カメラ、画像描画、マップ など UI 以外 DependencyService方式 他に、Xamarin.Forms.Labs やリフレクション方式がある
  • 26. 参考文献  英語  3. XAML Markup Extensions  Accessing Native Features via the DependencyService  Customizing Controls for Each Platform  Creating Mobile Apps with Xamarin.Forms, Preview Edition (Developer Reference) Kindel 版  日本語  Xamarin.Formsの基本構想と仕組み  Xamarin.Forms でユーザーコントロール的なView を作る  Xamarin.Formsからプラットフォーム固有の機能を利用するには?(DependencyService利用)  Xamarin.Formsでカメラを使う– Android編  Xamarin.Forms 「付箋紙を張るやつ」を作ってみた(画面構成)  MS-XAML  XAML 構文の詳細  Microsoft Domain-Specific Languages