SlideShare a Scribd company logo
1 of 40
Download to read offline
 モバイルアプリ開発のための Core Cross-Platform API
 UI コードの共有方法で二通り
Shared C# App Logic
(.NET Standard)
Shared XAML/C# UI Code
(Xamarin.Forms)
iOS
C# UI
Shared C# App Logic
(.NET Standard)
Android
C# UI
Windows
C# UI
Xamarin.FormsXamarin Native
ロジックのみ共通化
UIはネイティブで個別に作りこむ
 Shared C# App Logic の共通化は?
Shared C# App Logic
(.NET Standard)
 .NET Standard ライブラリのみで実装は不可能
 プラットフォーム固有の API を利用する必要がある
 Interface を作成後、DependencyService / DI Container 経由で呼び出す
Shared C# App Logic
(.NET Standard)
NSUserDefaults SharedPreferences ApplicationData
Interface (C#)
UIPasteboard ClipboardManager Clipboard
CLLocationManager LocationManager Geolocator
アプリ毎に個別実装
していた
 プラットフォーム固有の機能を共通 API で利用できる
ようにした
Shared C# App Logic
(.NET Standard)
NSUserDefaults SharedPreferences ApplicationData
Core Cross-Platform API
Xamarin.Essentials
UIPasteboard ClipboardManager Clipboard
CLLocationManager LocationManager Geolocator
 ユーザー設定
NSUserDefaults SharedPreferences ApplicationData
Preferences.Set(“KeyName”, 100);
Accelerometer
App InformationBarometer
Battery
Clipboard
Color Converters
Compass
Connectivity
Detect Shake
Device Display Information
Device Information
Email
File System Helpers
Flashlight
Geocoding
Geolocation
Gyroscope Launcher
Magnetometer
MainThread
Maps
Open Browser
Orientation Sensor
Phone Dialer
Platform Extensions
Preferences
Secure Storage
Share
SMS
Text-to-Speech
Unit Converters
Version Tracking
Vibrate
# 機能名 説明
1 Accelerometer 加速度計 3 次元空間内のデバイスの加速度データを取得します。
2 App Information アプリ情報 アプリケーションに関する情報を見つけます。
3 Barometer バロメーター 負荷の変化のバロメーターを監視します。
4 Battery バッテリ – バッテリ レベル、ソース、および状態を簡単に検出し
ます。
5 Clipboard クリップボード クリップボード上のテキストをすばやく簡単に設定し
たり読み取ったりします。
6 Color Converters 色の変換機能 System.Drawing.Color のヘルパー メソッド。
7 Compass コンパス 変化のコンパスを監視します。
8 Connectivity 接続 接続状態を確認し、変更を検出します。
9 Detect Shake シェイクの検出 デバイスを振る動きを検出します。
10 Device Display Information デバイス ディスプレイ情報 デバイスの画面のメトリックと向きを取得します。
# 機能名 説明
11 Device Information デバイス情報 デバイスの詳細を簡単に確認します。
12 Email 電子メール 電子メール メッセージを簡単に送信します。
13 File System Helpers ファイル システム ヘルパー アプリ データにファイルを簡単に保存します。
14 Flashlight 懐中電灯 懐中電灯のオン/オフを簡単に切り替える方法です。
15 Geocoding ジオコーディング ジオコードとリバース ジオコードのアドレスおよび座
標。
16 Geolocation 位置情報 デバイスの GPS 位置情報を取得します。
17 Gyroscope ジャイロスコープ デバイスの 3 つの主軸の周りの回転を追跡します。
18 Launcher ランチャー アプリケーションがシステムで URI を開くことができ
るようにします。
19 Magnetometer 磁力計 地球の磁場を基準としたデバイスの向きを検出します。
20 MainThread メイン スレッド アプリケーションのメイン スレッドでコードを実行し
ます。
# 機能名 説明
21 Maps マップ 特定の場所にマップ アプリケーションを開きます。
22 Open Browser ブラウザーを開く ブラウザーで特定の Web サイトをすばやく簡単に開き
ます。
23 Orientation Sensor 向きセンサー 3 次元空間内のデバイスの向きを取得します。
24 Phone Dialer ダイヤラー ダイヤラーを開きます。
25 Platform Extensions プラットフォーム拡張 Rect、Size、Point を変換するためのヘルパー メソッド。
26 Preferences ユーザー設定 永続的なユーザー設定をすばやく簡単に追加します。
27 Secure Storage セキュリティで保護されたストレージ データを安全に格納します。
28 Share 共有 他のアプリにテキストや Web サイトの URI を送信し
ます。
29 SMS SMS 送信用の SMS メッセージを作成します。
30 Text-to-Speech 音声合成 デバイス上のテキストを音声化します。
# 機能名 説明
31 Unit Converters 単位変換機能 単位を変換するためのヘルパー メソッド。
32 Version Tracking バージョンの追跡 アプリケーションのバージョンとビルド番号を追跡し
ます。
33 Vibrate バイブレーション デバイスをバイブレーションさせます。
 Xamarin.Essentials をインストール
 NuGet パッケージをインストール
 Android、iOS、UWP、Xamarin.Forms(.NET Standard) すべてのプロジェクトにイ
ンストールする
 Visual Studio から作成したプロジェクトでは、既定で
インストールされている場合もあります
https://docs.microsoft.com/ja-jp/xamarin/essentials/
 位置情報の例
Platform 名のタブを切り替えて確認
設定内容を確認
https://github.com/xamarin/Essentials
[クラス名].[プラットフォーム名].cs
partial class で宣言
・共通 Interfaceとなるメソッド
・アプリから利用するメソッド
各 Platform
で実装する処理
partial class で宣言
Preference.shared.cs
SharedPreferences
partial class で宣言
Preference.shared.cs
NSUserDefaults
<Project Sdk="MSBuild.Sdk.Extras/2.0.31">
// 中略
</Project>
・Xamarin.iOS, Xamarin.Android の
プラットフォームでもをビルドできるように
OSS の MSBuild 用のライブラリを利用
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT’ ">
netstandard1.0;netstandard2.0;Xamarin.iOS10;Xamarin.TVOS10;Xamarin.W
atchOS10;MonoAndroid60;MonoAndroid70;MonoAndroid71;MonoAndroid80;Mon
oAndroid81;MonoAndroid90;uap10.0.16299;tizen40;
</TargetFrameworks>
ターゲットプラットフォーム
<ItemGroup>
<None Include=“..nugetreadme.txt"
PackagePath="readme.txt" Pack="true" />
<PackageReference Include="mdoc"
Version="5.7.4.3" PrivateAssets="All" />
<PackageReference
Include="System.Numerics.Vectors" Version="4.5.0" />
<Compile Include="***.shared.cs" />
<Compile Include="***.shared.*.cs" />
</ItemGroup>
プラットフォームに関係なく
コンパイルされる
<ItemGroup Condition=" $(TargetFramework.StartsWith('MonoAndroid')) ">
<Compile Include="***.android.cs" />
<Compile Include="***.android.*.cs" />
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors" />
<AndroidResource Include="Resourcesxml*.xml" />
<PackageReference
Include="Xamarin.Android.Support.Compat" Version="28.0.0.1" />
<PackageReference
Include="Xamarin.Android.Support.CustomTabs" Version="28.0.0.1" />
<PackageReference
Include="Xamarin.Android.Support.Core.Utils" Version="28.0.0.1" />
</ItemGroup>
ターゲットが
Xamarin.Android の時
この条件にあう
ファイルをコンパイルする
<ItemGroup Condition=" $(TargetFramework.StartsWith('Xamarin.iOS')) ">
<Compile Include="***.ios.cs" />
<Compile Include="***.ios.*.cs" />
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors" />
<Reference Include="OpenTK-1.0" />
</ItemGroup>
ターゲットが
Xamarin.iOS の時
この条件にあう
ファイルをコンパイルする
これらを参照に含める
public static partial class Preferences
{
public static string Get( … ) =>
PlatformGet<string>(…);
}
Preference.shared.cs
public static partial class Preferences
{
static T PlatformGet<T>(…)
{
/// 中略
}
}
Preferences.android.cs
public static partial class Preferences
{
static T PlatformGet<T>(…)
{
/// 中略
}
}
Preferences.ios.tvos.watchos.cs
Android
iOS
https://docs.microsoft.com/ja-jp/xamarin/essentials/
https://github.com/xamarin/Essentials
2019 08-30 JXUG Xamarin.Essentials #1 Xamarin.Essentials とは
2019 08-30 JXUG Xamarin.Essentials #1 Xamarin.Essentials とは

More Related Content

What's hot

.Net conf 2017 @Tokyo Unconfrenced 「Xamarin news」
.Net conf 2017 @Tokyo Unconfrenced 「Xamarin news」.Net conf 2017 @Tokyo Unconfrenced 「Xamarin news」
.Net conf 2017 @Tokyo Unconfrenced 「Xamarin news」Kenshiro Fukuda
 
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 の Api カバー率 100% について
Xamarin の Api カバー率 100% についてXamarin の Api カバー率 100% について
Xamarin の Api カバー率 100% についてm ishizaki
 
クロスプラットフォーム開発概要@STARTUP HILLS SCHOOL
クロスプラットフォーム開発概要@STARTUP HILLS SCHOOLクロスプラットフォーム開発概要@STARTUP HILLS SCHOOL
クロスプラットフォーム開発概要@STARTUP HILLS SCHOOL友太 渡辺
 
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発友太 渡辺
 
Xamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しよう
Xamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しようXamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しよう
Xamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しようAkira Onishi
 
Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発友太 渡辺
 
Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-Takaaki Suzuki
 
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションC# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションYoshito Tabuchi
 
Androidをやっただけで iOSアプリもできればいいのに 〜MOEという選択〜
Androidをやっただけで iOSアプリもできればいいのに 〜MOEという選択〜Androidをやっただけで iOSアプリもできればいいのに 〜MOEという選択〜
Androidをやっただけで iOSアプリもできればいいのに 〜MOEという選択〜Saiki Iijima
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメYoshito Tabuchi
 
Xamarin 概要 2015年5月版
Xamarin 概要 2015年5月版Xamarin 概要 2015年5月版
Xamarin 概要 2015年5月版Yoshito Tabuchi
 
モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点
モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点
モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点Yoshito Tabuchi
 
Delphi のひみつ!(2015/01/29 CROSS 2015)
Delphi のひみつ!(2015/01/29 CROSS 2015)Delphi のひみつ!(2015/01/29 CROSS 2015)
Delphi のひみつ!(2015/01/29 CROSS 2015)Jun Hosokawa
 
はじめての HoloLens セッションの集大成お見せします!
はじめての HoloLens セッションの集大成お見せします!はじめての HoloLens セッションの集大成お見せします!
はじめての HoloLens セッションの集大成お見せします!一希 大田
 
クロスプラットフォーム モバイルアプリ開発ツール Xamarin 概要
クロスプラットフォーム モバイルアプリ開発ツール Xamarin 概要クロスプラットフォーム モバイルアプリ開発ツール Xamarin 概要
クロスプラットフォーム モバイルアプリ開発ツール Xamarin 概要Yoshito Tabuchi
 
CROSS 2015 モバイル開発環境セッション
CROSS 2015 モバイル開発環境セッションCROSS 2015 モバイル開発環境セッション
CROSS 2015 モバイル開発環境セッションMasahiro Tanaka
 

What's hot (20)

.Net conf 2017 @Tokyo Unconfrenced 「Xamarin news」
.Net conf 2017 @Tokyo Unconfrenced 「Xamarin news」.Net conf 2017 @Tokyo Unconfrenced 「Xamarin news」
.Net conf 2017 @Tokyo Unconfrenced 「Xamarin news」
 
Microsoftの開発環境
Microsoftの開発環境Microsoftの開発環境
Microsoftの開発環境
 
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 の Api カバー率 100% について
Xamarin の Api カバー率 100% についてXamarin の Api カバー率 100% について
Xamarin の Api カバー率 100% について
 
クロスプラットフォーム開発概要@STARTUP HILLS SCHOOL
クロスプラットフォーム開発概要@STARTUP HILLS SCHOOLクロスプラットフォーム開発概要@STARTUP HILLS SCHOOL
クロスプラットフォーム開発概要@STARTUP HILLS SCHOOL
 
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
 
Xamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しよう
Xamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しようXamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しよう
Xamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しよう
 
Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発
 
Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-
 
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションC# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
 
Androidをやっただけで iOSアプリもできればいいのに 〜MOEという選択〜
Androidをやっただけで iOSアプリもできればいいのに 〜MOEという選択〜Androidをやっただけで iOSアプリもできればいいのに 〜MOEという選択〜
Androidをやっただけで iOSアプリもできればいいのに 〜MOEという選択〜
 
Friendly
FriendlyFriendly
Friendly
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
 
Xamarin 概要 2015年5月版
Xamarin 概要 2015年5月版Xamarin 概要 2015年5月版
Xamarin 概要 2015年5月版
 
モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点
モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点
モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点
 
LT発表資料
LT発表資料LT発表資料
LT発表資料
 
Delphi のひみつ!(2015/01/29 CROSS 2015)
Delphi のひみつ!(2015/01/29 CROSS 2015)Delphi のひみつ!(2015/01/29 CROSS 2015)
Delphi のひみつ!(2015/01/29 CROSS 2015)
 
はじめての HoloLens セッションの集大成お見せします!
はじめての HoloLens セッションの集大成お見せします!はじめての HoloLens セッションの集大成お見せします!
はじめての HoloLens セッションの集大成お見せします!
 
クロスプラットフォーム モバイルアプリ開発ツール Xamarin 概要
クロスプラットフォーム モバイルアプリ開発ツール Xamarin 概要クロスプラットフォーム モバイルアプリ開発ツール Xamarin 概要
クロスプラットフォーム モバイルアプリ開発ツール Xamarin 概要
 
CROSS 2015 モバイル開発環境セッション
CROSS 2015 モバイル開発環境セッションCROSS 2015 モバイル開発環境セッション
CROSS 2015 モバイル開発環境セッション
 

Similar to 2019 08-30 JXUG Xamarin.Essentials #1 Xamarin.Essentials とは

Android builders summit slide tour
Android builders summit slide tourAndroid builders summit slide tour
Android builders summit slide tourmagoroku Yamamoto
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Yuki Higuchi
 
Windows azure mobile services を使った windows ストアアプリ開発 1027
Windows azure mobile services を使った windows ストアアプリ開発 1027Windows azure mobile services を使った windows ストアアプリ開発 1027
Windows azure mobile services を使った windows ストアアプリ開発 1027Shotaro Suzuki
 
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみたCordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみたShin Ogata
 
Windows Phoneの 企業内活用方法、 社内向けアプリ開発と展開
Windows Phoneの企業内活用方法、社内向けアプリ開発と展開Windows Phoneの企業内活用方法、社内向けアプリ開発と展開
Windows Phoneの 企業内活用方法、 社内向けアプリ開発と展開Akira Onishi
 
Windowsストアアプリ開発 オープンセミナー広島
Windowsストアアプリ開発 オープンセミナー広島Windowsストアアプリ開発 オープンセミナー広島
Windowsストアアプリ開発 オープンセミナー広島Akira Onishi
 
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略Developers Summit
 
モバイル開発者から見た サーバーレスアーキテクチャ
モバイル開発者から見た サーバーレスアーキテクチャモバイル開発者から見た サーバーレスアーキテクチャ
モバイル開発者から見た サーバーレスアーキテクチャTakaaki Tanaka
 
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Akira Inoue
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NETAkira Inoue
 
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜日本マイクロソフト株式会社
 
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~Akira Inoue
 
日本Androidの会のハンズオンセミナー資料(20130315)
日本Androidの会のハンズオンセミナー資料(20130315)日本Androidの会のハンズオンセミナー資料(20130315)
日本Androidの会のハンズオンセミナー資料(20130315)eijikushida
 
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~Shin-ya Koga
 
Windows 8時代のアプリ開発
Windows 8時代のアプリ開発Windows 8時代のアプリ開発
Windows 8時代のアプリ開発信之 岩永
 
Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)Monaca
 
HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解Monaca
 

Similar to 2019 08-30 JXUG Xamarin.Essentials #1 Xamarin.Essentials とは (20)

Xamarin Overview
Xamarin Overview Xamarin Overview
Xamarin Overview
 
Android builders summit slide tour
Android builders summit slide tourAndroid builders summit slide tour
Android builders summit slide tour
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
 
Windows azure mobile services を使った windows ストアアプリ開発 1027
Windows azure mobile services を使った windows ストアアプリ開発 1027Windows azure mobile services を使った windows ストアアプリ開発 1027
Windows azure mobile services を使った windows ストアアプリ開発 1027
 
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみたCordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
 
Windows Phoneの 企業内活用方法、 社内向けアプリ開発と展開
Windows Phoneの企業内活用方法、社内向けアプリ開発と展開Windows Phoneの企業内活用方法、社内向けアプリ開発と展開
Windows Phoneの 企業内活用方法、 社内向けアプリ開発と展開
 
Windowsストアアプリ開発 オープンセミナー広島
Windowsストアアプリ開発 オープンセミナー広島Windowsストアアプリ開発 オープンセミナー広島
Windowsストアアプリ開発 オープンセミナー広島
 
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
 
モバイル開発者から見た サーバーレスアーキテクチャ
モバイル開発者から見た サーバーレスアーキテクチャモバイル開発者から見た サーバーレスアーキテクチャ
モバイル開発者から見た サーバーレスアーキテクチャ
 
