かずきのBlog@hatena

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

Microsoft Tech Summit 2017 で Visual Studio Mobile Center について登壇してきました その2「感想編」

その1

blog.okazuki.jp

登壇の感想

5月に開催された de:code 2017 に続いての大型イベントでの登壇の機会を頂くことができました。 おそらく1000人規模のイベントになるかと思います。

セッション受講者

メインターゲットが IT Pro ということになっているのでアプリケーションをばりばり開発するタイプの人たちは、そんなに多くないという毛色のイベントになります。

実際にセッションに参加して頂いた方の分布も以下のような感じで(これ見れるのスピーカーとしてはとても有難いですね!欲を言えばセッションスケジュール情報に基づいて事前に知りたいけど。このイベントアプリを作成して頂いた JMAS さんには感謝です!プログレスバーがかっこいい。)60% 以上の方がアプリケーション開発系ではないという感じでした。

f:id:okazuki:20171109212508p:plain

セッション開始まで…

共同登壇という形での登壇ははじめてだったので勝手がわからずに戸惑いました。 最初のころは、かけあい?みたいなこととか寸劇?みたいなこととかも検討していましたが、最終的にちょまどさんが説明パートで、私がデモパートという明確な役割分担を設けてやるという感じになりました。

日本マイクロソフト マイクロソフトテクノロジーセンター センター長 澤円さんからも共同登壇は難しいということと、かけあいする場合は劇団に入るくらいの本気度でやらないと失敗するという話しを聞いていたので、最終的にこの形に落ち着いてよかったと思ってます。

ちなみに、前日は夜遅くまでスライドやデモも作っていたりして終わらずに、当日も直前まで資料作成とかしてて結構ドタバタはしてました。

デモアプリケーション作成

デモ用にアプリケーションも作りました。コミットログを見ると 2017/10/14 から作り始めたみたいですね。

f:id:okazuki:20171109214007p:plain

デモアプリケーションは非常にシンプルなもので、#mstsjp17 のハッシュタグから画像を拾ってきて Microsoft Cognitive Services で分類わけと概要を生成しておいて CosmosDB で管理しておいて、モバイル端末から閲覧するといったものでした。

f:id:okazuki:20171109214137p:plain

TimerTrigger の Function から定期的に画像つきツイートの情報を収集して CosmosDB に登録します。CosmosDBTrigger を使って1ツイート単位で Cognitive Services を使って付帯情報を生成しています。そして、HttpTrigger の Function で WebAPI を作って、それをクライアント端末から参照しています。

画面はこんな感じです。

f:id:okazuki:20171109214514p:plain

サーバーサイドは CosmosDB + Azure Functions だけです。クライアントサイドは、最初は Xamarin.Forms で iOS / Android / UWP に対応した形で作りました。Prism と ReactiveProperty あたりを使っています。 考えたのが、Visual Studio Mobile Center が Xamarin のみにしか対応していないという風に思われるのは嫌だったので Android のネイティブでの開発もしてみようと思いました。その際に、Java ではなく Kotlin でやってみるか!!と思い立って Kotlin で、ほぼほぼ同じ機能を持ったものを作ってみました。

Android アプリのみを開発するなら、やっぱり Android 本家の開発方法でやるほうが楽だなというのが正直な感想ですね。Kotlin も正直 C# よりもモダンな雰囲気を感じます。関係ないですが、Kotlin で iOS アプリも開発できるようなものも発表されたり、Android では公式な言語として採用されたり、サーバーサイドも Kotlin で書けたたり、さらには JavaScript にもコンパイル出来たりと、なんだか強い…という感想を感じます。

ここら辺の Xamarin と Kotlin のクロスプラットフォーム開発については @amay077 さんの以下の記事が詳しいです。

qiita.com

Kotlin かわいいよ。Kotlin。因みに、Kotlin インアクションはいい本です。

Xamarin も C# での既存資産を持っている人たちはノウハウや資産の一部を再利用できる点や、現時点でネイティブアプリと同等のパフォーマンスを持ったアプリケーションを作成できる実績のあるクロスプラットフォームである点や、Visual Studio / Microsoft Azure との高い親和性を持った点などなど、いい面がいっぱいあります。ただ、個人的に思うのは、きちんと特徴を知ったうえで適材適所で使いましょうという感じです。Xamarin もいいぞ。

因みに、私たちの登壇は2日目だったのですが初日のキーノートが終わった後に、ちょまどさんがキーノートで描いてた絵を、デモアプリでプッシュ通知受け取った人だけに送ろうという感じのことを思いついたので、せっせと実装してたりしました。参加者の方にインストールしてもらうということになるので、Xamarin で作った apk だと 20MB を超えてしまうので(これは仕組み上仕方ない)今回は Kotlin で作ったアプリの方を対象にしました。

Mobile Center の Push 通知に chomado という名前のプロパティをくっつけて送りつけると、プレゼント用のページに画面遷移するという仕組みで作りました。プレゼント画面は以下のような感じです。右下のボタンを押すとローカルに保存されます。

f:id:okazuki:20171109220409p:plain

あと、Visual Studio Mobile Center の一押し機能に Test 機能があるのですが、これは Microsoft が管理している様々な種類のデバイスに、自分のアプリをインストールして自動UIテストを実行するという類の機能なのですが、澤さんにレビューを受けた際に(本番前日に見てもらいました)機能の説明だけではなく、その機能があることで何が嬉しいのか?というのを伝えるために Before After があるといいというアドバイスを受けたので、急遽、前職のころを思い出しながら Excel 方眼紙で表紙などを作ったテスト仕様書を作りました。

f:id:okazuki:20171109184650p:plain

結構、SIer 心をくすぐるポイントをいろいろ詰め込んで頑張って作ったのでセッション中に、このテスト仕様書を表示したときに笑って頂いて嬉しかったです。久しぶりにテスト仕様書に従って画面のテストをしましたが、やっぱりつらいですね。

セッション後

Ask the speaker で何人かの方にご質問をいただけたので嬉しかったです。

Microsfot のセミナーではセッションの内容がよかったかどうかというのを NSAT という計算方式を使って数値化して評価するのですが、速報値で 190 というとても高い評価(満点が200)を頂いたのでとても嬉しかったです。

ちょまどさんが、スライドを速攻で公開してくれたので以下から参照して頂くことが出来ます。

www.slideshare.net

感謝!!

ということで、今回の話す機会をくださった TechSummit 2017 のアプリケーショントラックのトラックオーナーの 井上 章 さんありがとうございました!

あと、私一人では、どうしても平坦な感じのセッションになりがちなところを、色々この機能はインパクトが大きいからこういう風に紹介したほうがいいとか、このデモはこうした方がもっと良くなるとか、人にわかりやすく伝えるという点と、セッションにメリハリを提供してくれた ちょまど さんありがとうございました!超感謝です。

澤円 さんには資料のレビュー(キーノートや自分自身のブレイクアウトセッションを2日目の遅めの時間に持っている状態なのにも関わらず)と的確なアドバイスを頂きました。聴衆の人たちにとって「自分ごと」として感じてもらうという点は、澤さんのプレゼン本を読んだり、澤さんのセミナーを受けたりして頭ではわかっていたつもりになっていたのですが、実際に自分がやるプレゼンで具体例を示して頂いて座学とは違う学びを得ることが出来ました。ありがとうございました!

最後に、Microsoft TechSummit 2017 に参加して頂いて(安くないイベントですよね…)その中で、ちょまどさんと私のセッションを選択していただいたお客様に感謝です!ありがとうございました!

まとめ

Visual Studio Mobile Center はいいぞ。