Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

Toshinori Sugita

December 02, 2017
Tweet

More Decks by Toshinori Sugita

Other Decks in Technology

Transcript

  1. 自己紹介 • 杉田 寿憲 ◦ 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#_=_
  2. 僕と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アプリのアニメーション 」
  3. 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)で新規ソリューション作成時、同一ソリューション内に作成はされます。
  4. 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
  5. 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
  6. 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
  7. UIコードの共有方法 Shared C# App Logic Xamarin.Forms Shared XAML/C# UI •

    Deviceクラス ◦ プラットフォーム毎にプロパティを 切り替えたい • Effect ◦ ネイティブのコントロールを操作 したい • Custom Renderer ◦ Xamarin.Formsのコントロールを 拡張してプラットフォーム毎に作 り分けたい
  8. • 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アプリ開発に必要そうな知識
  9. ライブラリの使い方、作り方 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
  10. ライブラリの使い方、作り方 • ネイティブライブラリのバイン ディング ◦ ネイティブのAndroidやiOSのライブラリを使 いたい ◦ Sharpen(for Android)

    ◦ Objective Sharpie(for iOS) • Embeddinator-4000 ◦ 逆にC#で作ったライブラリをネイティブの AndroidやiOSから呼び出したい!?!? • DependencyService ◦ 共通ライブラリからプラットフォー ム毎の実装を呼びたい • Plugins for Xamarin ◦ プラットフォーム固有機能を共通 のインターフェースで呼ぶライブ ラリ、誰か既に作ってくれてるや んな?
  11. • 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アプリ開発に必要そうな知識
  12. 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プログラミング入門
  13. Xamarin本の歩き方 • 著者 • 発売日 • 価格 • Xamarin Native

    or Xamarin.Forms • ひとことで表すと... • 構成 • カバー範囲(触れているかどうかくらいの基準) • 素敵なところ、特徴的なところ
  14. 構成        かずきのXamarin.Forms入門 • はじめに ◦ ターゲットプラットフォーム ◦ Xamarin.Formsとは • Hello World

    • XAML ◦ XAMLとC#コードの対比 ◦ XAMLの応用 • Xamarin.Formsのコントロール ◦ Bindable Object ◦ レイアウトコントロール ◦ 一般的なコントロール ◦ ページ • スタイル • ジェスチャー • アニメーション ◦ コントロールの移動や拡大、縮小、回転 ◦ シンプルなアニメーション ◦ イージング • ビヘイビア • トリガー・アクション • メッセージセンター • プラットフォーム固有機能 ◦ Deviceクラス ◦ DependencyService ◦ Effect ◦ CustomRenderer ◦ Plugin ◦ ネイティブのビュー • 永続化 ◦ ApplicationクラスのProperties ◦ ローカルファイル ◦ SQLite • Prism • まとめ
  15. カバー範囲     かずきのXamarin.Forms入門 • 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
  16. ②Xamarinではじめるスマホアプリ開発 • 大西武さん • 2017/3/23 • 2,484円 • 工学社 •

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

    シンプルな「CSharpDemo」アプリの開発 • 「UIゲーム」アプリの開発 • 「Hello」アプリの開発 ◦ MasterDetailPageクラス ◦ 「DependencyService」と「interface」 • 「ZipCode」アプリの開発 ◦ データ・バインディング ◦ ToolbarItemsクラス • 「CameraDifference」アプリの開発 ◦ Xaml ◦ Custom Renderer
  18. カバー範囲     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
  19. ③Xamarinエキスパート養成読本 • 鈴木堅太郎さん、高橋広樹 さん、佐々木浩司さん • 2017/3/25 • 2,354円 • Software

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

    ◦ 例外の対処方法を理解しよう • Xamarinによるクロスプラットフォーム開 発 ◦ クロスプラットフォーム開発の基礎を知る ◦ XAMLを開発したアプリ開発 ◦ Web APIを使用したアプリ開発 • 先人が教えるクロスプラットフォー ム開発の肝 ◦ ページ系コントロールを使いこなせ! ◦ レイアウト系コントロールを使いこなせ • 一歩先行くクロスプラットフォーム開 発のポイント ◦ PCLによるコードの共通化 ◦ PCLを作成しよう ◦ PCLを利用しよう
  21. カバー範囲       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
  22. ④プログラミングXamarin 上 • Charles Petzold さん(著)、 榎本温さん、藤原 雄介さ ん、猪股健太郎さん(監訳) •

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

    • サイズの操作 • ボタンクリック • XAMLとコード • コードとXAMLの調和 • プラットフォーム固有のAPIの呼び出し • XAMLマークアップ拡張 • バインダブルインフラストラクチャ • スタイル • ビットマップ • 絶対位置を使用するレイアウト • インタラクティブなインターフェース • データバインディング • グリッドをマスターする • MVVM • コレクションビュー
  24. カバー範囲 プログラミング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
  25. 特徴 プログラミングXamarin • ペゾルド本 ※1 • 圧倒的な数かつ追って飽きないサンプルコードの宝庫 • コントロールの紹介にとどまらず、使いこなし、動作原理まで(少な くとも自分を置き去りにしながら)

    踏み込んでいく • 榎本温さん(Xamarinの中の人)主催の邦訳読書会が18回にわ たって開催された • 下巻も来年出るかもしれない ※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/
  26. 構成         基礎から学ぶ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の上位エディションで利用 できる機能とプレビュー版の機能につ いて ◦ エラーが出る場合の対処法
  27. カバー範囲 基礎から学ぶ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
  28. ⑥Essential Xamarin • 榎本温さん、平野翼さん、中 村充志さん、奥山 裕紳さ ん、末広尚義さん、中澤慧さ ん • 2017/9/1

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

    for Xamarin.Forms入門の次の門 • 画面遷移カスタマイズから取り組む Xamarin.iOS • Xamarin Bluetooth Low Energyイン ストール編 • 開発者のためのXamarin関連リポジ トリ集 • Xamarin.Android SDK解説(rev. 2017.3) • Monoでモノのインターネットを目指 す
  30. カバー範囲 Essential 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
  31. 特徴 Essential Xamarin • 技術書典2※ が起源 • 6人の著者が各自様々な領域で個性を爆発させていくスタイル • これがネイティブ(≠Xamarin.Native)に見識がある人々から見

    たXamarinなのかという興奮と絶望 • 唯一のXamarin.Mac入門本(1章分) • オープンソースのXamarinプロジェクトを俯瞰(≠理解) http://atsushieno.hatenablog.com/entry/2017/01/02/015102
  32. 構成 Xamarinネイティブによるモバイルアプリ開発 • Xamarinについて学ぼう • Visual StudioでAndroidキッチンタイマー を作ろう ◦ Javaとの違いを知る

    • Visual StudioでiOSキッチンタイマーを作 ろう ◦ Objective-C/Swiftとの違いを知る ◦ NSIntegerとCSFloatを知る • 同一プロジェクトでAndroid/iOSアプリを 作ろう • MVVMCrossについて学ぼう ◦ MVVMとは ◦ MVVMCross • MVVMCrossでアプリを作ろう(準備編) • MVVMCrossでアプリを作ろう(デー タバインディング編) ◦ データバインディングをもっと知る ◦ コレクションのデータバインディングを 学ぶ • MVVMCrossを使いこなそう ◦ 画面遷移を使いこなす ◦ DIとIoCコンテナー ◦ ビューモデルからビューへのインタラク ション ◦ 色を扱う ◦ ファイルを読み書きする ◦ ブラウザーを開く ◦ メッセージを表示する ◦ その他のプラグイン
  33. カバー範囲 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
  34. 特徴 Xamarinネイティブによるモバイルアプリ開発 • Xamarin.AndroidとXamarin.iOSで同一機能を開発し、比較してい る • キッチンタイマー、音が鳴ると地味に嬉しい • Xamarin Nativeについて触れている割合がページ数という観点

    でもっとも高い本 ◦ 次の本も多いけど厳密に数えてはないです... • PCL/.NET StandardとShared Projectの違い、使い分けが詳細 でわかりやすいです • Xamarin.FormsでなくXamarin.AndroidとXamarin.iOSでMVVMを 実現する一手段としてMVVMCrossを使用
  35. 構成 Xamarinプログラミング入門 • クロスプラットフォーム開発を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アプリを作る
  36. カバー範囲 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
  37. 特徴 Xamarinプログラミング入門 • テーマ(ファイルアクセス、Azure接続、プロジェクト構成、開発環 境、画面など)毎にXamarin.Android、Xamarin.iOS、 Xamarin.Formsを比較するスタイル • バックエンドへの言及、共有ライブラリのテストなど、より実戦投 入していく気持ちを高めてくれる •

    「そもそもモバイルに求められるものとは?」から始まり、自分 の開発環境以前にユーザがモバイルを触る環境、得て欲しい 体験を考えないと...と再認識させられる • .NET Frameworkとmonoの関係を説明する中で.NET Standard にも言及
  38. Xamarin本読書感想文 • 2017年、たくさんのXamarin本が発売されたが、みんな違ってみ んないい!(本心) • Xamarin本のテーマはXamarin.Formsの使いこなしからよりネイ ティブを意識したXamarin NativeとXamarin.Formsの使い分けへ と変化していった •

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

    Embeddinator-4000 の設計と実装 (@atsushieno) • Xamarin.Mac アプリケーションの配布方法 (@toshi0607) • Plugins for Xamarin & Unit Test (@nuits_jp) • MonkeyFest2017 参加レポート (@ailen0ada) • 世界を広げる Microsoft Cognitive Services (@Fumiya_Kume) • IL2Cプロジェクト (@kekyo2)