試験公開中

このエントリーをはてなブックマークに追加

Essential Xamarin

インプレスR&D

2,300円+税

クロスプラットフォーム開発環境Xamarin解説書の決定版! Xamarinコミュニティの最先端開発者たちが全力で書き下ろした全方位の解説書

関連サイト

本書の関連ページが用意されています。

内容紹介

【技術書典シリーズ第二弾!Xamarinの最先端技術者による解説書!】

モバイルアプリ開発ツール「Xamarin」によるクロスプラットフォームのモバイルアプリ開発に役立つ情報を、関連リポジトリ集やSDK解説まで詳しく掲載。Xamarinコミュニティの最先端技術者による全方位の解説書となっています。

書誌情報

  • 著者: 榎本 温, 平野 翼, 中村 充志, 奥山 裕紳, 末広 尚義, 中澤 慧
  • 発行日: (紙書籍版発行日: 2017-09-01)
  • 最終更新日: 2017-09-01
  • バージョン: 1.0.0
  • ページ数: 240ページ(PDF版換算)
  • 対応フォーマット: PDF, EPUB
  • 出版社: インプレスR&D

対象読者

著者について

榎本 温

.NETはオープンソースで実現すべきと思ってMonoの開発に参加していつの間にか15年。エイプリルフールのジョークだった「マイクロソフトで働くことになりました」の状態に今でも馴染まない不良会社員です。卒業して音楽ソフトで遊んで暮らすのが目下の望み。

平野 翼

1988年9月16日デビュー。株式会社ライフベア勤務。Macが幅をきかせる映像制作の現場においてC#を武器に闘った結果、道を踏み外す。おいしいものを食べたり飲んだりして,適当に写真を撮ったり映像を作ったりして生きていきたい。Macはそれなりに好き。

中村 充志

1976年1月22日生まれ。金融系エンタープライズ一直線のSIer育ちのアーキテクト。JavaからC#を渡り歩く。趣味で作ったAndroidアプリをiOSへ移植しようとXamarinと出会う。でも結局アプリは作っていない。現在の悩みは、Xamarin案件がなかなか獲得できないこと。だれかXamarinの金融案件ください。

奥山 裕紳

ネットやコミュニティでは amay077(あめい) という名前で活動しています。Windows系の企業から転職してAndroid/iOSアプリエンジニアになったと思ったら、Xamarinによっていつの間にか .NET と C# に戻って来ていました。愛知県在住のフルリモートワーカー。得意分野は位置情報、地理空間情報。

末広 尚義

1983年10月15日生まれ。Linuxで人生の半分近くを過ごしてきましたが、Xamarinを触るために久しぶりにwindowsマシーンを使い始めました。環境になれなさすぎて早めにXamarin Linux版が出ないと死んでしまいます。androidやPHPな著書もありますが仕事は組み込みlinux方面で最近は仕事でGoとかelixirを書いてすごしています。

中澤 慧

ここ数年はゲーム会社でゲームを作ったり作らなかったりする日々を過ごしています。振り返ってみるとC#は10年超、Javaとは15年近くの付き合いでした。年々、下のレイヤを掘りに行っては膝を痛めて戻ってくるようなことを繰り返しています。

目次

はじめに

  • 免責事項
  • 表記関係について
  • 底本について

第1章 Xamarin.Android で始めるクロスプラットフォームモバイルアプリ開発

  • 1.1 Xamarinとは?
    • Xamarin とは何か
    • Android アプリ開発者から見たXamarin.Android
  • 1.2 Xamarin.Androidと「ネイティブ」の違い
    • 統合開発環境
    • Gradle ビルドシステム
    • パッケージ管理システム
    • Google Play services
  • 1.3 Javaの資産をXamarin.Androidで使用する
    • 主なBinding ライブラリ
    • Binding ライブラリの作成
  • 1.4 C#の利点
    • 非同期処理(async/await)
    • ラムダ式とLINQ to Objects
    • 型推論と匿名型
    • 少しNull 安全
    • C# vs Kotlin
  • 1.5 クロスプラットフォームアプリ開発とコードの共有
    • Xamarin.iOS とは
    • .NET フレームワーク(Mono)の活用
    • PCL(Portable Class Library)
    • 共通化できる一般的な機能
  • 1.6 Xamarin.Formsとは
    • 独自のコントロールを作る仕組み
    • Xamarin.Forms の本当の利点
    • 対応プラットフォームの広がり
  • 1.7 MVVM+Rxによるモダンなアプリケーション開発
    • MVVM パターン
    • 変更通知プロパティ
    • コマンド
    • データバインディング
    • Reactive Extensions(Rx)
    • ReactiveProperty
    • MVVM フレームワーク
  • 1.8 Xamarinによる「クロスプラットフォーム」MVVM+Rxアプリケーション
    • GPS 受信アプリケーション
    • Android、iOS でのアプリ構成
    • Xamarin でのアプリ構成
    • アプリケーション・デザインパターンとコード共有のまとめ
    • Xamarin とClean Architecture とFlux
  • 1.9 オープンXamarin、オープンマイクロソフト
    • Xamarin Platform のOSS 化
    • .NET フレームワークのOSS 化
    • .NET Standard とMono とXamarin
  • 1.10 Xamarin の使いどころ
    • Xamarin が向いていないケース
    • Xamarin を採用すべきケース
    • まとめ