Azure IoT Edge の基本
Azure IoT Edge の基本Azure IoT Edge の基本
Azure IoT Edge の基本
 
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
 
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
 
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
 
日本Androidの会のハンズオンセミナー資料(20130315)
日本Androidの会のハンズオンセミナー資料(20130315)日本Androidの会のハンズオンセミナー資料(20130315)
日本Androidの会のハンズオンセミナー資料(20130315)
 
20050903
2005090320050903
20050903
 
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
 
Windows 8時代のアプリ開発
Windows 8時代のアプリ開発Windows 8時代のアプリ開発
Windows 8時代のアプリ開発
 
Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)
 
HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解
 

More from Takeshi Fujimoto

2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher
2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher
2019-11-22 JXUG Introduction to Xamarin.Essentials #4 LauncherTakeshi Fujimoto
 
2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers
2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers
2019-10-18 JXUG Xamarin.Essentials - #3 File System HelpersTakeshi Fujimoto
 
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 PreferencesTakeshi Fujimoto
 
Portable class library to .NET Standard Extension
Portable class library to .NET Standard ExtensionPortable class library to .NET Standard Extension
Portable class library to .NET Standard ExtensionTakeshi Fujimoto
 
Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018
Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018
Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018Takeshi Fujimoto
 
Xamarin with Entity Framework Core
Xamarin with Entity Framework CoreXamarin with Entity Framework Core
Xamarin with Entity Framework CoreTakeshi Fujimoto
 
