.NET MAUIによるマルチプラットフォームアプリ開発
書籍情報
発売日 : 2023年01月15日
著者/編集 : 増田 智明
出版社 : 日経BP
発行形態 : 単行本
書籍説明
内容紹介
iOS/Androidの共通アプリの作り方から、モバイルアプリに必要なデータベースやファイル操作などを想定した開発までを解説
目次
はじめに
第1章 .NET MAUIの仕組み
1.1 マルチプラットフォーム
1.2 共通のユーザーインターフェイス
1.3 .NETランタイムとクラスライブラリ
1.4 個別処理
第2章 .NET MAUIの開発環境
2.1 Visual Studio 2022の準備
2.1.1 Visual Studioのインストール
2.1.2 インストール機能の選択
2.1.3 新しいプロジェクトの作成
2.1.4 ターゲットフレームワークを選択
2.1.5 プロジェクトテンプレートを開く
2.2 Visual Studio for Macの準備
2.2.1 macOS 上でのXamarin開発環境
2.2.2 プロジェクトテンプレート
2.3 dotnetコマンド
2.3.1 .NET MAUI プロジェクトの作成
2.3.2 プロジェクトのビルド
2.4 iOS 開発環境の準備
2.4.1 Apple Deverloper の登録
2.4.2 バンドル識別子の設定
2.5 iPhoneの準備
2.5.1 シミュレーターの準備
2.5.2 実機の準備
2.6 Android の準備
2.6.1 Androidエミュレーターの準備
2.6.2 実機の準備
2.7 UWP アプリの動作
2.7.1 アプリケーションのデバッグ実行
2.7.2 アプリケーションの実行
第3章 最初の.NET MAUIアプリケーション
3.1 .NET MAUIプロジェクトの作成
3.2 .NET MAUIプロジェクトのビルド
3.3 iOS アプリの実行
3.3.1 iOSシミュレーターで動作確認
3.3.2 iPhone 実機での動作確認
3.4 Androidアプリの実行
3.4.1 Androidエミュレーターでの動作確認
3.4.2 Android実機での動作確認
3.5 Windowsアプリの動作確認
3.6 修正してホットリロード
第4章 画面の部品
4.1 XAMLとは
4.2 ラベルの配置
4.2.1 XAMLで配置
4.2.2 ラベルの属性
4.2.3 サンプルの実行
4.3 ボタンの配置
4.3.1 XAMLで配置
4.3.2 ボタンの属性
4.3.3 サンプルの実行
4.4 入力テキスト
4.4.1 XAMLで配置
4.4.2 入力テキストの属性
4.4.3 サンプルの実行
4.5 アニメーション
4.5.1 XAMLで配置
4.5.2 アニメーションのメソッド
4.5.3 サンプルの実行
4.6 ブラシや画像の表示
4.6.1 Imageタグで配置
4.6.2 画像の属性
4.6.3 サンプルで画像を表示
4.6.4 ブラシの利用
4.6.5 ブラシの種類
4.6.6 ブラシでグラデーションを利用
4.7 レイアウト
4.7.1 スタックレイアウト
4.7.2 スタックレイアウトの属性
4.7.3 スタックレイアウトのサンプル
4.7.4 グリッドレイアウト
4.7.5 グリッドレイアウトの属性
4.7.6 Flexレイアウト
4.7.7 Flexレイアウトの属性
4.7.8 Flexレイアウトのサンプル
4.8 ナビゲーション
4.8.1 ナビゲーションの準備
4.8.2 ナビゲーションの種類
4.8.3 サンプルの実行
4.9 ポップアップ
4.9.1 ポップアップの種類
4.9.2 サンプルの実行
4.10 グラフィック表示
4.10.1 GraphicsViewコントロール
4.10.2 ICanvasの属性とメソッド
4.10.3 サンプルの実行
4.11 テーマの切り替え
4.11.1 テーマの動的設定
4.11.2 サンプルの実行
4.12 リスト表示
4.12.1 ListViewコントロールの利用
4.12.2 ListViewコントロールの属性
4.12.3 ListViewサンプルの実行
4.12.4 CollectionViewコントロールの利用
4.12.5 CollectionViewコントロールの属性
4.12.6 CollectionViewサンプルの実行
4.13 ピッカー
4.13.1 XAMLで配置
4.13.2 Pickerコントロールの属性
4.13.3 サンプルの実行
4.14 スイッチ
4.14.1 XAMLで配置
4.14.2 スイッチの属性
4.14.3 サンプルの実行
4.15 日付選択
4.15.1 XAML で配置
4.15.2 日付コントロールの属性
4.15.3 サンプルの実行
第5章 データバインド
5.1 MVVMパターンとは
5.1.1 MVVM パターンの実装
5.1.2 Prism.Coreの利用
5.2 ラベルのバインディング
5.2.1 XAMLでバインディング
5.2.2 コードでデータ更新
5.2.3 サンプルの実行
5.3 入力テキストのバインディング
5.3.1 XAMLでバインディング
5.3.2 コードでデータ更新
5.3.3 サンプルの実行
5.4 ボタンのバインディング
5.4.1 XAMLでバインディング
5.4.2 コードでイベントを受ける
5.4.3 サンプルの実行
5.5 リストのバインディング
5.5.1 XAMLでバインディング
5.5.2 ViewModelクラスの記述
5.5.3 サンプルの実行
5.6 ページ単位のViewModelクラス
5.6.1 シェルでのページ遷移
5.6.2 サンプルの実行
5.7 リアクティブの利用
5.7.1 ReactivePropertyライブラリの活用
5.7.2 NuGetパッケージ
5.7.3 ViewModelクラスの作成
5.7.4 サンプルの実行
5.8 入力テキストにリアクティブ
5.8.1 XAMLでバインド
5.8.2 サンプルの実行
5.9 ボタンにリアクティブ
5.9.1 XAMLの記述
5.9.2 ViewModelクラスの記述
5.10 リストにリアクティブ
5.10.1 XAMLの記述
5.10.2 ViewModelクラスの記述
第6章 コードでUI作成
6.1 コードのみで記述
6.1.1 ラベルの記述
6.1.2 ボタンの記述
6.1.3 入力テキストの記述
6.1.4 リストビューの記述
6.1.5 MVUパターン
6.2 Cometの利用
6.2.1 Cometのインストール
6.2.2 Textの配置
6.2.3 Buttonの配置
6.2.4 TextFieldの配置
6.2.5 ListViewの配置
第7章 画面の遷移
7.1 ナビゲーションの利用
7.1.1 NavigationPageとShellContent
7.1.2 NavigationPage の初期化
7.1.3 MainPage.xaml の書き換え
7.1.4 子画面のコンストラクターでデータ渡し
7.1.5 子画面とViewModelの共有
7.2 シェルの利用
7.2.1 ShellContentを使った画面遷移
7.2.2 ルーティングによる画面遷移
7.2.3 ViewModelクラスの共有
7.3 モーダルで遷移
7.3.1 モーダル画面の呼び出し
7.3.2 モーダル画面から戻る
7.4 リストから詳細画面へ
7.4.1 一覧画面から遷移
7.4.2 詳細画面の表示
7.5 設定ページの表示
7.5.1 TableViewの利用
7.5.2 設定画面のViewModelクラス
第8章 Web APIの利用
8.1 WebViewの利用
8.1.1 WebViewコントロール
8.1.2 URLの指定
8.2 Web APIの呼び出し
8.2.1 インターネットへのアクセス制限
8.2.2 Web API呼び出しページの作成
8.3 GET メソッドで呼び出し
8.3.1 既存のWeb API を呼び出す
8.3.2 GET メソッド
8.3.3 サンプルの実行
8.4 POSTメソッドの利用
8.4.1 チケットを新規作成するWeb API
8.4.2 チケットのクラスを作成
8.4.3 新規作成する
8.5 JSON形式のデータを扱う
8.5.1 JSON フォーマットの確認
8.5.2 対応クラスの作成
8.6 JSONデータを受信する
8.6.1 単一のプロジェクト情報を受信
8.6.2 受信したJSONをProjectクラスに変換
8.7 JSONとリスト表示の連携
8.7.1 プロジェクト内のチケットを受信
8.7.2 JSONデータ内の配列を変換
8.8 JSONデータを送信する
8.8.1 指定IDのチケットを更新
8.8.2 連続でWeb APIを呼び出す
第9章 データベースの利用
9.1 SQLiteパッケージ
9.1.1 NuGet パッケージの利用
9.1.2 モデルクラスの作成
9.1.3 データコンテキストの作成
9.1.4 データベースファイルのコピー
9.2 データベースから読み込み
9.2.1 CollectionViewコントロールへ表示
9.2.2 データの読み込み
9.3 データベースとリストの連携
9.3.1 CollectionViewコントロールへ表示
9.3.2 LINQの利用
9.4 データベースの書き込み
9.4.1 データの新規作成と更新
9.4.2 データベースへ更新
9.5 テーブルの作成
9.5.1 ExecuteSqlRawメソッドの利用
9.6 データをバックアップする
9.6.1 バックアップ先の違い
9.6.2 AndroidとiPhoneで動作確認
9.7 MySQLと接続
9.7.1 NuGetパッケージの設定
9.7.2 モデルクラスの生成
9.7.3 アプリから接続確認
9.8 MySQLの読み書き
9.8.1 データの読み込み
第10章 ファイルの操作
10.1 ファイルの作成
10.1.1 ファイルアクセスクラス
10.1.2 ドキュメントフォルダーの取得
10.1.3 ファイルの新規作成
10.2 ファイルの読み込み
10.2.1 ファイルの読み込みメソッド
10.2.2 サンプルの実行
10.3 ログデータの出力
10.3.1 出力先をファイルに変更
10.3.2 サンプルの実行
10.4 モバイルアプリの出力先
10.4.1 Androidで共有フォルダーを開く
10.4.2 iPhoneで共有フォルダーを開く
第11章 加速度やGPSの利用
11.1 Xamarin.Essentialsから移行
11.1.1 センサーライブラリ
11.1.2 Xamarin.Essentialsから.NET MAUIへ
11.2 加速度センサー
11.2.1 Accelerometerクラス
11.2.2 サンプルの実行
11.3 GPS の利用
11.3.1 位置情報の利用権限
11.3.2 GeolocationRequestクラス
11.3.3 サンプルの実行
11.4 カメラ機能
11.4.1 カメラの利用権限
11.4.2 MediaPickerクラス
11.4.3 サンプルの実行
11.5 QR コード読み取り
11.5.1 ZXing.Net.Mauiパッケージ
11.5.2 CameraBarcodeReaderView コントロール
11.5.3 サンプルの実行
第12章 ロジック分割とテスト
12.1 ロジックを別プロジェクトに
12.1.1 プロジェクト分割の利点
12.1.2 クラスライブラリの作成
12.1.3 クラスライブラリの参照
12.1.4 サンプルの実行
12.2 テストプロジェクトを使う
12.2.1 xUnitテストプロジェクトの作成
12.2.2 テスト対象プロジェクトの設定
12.3 個別処理の記述
12.3.1 Platformsフォルダーの利用
12.3.2 #ifディレクティブの利用
付録A 他のフレームワークとの比較
A.1 Flutterで開発
A.2 React Nativeで開発
A.3 .NET MAUIとの比較
付録B Xamarin.Formsから.NET MAUIへの移行
B.1 移行ツールの利用
B.2 プロジェクトファイルの変更(*.csporj)
B.3 名前空間の変更
B.4 初期コードの修正
B.5 リソースファイルの削除
索引
第1章 .NET MAUIの仕組み
1.1 マルチプラットフォーム
1.2 共通のユーザーインターフェイス
1.3 .NETランタイムとクラスライブラリ
1.4 個別処理
第2章 .NET MAUIの開発環境
2.1 Visual Studio 2022の準備
2.1.1 Visual Studioのインストール
2.1.2 インストール機能の選択
2.1.3 新しいプロジェクトの作成
2.1.4 ターゲットフレームワークを選択
2.1.5 プロジェクトテンプレートを開く
2.2 Visual Studio for Macの準備
2.2.1 macOS 上でのXamarin開発環境
2.2.2 プロジェクトテンプレート
2.3 dotnetコマンド
2.3.1 .NET MAUI プロジェクトの作成
2.3.2 プロジェクトのビルド
2.4 iOS 開発環境の準備
2.4.1 Apple Deverloper の登録
2.4.2 バンドル識別子の設定
2.5 iPhoneの準備
2.5.1 シミュレーターの準備
2.5.2 実機の準備
2.6 Android の準備
2.6.1 Androidエミュレーターの準備
2.6.2 実機の準備
2.7 UWP アプリの動作
2.7.1 アプリケーションのデバッグ実行
2.7.2 アプリケーションの実行
第3章 最初の.NET MAUIアプリケーション
3.1 .NET MAUIプロジェクトの作成
3.2 .NET MAUIプロジェクトのビルド
3.3 iOS アプリの実行
3.3.1 iOSシミュレーターで動作確認
3.3.2 iPhone 実機での動作確認
3.4 Androidアプリの実行
3.4.1 Androidエミュレーターでの動作確認
3.4.2 Android実機での動作確認
3.5 Windowsアプリの動作確認
3.6 修正してホットリロード
第4章 画面の部品
4.1 XAMLとは
4.2 ラベルの配置
4.2.1 XAMLで配置
4.2.2 ラベルの属性
4.2.3 サンプルの実行
4.3 ボタンの配置
4.3.1 XAMLで配置
4.3.2 ボタンの属性
4.3.3 サンプルの実行
4.4 入力テキスト
4.4.1 XAMLで配置
4.4.2 入力テキストの属性
4.4.3 サンプルの実行
4.5 アニメーション
4.5.1 XAMLで配置
4.5.2 アニメーションのメソッド
4.5.3 サンプルの実行
4.6 ブラシや画像の表示
4.6.1 Imageタグで配置
4.6.2 画像の属性
4.6.3 サンプルで画像を表示
4.6.4 ブラシの利用
4.6.5 ブラシの種類
4.6.6 ブラシでグラデーションを利用
4.7 レイアウト
4.7.1 スタックレイアウト
4.7.2 スタックレイアウトの属性
4.7.3 スタックレイアウトのサンプル
4.7.4 グリッドレイアウト
4.7.5 グリッドレイアウトの属性
4.7.6 Flexレイアウト
4.7.7 Flexレイアウトの属性
4.7.8 Flexレイアウトのサンプル
4.8 ナビゲーション
4.8.1 ナビゲーションの準備
4.8.2 ナビゲーションの種類
4.8.3 サンプルの実行
4.9 ポップアップ
4.9.1 ポップアップの種類
4.9.2 サンプルの実行
4.10 グラフィック表示
4.10.1 GraphicsViewコントロール
4.10.2 ICanvasの属性とメソッド
4.10.3 サンプルの実行
4.11 テーマの切り替え
4.11.1 テーマの動的設定
4.11.2 サンプルの実行
4.12 リスト表示
4.12.1 ListViewコントロールの利用
4.12.2 ListViewコントロールの属性
4.12.3 ListViewサンプルの実行
4.12.4 CollectionViewコントロールの利用
4.12.5 CollectionViewコントロールの属性
4.12.6 CollectionViewサンプルの実行
4.13 ピッカー
4.13.1 XAMLで配置
4.13.2 Pickerコントロールの属性
4.13.3 サンプルの実行
4.14 スイッチ
4.14.1 XAMLで配置
4.14.2 スイッチの属性
4.14.3 サンプルの実行
4.15 日付選択
4.15.1 XAML で配置
4.15.2 日付コントロールの属性
4.15.3 サンプルの実行
第5章 データバインド
5.1 MVVMパターンとは
5.1.1 MVVM パターンの実装
5.1.2 Prism.Coreの利用
5.2 ラベルのバインディング
5.2.1 XAMLでバインディング
5.2.2 コードでデータ更新
5.2.3 サンプルの実行
5.3 入力テキストのバインディング
5.3.1 XAMLでバインディング
5.3.2 コードでデータ更新
5.3.3 サンプルの実行
5.4 ボタンのバインディング
5.4.1 XAMLでバインディング
5.4.2 コードでイベントを受ける
5.4.3 サンプルの実行
5.5 リストのバインディング
5.5.1 XAMLでバインディング
5.5.2 ViewModelクラスの記述
5.5.3 サンプルの実行
5.6 ページ単位のViewModelクラス
5.6.1 シェルでのページ遷移
5.6.2 サンプルの実行
5.7 リアクティブの利用
5.7.1 ReactivePropertyライブラリの活用
5.7.2 NuGetパッケージ
5.7.3 ViewModelクラスの作成
5.7.4 サンプルの実行
5.8 入力テキストにリアクティブ
5.8.1 XAMLでバインド
5.8.2 サンプルの実行
5.9 ボタンにリアクティブ
5.9.1 XAMLの記述
5.9.2 ViewModelクラスの記述
5.10 リストにリアクティブ
5.10.1 XAMLの記述
5.10.2 ViewModelクラスの記述
第6章 コードでUI作成
6.1 コードのみで記述
6.1.1 ラベルの記述
6.1.2 ボタンの記述
6.1.3 入力テキストの記述
6.1.4 リストビューの記述
6.1.5 MVUパターン
6.2 Cometの利用
6.2.1 Cometのインストール
6.2.2 Textの配置
6.2.3 Buttonの配置
6.2.4 TextFieldの配置
6.2.5 ListViewの配置
第7章 画面の遷移
7.1 ナビゲーションの利用
7.1.1 NavigationPageとShellContent
7.1.2 NavigationPage の初期化
7.1.3 MainPage.xaml の書き換え
7.1.4 子画面のコンストラクターでデータ渡し
7.1.5 子画面とViewModelの共有
7.2 シェルの利用
7.2.1 ShellContentを使った画面遷移
7.2.2 ルーティングによる画面遷移
7.2.3 ViewModelクラスの共有
7.3 モーダルで遷移
7.3.1 モーダル画面の呼び出し
7.3.2 モーダル画面から戻る
7.4 リストから詳細画面へ
7.4.1 一覧画面から遷移
7.4.2 詳細画面の表示
7.5 設定ページの表示
7.5.1 TableViewの利用
7.5.2 設定画面のViewModelクラス
第8章 Web APIの利用
8.1 WebViewの利用
8.1.1 WebViewコントロール
8.1.2 URLの指定
8.2 Web APIの呼び出し
8.2.1 インターネットへのアクセス制限
8.2.2 Web API呼び出しページの作成
8.3 GET メソッドで呼び出し
8.3.1 既存のWeb API を呼び出す
8.3.2 GET メソッド
8.3.3 サンプルの実行
8.4 POSTメソッドの利用
8.4.1 チケットを新規作成するWeb API
8.4.2 チケットのクラスを作成
8.4.3 新規作成する
8.5 JSON形式のデータを扱う
8.5.1 JSON フォーマットの確認
8.5.2 対応クラスの作成
8.6 JSONデータを受信する
8.6.1 単一のプロジェクト情報を受信
8.6.2 受信したJSONをProjectクラスに変換
8.7 JSONとリスト表示の連携
8.7.1 プロジェクト内のチケットを受信
8.7.2 JSONデータ内の配列を変換
8.8 JSONデータを送信する
8.8.1 指定IDのチケットを更新
8.8.2 連続でWeb APIを呼び出す
第9章 データベースの利用
9.1 SQLiteパッケージ
9.1.1 NuGet パッケージの利用
9.1.2 モデルクラスの作成
9.1.3 データコンテキストの作成
9.1.4 データベースファイルのコピー
9.2 データベースから読み込み
9.2.1 CollectionViewコントロールへ表示
9.2.2 データの読み込み
9.3 データベースとリストの連携
9.3.1 CollectionViewコントロールへ表示
9.3.2 LINQの利用
9.4 データベースの書き込み
9.4.1 データの新規作成と更新
9.4.2 データベースへ更新
9.5 テーブルの作成
9.5.1 ExecuteSqlRawメソッドの利用
9.6 データをバックアップする
9.6.1 バックアップ先の違い
9.6.2 AndroidとiPhoneで動作確認
9.7 MySQLと接続
9.7.1 NuGetパッケージの設定
9.7.2 モデルクラスの生成
9.7.3 アプリから接続確認
9.8 MySQLの読み書き
9.8.1 データの読み込み
第10章 ファイルの操作
10.1 ファイルの作成
10.1.1 ファイルアクセスクラス
10.1.2 ドキュメントフォルダーの取得
10.1.3 ファイルの新規作成
10.2 ファイルの読み込み
10.2.1 ファイルの読み込みメソッド
10.2.2 サンプルの実行
10.3 ログデータの出力
10.3.1 出力先をファイルに変更
10.3.2 サンプルの実行
10.4 モバイルアプリの出力先
10.4.1 Androidで共有フォルダーを開く
10.4.2 iPhoneで共有フォルダーを開く
第11章 加速度やGPSの利用
11.1 Xamarin.Essentialsから移行
11.1.1 センサーライブラリ
11.1.2 Xamarin.Essentialsから.NET MAUIへ
11.2 加速度センサー
11.2.1 Accelerometerクラス
11.2.2 サンプルの実行
11.3 GPS の利用
11.3.1 位置情報の利用権限
11.3.2 GeolocationRequestクラス
11.3.3 サンプルの実行
11.4 カメラ機能
11.4.1 カメラの利用権限
11.4.2 MediaPickerクラス
11.4.3 サンプルの実行
11.5 QR コード読み取り
11.5.1 ZXing.Net.Mauiパッケージ
11.5.2 CameraBarcodeReaderView コントロール
11.5.3 サンプルの実行
第12章 ロジック分割とテスト
12.1 ロジックを別プロジェクトに
12.1.1 プロジェクト分割の利点
12.1.2 クラスライブラリの作成
12.1.3 クラスライブラリの参照
12.1.4 サンプルの実行
12.2 テストプロジェクトを使う
12.2.1 xUnitテストプロジェクトの作成
12.2.2 テスト対象プロジェクトの設定
12.3 個別処理の記述
12.3.1 Platformsフォルダーの利用
12.3.2 #ifディレクティブの利用
付録A 他のフレームワークとの比較
A.1 Flutterで開発
A.2 React Nativeで開発
A.3 .NET MAUIとの比較
付録B Xamarin.Formsから.NET MAUIへの移行
B.1 移行ツールの利用
B.2 プロジェクトファイルの変更(*.csporj)
B.3 名前空間の変更
B.4 初期コードの修正
B.5 リソースファイルの削除
索引
著者情報
増田 智明
増田, 智明