第2章 できるXamarin.Mac

  • 2.1 Xamarin.Macの世界へようこそ
    • Xamarin.Mac とは
    • 選ぶ理由、選ばない理由
    • 準備
    • ターゲットフレームワーク
  • 2.2 最初のアプリケーションを作る
    • プロジェクトの作成、ビルド
    • コントロールの配置
    • コーディング
  • 2.3 macOS向けアプリケーションのお作法
    • 起動から終了まで
    • Cocoa におけるDelegate
    • レスポンダチェイン
    • Notification
    • Cocoa バインディング
    • DataSource
  • 2.4 おわりに

第3章 Prism for Xamarin.Forms入門の次の門

  • 3.1 はじめに
    • 想定読者
    • 前提条件
    • 主な内容
    • 構成について
  • 3.2 事前準備:Prism画面遷移実装の解説
    • 関連コンポーネント
    • 画面遷移における代表的なクラス群
    • 画面遷移におけるシーケンス
  • 3.3 XAMLでViewModelのコード補完の有効化
    • 動機と概要
    • 実現方法と解説
  • 3.4 Prism Template PackのDesignTimeViewModelLocator対応
    • 動機と概要
    • 注意事項
    • 実現方法と解説
  • 3.5 ViewとViewModelのAssemblyの分離
    • 動機と概要
    • 注意事項
    • 実現方法と解説
  • 3.6 ViewModel 指定のナビゲーション
    • 動機と概要
    • 注意事項
    • 実現方法と解説
  • 3.7 DeepLinkにおけるViewModel指定とリテラル指定の共存
    • 動機と概要
    • 実現方法と解説
  • 3.8 遷移名の属性(Attribute)による指定
    • 動機と概要
    • 実現方法と解説
  • 3.9 命名規則から逸脱したView・ViewModelマッピング
    • 動機と概要
    • 実現方法と解説
  • 3.10 まとめ

第4章 画面遷移カスタマイズから取り組むXamarin.iOS

  • 4.1 準備
    • 環境
    • サンプルアプリケーション
  • 4.2 基礎編:画面遷移のカスタマイズ
  • 4.3 応用編:スワイプして消せるモーダル
  • 4.4 黒魔術編:画面内のどこからでもスワイプしてポップ
  • 4.5 まとめ

第5章 Xamarin Bluetooth Low Energy インストール編

  • 5.1 なぜXamarin でBLE を実装するのか
  • 5.2 BLE の概略
    • アドバタイズパケット
    • GATT
    • Service
    • キャラクタリスティック
  • 5.3 Xamarin BLE Plug のインストールとサンプルコード
    • Bluetooth LE Plugin
    • インストール
    • デバイスの検出
    • サービスの検出
    • キャラクタリスティックとの通信
  • 5.4 終わりに