Introduction to Visual Studio App Center
Introduction to Visual Studio App CenterIntroduction to Visual Studio App Center
Introduction to Visual Studio App CenterTakeshi Fujimoto
 
Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209Takeshi Fujimoto
 
Visual studio extensibility
Visual studio extensibilityVisual studio extensibility
Visual studio extensibilityTakeshi Fujimoto
 
20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin
20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin
20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - XamarinTakeshi Fujimoto
 

More from Takeshi Fujimoto (11)

2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher
2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher
2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher
 
2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers
2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers
2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers
 
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences
 
Portable class library to .NET Standard Extension
Portable class library to .NET Standard ExtensionPortable class library to .NET Standard Extension
Portable class library to .NET Standard Extension
 
Mastering Xamarin.UITest
Mastering Xamarin.UITestMastering Xamarin.UITest
Mastering Xamarin.UITest
 
Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018
Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018
Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018
 
Xamarin with Entity Framework Core
Xamarin with Entity Framework CoreXamarin with Entity Framework Core
Xamarin with Entity Framework Core
 
Introduction to Visual Studio App Center
Introduction to Visual Studio App CenterIntroduction to Visual Studio App Center
Introduction to Visual Studio App Center
 
Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209
 
Visual studio extensibility
Visual studio extensibilityVisual studio extensibility
Visual studio extensibility
 
