なかしょの技術日誌

業務では非MS系のものばかりですが、ここではMS系の技術やサービスを中心に書いていきたいと思います。

Visual Studio App CenterについてAndroid Test Night、iOS Test Nightで話してきました。

3月19日のAndroid Test Night、および、3月26日のiOS Test NightにてVisual Studio App Centerについて話してきました。

内容は、1月に登壇した春のApp Center祭りの内容の焼き直しです。

www.slideshare.net

www.slideshare.net

以下、まとめて説明します。

なぜ、CI/CD環境が必要か?

  • 開発者がコーディングに集中するため

GitリポジトリにPushする前に、プロダクトの対象となるOS×画面サイズの環境パターンでのテストを開発者のマシンで実施すると、開発者がコーディングにかける時間が失われます。開発者は主たる環境パターンでのみテストを通してPushし、CI/CD環境で複数のパターンを実施することによってコーディングに専念できます。

  • 各開発者のマシン環境によってビルドの差異ができることを防ぐ

各開発者のマシン環境は同じようにしているつもりでも差異が発生していることがあります。その影響で開発者Aのマシンでビルドしたものでは正常に動作するのに開発者Bのマシンでビルドしたものでは異常終了する、ということが起きるかもしれません。開発チームがCI/CD環境を正とし、この環境でテストが成功することが対象機能(ストーリー)の実装完了とすることで誤ってバグのある機能をリリースするリスクを軽減できます。

CI/CD環境をオンプレミスで構築すると...

CI/CD環境をオンプレミスで作成すると色々な費用が掛かります。

  • ハードウェア費用
  • ソフトウェア費用
  • 監視費用
  • 維持メンテ費用
  • テスト端末費用

運用方法によってはオンプレミスよりもクラウドサービスを利用したほうがコストも安く、開発者にも負担がかからない環境が作れるかもしれません。

Visual Studio App Centerの主な機能

ビルドやデリバリーだけでなく、Push通知などの機能があります。 料金プランを見ると無料でビルドに240 ビルド時間 (分)/月使えるというのはすぐに消費してしまう印象ですが、ビルドが強制的にタイムアウトするまでの時間が30分というのは比較的長めです。 配信、分析、プッシュ通知等は無料で色々使えて良い感じです。

f:id:nakasho_dev:20180418001857p:plain

対応プラットフォームもそれなりに充実している印象です。 将来的にはサーバサイドアプリもビルド・テストしてAzure等にデプロイできればよいなぁ、とは思います。

f:id:nakasho_dev:20180418002057p:plain

各機能の説明はスライドを見てください。

Azureとの連携

Visual Studio App Centerの分析機能は物足りないのですが、Azureへイベントログを流して、そのログをApplication Insightsで可視化すると詳細な分析ができて良いと考えます。 f:id:nakasho_dev:20180418003322p:plain また、Blob Storageにイベントログを保存して、色々なアプリと連携することも可能です。

App Center Client

App Centerのほとんどの機能はAPIとして公開されており、APIをたたくことでコードベースで管理することも可能です。 個人的にはGUIよりもコードで管理している方が安心できます。

f:id:nakasho_dev:20180418003517p:plain

色々なシステムと連携して自動化できると嬉しいです。

最後に

今回、Android Test Night、iOS Test Nightで話してみて(HockeyAppは知っていても)Visual Studio App Centerを知らなかった人が多かった印象です。 Microsoft以外の開発環境である各モバイルOSのネイティブ言語やReactNativeなどのクロスプラットフォーム環境に対応しているので、もっとMicrosoftの既存顧客向け以外にも宣伝すればよいのに、と思いました。

余談

Flutterに対応してくれないかなぁ、と思ったらFlutter側がVSAppCenter向けのSDKを作っている模様...

pub.dartlang.org

【追記】

ということでXamarinコンサルタントがFlutter向けに作成してContributeしている模様。