第6章 開発者のためのXamarin関連リポジトリ集

  • 6.1 Monoのコアコンポーネント
    • mono/mono
    • mono/referencesource
    • mono/corefx
    • mono/msbuild
    • mono/roslyn-binaries
    • mono/cecil
    • mono/linker
    • fsharp/fsharp
    • mono/mono-tools
    • mono/api-doc-tools
  • 6.2 GUIフレームワーク
    • mono/gtk-sharp
    • mono/gnome-sharp
    • mono/xwt
  • 6.3 MonoDevelop
    • mono/monodevelop
    • mono/mono-addins
    • mono/debugger-libs
  • 6.4 モバイルプラットフォームSDK
    • xamarin/xamarin-macios
    • xamarin/Xamarin.MacDev
    • xamarin/java-interop
    • xamarin/xamarin-android
    • xamarin/xamarin-android-tools
  • 6.5 Xamarin コンポーネント/ライブラリ
    • xamarin/XamarinComponents
    • xamarin/AndroidSupportComponents
    • xamarin/GooglePlayServicesComponents
    • xamarin/GoogleApisForiOSComponents
    • xamarin/FacebookComponents
    • xamarin/Xamarin.Auth
    • xamarin/android-activity-controller
    • Xamarin.Forms
  • 6.6 モバイル・デスクトップ共通のクロスプラットフォームライブラリ
    • mono/OpenTK
    • mono/VulkanSharp
    • mono/SkiaSharp
  • 6.7 サンプル集
  • 6.8 非マネージドコード環境との相互運用
    • mono/CppSharp
    • xamarin/WebSharp
    • mono/Embeddinator-4000
  • 6.9 仕様策定
    • xamarin/xamarin-evolution
  • 6.10 総括

第7章 Xamarin.Android SDK解説(rev. 2017.3)

  • 7.1 Xamarin.Androidの基礎
    • Xamarin.Android とは何か?
    • 非プラットフォーム標準コンパイラ・ランタイムの実現方法
    • プラットフォームAPI 呼び出し機構
    • Xamarin.Android のAPI
    • IDE とプロジェクトの作成・ビルド
    • Debug/Release とFastDeployment/Embed
    • Xamarin.Android アプリケーションの構成要素
  • 7.2 Xamarin.Android SDK
    • Xamarin.Android "SDK"とは何か?
    • Xamarin.Android SDK をビルドする
    • Xamarin.Android SDK でアプリケーションをビルドする
    • Build ABI Specific APKs
  • 7.3 Xamarin.Android SDKの仕組み
    • .NET アプリケーションのホスティング
    • Windows で.NET のEXE が直接実行できるワケ
    • Xamarin.Android アプリケーションの起動プロセス
    • libmonodroid: Mono ランタイムとAndroid の橋渡し
    • Java 相互運用:.NET からのJava 呼び出し
    • Java 相互運用: Java からの.NET 呼び出し
    • MSBuild によるビルド
    • Java バインディング生成機構
    • 最後に

第8章 Monoでモノのインターネットを目指す

  • 8.1 Mono: クロスプラットフォーム動作する.NET環境
  • 8.2 モバイル環境で多く使われるMono
  • 8.3 もっと貧弱な環境でもMonoを使いたい
  • 8.4 省電力組み込みチップESP32上でMonoを動かしたい
  • 8.5 Monoランタイムの実行に必要なリソース
  • 8.6 リソース消費量の計測用にMonoをビルドする
    • Mono のビルド環境構築とシンプルなビルド確認
  • 8.7 組み込み環境向けのMonoランタイム
    • Mono ランタイムを組み込んだバイナリの作成
    • Mono ランタイム以外にも必要なROM/RAM 領域
  • 8.8 Monoランタイムの構造を読解する
  • 8.9 Monoランタイム起動直後の処理
  • 8.10 リソースの種類ごとの消費量調査
    • 実行バイナリを解析して得られる要求リソース情報
    • 実行ファイル内のシンボルごとのメモリ消費量
    • スタック領域
    • ヒープ領域
  • 8.11 Monoのドキュメントに沿って容量を削減する
    • 不要な機能セットを除外指定してビルドする
    • 不要なロケール情報を削除してビルドする
    • コンパイルオプションでコンパクトなコード出力を優先する
  • 8.12 ヒーププロファイル結果からRAM削減余地を探す
    • JIT コンパイルで消費するメモリをおさえるためのAOT コンパイル
    • mono_mempool_new_size での割り当て抑制
    • System.Console は巨大
    • mono_assembly_load_corlib で266KB
    • その他、メモリ削減余地の大きそうな要素
  • 8.13 クラスライブラリの削減余地を検討する
    • 起動直後に呼ばれるSystem.Globalization
    • -nostdlib の誘惑
  • 8.14 ROM/静的確保RAMの削減余地を探る
    • プログラム上の定数(const)値
    • full-AOT 時に利用されない巨大な関数
    • 静的確保している変数領域
    • バイナリのstrip 処理
  • 8.15 まとめ
    • 執筆者紹介