かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

#decode17 に参加してきました(登壇側で)(ほぼ技術的なエントリではないです)

5/23 - 24 で開催された Microsoft の主催する開発系イベントの de:code 2017 に登壇者側で参加してきました。de:code は、初回から前回まで一般参加者として参加してきたので割と思い入れのあるイベントでした。今年は Microsoft に転職して最初の de:code でしたが、登壇側で参加できるとは思ってませんでした。

https://www.microsoft.com/ja-jp/events/decode/2017/

de:code の会議に勉強のため参加させていただいたら、その場で登壇が決まってしまいました。担当する内容は Xamarin + Visual Studio Mobile Center という内容でした。タイトルを考えないといけなかったので、同じく Xamarin のセッションを1つ担当する @chomado さんと相談して Xamarin入門 と Xamarin実践 という感じでセッションをするという話しになりました。

ということでセッションタイトルは[Xamarin 実践] モバイル アプリの開発、テスト、テスト配布を全て実践 - Xamarin & Visual Studio Mobile Center -になりました。Xamarinは、軽く触ってるので、まぁなんとかなるかなと思ってたのですがセッションタイトルが決まった段階で Visual Studio Mobile Center は、アカウント作ってちょっと触ったくらいだったのでちょっと焦ってました。

ということで、Visual Studio Mobile Centerの動作を確認するためのサンプルプログラムを作りました!

github.com

といっても、Visual Studio 2017のXamarinのプログラムを新規作成するときに生成されるマスター詳細のプログラムです!これにMobile CenterのmBaaSの機能をちょろっと追加したのと、押したら絶対クラッシュするボタンを追加した感じです。(クラッシュレポート機能のために)

あと、自動テストのためのXamarin.UITestも追加してあるので、このリポジトリをフォークしてもらえればMobile Centerに対してリポジトリを指定してもらえば自動ビルドとかが動くようになってるので、もしMobile Centerを試したいけどプログラムを用意したくないんだよなぁって人は使ってみてもいいかもしれません。

Visual Studio Mobile Center について感想

さて、Visual Studio Mobile Centerについては近々セッション資料と動画があわせて公開されると思うのでそちらを参照していただくのと、前に書いたBlog記事があるので見ていただければ大体ばっちりになると思います!

blog.okazuki.jp

現時点で Preview なので無料で試せるので試さない手はないです。

Mobile Center

自動ビルド・テスターへの配布・実機テスト

Visual Studio Mobile Center の機能についてですが大部分が非常にシンプルに使えるようになっています。例えば自動ビルドについては、リポジトリを選んでブランチを選ぶだけで、ほぼすべての設定が終わりみたいな感じです。とてもお手軽!これだけで、リポジトリにプッシュされたタイミングでAndroidやiOSやUWPのアプリがビルドされるようになるなんて素晴らしいですね。ただ、素晴らしい反面、Visual Studio Mobile Centerが想定していない構成のプロジェクトとかだとおそらくビルドできないですし、ちょっとビルドの時にカスタマイズした処理を入れたいんだよねぇっていうありがちな要望には現時点で対応できません。

なので、本格的な開発で使用するには、現時点ではちょっと弱いかもしれません。そんな時は、Visual Studio Team Servicesなどの本格的な自動ビルドの機能をもったプロダクトを使うといいでしょう。個人的にVisual Studio Mobile Centerは、簡単に開発のベストプラクティスを試してメリットを感じることが出来る環境を提供していることだと思います。自動ビルドから自動でのテスターへのパッケージの配布の便利さを実感してもらえれば、恐らくVisual Studio Mobile Centerが対応していないものでも自動ビルドなどのプラクティスを取り入れるというモチベーションになると思います。

Visual Studio Mobile Centerの自動ビルド機能について、割と辛口(シンプルすぎて使えないともとれるような内容)に書きましたが、実機テストの機能とテスト配布の機能は割と普通に使えます。これはVisual Studio Mobile Centerが次世代のXamarin Test CloudやHockey Appだと言われていることからも力の入れ具合がわかります。(Visual Stduio Mobile Centerは決して次世代のVisual Studio Team Servicesではないという認識) ということで、実はVisual Studio Mobile Centerの実機テスト機能とテスト配布の機能についてはVisual Studio Team Servicesから叩くことができるタスクが用意されています。これを使えば自動ビルドは本格的なVisual Studio Team Servicesを使いつつ実機テストとテスターへの配布はVisual Studio Mobile Centerを使うといったことが出来ます。 また、実機テストはコマンドラインからキックする感じなので、他のCIツールからも恐らく簡単に叩けるように仕込めると思います。

