MVVM覚える位なら、Unityやった方がイイ!
MVVMデザインパターンとは何か?
簡単に言うと、WPFやXamarinの為にあると言える。
WPF:絶えるとと思ったが、意外と耐えた。
XAMLなる、XMLみたいなデザインで画面をデザイン出来る為、WindowsForms
であったような、コントロールで実現できないデザインはオーバーライドで
ゴリゴリしなくて良くほぼ自由自在にデザイン出来る。
WPFが流行るに流行れないのは、やはり、いつの間にか、MVVMデザインパターンでプログラミングするスタイルが定着した事だと思う。
MVVMは、物凄く大規模で、継続性があるシステムだと一定の効率効果は得られるが、小規模、モックアップ、事業として成立が難しい案件かも知れない場合、これに見合う開発工数では無くなる点だ。
行ってみたら、普通にコーディングしたら、一行で済むようなコードを、わざわざ、モデル、ビューモデル、ビュー(XAML)の三本柱を連携するようにコーディングして行かなくてはならない。
Label.Text = "test";
Windows.Formsだとフォームにラベルコントロールを一つ置いて、文字を出す場合、これだけで済むのだが、WPFの場合は、XAMLで設定したコントロールに、どのモデルの変数と割り当てるかを細かく振る舞いを書いて、モデルで変数を用意して、ビューモデルでモデルの変数とビューの橋渡しを行えるようにコードを書く。
Xamarinとは何か?
昨今流行っているクロスプラットフォームである。
何が出来るかと言うと、C#一本で、Androidアプリ、iPhoneアプリ、Windowsアプリの全てが開発出来てしまう。
欠点: 各方面でC#で開発と言われてはいるものの、実は、Android.Java
やiPhone.Objective-Cのクラス等を、そのままC#にしただけ。
つまり、Android,iPhoneの開発をそれぞれの言語でやった人では無いと、
これの意味は分かりにくいが、そういう事なのだ。
だから、Windows.Formsみたいな、LoadやInitialで始まるなんてあり得ない。
iPhoneのViewDidLoad等、それぞれのOS専用のライフサイクルはそのまま
引き継いでおり、Windowsの開発スタイル一本で開発は出来ないのだ。
(UWPがそれを目指しているが・・・ビューにWebのようなレスポンシブル
デザインを求めており・・・アプリで開発するメリットが・・・無い)
そこでUnity(ユニティ)!!
Unityは、ゲームエンジン・・・だから、業務システムエンジニアには興味関心の対象とならないかもしれないが、使ってみると凄いことが分かる!
実質C#そのまんまで、Androidも、iPhone(iOS)もWindowsアプリも作れてしまう!!!
Xamarinのように、それぞれのデバイス毎に必要なお作法も、実質無い!
この素敵な環境を業務でも使えるのではないかと思う。
業務アプリではしばしば、デザインについて、妥協する事も多い。
時には、Direct-Xを使ってアニメーション処理したり、メモリ内で、プライマリサーフェス、セカンダリーサーフェス使って、アニメーションを転送したり・・・座標でボタンの位置やったり、業務アプリの工数に求められていない開発工数が発生する場合もあるのだけれども・・・
だから、WEBでやっていると思うのだけれども・・・
Unityだと、当たり判定も全て配置したコントロール(アセット)のプロパティで持っているから、これがそのまま、Clickイベントのように使えたり・・・
それでいて、出力するデバイスを選んでコンパイルすれば、APKでもEXEでも、各OSに必要なアプリを一発で作成してくれる!!!
ゲームエンジニアにとっては、業務アプリ開発でも活躍出来る可能性が広がったといえるのでは!?
データベースを内包する場合は、それぞれのデバイス特性を知っていないと難しいため、WEB-APIでやる事の方が多いのだろうか!?
ああれ、・・・結局WEBシステムが必要!?
WEBは維持が大変で、セキュリティは大手でも個人情報流出やらかす位、守れないに等しい産物。
WEBを使わないシステムを考えているエンジニアは昨今多いのでは?
まぁ、せめて、WPFのMVVMデザインパターンをやる位なら、Unityを試しにやってみるのが良いと思う。
新しい操作性も提案可能で、Xamarin程学習コストもかからないと思う。