Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Xamarin で始めるクロスプラットフォーム開発

8,270 views

Published on

Xamarin.Android から始めるクロスプラットフォーム

Published in: Software
  • Dating for everyone is here: ❶❶❶ http://bit.ly/2Qu6Caa ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ❶❶❶ http://bit.ly/2Qu6Caa ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Xamarin で始めるクロスプラットフォーム開発

  1. 1. / 48 Xamarin で始める クロスプラットフォーム開発 ~Xamarin.Android から始める クロスプラットフォーム~ 1 JAPAN ANDROID GROUP 2018年03月14日 石崎 充良
  2. 2. / 48 自己紹介 石崎 充良 ( @mishi_cs ) Japan Xamarin Users Group ( JXUG ) Microsoft MVP for Visual Studio and Development Technologies 言語: C# XAML 活動: ・JXUG (もくもく会) (connpass) ・城東.NET Users Group (connpass) ・C# もくもく会 (connpass) ※主に秋葉原 2
  3. 3. / 48 [1ページでわかる] Xamarinの概要 3
  4. 4. / 48 Xamarin とは ・クロスプラットフォーム ・ネイティブアプリ ・(Android ・iOS) のAPI カバー率 100 % ・C# / .NET / Visual Studio ・クロスプラットフォームでコードを共通化する 4
  5. 5. / 48 今日話さないこと 5
  6. 6. / 48 今日話さないこと ・Windows、Tizen Windows や Tizen アプリもターゲットです ・F# (.NET 界の関数型言語) F# (関数型言語)でも作れます ・C# と Mono/.NET 言葉の明確な使い分け Java と JVM Javaクラスライブラリ のような関係。今日は C# のライブラリと表現します ・Visual Studio for Mac Windows 版と Mac で IDE の UI が異なります 6
  7. 7. / 48 注意点 7
  8. 8. / 48 Mac は必要 ・iOS 向けのビルドは Mac 上で行わなければならない これはどのクロスプラットフォームアプリ開発でも同様 iOS アプリのビルドは Mac 上で行わなければならない決まり ・Xamarin Live Player はビルドしていない Mac 不要でアプリのデバッグができるが、アプリのビルドはしていない 浅い動作しかしないため、デバッグとしても UI 定義の確認程度 8
  9. 9. / 48 [再放送] Xamarinの概要 9
  10. 10. / 48 Xamarin とは ・Android / iOS の API を C# から使えるようにしたもの ・C# (.NET) のライブラリを使えるようにしたもの 10 ロジックのみ共通化 UIはネイティブで個別に作りこむ Shared C# App Logic (.NET Standard) iOS C# UI Android C# UI Windows C# UI
  11. 11. / 48 Xamarin の2つの開発方法 11 Xamarin Native Xamarin Forms ロジックのみ共通化 UIはネイティブで個別に作りこむ ロジックとUIを共通化 UIは各プラットフォームの 同じ役割のUIが自動マッピング Shared C# App Logic (.NET Standard) iOS C# UI Android C# UI Windows C# UI Shared C# App Logic (.NET Standard) Shared C# UI Code (Xamarin.Forms)
  12. 12. / 48 ネイティブの UI 12
  13. 13. / 48 UI の開発手法 13 Xamarin.Native Xamarin.Forms 概要 ネイティブの技術を使用 UI 共通化ライブラリ 定義 Android では axml iOS では storyboard など xaml というシンプルな XML 制約 制限のない UI 各プラットフォームの最大公約数の機能 のみ 特徴 UI が共通化できない UI にこだわらないアプリなら UI まで共 通化可能 使いどころ コンシューマー向けアプリやデザ インを重視する場合に ビジネス向けアプリや機能重視のツール 系アプリなどに Formsで細 かくUIを定 義したい Custom Renderer で独自にネイティブの コントロール/プロパティと結合するコン トロールを作成可能
  14. 14. / 48 C# (.NET) のライブラリ 全体像 14 Xamarin コード共有 Xamarin.Navive Xamarin.Forms.axml / storyboard Xamarin.Android Xamarin.iOS UI の定義UI の定義 どちらか選択
  15. 15. / 48 C# ・C 言語の流れをくむオブジェクト指向言語で比較的素直で覚えやすい ・言語の進化も歩みを止めていない 15
  16. 16. / 48 C# 拡張メソッド ・null 対策など頻出するコードなども拡張メソッドを使って簡潔に(書けるようにできる) ※やりすぎ注意 16
  17. 17. / 48 拡張メソッド例 ・null でなければ値を編集し自身のインスタンスを return する例 17
  18. 18. / 48 拡張メソッド例 前述の 2 例をまとめたコード 18
  19. 19. / 48 APIカバー率100% 薄いラッパーとも呼ばれる。 19 Android / Java Xamarin / C#
  20. 20. / 48 プログラミング言語はなんでしょう? 20
  21. 21. / 48 プログラミング言語はなんでしょう? 21 Android / Java Xamarin / C#
  22. 22. / 48 Xamarin の特徴 ・C# / .NET / Visual Studio ◦C# / Visual Studio の新機能はすぐにすべて使える ・(Android・iOS) のAPI カバー率 100 % ◦Android・iOS の新機能はすぐにすべて使える 22
  23. 23. / 48 ARKit 23
  24. 24. / 48 コード 24 参考: https://qiita.com/shu223/items/e55e1426c9e036254761 Github: https://github.com/m-ishizaki/XamARKitSample
  25. 25. / 48 Xamarin.Android で始める Xamarin開発 25
  26. 26. / 48 ハンズオン例 https://github.com/m-ishizaki/XamarinAndroidHandsOn01 26 移植するアプリ
  27. 27. / 48 プロジェクトの新規作成 27
  28. 28. / 48 出来上がるプロジェクト 28
  29. 29. / 48 Android の UI 定義を取り込み 29 ドラッグ& ドロップ
  30. 30. / 48 パッケージ追加 取り込んだ UI 定義によってはパッケージを追加する必要がある ※前述のハンズオンにない手順 30 AppCompat、 Constraint.Layout を追加 右クリック クリック 検索
  31. 31. / 48 コードをコピペして調整 31 コピーして貼り付け
  32. 32. / 48 実行 32
  33. 33. / 48 書き換えポイント例 33 Java C# 名前空間 package namespace package インポート import using メソッドオーバーラ イド @Override public void method() public override void Method() 定数 final const 定数 Double.MAX_VALUE Double.MaxValue ゲッター/セッター getValue() / setValue(...) プロパティ public int Value{ get; set; } 種類を表す定数 static final 定数 enum 列挙型 無名クラス ある ない ボタンクリックなどはラムダ式で設定 インナークラスから 親クラスの参照 できる できない 親クラスの参照を渡す必要がある
  34. 34. / 48 コード共有化 34
  35. 35. / 48 Xamarin とは ・Android / iOS の API を C# から使えるようにしたもの ・C# (.NET) のライブラリを使えるようにしたもの 35 ロジックのみ共通化 UIはネイティブで個別に作りこむ Shared C# App Logic (.NET Standard) iOS C# UI Android C# UI Windows C# UI
  36. 36. / 48 コード共有 36 共有コード Android 用コード iOS 用コード 参照して使用 Android の API C# の API
  37. 37. / 48 実行 37
  38. 38. / 48 Xamarin.Forms 38
  39. 39. / 48 プロジェクトの新規作成 39
  40. 40. / 48 プロジェクトの新規作成 40 以前は “PCL” だった
  41. 41. / 48 出来上がるプロジェクト 41 共有コード Android 用コード iOS 用コード UI 定義
  42. 42. / 48 XAML による UI の定義 42
  43. 43. / 48 C# によるコード 43
  44. 44. / 48 一目で分かった気になる Xamarin.Forms 44 データバインディング リストの要素ごとの定義 ListView TextView LinearLayout C# の API でコード共有 ページクラスの メンバーとして 自動で定義される
  45. 45. / 48 実行 45
  46. 46. / 48 手を動かしてみる ~ハンズオンの紹介~ 46
  47. 47. / 48 Xamarin.Android https://github.com/m-ishizaki/XamarinAndroidHandsOn01 47 移植するアプリ
  48. 48. / 48 クロスプラットフォームに向けて ・iOS 版ハンズオン ・Xamarin.Forms のハンズオン (クロスプラットフォーム開発) ・Custom Renderer のハンズオン (独自コントロールの作成) JXUG への参加 ・Japan Xamarin User Group (https://jxug.connpass.com/) 48
  49. 49. / 48 ありがとうございま した! 49

×