nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Development Technologies。

Prism for Xamarin.Formsの画面遷移 10のベストプラクティス

本エントリーは Xamarin Advent Calendar 2016 (その1)5日目のエントリーです。

さてこれまで何度かPrismを利用する場合の画面遷移について記述してきました。

これらを踏まえていろいろ考え悩んだ結果、たどり着いたベストプラクティスを紹介したいと思います。
あと、その過程でPrism for Xamarin.Formsの拡張ライブラリを作ってNuGetに公開してみました。

www.nuget.org

まだPreview版で破壊的変更を想定していますが、画面遷移フレームワークの一つのヒントにはなると思いますので、ご紹介したいと思います。

と言う訳で、本エントリーの主な内容は以下の通りです。

  • Prism for Xamarin.Formsで画面遷移する際のベストプラクティスと、その解説
  • ベストプラクティスの具体的な実装例の紹介

なお、目次がちょっと引くレベルで長いです。

Prism for Xamarin.Formsの画面遷移 10のベストプラクティス」の章だけであれば一目で読み終えられるので、こちらはぜひ目を通して頂けたらと思います。
それで興味を持っていただけたら、実装例や詳細解説をご覧ください。

それでは早速いってみましょう!

続きを読む

【Prism for Xamarin.Forms】Type Safe Navigation潔癖症パターン

ちょっと前に、Prism for Xamarin.FormsにおけるViewModel Firstによる画面遷移をご紹介しました。

www.nuits.jp

ただこの例には二つの気になる点(悪い点というわけでもない)がありました。

  1. ViewModelが別のViewModelにクラスの参照のみであるが発生している
  2. DeepLinkは結局文字列依存

という訳で、これらを解決する方法を考えてみました。

考えてみたんですけど、ぶっちゃけやり過ぎだと思います。
という訳でタイトルも「Type Safe Navigation潔癖症パターン」にしてみました。
しかもこの方法、結局 「画面遷移間のパラメーターキーをどこに定義すべきか」 という課題が積み残されていて、これを解決しようとするとさらにやり過ぎレベルがアップします。

私自身がベストと考える方法は別にありますが、まずは、やややり過ぎのアンチパターンとして公開しておこうと思います。

続きを読む

【完全無料】Azure SQL Databaseを設定する

本エントリーは連載「Xamarin公式サンプルをAzure連携して使う」のAzure SQL Databaseの初期設定回です。
連載の目次は以下にありますので良かったらご覧ください。
Xamarin公式サンプルをAzure連携して使う はじめに&目次

SQL Databaseは単独で作成しようとした場合、無料プランが選べません。
Mobile Appのクイックスタートから(Web Appも?)から作成した時だけ選べるため、注意が必要です。
このため、まだMobile Appが未作成の場合、前回を参考にMobile Appを作成してください。

それでは始めましょう!

続きを読む

【完全無料】Azure Mobile Appsを設定する

本エントリーは連載「Xamarin公式サンプルをAzure連携して使う」のAzure Mobile Appsの初期設定回です。
連載の目次は以下にありますので良かったらご覧ください。
Xamarin公式サンプルをAzure連携して使う はじめに&目次

今回は普通にAzure Mobile Appsを作成するだけなので、Mobile Appsを利用したことがある人は読み飛ばして次へ進んでください。
なお前提として、Azureのアカウント開設は済んでいるものとします。
それでは早速行きたいと思います。

続きを読む

【完全無料】Xamarin公式サンプルをAzure連携して遊ぼう はじめに&目次

ちょっと前にちょまどさんが公式から提供された新しいサンプルアプリを紹介されていました。

これまで、Azureのクイックスタートで提供されているアプリケーションはシンプル過ぎましたが、それに比較するとリッチなので具体的なサンプルとして面白いです。
そして中身もそれなりに設計されているため、非常に参考になります。
というわけで、具体的な使い方と解説を連載記事にしてみたいと思います。
なお 完全に無料 でお試しできます。
これまでAzureを敬遠されていた方もこれを期に触って見てはいかがでしょうか?

とりあえず今のところは、以下を予定しています。

  1. Azure初期設定
    1. Mobile Apps
    2. SQL Database
  2. アプリケーションのビルドと実行
  3. 内部解説
  4. 認証機能の組み込み
  5. Prism for Xamarin.Formsへの

そのあと、GitHubとVSTSの連携にも繋げられたらいいな?

なお本連載は、次の前提条件に則っています。

前提条件

  • Azureのアカウントが作成済みであること
    (アカウント作成にクレジットカードの入力が必要ですが今回の範囲であれば完全に無料です)
  • XamarinとAzure SDKがセットアップされたVisual Studio for Win環境が構築済みであること
    (Macでも可能だと思いますが今回はWindows前提で進めます)

それでは早速準備に入りましょう!

www.nuits.jp

Xamarin for VS 4.2.1.62とAzure SDK 2.9.6でMac Agentに繋がらない問題の対策方法

上述のバージョンの組み合わせで
Couldn't retrieve SSH Fingerprint. Please ensure the Max is reachable and Remote Login is enabled
と表示されてMac Agentに繋がらない不具合が発生しています。

というわけで、Xamarin for VS 4.2.1.64の緊急パッチが出ています。
多分、今はVSからアップデートできると思いますが、以下からダウンロードもできますので、アップデートできない人は以下からダウンロードしてください。

http://xvs.xamarin.com/patcheddrops/Xamarin.VisualStudio_4.2.1.64.msi

なおこの問題、昨晩5時間は悩んでXamarin Studioの再インストールまでしたのですが、@NakamuraYoichiさんに、フォーラムを紹介してもらいました。

JXUG最高! ありがとうございました!

Xamarin.FormsのNavigationPageで戻るボタンのイベントを取得する

またteratailネタなんですが、調べたり考えたりするのに面白いネタだと思い、週末少しいろいろやってみた結果を残しておこうかと思います。

https://teratail.com/questions/55706

質問者さんのポイントはいくつかあって

  1. iOSだとNavigationPageの戻るボタンのイベントが取得できない (AndroidだとNavigationPage#OnBackButtonPressedをオーバーライドすれば可能)
  2. 押されたタイミングでイベントをフックして進捗表示し、処理後に前画面へ戻りたい
  3. このためOnDisappearingなどでは処理できない

ということでした。
一応実現はできました。

f:id:nuitsjp:20161120185802g:plain

ただ、いろいろ調べたり考えた結果
「実装自体は可能だけど、やるべきではないケースが多そう」
という結論になりました。
以降は調査と考察の内容になります。

続きを読む