Microsoft 系のあれこれ

港区の SIer で よくわからんことをしている SE みたいな人です。Xamarin 中心です。

de:code 2018 イベントアプリ振り返り

5/22,23 で開催された de:code 2018 に公式イベントアプリを提供しました。
de:code (decode) 2018 | 開発者をはじめとする IT に携わる全てのエンジニアのためのイベント

自分用振り返りをまとめておきます。

公式イベントアプリ機能

マイクロソフトさんのイベントアプリ開発は今回で5回目です。今までと同様に Xamarin.Forms で作成しています。
毎回新たな試みが追加されますが、今回の de:code では細かなブラッシュアップとともに以下が追加/更新されました。

セッション聴講者属性

各セッションの参加者がどんな領域を担当しているか、主に使用しているサービス、言語を表示するようにしました。
f:id:ShunsukeKawai:20180524173611p:plain:w400

会場マップの混雑状況表示

日本システムウェア 様の CityVision*1 というサービスと連携して会場の混雑状況を表示できるようになりました。
f:id:ShunsukeKawai:20180524173739p:plain:w400
f:id:ShunsukeKawai:20180524173806p:plain:w400

スタンプラリー

デンソーコミュニケーションズ 様の Sifty*2 というサービスと連携してスタンプラリーを実装しました。
f:id:ShunsukeKawai:20180524173922p:plain:w400
f:id:ShunsukeKawai:20180524173936p:plain:w400

お知らせ

今までのアプリでは何か参加者の皆様にお知らせをしたい時、Push 通知を行っていましたが、Push するほどでもない場合もあったり、通知を許可していない方、読む前に消してしまった方がお知らせを見れなくなってしまうためお知らせ画面を追加しました。まぁ今までない方が変だったと思います。

その他機能は私が担当したセッション資料の前半に記載してあります。

www.slideshare.net

よくあったお問い合わせ

(全部書いていいのかわかりませんが) よくあるお問い合わせとして以下がありました。

アプリにサインインできない

Microsoft アカウントには組織、個人のアカウントがあり、かつそれが同じメールアドレスの場合、Web の申し込みサイトでは(私たちの開発ではないので正確にはわからないですが)試してみたところ自動的に個人アカウントでのサインインになってしまう挙動を見せていました。
そのため、参加者の方は組織でサインインしているつもりでも個人で入ってしまっていて、アプリからも組織を選択するとサインインできない。というケースが多かったです。
現在、Microsoft アカウントを組織と個人が同一のメールアドレスで作成することはできなくなっていますが*3前はできていたので(私もアカウント両方持ってます)、そういう方がいらっしゃったようです。(同一メールアドレスで作成する抜け道もあるみたいですが、ここでは言及は避けます。)

スタンプラリーができない

スタンプラリーを撮影するボタンを押すとアプリが落ちる
イベントアプリでは Visual Studio App Center を利用して Crash のログを見れるようにしているのですが、そのログを見ると以下のようなログがあがってました。
f:id:ShunsukeKawai:20180524174759p:plain
f:id:ShunsukeKawai:20180524174826p:plain
発生している端末は HUAWEI の PXX 系ばかりです。私の端末は HUAWEI Mate 9 なのですが、正常に動いています。

カメラ使用に Xam.Plugin.Media*4 を利用していたのですが、そのプラグインに以下の Issue があがっていて、HUAWEI の端末に問題があったみたいです。(絶対これが原因かは断言できない気がしてきたけど…)
IllegalArgumentException on Huawei devices · Issue #496 · jamesmontemagno/MediaPlugin · GitHub

アプリで利用している Stable 版のプラグイン(Ver.3.1.3)には本 Issue の対応はまだ入っておらず、そのままアプリのバグとなってしまいました。該当された方、申し訳ありませんでした。

その他

アンケートが表示されない系は受付時の参加者パスの ID との紐づけがうまくできていないなどらしいです。ぐるぐるがなかなか終わらない系はサーバーサイドが重くなっていた、ネットワークが遅い等でアプリ側では如何ともしがたい部分もありました。

開発の反省

単純なバグや限られたパワーでの開発のため諦めた対応等、うまくできなかった部分も結構ありました。(あるのかわからんが)次回以降の反省にしたい点です。

.NET Standard 2.0 対応したい

イベントアプリは UWP でも使えるので、.NET Standard 2.0 にすると Fall Creators Update より前を切り捨てることになります。それは無理だろうな、ということで今回はあきらめました。

結構動きがもっさり(特に Android

セッション数が多かったり、聴講者属性表示機能の追加等で動きが遅くなったと思います。もっと最適化できる部分があったハズ。

iPhone X レイアウト

iPhone X に画面レイアウト(Home Bar 等)を対応するため手抜きな方法をとりました。SafeArea プロパティを True にしただけ*5です。もっとちゃんと対応したかったです。

アプリアップデート強制する?

Ver.1.0.0 がゴールデンウイーク明けにリリースされ、その後、イベントの数日前にバージョンアップしたのですが、イベント当日も Ver.1.0.0 のままの方がいらっしゃっいました。アプリ内のお知らせでも周知していたのですが、結局そのままになっていたかもしれません。
旧バージョンでは特定の操作をするとアプリが落ちるバグがあり、その Crash ログも飛んできていたため、アップデートしてほしかった…(1.0.0 はスタンプラリーとか会場マップも Coming Soon だったけど…)
アプリ起動時にバージョンをチェックしてアップデートを強制にするか迷ったのですが、リリース直後に入れてイベント当日の受付直前にアプリを起動してアップデートをしなければならないとかが発生して受付が滞ってしまったり、しょうがなくモバイルネットワークでのアップデートをするしかなくなって"ギガ"が減るとかあるかもな~と思い、やりませんでした。(工数的にやれなかった側面もありますが…)
まぁ最初からバグ仕込むな、スケジュールに余裕を持ってリリースしろってことですかね。

セッション一覧自動スクロール

セッション一覧には現在時刻以降のセッションまで自動でスクロールする機能が前回まであったのに別件の対応でデグレして機能がなくなってたみたいです…。セッション数も過去最高で自分でアプリ使っていて結構不便でした。というか マイスケジュールと同じ様に開催日でタブにした方がよくないか?

最後に

ともかくなんとか終わってよかったです。
アプリ開発/リリースと自分のセッション準備、イベント問い合わせサポート等々、しばらく忙殺されていて家族にもだいぶ負担をかけたのでしばらくはおとなしくしています。
自セッションの振り返りとデモでできなかった部分などは別記事でまとめようと思います。