Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
川合 俊介(かわい しゅんすけ)
shunsuke.kawai.777
@_shunsuke_kawai
• C# によるクロスプラットフォーム開発環境。
• 2001 年に Mono プロジェクトとして発足し、
後に Xamarin 社を設立、2016 年に Microsoft 社
に買収された。
• 現在は Visual Studio に同梱さ...
Traditional Xamarin approach
(Xamarin Native)
Shared C# App Logic
(PCL)
Shared XAML/C# UI Code
(Xamarin.Forms)
iOS
C# UI
S...
Traditional Xamarin approach
(Xamarin Native)
Shared C# App Logic
(PCL)
Shared XAML/C# UI Code
(Xamarin.Forms)
iOS
C# UI
S...
Web アプリ
DBWebサイト
イベントアプリ
iOS Android Windows
Azure Web Jobs &
Azure Mobile Engagement
(Push 通知等)
参加登録
登録情報更新
・・・
REST
API
• アプリの特性上、複雑な UI、OS 独自の機能を
使用する必要はあまりない なかった
• 開発メンバーは Windows 系開発者で
iOS/Android の開発は未経験
• スケジュールがタイトだったため、できる限り
共通化したい
http://www.nuits.jp/entry/2016/08/22/173858
Android.Widget.CheckBox
??? Windows.UI.Xaml.
Controls.CheckBox
×
⇒iOS にはない
⇒Xamarin.Forms 標準
コントロールには
ない
UWP
Android.Widget.Switch
MonoTouch.UIKit.UISwitch Windows.UI.Xaml.
Controls.ToggleSwitch
Xamarin.Forms.Switch
Android
iOS
[assembly: ExportRenderer(typeof(Switch),
typeof(ToggleSwitchRenderer))]
namespace JMAS.MicrosoftDeCode2017.UWP.Renderers
...
手法 概要
Custom Renderer • コントロールのクラスに適用
• カスタムコントロール的
Effects • コントロールのインスタンスに適用
• Custom Renderer より手軽に利用可能
DependencyServi...
https://github.com/shunsuke-kawai/decode2017_MW08
http://bit.ly/2rI6Lth
[assembly: ExportRenderer(typeof(CustomEditor), typeof(CustomEditorRenderer))]
namespace decode2017_MW08.Droid.Renderers
{...
[assembly: ExportRenderer(typeof(WebView), typeof(CustomWebViewRenderer))]
namespace decode2017_MW08.Droid.Renderers
{
pub...
public CustomIndicator()
{
InitializeComponent();
_htmlPath = DependencyService.Get<IHtmlPath>().GetHtmlPath() + "Sample_S...
[assembly: ResolutionGroupName("Xamarin")]
[assembly: ExportEffect(typeof(ListViewHasNoHighlightEffect), "ListViewHasNoHig...
public class ScrollToBehavior : BehaviorBase<ListView>
{
public static readonly BindableProperty ScrollToItemProperty =
Bi...
https://github.com/microwavePC/Beahat
https://bugzilla.xamarin.com/show_bug.cgi?id=44973
https://bugzilla.xamarin.com/show_bug.cgi?id=55636
イベントアプリ
App Service
Mobile Apps
Web Jobs
Mobile Engagement
Web サーバー
Azure
イベントアプリ
App Service
Mobile Apps
Web Jobs
Mobile Engagement
Web サーバー
Azure
イベントアプリ
App Service
Mobile Apps
Web Jobs
Mobile Engagement
Web サーバー
Azure
Demo
Azure Mobile Engagement
https://azure.microsoft.com/ja-jp/services/mobile-engagement/
https://azure.microsoft.com/ja-jp/services/mobile-engagement/
https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-
library/
https://developer.xamarin.com/guides...
アプリの Beacon 対応を簡単・迅速に実現し、
現地でのユーザー体験を演出・効果測定できるクラウドサービスです。
Beacon 対応することで
GPS よりもさらに近距離・高精度の
位置情報を利用することができます。
Beacapp を活用...
Demo
Native Binding
⇒ ¥ 5,800!
http://jxug.org/
アンケートにご協力ください。
■アプリのメニューから
アンケート ⇒ 「de:code イベントアプリの作り方」を選択して、回
答・送信をお願いします。
ROOM D
Ask the Speaker のご案内
本セッションの詳細は、コミュニケーション
ルーム『Ask the Speaker』コーナー Room D
カウンタにてご説明させていただきます。
是非、お立ち寄りください。
© 2017 Microsoft Corporation. All rights reserved.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
Sie haben dieses Dokument abgeschlossen.
Lade die Datei herunter und lese sie offline.
Nächste SlideShare
What to Upload to SlideShare
Weiter
Nächste SlideShare
What to Upload to SlideShare
Weiter
Herunterladen, um offline zu lesen und im Vollbildmodus anzuzeigen.

Teilen

[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~

Herunterladen, um offline zu lesen

みなさんがお使いの de:code イベント アプリは Xamarin.Forms で作られています。Xamarin での開発にあたりどのような苦労や工夫があったか、開発者自らが実例を交えてご紹介します。「夢のツールのように聞こえるけど、ホントのところはどうなの?」「実際に Xamarin.Forms って案件に使えるの?」そんな疑問にお答えします。

受講対象: Xamarin を使用したモバイル アプリケーションの開発に興味のあるエンジニア

製品/テクノロジ: .NET/iOS/Android/Microsoft Azure/Xamarin/クラウド

川合 俊介
株式会社ジェーエムエーシステムズ
事業企画部

Ähnliche Bücher

Kostenlos mit einer 30-tägigen Testversion von Scribd

Alle anzeigen

Ähnliche Hörbücher

Kostenlos mit einer 30-tägigen Testversion von Scribd

Alle anzeigen
  • Gehören Sie zu den Ersten, denen das gefällt!

[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~

  1. 1. 川合 俊介(かわい しゅんすけ) shunsuke.kawai.777 @_shunsuke_kawai
  2. 2. • C# によるクロスプラットフォーム開発環境。 • 2001 年に Mono プロジェクトとして発足し、 後に Xamarin 社を設立、2016 年に Microsoft 社 に買収された。 • 現在は Visual Studio に同梱され、OSS 化、ライ センスの無料化がされている。 ⇒Xamarin(ザマリン) とはなんぞや • http://qiita.com/amay077/items/38ee79b3e3e88cf751b9
  3. 3. Traditional Xamarin approach (Xamarin Native) 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.Forms
  4. 4. Traditional Xamarin approach (Xamarin Native) 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.Forms イベントアプリはこちらを採用
  5. 5. Web アプリ DBWebサイト イベントアプリ iOS Android Windows Azure Web Jobs & Azure Mobile Engagement (Push 通知等) 参加登録 登録情報更新 ・・・ REST API
  6. 6. • アプリの特性上、複雑な UI、OS 独自の機能を 使用する必要はあまりない なかった • 開発メンバーは Windows 系開発者で iOS/Android の開発は未経験 • スケジュールがタイトだったため、できる限り 共通化したい
  7. 7. http://www.nuits.jp/entry/2016/08/22/173858
  8. 8. Android.Widget.CheckBox ??? Windows.UI.Xaml. Controls.CheckBox × ⇒iOS にはない ⇒Xamarin.Forms 標準 コントロールには ない
  9. 9. UWP Android.Widget.Switch MonoTouch.UIKit.UISwitch Windows.UI.Xaml. Controls.ToggleSwitch Xamarin.Forms.Switch Android iOS
  10. 10. [assembly: ExportRenderer(typeof(Switch), typeof(ToggleSwitchRenderer))] namespace JMAS.MicrosoftDeCode2017.UWP.Renderers { public class ToggleSwitchRenderer : SwitchRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Switch> e) { base.OnElementChanged(e); if (Control != null) { Control.OnContent = string.Empty; Control.OffContent = string.Empty; } } } }
  11. 11. 手法 概要 Custom Renderer • コントロールのクラスに適用 • カスタムコントロール的 Effects • コントロールのインスタンスに適用 • Custom Renderer より手軽に利用可能 DependencyService • 各プラットフォーム固有の機能を利用 Behaviors • 機能を添付
  12. 12. https://github.com/shunsuke-kawai/decode2017_MW08 http://bit.ly/2rI6Lth
  13. 13. [assembly: ExportRenderer(typeof(CustomEditor), typeof(CustomEditorRenderer))] namespace decode2017_MW08.Droid.Renderers { public class CustomEditorRenderer : EditorRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Editor> e) { base.OnElementChanged(e); var el = (CustomEditor)this.Element; var nativeEditText = (global::Android.Widget.EditText)Control; var shape = new ShapeDrawable(new Android.Graphics.Drawables.Shapes.RectShape()); shape.Paint.Color = el.BorderColor.ToAndroid(); shape.Paint.SetStyle(Paint.Style.Stroke); nativeEditText.Background = shape; } } } CustomEditorRenderer.cs
  14. 14. [assembly: ExportRenderer(typeof(WebView), typeof(CustomWebViewRenderer))] namespace decode2017_MW08.Droid.Renderers { public class CustomWebViewRenderer : WebViewRenderer { protected override void OnElementChanged(ElementChangedEventArgs<WebView> e) { base.OnElementChanged(e); if (Element == null) return; Control.SetBackgroundColor(Element.BackgroundColor.ToAndroid()); Control.ClearCache(true); } } } CustomWebViewRenderer.cs
  15. 15. public CustomIndicator() { InitializeComponent(); _htmlPath = DependencyService.Get<IHtmlPath>().GetHtmlPath() + "Sample_Spinner.html"; } public string GetHtmlPath() { return "file:///android_asset/"; } CustomIndicator.xaml.cs HtmlPath_Droid.cs HtmlPath_iOS.cs public string GetHtmlPath() { return NSBundle.MainBundle.BundleUrl.ToString(); } public string GetHtmlPath() { return "ms-appx-web:///"; } HtmlPath_UWP.cs
  16. 16. [assembly: ResolutionGroupName("Xamarin")] [assembly: ExportEffect(typeof(ListViewHasNoHighlightEffect), "ListViewHasNoHighlightEffect")] namespace decode2017_MW08.Droid.Effects { public class ListViewHasNoHighlightEffect : PlatformEffect { protected override void OnAttached() { var listView = Control as AbsListView; if (listView == null) return; listView.SetSelector(Resource.Drawable.NoHighlightViewCellBackground); } protected override void OnDetached() { } } } CustomIndicator.xaml.cs
  17. 17. public class ScrollToBehavior : BehaviorBase<ListView> { public static readonly BindableProperty ScrollToItemProperty = BindableProperty.Create("ScrollToItem", typeof(object), typeof(ScrollToBehavior), null, BindingMode.TwoWay, null, ScrollToBehavior.OnScrollToItemPropertyChanged, null, null); private static void OnScrollToItemPropertyChanged(BindableObject bindable, object oldValue, object newValue) { ~~略~~ } } ScrollToBehavior.cs
  18. 18. https://github.com/microwavePC/Beahat
  19. 19. https://bugzilla.xamarin.com/show_bug.cgi?id=44973 https://bugzilla.xamarin.com/show_bug.cgi?id=55636
  20. 20. イベントアプリ App Service Mobile Apps Web Jobs Mobile Engagement Web サーバー Azure
  21. 21. イベントアプリ App Service Mobile Apps Web Jobs Mobile Engagement Web サーバー Azure
  22. 22. イベントアプリ App Service Mobile Apps Web Jobs Mobile Engagement Web サーバー Azure
  23. 23. Demo Azure Mobile Engagement
  24. 24. https://azure.microsoft.com/ja-jp/services/mobile-engagement/
  25. 25. https://azure.microsoft.com/ja-jp/services/mobile-engagement/
  26. 26. https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java- library/ https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/
  27. 27. アプリの Beacon 対応を簡単・迅速に実現し、 現地でのユーザー体験を演出・効果測定できるクラウドサービスです。 Beacon 対応することで GPS よりもさらに近距離・高精度の 位置情報を利用することができます。 Beacapp を活用すると 新規開発、既存アプリの対応にかかる 費用や期間を大幅に圧縮できます。 コンテンツの変更反映も容易に可能。 法人向け実績多数 国内最大級の法人向けアプリ開発実績 (100社、600アプリ以上) 、特殊な法人 ユースケースに最適な企画開発、運用 をお手伝いします。 近づいた! 出た! 管理機能を搭載(ログ収集や ビーコン・イベント管理など) リアルタイムな情報更新 (アプリアップデート不要) マルチ OS・マルチビーコン対応 スピード導入・開発コストの 抑制を実現 ワンストップ(ビーコン端末 の現地設置〜ログ解析) 開発から運用まで柔軟な サポート体制
  28. 28. Demo Native Binding
  29. 29. ⇒ ¥ 5,800!
  30. 30. http://jxug.org/
  31. 31. アンケートにご協力ください。 ■アプリのメニューから アンケート ⇒ 「de:code イベントアプリの作り方」を選択して、回 答・送信をお願いします。
  32. 32. ROOM D Ask the Speaker のご案内 本セッションの詳細は、コミュニケーション ルーム『Ask the Speaker』コーナー Room D カウンタにてご説明させていただきます。 是非、お立ち寄りください。
  33. 33. © 2017 Microsoft Corporation. All rights reserved. 本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

みなさんがお使いの de:code イベント アプリは Xamarin.Forms で作られています。Xamarin での開発にあたりどのような苦労や工夫があったか、開発者自らが実例を交えてご紹介します。「夢のツールのように聞こえるけど、ホントのところはどうなの?」「実際に Xamarin.Forms って案件に使えるの?」そんな疑問にお答えします。 受講対象: Xamarin を使用したモバイル アプリケーションの開発に興味のあるエンジニア 製品/テクノロジ: .NET/iOS/Android/Microsoft Azure/Xamarin/クラウド 川合 俊介 株式会社ジェーエムエーシステムズ 事業企画部

Aufrufe

Aufrufe insgesamt

835

Auf Slideshare

0

Aus Einbettungen

0

Anzahl der Einbettungen

2

Befehle

Downloads

34

Geteilt

0

Kommentare

0

Likes

0

×