M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

.NETラボ勉強会2016年5月に参加してきました

.NETラボ勉強会の2016年5月回に参加してきました。会社の人の紹介で知った勉強会で、「参加します!」と勢いよく言っておきながらものすごい遅刻しての参加でした。(前日の仕事で面倒くさいシステム障害があり、そのときにだいぶ眼精疲労を溜め込んでしまい寝ても寝ても眠い…)

それでも何とか3つのセッションのうち最後のもの『Xamarin の今までとこれから』(田淵義人氏)を拝聴してきました。
基本的にXamarin for Visual StudioXamarin Studioの機能説明になるので細かい話はよしておきますが、Apache Cordovaとの比較は興味深いものでした。

f:id:m12i:20160529074122p:plain

Xamarinには2つの開発手法があり、Xamarin NativeはUIをAndroidiOSなど各プラットフォーム固有の方法で実装するもの(そうはいってもSDKAPIC#により完全にラップされている)、これに対してXmarin FormsはUIをXAMLとコードビハインドでもって実装するもの。よって、Formsを使えば各プラットフォーム向けのアプリのリソースのかなりの部分を共通/共有化して開発の生産性を向上させることができます。

しかしそうではあってもちゃんとしたアプリケーションを作ろうと思えばほぼ確実にプラットフォーム固有のコードも記載する必要が出てくる(もちろんそれれを綺麗にラップする機能が提供されており、プラットフォーム間で共通の部分とそうでない部分を疎結合に保てるようになっている)。ただそれは当たり前のこと。むしろ重要なのはXamarinが(一方で共通化による生産性向上を図りつつ)プラットフォーム固有のUXを重視する姿勢であることなのだ、というところを登壇者は強調していました。

これと対象的なアプローチとしてApache Cordovaがあります。CordovaはHTMLの技術で以ってアプリケーション・コードの共通化をするので、そのUIは基本的に各プラットフォーム固有のセマンティクスを逸脱するか、いずれかのプラットフォームに偏ったものになってしまう。対して、Xamarin FormsではUIはXAMLとコードビハインドでつくりますが、それにより実行されるコードでは、UIには各プラットフォームのネイティブなUIコンポーネントが利用されます。Xamarinの思想では、ネイティブのUX、これこそが重要なことなのだ、と。

なるほどなーと思いました。どちらかがよいとかいうことではないです。プロダクトの差異化の視点として関心したということです。

余談:それにしてもMicrosoft製品周辺にうとすぎて、MicrosoftによるXamarin買収と無償化のニュースを聞いた時、漠然と独立したIDEとしてのXamarinを想像していたのですが、Windows版はVisual Studio拡張機能だったのですね。Mac OS XユーザにはもとよりVSは選択肢にないので(実際Mac版のスタンドアロンとしてのXamarin Studioは使っていた)、そこらへんの事情がつかめていませんでした。