Xamarinの構成についてもう少し。Xamarin.Formsとそれ以外の使い分けについて。

スマホアプリなので、Guideだけでアプリを作り始めるにはちょっとハードルが高くて、こちらのe-learningを聞いています。

Introduction to Xamarin.Forms | edX

その中で、アプリのプロジェクトを作る際に選択するテンプレート(という言い方が正しいのか分かりませんが)について、どう使い分けたらいいかという話が興味深かったので書いておきます。

 

Xamarin Studioでプロジェクトを作り始めるとき、こんなウインドウでテンプレートを選択するところから始まります。

使い分けと言っても、Xamarin.Forms(Cross-platform)かそれ以外という選択になるんだと思いますが、クロスプラットフォーム対応してるのに「選ばなきゃいけないの???」て迷いました。

f:id:satomicchy:20160420190001p:plain

で、先日作成したサンプルのディレクトリ構成を並べてみると、

(左から、Closs-platform, Android, iOS。トップのプロジェクト名は無視してください。)

f:id:satomicchy:20160420190003p:plainf:id:satomicchy:20160420190004p:plainf:id:satomicchy:20160420190002p:plain

フォルダ名に多少違いはあるものの、"template"と言ってるので、あとからコード追加したら好きにできそうには見えます。(検証はしてません。)

そんなあいまいなことは、そうなったときに考えるとして、e-learningの中で先生がQ&A形式で説明してくれてました。(無料のe-learningなので、英語をそのまま聞きたい、全部きちんと知りたい方は以下のページにて。)

https://courses.edx.org/courses/course-v1:Microsoft+DEV215x+1T2016/courseware/246de271c88348a4a2ece43c2b854b64/52de8ceb762f48b38a5178a925dbf177/

 

Q1. Xamarin.Forms か、今まで(Xamarin.iOSやXamarin.Androidのことだと思います。)のようなやり方か?

A1. アプリによっては、Xamarin.Forms がいつもベストなやり方とは限らない。場合によっては、今までのやり方のほうが実質簡単なこともあるし、どんなアプリを作ろうとしているかによる。どちらのやり方も、利点・欠点ある。

 

Q2. 作ろうとしているアプリは、データ入力を重視するものか?言い方を変えると、そのアプリが主にデーターフォームで構成されたものか?

A2. いわゆる企業向けアプリは、Xamarin.Forms によく適合して、実際、まさにそういう状況で解決するために設計された。その場合は、Xamarin.Forms を使ったほうがいい。その他の一般的なケースは、ロジックが動くプロトタイプを早く作りたいときや、投資家に見せたいとき。長時間UIをデザインしないでいち早く構想を確認するのもいい。

 

Q3. UIについて1つ大事な質問は、どのぐらいアプリのデザイン(pixel perfect design)が重要かということ。

A3. もし、デザインが重要ではなくて、プラットフォーム間での微妙は変更が問題ないなら、Xamarin.Forms はそのアプリにふさわしい。エレメンツ間のspacingや色指定など、実質プラットフォームに一任していて、Xamarin.Forms で変更するのは簡単じゃない。だから、もし、デザイン(pixel perfect design)を再設計するつもりなら、Xamarin.Forms は適切じゃない。すべての場合において完全にコントロールするのはほぼ不可能だから。

もし、アプリがプラットフォーム毎にユニークなコントロールを利用したり、プラットフォーム固有のAPIで固有の投資(investment)があるなら、Xamarin.Forms はおそらくダメだろう。今までの Xamarin の方法(多分Xamarin.iOSやXamarin.Androidなどのこと)でビジネスロジックを共有するのが賢明だ。

 

* * * * * * * * * * * * * * * * * * *

 

案外、Xamarin.Formsを手広く使うというわけではないのですね。これだと、ゲームはXamarin.Formsじゃ無理ですねぇ。ビジネスロジックだけ共有化するにしても、プロジェクトが別になっていては、使いにくいよなぁと思うわけです。

次は、共通レイアウトのライブラリが用意されてるようなので、そこをもちょっと調べてみようと思います。