Yuta Watanabe's Blog

開発周りと、その他諸々

MVVM パターンをより深く理解する

こんにちは。

マイクロソフトの渡辺です。

アプリケーションのデザインパターンの1つである MVVM ( Model - View - ViewModel )。既に多くの実装例や MVVM パターンを採用した Framework が公開されています。

f:id:yuwata:20140813094359p:plain

from Wikkipedia

また、MVVM パターンは、C#/.NET/XAML の世界を中心に多く利用されてきましたが、最近では、JavaScript/HTML のアプリケーション開発で利用されることも多くなりました。

そして MVVM を理解する中で、また MVVM をサポートする Framework を利用する中では Model, View, ViewModel にとどまらず、Service, Command, Messenger, IoC, DI, Service Locator ..e.t.c といったキーワードに自然と出会うでしょう。

これらのパターンの実装については、様々なコードの書き方が提案されており、メリット/デメリットについても頻繁に議論されています。Framework によっても、その設計/実装方法が異なり、様々なバリエーションがあるのも MVVM というデザインパターンの特徴の1つではないでしょうか。

今回は、MVVM のより深い理解に役立つ動画を 2つご紹介させてください。

まず 1つ目は「 MVVM Best Practices 」です。

MVVM Best Practices

MVVM とは何か?何が MVVM で何がそうでないのか。MVVM ですべきこと、すべきでないこと、そしてそれらの理由についてのデモも交えたディスカッションです。View と Logic を分離するという MVVM の基本について改めて理解を深めることができます。

そしてもう 1つは「 Using MVVM So You Can Write Better Code and Less Code 」です。

Using MVVM So You Can Write Better Code and Less Code

こちらは、より実際のアプリケーション開発に即したノウハウが語られています。バックエンドのサービスとの接続や、View での挙動をどう実装するか、その際 ViewModel はどう振る舞うか等について、ヒントを得ることができるでしょう。

View と Logic を分離し、コードの保守性や再利用性を高める MVVM パターン、さらに使いこなして、より高品質なアプリ開発へとつなげていきましょう。

Xamarin の最新トピックをおさらい 2014年8月

こんにちは。

Xamarin について The Microsoft Conference 2013 にて、初めてイベントでお話しさせていただいてから 、もう1年近くが経ちました。その後 Developers Summit 2014 や、最近ではマイクロソフトの開発者向けイベント de:code  2014 でも Xamarin によるアプリ開発のセッションを担当させていただいております。

本当にあっという間だったと感じるのは、この1年での Xamarin の大きな進化/変化、開発者コミュニティの広がりによるところが非常に大きいです。今年 2014年の1月1日に「 XamarinでiOSアプリを作る - Hello, iPhone 」を投稿したと時は、まさか Xamarin.Forms のようなものが登場するなんて、想像もできませんでした。

そこでこの機会に改めて、Xamarin の最新トピック/リソースについてまとめてみたいと思います。

Xamarin とは

Xamarin 社が提供する製品は、主に2種類あります。1つ目は、Xamarin Platform と呼ばれる C# で iOS/Android アプリを開発することができるクロスプラットフォーム開発ツール群です。そしてもう1つは、Xamarin Test Cloud と呼ばれる アプリをクラウド上でテストできるプラットフォームです。

f:id:yuwata:20140813120826p:plain

Xamarin Platform には、Xamarin.iOS/Xamarin.Android の2つがあり、iOS/Android アプリケーションを C# で開発することができます。開発に際しては、Xamarin Studio とよばれる IDE が提供されている他、Business License 以上では Visual Studio での開発もサポートされています。

また、Xamarin Test Cloud はクラウドの先に接続された実機デバイスで、自動テストを実施できるサービスです。Xamarin.iOS/Xamarin.Android で開発されたアプリだけでなく、Objective-C/Java で開発されたアプリでもテストを行うことができます。

Xamarin のラインセスについて

Xamarin 社が提供する製品のラインセスについては、Xamarin の公式 Web サイトまたは、Xamarin 社の日本代理店である エクセルソフト様より購入することができます (日本語でのサポートを受けることができます)。

f:id:yuwata:20140813121152p:plain

ライセンスは、年間サブスクリプションでの購入でしたが、先日 Indie ライセンスが月間サブスクリプションで試験的に購入できるようになりました

