Xamarin本の歩き方 / How to deal with xamarin books

Xamarin本の歩き方 / How to deal with xamarin books

昨今Xamarin関連の技術書が日本語でも増え、以前よりも比較的体系的な知識を得ることのハードルが下がりつつあります。ただ、そういった技術書もカバーしている範囲にはそれぞれ特徴があり、Xamarinで開発できるアプリのうち、どういう分野の技術を学ぶことができるかを整理することでより効率的に知識を得ることができると考えます。本セッションでは、Xamarinの基本情報を整理しながら現在出版されている技術書がどう位置づけられるかに関する1つの見方を提示し、今後のXamarin開発の一助になることを目的とします。

https://csugjp.connpass.com/event/66004/

C000f292a92b894afabbb352e8709667?s=128

Toshinori Sugita

October 07, 2017
Tweet

Transcript

  1. Xamarin本の歩き方 2017/10/7 .NET Conf 2017 Tokyo, Japan

  2. 自己紹介 • 杉田 寿憲 ◦ Toshinori Sugita, @toshi0607 • 10月にMicrosoft

    MVPに ◦ Visual Studio & Development Technologies • Software Engineer@freee • Rubyが多いですが、Microsoft技術関連開発も!! ◦ サーバサイド: Ruby on Rails、Go ◦ クライアントサイド: JavaScript、C#(WPF、Xamarin.Mac) • We’re hiring ◦ 日本を変えたいWindowsアプリエンジニア募集!! ▪ https://www.wantedly.com/projects/66243#_=_
  3. 今日のお話 • Xamarinの技術書(日本語)それぞれの特徴とカバーする領域 • カバーする技術領域を把握するための基本的なXamarin関連 知識のおさらい • Xamarinともっと仲良くなるために学ばないといけないと思った こと(読書感想文)

  4. 僕とXamarin • 2016年11月 ◦ Xamarin Dev Days Tokyoに参加! ◦ Japan

    Xamarin User Group(JXUG)の存在を知る ◦ 初めてXamarin(.Forms)に触る • 2017年3月 ◦ 日用品管理アプリをXamarin.Formsで開発し始める ◦ 「Xamarin.Formsで家の日用品管理アプリを作り始めたお話」 • 2017年7月 ◦ 業務でXamarin.Macを使いMacアプリを開発開始 • 2017年8月 ◦ JXUGで初めてLTする ◦ 「LottieXamarinで始めるXamarinアプリのアニメーション 」
  5. Xamarinとは…? Shared C# App Logic Shared C# App Logic Xamarin

    Native Xamarin.Forms Mac/iOS C# UI/Logic Android C# UI/Logic UWP C# UI/Logic Shared XAML/C# UI ※ ※Visual Studio(Windows)で新規ソリューション作成時、同一ソリューション内に作成はされます。
  6. 突然ですが… 「Xamarinでアプリを開発したい!」 と思うときってどういう要件のアプリを作るときでしょう?

  7. Xamarinアプリに求められそうな要件 • iOSとAndroid両方に対応したシンプル(主観)なアプリをなるべ く少ない工数で作りたい • C#しか書けないけどモバイルアプリ作りたい • 既存の.NETライブラリを使いつつWindowsアプリのMac版を作 りたい •

    普段ネイティブアプリ作ってて覗きに来た • Tizenのアプリも作れんの!?ヤバくね!?
  8. Xamarinアプリ開発に必要そうな知識 • C#・Visual Studio ◦ コードを書く、Visual Studio、エミュレータ、デバッグ • UIコードの共有方法 ◦

    XAML、Deviceクラス、Effect、Custom Renderer • ライブラリの使い方、作り方 ◦ PCL、.NET Standard、Shared Project、DependencyService、Xamarin Plugin、 ネイティブライブラリのバインディング • 設計 ◦ ネイティブ?Xamarin Native?Xamarin.Forms? ◦ ViewとModelの依存度を下げたい ◦ テストしたい ◦ バックエンドどうする? • ネイティブ(≠Xamarin Native)のルール、表現 • 「Xamarin」の「基礎」、動作原理、Mono※ ※http://www.buildinsider.net/mobile/insidexamarin/02
  9. Xamarinアプリ開発に必要そうな知識 • C#・Visual Studio ◦ コードを書く、Visual Studio、エミュレータ、デバッグ • UIコードの共有方法 ◦

    XAML、Deviceクラス、Effect、Custom Renderer • ライブラリの使い方、作り方 ◦ PCL、.NET Standard、Shared Project、DependencyService、Xamarin Plugin、 ネイティブライブラリのバインディング • 設計 ◦ ネイティブ?Xamarin Native?Xamarin.Forms? ◦ ViewとModelの依存度を下げたい ◦ テストしたい ◦ バックエンドどうする? • ネイティブ(≠Xamarin Native)のルール、表現 • 「Xamarin」の「基礎」、動作原理、Mono
  10. C#・Visual Studio

  11. Xamarinアプリ開発に必要そうな知識 • C#・Visual Studio ◦ コードを書く、Visual Studio、エミュレータ、デバッグ • UIコードの共有方法 ◦

    XAML、Deviceクラス、Effect、Custom Renderer • ライブラリの使い方、作り方 ◦ PCL、.NET Standard、Shared Project、DependencyService、Xamarin Plugin、 ネイティブライブラリのバインディング • 設計 ◦ ネイティブ?Xamarin Native?Xamarin.Forms? ◦ ViewとModelの依存度を下げたい ◦ テストしたい ◦ バックエンドどうする? • ネイティブ(≠Xamarin Native)のルール、表現 • 「Xamarin」の「基礎」、動作原理、Mono
  12. UIコードの共有方法 Shared C# App Logic Xamarin.Forms Shared XAML/C# UI •

    Device.クラス ◦ プラットフォーム毎にプロパティを 切り替えたい • Effect ◦ ネイティブのコントロールを操作 したい • Custom Renderer ◦ Xamarin.Formsのコントロールを 拡張してプラットフォーム毎に作 り分けたい
  13. • C#・Visual Studio ◦ コードを書く、Visual Studio、エミュレータ、デバッグ • UIコードの共有方法 ◦ XAML、Deviceクラス、Effect、Custom

    Renderer • ライブラリの使い方、作り方 ◦ PCL、.NET Standard、Shared Project、DependencyService、Xamarin Plugin、 ネイティブライブラリのバインディング • 設計 ◦ ネイティブ?Xamarin Native?Xamarin.Forms? ◦ ViewとModelの依存度を下げたい ◦ テストしたい ◦ バックエンドどうする? • ネイティブ(≠Xamarin Native)のルール、表現 • 「Xamarin」の動作原理、Mono Xamarinアプリ開発に必要そうな知識
  14. ライブラリの使い方、作り方 Shared C# App Logic Shared C# App Logic Xamarin

    Native Xamarin.Forms Mac/iOS C# UI/Logic Android C# UI/Logic UWP C# UI/Logic Shared XAML/C# UI
  15. PCL ライブラリの使い方、作り方 Shared Project https://www.slideshare.net/Xamarin/developing-and-designing-native-mobile-apps-in-xamarin-studio

  16. ライブラリの使い方、作り方 https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/

  17. ライブラリの使い方、作り方 • ネイティブライブラリのバイン ディング ◦ ネイティブのAndroidやiOSのライブラリを使 いたい ◦ Sharpen(for Android)

    ◦ Objective Sharpie(for iOS) • Embeddinator-4000 ◦ 逆にC#で作ったライブラリをネイティブの AndroidやiOSから呼び出したい!?!? • DependencyService ◦ 共通ライブラリからプラットフォー ム毎の実装を呼びたい • Plugins for Xamarin ◦ プラットフォーム固有機能を共通 のインターフェースで呼ぶライブ ラリ、誰か既に作ってくれてるや んな?
  18. • C#・Visual Studio ◦ コードを書く、Visual Studio、エミュレータ、デバッグ • UIコードの共有方法 ◦ XAML、Deviceクラス、Effect、Custom

    Renderer • ライブラリの使い方、作り方 ◦ PCL、.NET Standard、Shared Project、DependencyService、Xamarin Plugin、 ネイティブライブラリのバインディング • 設計 ◦ ネイティブ?Xamarin Native?Xamarin.Forms? ◦ ViewとModelの依存度を下げたい ◦ テストしたい ◦ バックエンドどうする? • ネイティブ(≠Xamarin Native)のルール、表現 • 「Xamarin」の動作原理、Mono Xamarinアプリ開発に必要そうな知識
  19. 設計 https://qiita.com/amay077/items/5e7cedb069a5a6ae0ae7

  20. いっぱい

  21. 公式ページやネットの記事はもちろん調べるけど、 「Xamarin本どんな感じでしょう?」 ※ある程度体系化された知識やサンプルに期待

  22. 2017年 (+ 2016年末) に世に出た本は8冊 発売日 タイトル 2016/12/29 かずきのXamarin.Forms入門 2017/3/23 Xamarinではじめるスマホアプリ開発

    2017/3/25 Xamarinエキスパート養成読本 2017/6/1 プログラミングXamarin 上 2017/7/27 基礎から学ぶXamarinプログラミング 2017/9/1 Essential Xamarin 2017/9/15 Xamarinネイティブによるモバイルアプリ開発 2017/10/5 Xamarinプログラミング入門
  23. いっぱい

  24. Xamarin本の歩き方 • 著者 • 発売日 • 価格 • Xamarin Native

    or Xamarin.Forms • ひとことで表すと... • 構成 • カバー範囲(触れているかどうかくらいの基準) • 素敵なところ、特徴的なところ
  25. 補足 • 直近3週間で読んだ本が大半ですが、半年以上前に読んだ本 もあります。 • 読書時点の自分の知識量と本を読んで感じることには差が出 てしまう可能性があることをご了承ください。 • 各本で紹介する「カバー範囲」、認識違いがある場合ご指摘を お願いします。

  26. ①かずきのXamarin.Forms入門 • 大田一希さん • 2016/12/29 • 1,250円 ◦ Slide Share版あり

    • Xamarin.Forms • 日本のXamarin.Forms解説 本の元祖!
  27. 構成        かずきのXamarin.Forms入門 • はじめに ◦ ターゲットプラットフォーム ◦ Xamarin.Formsとは • Hello World

    • XAML ◦ XAMLとC#コードの対比 ◦ XAMLの応用 • Xamarin.Formsのコントロール ◦ Bindable Object ◦ レイアウトコントロール ◦ 一般的なコントロール ◦ ページ • スタイル • ジェスチャー • アニメーション ◦ コントロールの移動や拡大、縮小、回転 ◦ シンプルなアニメーション ◦ イージング • ビヘイビア • トリガー・アクション • メッセージセンター • プラットフォーム固有機能 ◦ Deviceクラス ◦ DependencyService ◦ Effect ◦ CustomRenderer ◦ Plugin ◦ ネイティブのビュー • 永続化 ◦ ApplicationクラスのProperties ◦ ローカルファイル ◦ SQLite • Prism • まとめ
  28. カバー範囲 • C#・Visual Studio ◦ コードを書く、Visual Studio、エミュレータ、デバッグ • UIコードの共有方法 ◦

    XAML、Deviceクラス、Effect、Custom Renderer • 共有ライブラリの使い方、作り方 ◦ PCL、.NET Standard、Shared Project、DependencyService、Xamarin Plugin、 ネイティブライブラリのバインディング • 設計 ◦ ネイティブ?Xamarin Native?Xamarin.Forms? ◦ ViewとModelの依存度を下げたい ◦ テストしたい ◦ バックエンドどうする? • ネイティブ(≠Xamarin Native)のルール、表現 • 「Xamarin」の「基礎」、動作原理、Mono
  29. 特徴        かずきのXamarin.Forms入門 • コントロール・レイアウト1つ1つの説明が丁寧で全てAndroid、 iOS、Windowsの画面比較付き • 他の全部読んで戻って来ても「網羅している感」が強く、自分も アプリを作ってみよう!という気持ちになる • XAMLへの説明も丁寧で、コントロールに入る前に基本的な部 分が一通り説明されていてコントロールの説明が頭に入ってき

    やすい • データの永続化について複数説明している著書は意外と少な い中、3種類(Properties、ローカルファイル、SQLite)比較されて いる
  30. ②Xamarinではじめるスマホアプリ開発 • 大西武さん • 2017/3/23 • 2,484円 • 工学社 •

    Xamarin.Forms • (コードと比べた)XAMLのありが たみがとても伝わってくる本
  31. 構成        Xamarinではじめるスマホアプリ開発 • Xamarinとは ◦ Xamarinとは ◦ プログラミング言語「C#」 ◦ 開発環境のインストール •

    シンプルな「CSharpDemo」アプリの開発 • 「UIゲーム」アプリの開発 • 「Hello」アプリの開発 ◦ MasterDetailPageクラス ◦ 「DependencyService」と「interface」 • 「ZipCode」アプリの開発 ◦ データ・バインディング ◦ ToolbarItemsクラス • 「CameraDifference」アプリの開発 ◦ Xaml ◦ Custom Renderer
  32. カバー範囲 • C#・Visual Studio ◦ コードを書く、Visual Studio、エミュレータ、デバッグ • UIコードの共有方法 ◦

    XAML、Deviceクラス、Effect、Custom Renderer • 共有ライブラリの使い方、作り方 ◦ PCL、.NET Standard、Shared Project、DependencyService、Xamarin Plugin、 ネイティブライブラリのバインディング • 設計 ◦ ネイティブ?Xamarin Native?Xamarin.Forms? ◦ ViewとModelの依存度を下げたい ◦ テストしたい ◦ バックエンドどうする? • ネイティブ(≠Xamarin Native)のルール、表現 • 「Xamarin」の「基礎」、動作原理、Mono
  33. 特徴        Xamarinではじめるスマホアプリ開発 • 1章1つサンプルアプリを作りながら進めていくスタイル • 最終章の一部を除きUIをXAMLでなくコードしていて、「XAMLは オブジェクトのインスタンスを組み立てるための言語※ 」という意 味を痛感できる • 各章でC#の基本的な文法を説明している

    • コードの意味を1行1行全部(!)説明している ※https://www.slideshare.net/okazuki0130/xaml-71503072
  34. ③Xamarinエキスパート養成読本 • 鈴木堅太郎さん、高橋広樹 さん、佐々木浩司さん • 2017/3/25 • 2,354円 • Software

    Design plus • Kindle版あり • Xamarin.Forms • 他の言語からC#にやってく る人に!
  35. 構成          Xamarinエキスパート養成読本 • Xamarinの概要 • XamarinのためのC#入門 ◦ はじめてのC# ◦ クラスを理解しよう

    ◦ 例外の対処方法を理解しよう • Xamarinによるクロスプラットフォーム開 発 ◦ クロスプラットフォーム開発の基礎を知る ◦ XAMLを開発したアプリ開発 ◦ Web APIを使用したアプリ開発 • 先人が教えるクロスプラットフォー ム開発の肝 ◦ ページ系コントロールを使いこなせ! ◦ レイアウト系コントロールを使いこなせ • 一歩先行くクロスプラットフォーム開 発のポイント ◦ PCLによるコードの共通化 ◦ PCLを作成しよう ◦ PCLを利用しよう
  36. カバー範囲 • C#・Visual Studio ◦ コードを書く、Visual Studio、エミュレータ、デバッグ • UIコードの共有方法 ◦

    XAML、Deviceクラス、Effect、Custom Renderer • 共有ライブラリの使い方、作り方 ◦ PCL、.NET Standard、Shared Project、DependencyService、Xamarin Plugin、 ネイティブライブラリのバインディング • 設計 ◦ ネイティブ?Xamarin Native?Xamarin.Forms? ◦ ViewとModelの依存度を下げたい ◦ テストしたい ◦ バックエンドどうする? • ネイティブ(≠Xamarin Native)のルール、表現 • 「Xamarin」の「基礎」、動作原理、Mono
  37. 特徴           Xamarinエキスパート養成読本 • 1 / 3程度を割いてC#の基本的な文法をSwift、Javaと比較しな がら丁寧に説明している • レイアウト系コントロール、部品系コントロールを画像を交えて 網羅的に説明している •

    DependencyServiceを利用したPCLライブラリの作成・利用手順 を丁寧に説明している • 「エキスパート」の定義は読む人それぞれの心の中にある
  38. ④プログラミングXamarin 上 • Charles Petzold さん(著)、 榎本温さん、藤原 雄介さ ん、猪股健太郎さん(監訳) •

    2017/6/1 • 6,480円 ◦ 英語版(無料)あり • 日経BP • Kindle版あり • Xamarin.Forms • 覚悟が要る重み(論理/物 理)
  39. 構成 プログラミングXamarin Xamarin.FormsとC#によるクロスプラットフォームモバイルアプリ開発 • Xamarin.Formsの位置付け • アプリケーションの構造 • テキストをさらに調べる •

    スタックのスクロール • サイズの操作 • ボタンクリック • XAMLとコード • コードとXAMLの調和 • プラットフォーム固有のAPIの呼び出し • XAMLマークアップ拡張 • バインダブルインフラストラクチャ • スタイル • ビットマップ • 絶対位置を使用するレイアウト • インタラクティブなインターフェース • データバインディング • グリッドをマスターする • MVVM • コレクションビュー
  40. カバー範囲 • C#・Visual Studio ◦ コードを書く、Visual Studio、エミュレータ、デバッグ • UIコードの共有方法 ◦

    XAML、Deviceクラス、Effect、Custom Renderer • 共有ライブラリの使い方、作り方 ◦ PCL、.NET Standard、Shared Project、DependencyService、Xamarin Plugin、 ネイティブライブラリのバインディング • 設計 ◦ ネイティブ?Xamarin Native?Xamarin.Forms? ◦ ViewとModelの依存度を下げたい ◦ テストしたい ◦ バックエンドどうする? • ネイティブ(≠Xamarin Native)のルール、表現 • 「Xamarin」の「基礎」、動作原理、Mono
  41. 特徴 プログラミングXamarin Xamarin.FormsとC#によるクロスプラットフォームモバイルアプリ開発 • ペゾルド本 ※1 • 圧倒的な数かつ追って飽きないサンプルコードの宝庫 • コントロールの紹介にとどまらず、使いこなし、動作原理まで(少な

    くとも自分を置き去りにしながら) 踏み込んでいく • 榎本温さん(Xamarinの中の人)主催の最後の邦訳読書会は 10/10に開催 ※2 • 下巻もそのうち出るかもしれない ※1 https://ja.wikipedia.org/wiki/%E3%83%81%E3%83%A3%E3%83%BC%E3%83%AB%E3%82%BA%E3%83%BB%E3%83%9A%E3%82%BE%E3%83%AB%E3%83%89 ※2 https://xamarinformsbookreading.connpass.com/event/68505/
  42. ⑤基礎から学ぶXamarinプログラミング • 西村誠さん • 2017/7/27 • 3,510円 • シーアンドアール研究所 •

    Xamarin Native、 Xamarin.Forms • 史上最高の好感度
  43. 構成         基礎から学ぶXamarinプログラミング • Xamarinの概要 ◦ Xamarinの概要 ◦ 開発環境の構築 ◦ Visual

    Studioの基礎 ◦ C#の基礎 • Xamarin.iOSの基礎 ◦ Xcodeから実機でデバッグする • Xamarin.Androidの基礎 • Xamarin.Formsの基礎 ◦ カスタマイズを行う • XAML ◦ XAMLの基礎 ◦ データバインディング ◦ Xamarin.Formsのコントロール • iOSとAndroidで使い分ける ◦ 画面を作り分ける ◦ コードを作り分ける • MVVMで作る ◦ MVVMの概要と導入 ◦ Prismの実装その1 ◦ Prismの実装その2 • 便利な機能とエラーへの対処法 ◦ Visual Studioの上位エディションで利用 できる機能とプレビュー版の機能につ いて ◦ エラーが出る場合の対処法
  44. カバー範囲 • C#・Visual Studio ◦ コードを書く、Visual Studio、エミュレータ、デバッグ • UIコードの共有方法 ◦

    XAML、Deviceクラス、Effect、Custom Renderer • 共有ライブラリの使い方、作り方 ◦ PCL、.NET Standard、Shared Project、DependencyService、Xamarin Plugin、 ネイティブライブラリのバインディング • 設計 ◦ ネイティブ?Xamarin Native?Xamarin.Forms? ◦ ViewとModelの依存度を下げたい ◦ テストしたい ◦ バックエンドどうする? • ネイティブ(≠Xamarin Native)のルール、表現 • 「Xamarin」の「基礎」、動作原理、Mono
  45. 特徴         基礎から学ぶXamarinプログラミング • 前半Xamarin.AndroidとXamarin.iOSで同一機能を開発し、比較 している • コンポーネントの子要素に持てる数をXamarin.Formsのソース コードを追いながら説明するなど「なぜ」がコードに基づいてい て好感度が高い • Xamarin.Formsでプラットフォーム毎のプロパティ出し分けに始

    まりDependencyService、Custom Rendererとネイティブのコント ロールをいじる話への持っていきかたが綺麗で頭に入ってきや すい • よくあるエラーまでまとめてあって優しい
  46. ⑥Essential Xamarin • 榎本温さん、平野翼さん、中 村充志さん、奥山 裕紳さ ん、末広尚義さん、中澤慧さ ん • 2017/9/1

    • 2,624円 • インプレスR&D • Xamarin.Native、 Xamarin.Forms • Kindle版あり • 「本質」であり「基礎」であり、 圧倒的必読感
  47. 構成 Essential Xamarin ネイティブからクロスプラットフォームまで モバイル.NETの世界 • Xamarin.Androidで始めるクロスプラット フォームモバイルアプリ開発 • できるXamarin.Mac

    • Prism for Xamarin.Forms入門の次の門 • 画面遷移カスタマイズから取り組む Xamarin.iOS • Xamarin Bluetooth Low Energyイン ストール編 • 開発者のためのXamarin関連リポジ トリ集 • Xamarin.Android SDK解説(rev. 2017.3) • Monoでモノのインターネットを目指 す
  48. カバー範囲 • C#・Visual Studio ◦ コードを書く、Visual Studio、エミュレータ、デバッグ • UIコードの共有方法 ◦

    XAML、Deviceクラス、Effect、Custom Renderer • 共有ライブラリの使い方、作り方 ◦ PCL、.NET Standard、Shared Project、DependencyService、Xamarin Plugin、 ネイティブライブラリのバインディング • 設計 ◦ ネイティブ?Xamarin Native?Xamarin.Forms? ◦ ViewとModelの依存度を下げたい ◦ テストしたい ◦ バックエンドどうする? • ネイティブ(≠Xamarin Native)のルール、表現 • 「Xamarin」の「基礎」、動作原理、Mono
  49. 特徴 Essential Xamarin ネイティブからクロスプラットフォームまで モバイル.NETの世界 • 技術書典2※ が起源 • 6人の著者が各自様々な領域で個性を爆発させていくスタイル

    • これがネイティブ(≠Xamarin.Native)に見識がある人々から見 たXamarinなのかという興奮と絶望 • 唯一のXamarin.Mac入門本(1章分) • オープンソースのXamarinプロジェクトを俯瞰(≠理解) http://atsushieno.hatenablog.com/entry/2017/01/02/015102
  50. ⑦Xamarinネイティブによるモバイルアプリ開発 • 青柳臣一さん • 2017/9/15 • 3,758円 • 翔泳社 •

    Xamarin.Native • 圧倒的Xamarin Native比 率!!
  51. 構成 Xamarinネイティブによるモバイルアプリ開発 C#によるAndroid/iOS UI制御の基礎 • Xamarinについて学ぼう • Visual StudioでAndroidキッチンタイマー を作ろう

    ◦ Javaとの違いを知る • Visual StudioでiOSキッチンタイマーを作 ろう ◦ Objective-C/Swiftとの違いを知る ◦ NSIntegerとCSFloatを知る • 同一プロジェクトでAndroid/iOSアプリを 作ろう • MVVMCrossについて学ぼう ◦ MVVMとは ◦ MVVMCross • MVVMCrossでアプリを作ろう(準備編) • MVVMCrossでアプリを作ろう(デー タバインディング編) ◦ データバインディングをもっと知る ◦ コレクションのデータバインディングを 学ぶ • MVVMCrossを使いこなそう ◦ 画面遷移を使いこなす ◦ DIとIoCコンテナー ◦ ビューモデルからビューへのインタラク ション ◦ 色を扱う ◦ ファイルを読み書きする ◦ ブラウザーを開く ◦ メッセージを表示する ◦ その他のプラグイン
  52. カバー範囲 • C#・Visual Studio ◦ コードを書く、Visual Studio、エミュレータ、デバッグ • UIコードの共有方法 ◦

    XAML、Deviceクラス、Effect、Custom Renderer • 共有ライブラリの使い方、作り方 ◦ PCL、.NET Standard、Shared Project、DependencyService、Xamarin Plugin、 ネイティブライブラリのバインディング • 設計 ◦ ネイティブ?Xamarin Native?Xamarin.Forms? ◦ ViewとModelの依存度を下げたい ◦ テストしたい ◦ バックエンドどうする? • ネイティブ(≠Xamarin Native)のルール、表現 • 「Xamarin」の「基礎」、動作原理、Mono
  53. 特徴 Xamarinネイティブによるモバイルアプリ開発 C#によるAndroid/iOS UI制御の基礎 • Xamarin.AndroidとXamarin.iOSで同一機能を開発し、比較してい る • キッチンタイマー、音が鳴ると地味に嬉しい •

    Xamarin Nativeについて触れている割合がページ数という観点 でもっとも高い本 ◦ 次の本も多いけど厳密に数えてはないです... • PCL/.NET StandardとShared Projectの違い、使い分けが詳細 でわかりやすいです • Xamarin.FormsでなくXamarin.AndroidとXamarin.iOSでMVVMを 実現する一手段としてMVVMCrossを使用
  54. ⑧Xamarinプログラミング入門 • 増田智明さん • 2017/10/5 • 3,456円 • 日経BP社 •

    Xamarin Native、 Xamarin.Forms • カバー範囲No.1!!!
  55. None
  56. 構成 Xamarinプログラミング入門 C#によるiOS、Androidアプリケーション開発の基本 • クロスプラットフォーム開発をC#で ◦ なぜC#なのか ◦ .NET FrameworkとMonoの関係

    ◦ モバイルアプリの特徴 • Xamarinとは ◦ Xamarinでクロスプラットフォーム開発 ◦ Xamarin.iOS ◦ Xamarin.Android ◦ Xamarin.Forms • 開発環境を整える • サンプルアプリの概要 • 画面を作成する • 共通ロジックを作成する ◦ プラットフォーム間でコードを共有する ◦ Todoロジックを作成する ◦ Todoロジックのテストをする • 個別ロジックを作成する ◦ プラットフォーム固有のコードを記述する ◦ iOSのビューに接続する ◦ Androidのビューに接続する ◦ Xamarin.FormsのPCLプロジェクト ◦ Xamarin.Formsの個別設定 • ローカルファイルにアクセスする ◦ ローカルファイルを利用する ◦ iOSのファイルアクセス ◦ Androidのファイルアクセス ◦ Xamarin.Formsのファイルアクセス • App Serviceを使う ◦ Azure App Serviceを利用する ◦ Mobile Appを作成する ◦ iOSからモバイルサービスを使う ◦ Androidからモバイルサービスを使う ◦ Xamarin.Formsからモバイルサービスを使う • まとめ ◦ アプリを拡張するために ◦ アプリを公開するために • 付録 ◦ Android Thingsの利用 ◦ Xamarin.FormsでUWPアプリを作る
  57. カバー範囲 • C#・Visual Studio ◦ コードを書く、Visual Studio、エミュレータ、デバッグ • UIコードの共有方法 ◦

    XAML、Deviceクラス、Effect、Custom Renderer • 共有ライブラリの使い方、作り方 ◦ PCL、.NET Standard、Shared Project、DependencyService、Xamarin Plugin、 ネイティブライブラリのバインディング • 設計 ◦ ネイティブ?Xamarin Native?Xamarin.Forms? ◦ ViewとModelの依存度を下げたい ◦ テストしたい ◦ バックエンドどうする? • ネイティブ(≠Xamarin Native)のルール、表現 • 「Xamarin」の「基礎」、動作原理、Mono
  58. 特徴 Xamarinプログラミング入門 C#によるiOS、Androidアプリケーション開発の基本 • テーマ(ファイルアクセス、Azure接続、プロジェクト構成、開発環 境、画面など)毎にXamarin.Android、Xamarin.iOS、 Xamarin.Formsを比較するスタイル • バックエンドへの言及、共有ライブラリのテストなど、より実戦投 入していく気持ちを高めてくれる

    • 「そもそもモバイルに求められるものとは?」から始まり、自分 の開発環境以前にユーザがモバイルを触る環境、得て欲しい 体験を考えないと...と再認識させられる • .NET Frameworkとmonoの関係を説明する中で.NET Standard にも言及
  59. カバー範囲のまとめ ◎: 詳しいすごい!(主観) ◯: 勉強になる!(主観) △: 触れている - : スコープ外(語気弱め)

  60. Xamarin本読書感想文 • 2017年、たくさんのXamarin本が発売されたが、みんな違ってみ んないい!(本心) • Xamarin本のテーマはXamarin.Formsの使いこなしからよりネイ ティブを意識したXamarin NativeとXamarin.Formsの使い分けへ と変化していった •

    自身でXamarin.Macを使って開発する際も(Xamarin.Forms使っ ているわけではないので一層)ネイティブの作法、流儀※ 知らず して開発を進めていくのは厳しいし、それに触れられている書 籍の存在意義はとても大きく感じる ※Appleのガイドライン、アプリの配布方法、ライフサイクル等の意味で使っています ※Appleのガイドライン、アプリの配布方法、ライフサイクル等の意味で使っています
  61. 自ら本を書く ※https://atsushieno.github.io/xamaritans/tbf3.html • Xamaritansのメンバーとして技術書典 3(2017/10/22)で同人誌を出展・販売しま す。 • Embeddinator-4000 の設計と実装 (@atsushieno)

    • Xamarin.Mac アプリケーションの配布方法 (@toshi0607) • Plugins for Xamarin & Unit Test (@nuits_jp) • MonkeyFest2017 参加レポート (@ailen0ada) • 世界を広げる Microsoft Cognitive Services (@Fumiya_Kume) • もう1章追加予定あり
  62. 一層ありがたく感じる資料 『Xamarin.Forms使うべき?』 https://speakerdeck.com/yukaabuno/xamarin-dot-forms-shi-ubeki 『「クロスプラットフォーム × XAML」というパワーワードを真剣に考える』 https://www.slideshare.net/ssuser3c35a5/xaml-80887248?ref=http://hatena.c1.grapecity.com/entry/2017/10/11/echo2017

  63. ご清聴ありがとうございました! Xamarin本の歩き方