Xamarin概要+最新情報
2017/5/27(土)
JXUGC #23 Xamarin 無料化一周年記
念勉強会!
Japan Xamarin User Group
田淵義人@エクセルソフト
Twitter: @ytabuchi
facebook: ytabuchi.xlsoft
Xamarin概要
営業(セールスエンジニア) 兼 新規事業開発室 室長
Xamarin コミュニティエバンジェリスト
Microsoft MVP Visual Studio and Development Technologies
Xamarin MVP
連載・執筆
Build Insider Xamarin Tips
.NET開発テクノロジ入門2016年版
コミュニティ
Japan Xamarin User Group 主宰
Twitter: @ytabuchi
facebook: ytabuchi.xlsoft
Blog: Xamarin 日本語情報
4
田淵義人@エクセルソフト
C# / .NET / Visual Studio
フル “ネイティブ” アプリ
API 100% 移植
コード共通化
Xamarin
5
2つの開発手法
Shared C# App Logic
(PCL)
Shared XAML/C# UI Code
(Xamarin.Forms)
iOS
C# UI
Shared C# App Logic
(PCL)
Android
C# UI
Windows
C# UI
Xamarin.FormsXamarin Native
ロジックのみ共通化
UIはネイティブで個別に作りこむ
6
必要な知識
プラットフォーム
個別
Xamarin Native
iOS API Objective-C, Swift Xcode
Android API Java Android Studio
Windows API Visual StudioC#
API 言語 統合開発環境
iOS API Objective-C, Swift Xcode
Android API Java Android Studio
Windows API Visual StudioC#
Xamarin.Forms
iOS API
Android API
Windows API
Objective-C, Swift Xcode
Java Android Studio
Visual StudioC#Xamarin.Forms
UI toolkit
7
UIは個別
ネイティブAPIは個別
PCL or Shared
ネットワーク
Json, XML
永続化
async/await
8
Xamarin ネイティブ
iOS
C# UI
Shared C# App Logic
(PCL)
Android
C# UI
Windows
C# UI
Xamarin Native
ロジックのみ共通化
UIはネイティブで個別に作りこむ
Xamarin ネイティブ
9
抽象化UIライブラリ
最大公約数
ワンソース・ネイティブUI/UX
XAML / MVVM
拡張可能
10
Xamarin.Forms
Shared C# App Logic
(PCL)
Shared XAML/C# UI Code
(Xamarin.Forms)
Xamarin.Forms
Xamarin.Forms
ワンソース
ネイティブの
UI/UX
XAML
MVVM
14
XAML
15
XAML
2*3 の Grid
図のようになるように設定
1行目と2行目は高さが1:3
3行目の高さは100
Aはサイズ指定なし、Bは50x50、CはDの
上に重なる、Dは高さ100、Eは幅150高
さ50、Fは幅は50、右から20のマージン
17
Grid
1
3
18
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="3*" />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<BoxView Grid.Row="0" Grid.Column="0" BackgroundColor="Red" />
<BoxView Grid.Row="0" Grid.Column="1" BackgroundColor="Red" HeightRequest="50" WidthRequest="50"
HorizontalOptions="Center" VerticalOptions="Center" />
<BoxView Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" BackgroundColor="Red" HeightRequest="100"
VerticalOptions="Center" />
<BoxView Grid.Row="1" Grid.Column="0" BackgroundColor="Gray" Opacity="0.5" />
<BoxView Grid.Row="2" Grid.Column="0" BackgroundColor="Red" HeightRequest="50" WidthRequest="150"
VerticalOptions="Start" />
<BoxView Grid.Row="2" Grid.Column="1" BackgroundColor="Red" Margin="0,0,20,0" WidthRequest="50"
HorizontalOptions="End" />
</Grid>
Header と Footer
シンプルな ImageCell を使用
19
ListView
20
<ListView ItemsSource="{Binding Items}" CachingStrategy="RecycleElement" HasUnevenRows="true"
IsPullToRefreshEnabled="true" IsRefreshing="{Binding IsBusy, Mode=OneWay}"
RefreshCommand="{Binding RefreshDataCommand}">
<ListView.Header>
<StackLayout Padding="10" BackgroundColor="#dadada" HorizontalOptions="FillAndExpand" Orientation="Horizontal">
<Label FontAttributes="Bold" HorizontalOptions="FillAndExpand" HorizontalTextAlignment="Center"
Text="Header" TextColor="Black" />
</StackLayout>
</ListView.Header>
<!--Built in Cells-->
<ListView.ItemTemplate>
<DataTemplate>
<ImageCell Detail="{Binding Detail}"
ImageSource="{Binding ImageUrl}"
Text="{Binding Text}" />
</DataTemplate>
</ListView.ItemTemplate>
<ListView.Footer>
<StackLayout Padding="10" BackgroundColor="#dadada" HorizontalOptions="FillAndExpand" Orientation="Horizontal">
<Label FontAttributes="Bold" HorizontalOptions="FillAndExpand" HorizontalTextAlignment="Center"
Text="Footer" TextColor="Black" />
</StackLayout>
</ListView.Footer>
</ListView>
Visual Studio:表示>その他のウィンドウ>Xamarin.Forms Previewer
Visual Studio for Mac:XAML ファイルを開いて右上のプレビューボタンをクリック
21
Forms Previewer
C#er/XAMLer/WPF/UWP → Forms
素早く簡単に作る → Forms
iOS/Android ネイティブ経験者 → ネイティブ
きれいに細かく作る → ネイティブ
社内プロジェクト → ??
受託開発 → ??
HTML/JS → Cordova? React Native?
23
Xamarin.Forms VS Xamarin ネイティブ
最新情報
Build 2017 & de:code 2017
Visual Studio(for Mac)から転送されたソースコードをインタープリ
タ形式で実行
Xamarin Live Playerの仕組みを想像してた - ぴーさんログ
Limitations – Xamarin
Storyboard の一部の機能, XiB, axml などのリソースは使用できない。
reflection が限定サポート(SQLite や Json.NET などは使えない)
使ってみました
Youtube ビデオ
Xamarin Live Player
26
https://channel9.msdn.com/events/Build/2017/B8099
Xamarin.Forms Feature Roadmap
2.3 Q2 2017
3.0 Q3 2017
3.1 Q4 2017
27
ロードマップ
Blog
Make Your Xamarin.Forms Apps Even Better (and Faster!)
Fast Renderers
Label, Image, Button をより高速に描画できるように。
Startup Time Improvements
Xamarin.Forms Init 時に時間が掛かっていた問題を解消。
28
Xamarin.Forms 2.3
Xamarin.Forms for Mac/WPF/Gtk#
Xamarin.Forms Embedding
Xamarin.Forms のコントールを Xamarin.iOS, Xamarin.Android, UWP から呼び出せるよ
うに。
Visual State Manager
Xamarin.Forms で Visual State をサポート。コントロールの focus や disabled などの時に
どのように表示されるかを指定可能に。
.NET Standard 2.0 サポート
藤原さんのブログ「.NET Standard のおさらい」を参照
CSS Layout & FlexLayout
デザイナーにデザインを依頼できるようになるかも。CSS Styling and FlexBox のフォーラムを
参照。
29
Xamarin.Forms 3.0
Introducing XAML Standard and .NET Standard 2.0
XAML Standard がサポートされると、Xamarin.iOS/Xamarin.Android のアプリに
<Label /> の代わりに <TextBlock /> を使えるようになります。
既存の開発者は何も変更はありません。
Windows Developer Blog の言う「既存」の開発者なので、恐らく WPF/UWP 側にコントロー
ル名が寄ると思われます。
レポジトリ
ドラフト
仕様を考えているところなので、Issue を投げてください。とのこと。
30
XAML Standard 1.0
31
榎本さんの de:code の資料も参照ください
https://speakerdeck.com/atsushieno/xamarinwozhi-eruji-shu
32
その他の展望
まとめ
C# だけで iOS/Android/Mac など様々なアプリを開発できる
Xamarin.Forms は単純に技術を追うだけでも楽しい
Xamarin はいいぞ
34
ありがとうございます
田淵義人@エクセルソフト
Twitter: @ytabuchi
facebook: ytabuchi.xlsoft
080-7015-3586
35

Xamarin概要+最新情報