f:id:okazuki:20170601200043p:plain

Tables と Identity

mBaaSの機能を提供する Tables と Identity ですが、こいつは実はVisual Studio Mobile Centerのプロジェクトを新規作成した段階では使えません。Microsoft Azureのアカウントと紐づけることで裏でMobile Appsが作られて、それをVisual Studio Mobile Centerの画面から管理できるといった感じです。なので実質 Mobile Apps の EasyTable と 認証機能 になります。

なので実際に Mobile Apps を使ったことがある方はおわかりの通り、非常にシンプルなテーブルへのデータのCRUDと、そのデータへのアクセス時に認証情報をのせたりとかいったことが出来るだけになります。それで十分な程度の用途の場合にはサーバーサイドを開発しなくていいので最強ですが、提供機能以上のことをしようとすると破綻します。はい。

例えば、複数テーブルのデータをサーバーサイドでJOINしてもってきたいといったケースや、複数テーブルに跨るトランザクションをはりたいとかいったことは出来ないので死にます。死ぬので、Xamarin.Formsなどから使うときは、きちんとデータアクセス部分は抽象化して interface を切っておいて、その実装クラスでVisual Studio Mobile Centerのテーブルにアクセスするといった作りにしておきましょう。いざとなったらMicrosoft AzureのWeb App上に構築した独自のWeb APIにアクセスするような実装と差し替えれる余地を残しておきましょう。

もしくは、最初からEasyTableには荷が重いといったことが明らかな場合は、最初から使うのはあきらめましょう。ハマらない場所に、無理やりプロダクトを当てはめようとするのは個人的には辛いので嫌いです。

Crashes と Analytics

これは、個人的には使えるなら使ったらいいと思うVisual Studio Mobile Centerの機能の1つです。クライアント側で起きたクラッシュ時のログの吸い上げや、アプリの使用状況などを確認するためのログを吸い上げる機能などがあり、それを割といい雰囲気の画面で確認できるのでお勧めです。Visual Studio Mobile Centerを使わないにしても本格的なモバイルアプリケーションを作成する場合には、似たような機能を作る or サービスを使うことは検討しておいたほうがいいでしょう。検討の結果使わないという判断をしたなら、それはそれでいいと思います。

f:id:okazuki:20170601201125p:plain

まとめ

ということで、de:code 2017に登壇側で参加してきました。 de:code 2017全体としてはAIや、MR(HoloLensいいよね)などに注力しているので Xamarin については無償化された直後に開催された昨年のde:codeと違って大盛り上がりというわけではないといった印象を受けました。といっても、ちゃんと Xamarin については5つも枠がとられているので相変わらず重要な位置づけのテクノロジとして扱われてるのかなといった印象を受けます。

MRについては、HoloLensなどがアプリの実行のプラットフォーム(UWP!!UWP!!)になります。3Dにきちんと対応したアプリはXamarin.Formsでは作れませんが、UWPアプリは動くのでHoloLensで動くアプリ自体は作ることができます。(あえてXamarin.Formsで作るメリットがどれくらいあるかは…)

ただ、AIについてはAIを使ったアプリケーションを実行するプラットフォームとしてスマートフォンは、まだまだ重要な立ち位置にあると思っています。そして、複数プラットフォームに対応したアプリを開発するうえではXamarinはイケてると個人的に思っています。コンシューマー向けのようながっつりと画面を作りこむようなアプリはXamarin.Nativeで作ったり、業務アプリみたいに画面はコンシューマー向けほど作りこむというより複数プラットフォーム対応時の生産性が重要!といったケースではXamarin.Formsを選んだり選択肢があるのも素晴らしいと思ってます。

ということで、XamarinとVisual Studio Mobile Centerについてよろしくお願いします!

感想は以上です。ここまで読んでくれてありがとうございました!