また、よく「ディスカウントはないのか?」というご質問をいただくのですが、可能性としては下記があります。

  • MSDN Subscriber 向けオファー
    MSDN Subscriber 向けのオファーがあります。"90"日間のトライアルをはじめ、限定のトレーニングコンテンツ、ライセンスの割引があります。エクセルソフト様でも MSDN Subscriber 向けのキャンペーンを提供されていますので、ご参照ください
  • Microsoft MVP の方向けのライセンス
    Microsoft MVP の方に提供されているライセンスがあるとのことです。詳しくは、「 Microsoft MVP の方向け無償 Xamarin Business ライセンスについて」をご覧ください
  • スタートアップまたは小規模組織向けの問い合わせ窓口
    Xamarin の販売ページに、設立3年以内または 20人未満のスタートアップもしくは小規模組織向けの問い合わせ窓口が記載されていますので、お問い合わせください

その他、ライセンスに関する詳しい FAQは、公式の Q&A またはエクセルソフト様の「 Xamarin ライセンス、アクティベーション、エディション 」をご参照ください。

Xamarin Platform の特徴

  • ネイティブ UI
  • ネイティブ API
  • ネイティブパフォーマンス

抽象化されたコントロールではなく、各プラットフォームのネイティブ UI が使える。また、すべての API にアクセス可能で、Objective-C/Java で出来ることは C# ( Xamarin ) でも出来る。そして、Xamarin はインタープリタではなくアプリがコンパイルされるため、パフォーマンスも Objective-C/Java で書いた場合と同等。といった、特徴があります。

f:id:yuwata:20140813121253p:plain

この辺りの Xamarin の概要については、「 iOS/Android アプリを C#/.NET で開発 - Xamarin で実現するクロスプラットフォーム開発 ( de:code 2014 ) 」をご覧ください。

Xamarin でのアプリ開発に用いるツール

Xamarin Platform を利用してのアプリ開発では、Xamarin Studio と呼ばれる IDE の他、 Business License 以上では Visual Studio でアプリを開発できます。アプリの個別機能実装の際は、公開されている様々なコンポーネントを利用することも可能です。

f:id:yuwata:20140813121310p:plain

また、画面設計については、Xamarin Designer for iOS および Xamarin.Android Designer が提供されており、ネイティブ UI を インタラクティブな操作で設計/構築していくことができます。

その他、既存のコードの移植性を検証する .NET Scanner やアプリのテストを行える Xamarin Test Cloud が提供されています。

Xamarin におけるコードの共通化方法

Xamarin を利用して iOS/Android/Windows Phone アプリをクロスプラットフォームに開発する際のコードの共通化には、いくつか方法があります。

まず、ビジネスロジックの共通化について。

MVVM のデザインパターンにおける Model と ViewModel を 共通化します。共通化には、Portable Class Library または Shared Project を利用します。これらのプロジェクトの中で、ビジネスロジック層を実装し、View については各OSそれぞれのプロジェクトでネイティブ UI で実装、という形です。

次に、ビューの共通化について。

f:id:yuwata:20140813121344p:plain

Xamarin においては、ビューは各 OS 個別にネイティブ コントロールで実装するという形だったのですが、先日ビューの構築を共通化でいる Xamarin.Forms というライブラリがリリースされました。Xamarin.Forms を使うと、ページや各コントロール、ナビゲーションといった各 OS の UI ロジック、コントロールを、共通のコードで実装することができます。

Xamarin に関する技術情報リソース

Xamarin に関する技術情報リソースはここ1年非常に増えたと感じています。各メディアでの連載をはじめとした情報は、エクセルソフト様の Xamarin 日本語情報 ブログにまとめられていますので、ご参照ください。

公式情報としては、まず ドキュメント/チュートリアルをご一読いただき、不明な点/エラーの対処法等は Forum を検索。製品のアップデートや、汎用性の高いチュートリアル、Tips については公式ブログをご参照いただければと思います。

また、Xamarin の開発者向けカンファレンス Evolve 2013 のセッションも非常に充実していますので、合わせてご覧ください。

ご不明な点やご質問等は、ぜひお気軽にユーザグループへ ( Japan Xamarin User Group )!

Xamarin の進化はまだまだ続く

今回は、最近の Xamarin 事情について、よくお話しする話題をまとめてみました。この記事を書いている際にも、CocosSharp という 2D ゲームを開発するクロスプラットフォームライブラリがリリースされる等、Xamarin は今後ますます進化していくでしょう。10月6日~10日に開催される Xamarin の開発者向けカンファレンス Evolve 2014 も要チェックです!