20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin
20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin
20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin
 

Recently uploaded

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Recently uploaded (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

2019 08-30 JXUG Xamarin.Essentials #1 Xamarin.Essentials とは

  • 1.
  • 2.
  • 3.
  • 5.  UI コードの共有方法で二通り Shared C# App Logic (.NET Standard) Shared XAML/C# UI Code (Xamarin.Forms) iOS C# UI Shared C# App Logic (.NET Standard) Android C# UI Windows C# UI Xamarin.FormsXamarin Native ロジックのみ共通化 UIはネイティブで個別に作りこむ
  • 6.  Shared C# App Logic の共通化は? Shared C# App Logic (.NET Standard)
  • 7.  .NET Standard ライブラリのみで実装は不可能  プラットフォーム固有の API を利用する必要がある  Interface を作成後、DependencyService / DI Container 経由で呼び出す Shared C# App Logic (.NET Standard) NSUserDefaults SharedPreferences ApplicationData Interface (C#) UIPasteboard ClipboardManager Clipboard CLLocationManager LocationManager Geolocator アプリ毎に個別実装 していた
  • 8.  プラットフォーム固有の機能を共通 API で利用できる ようにした Shared C# App Logic (.NET Standard) NSUserDefaults SharedPreferences ApplicationData Core Cross-Platform API Xamarin.Essentials UIPasteboard ClipboardManager Clipboard CLLocationManager LocationManager Geolocator
  • 9.  ユーザー設定 NSUserDefaults SharedPreferences ApplicationData Preferences.Set(“KeyName”, 100);
  • 10. Accelerometer App InformationBarometer Battery Clipboard Color Converters Compass Connectivity Detect Shake Device Display Information Device Information Email File System Helpers Flashlight Geocoding Geolocation Gyroscope Launcher Magnetometer MainThread Maps Open Browser Orientation Sensor Phone Dialer Platform Extensions Preferences Secure Storage Share SMS Text-to-Speech Unit Converters Version Tracking Vibrate
  • 11. # 機能名 説明 1 Accelerometer 加速度計 3 次元空間内のデバイスの加速度データを取得します。 2 App Information アプリ情報 アプリケーションに関する情報を見つけます。 3 Barometer バロメーター 負荷の変化のバロメーターを監視します。 4 Battery バッテリ – バッテリ レベル、ソース、および状態を簡単に検出し ます。 5 Clipboard クリップボード クリップボード上のテキストをすばやく簡単に設定し たり読み取ったりします。 6 Color Converters 色の変換機能 System.Drawing.Color のヘルパー メソッド。 7 Compass コンパス 変化のコンパスを監視します。 8 Connectivity 接続 接続状態を確認し、変更を検出します。 9 Detect Shake シェイクの検出 デバイスを振る動きを検出します。 10 Device Display Information デバイス ディスプレイ情報 デバイスの画面のメトリックと向きを取得します。
  • 12. # 機能名 説明 11 Device Information デバイス情報 デバイスの詳細を簡単に確認します。 12 Email 電子メール 電子メール メッセージを簡単に送信します。 13 File System Helpers ファイル システム ヘルパー アプリ データにファイルを簡単に保存します。 14 Flashlight 懐中電灯 懐中電灯のオン/オフを簡単に切り替える方法です。 15 Geocoding ジオコーディング ジオコードとリバース ジオコードのアドレスおよび座 標。 16 Geolocation 位置情報 デバイスの GPS 位置情報を取得します。 17 Gyroscope ジャイロスコープ デバイスの 3 つの主軸の周りの回転を追跡します。 18 Launcher ランチャー アプリケーションがシステムで URI を開くことができ るようにします。 19 Magnetometer 磁力計 地球の磁場を基準としたデバイスの向きを検出します。 20 MainThread メイン スレッド アプリケーションのメイン スレッドでコードを実行し ます。
  • 13. # 機能名 説明 21 Maps マップ 特定の場所にマップ アプリケーションを開きます。 22 Open Browser ブラウザーを開く ブラウザーで特定の Web サイトをすばやく簡単に開き ます。 23 Orientation Sensor 向きセンサー 3 次元空間内のデバイスの向きを取得します。 24 Phone Dialer ダイヤラー ダイヤラーを開きます。 25 Platform Extensions プラットフォーム拡張 Rect、Size、Point を変換するためのヘルパー メソッド。 26 Preferences ユーザー設定 永続的なユーザー設定をすばやく簡単に追加します。 27 Secure Storage セキュリティで保護されたストレージ データを安全に格納します。 28 Share 共有 他のアプリにテキストや Web サイトの URI を送信し ます。 29 SMS SMS 送信用の SMS メッセージを作成します。 30 Text-to-Speech 音声合成 デバイス上のテキストを音声化します。
  • 14. # 機能名 説明 31 Unit Converters 単位変換機能 単位を変換するためのヘルパー メソッド。 32 Version Tracking バージョンの追跡 アプリケーションのバージョンとビルド番号を追跡し ます。 33 Vibrate バイブレーション デバイスをバイブレーションさせます。
  • 15.
  • 16.  Xamarin.Essentials をインストール  NuGet パッケージをインストール  Android、iOS、UWP、Xamarin.Forms(.NET Standard) すべてのプロジェクトにイ ンストールする  Visual Studio から作成したプロジェクトでは、既定で インストールされている場合もあります
  • 19.
  • 20.
  • 29. <Project Sdk="MSBuild.Sdk.Extras/2.0.31"> // 中略 </Project> ・Xamarin.iOS, Xamarin.Android の プラットフォームでもをビルドできるように OSS の MSBuild 用のライブラリを利用
  • 30. <TargetFrameworks Condition=" '$(OS)' == 'Windows_NT’ "> netstandard1.0;netstandard2.0;Xamarin.iOS10;Xamarin.TVOS10;Xamarin.W atchOS10;MonoAndroid60;MonoAndroid70;MonoAndroid71;MonoAndroid80;Mon oAndroid81;MonoAndroid90;uap10.0.16299;tizen40; </TargetFrameworks> ターゲットプラットフォーム
  • 31. <ItemGroup> <None Include=“..nugetreadme.txt" PackagePath="readme.txt" Pack="true" /> <PackageReference Include="mdoc" Version="5.7.4.3" PrivateAssets="All" /> <PackageReference Include="System.Numerics.Vectors" Version="4.5.0" /> <Compile Include="***.shared.cs" /> <Compile Include="***.shared.*.cs" /> </ItemGroup> プラットフォームに関係なく コンパイルされる
  • 32. <ItemGroup Condition=" $(TargetFramework.StartsWith('MonoAndroid')) "> <Compile Include="***.android.cs" /> <Compile Include="***.android.*.cs" /> <Reference Include="System.Numerics" /> <Reference Include="System.Numerics.Vectors" /> <AndroidResource Include="Resourcesxml*.xml" /> <PackageReference Include="Xamarin.Android.Support.Compat" Version="28.0.0.1" /> <PackageReference Include="Xamarin.Android.Support.CustomTabs" Version="28.0.0.1" /> <PackageReference Include="Xamarin.Android.Support.Core.Utils" Version="28.0.0.1" /> </ItemGroup> ターゲットが Xamarin.Android の時 この条件にあう ファイルをコンパイルする
  • 33. <ItemGroup Condition=" $(TargetFramework.StartsWith('Xamarin.iOS')) "> <Compile Include="***.ios.cs" /> <Compile Include="***.ios.*.cs" /> <Reference Include="System.Numerics" /> <Reference Include="System.Numerics.Vectors" /> <Reference Include="OpenTK-1.0" /> </ItemGroup> ターゲットが Xamarin.iOS の時 この条件にあう ファイルをコンパイルする これらを参照に含める
  • 34. public static partial class Preferences { public static string Get( … ) => PlatformGet<string>(…); } Preference.shared.cs public static partial class Preferences { static T PlatformGet<T>(…) { /// 中略 } } Preferences.android.cs public static partial class Preferences { static T PlatformGet<T>(…) { /// 中略 } } Preferences.ios.tvos.watchos.cs Android iOS
  • 35.
  • 36.
  • 37.