2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
Visual Studio App CenterでAndroid開発にCI/CDを導入しよう(全1記事)
リンクをコピー
記事をブックマーク
中島進也氏:それでは、「Visual Studio APP CenterでAndroid開発にCI/CDを導入しよう」というタイトルでLTさせていただきます。
私は「なかしょ」というハンドルネームで活動してます。
NTTテクノクロスという会社にいます。そしてJapan Xamarin User Groupのスタッフや、MS系の勉強会によく出るんですが、業務ではMS系まったく触っておらず、AndroidはKotlin、iOSはSwift、サーバーサイドはSpring Bootな感じで、TDDでペアプロの開発してます。
さて、継続的インテグレーション(CI)、継続的デリバリー(CD)をされている方はどれくらいいますか?
(会場挙手)
あぁ、けっこうしてますよね。いろいろな理由があると思うんですけれども、なぜ必要かというのは、対象機種の全OSや画面サイズのパターンとか、全部開発者がやると大変だとか。あとは開発者の環境の差異でバグがでるのを防ぎたいとか、PMやUI/UXデザイナーに素早く提供したいだとか、手作業でのミスをなくしたいとか。いろいろあると思います。
CI/CDの構築例です。
これだとTeamCity使った例を出していますが、Build Agentを立てて、iOSはmacのほうで、それ以外はUbuntuでビルドするとか、そういうやり方があると思います。
ただ、オンプレミスで構築すると、環境のハードウェア費用、ソフトウェア費用とかいろいろあって、運用方法によってはオンプレミスよりもクラウドサービスを利用したほうが、コストも安く開発者にも負担がかからない環境が作れるのではないかと思います。
そこで今回紹介するのが、Visual Studio App Centerです。
主な機能として、自動ビルドや実機デバイスでのUIテストの自動化、テスターやストアへのアプリの配布や、クラッシュログの収集、使用状況の分析、プッシュ通知などがあります。
対応プラットフォームはAndroid、iOS、Windows、macOSにそれぞれ対応してます。
SDKの組み込みですが、build.gradleでライブラリ読み込むように設定して、メインのActivityのonCreate時に読み込むような感じにしてあげると、クラッシュを拾ってくれたり、プッシュ通知を受け取ったりといったことができるようになります。
対応アカウントは、Github、Microsoft、Facebook、Googleなどが使えます。
次はBuildですね。対応リポジトリはVisual Studio Team Serviceか、Githubか、Bitbucketが使えます。
ビルドの設定は、Android Module、Build Variantなど。
Build Script、これはクローンのあとや、ビルドの前後にスクリプトを噛ますといったことができます。あとはPushごとにビルドするかとか、単体テストを行うとかLintを行うかとか。環境変数をやるかとか。
環境変数はGithubのパブリックなところでやってると、シークレットキーとか埋め込んじゃいけないですよね。そういうところをこういうCIツールのほうから環境変数でやって、環境変数をビルドコンフィグのほうで拾ってあげて、ソースのほうで反映するというやり方がいいんじゃないかなと思います。
あとはサイニングや実機のテストとか、配信するかなどもあります。
そして、ビルドを走らせると、ビルドの状態がWeb画面から見ることが可能で、ビルド終わるとビルドしたAPKやログを取得することが可能です。
あとはGithub Appの中に、App Centerがあります。
これ使うとなにがいいかっていうと、App CenterとGithubが連携して、プルリクしたら勝手にビルドしてくれて、それで状態を常に、今ビルド状態なのかとかテストしてるのかとか、そういうものを取得することが可能になります。
この連携はGithubが5月に発表したCheks APIというものによるものなんですが、Cheks APIは現在はパブリックベータで、サードパーティーのCIツールとのより深い連携を実現する新機能です。
従来はインテグレーション実施後にビルドの成功/失敗ステータスだけが表示されていました。本APIによりステータスの詳細が表示され、必要に応じてビルドプロセスの再実行もGithubのユーザーインターフェース内で完結します。
Github Appsが使用可能なのは、今はVisual Studio APP CenterとTravis CIで、CircleCIは対応予定ということでまだ対応はしてないようです。今後はOutlookの受信ボックスから直接Issueへコメントしたり、プルリクをマージできるようになるらしいです。
次はTestです。テスト端末は機種×OSで数千台の実機デバイスが用意されているんですが、いわゆるガラパゴススマホは用意されていません。OSバージョンはv2.2.1からv8.1.1まで用意されているようです。
テストフレームワークは、AndroidはAppium、Calabash、Espresso、Xamarin.UITestが可能です。テスト設定するのが、GUIから全部テストできるのかと思ったらそうではなくて。コンソールからテストを起動させて実行する仕組みになっています。
テストを実行すると結果が表示されて、成功したか失敗したかだとか、そのときのデバイスログとかテストログとかスタックトレースとか、あとスクリーンキャプチャですね。そういうものを見ることが可能になります。
次に配信です。Androidの配信方法は3つあります。グループ配信、App Centerによる配信です。登録したユーザーにメールで通知したり、HockyAppアプリでも管理できます。未登録のユーザーにも配布できるリンクが作成可能です。
GooglePlayによる配信だとAPI接続用のセキュリティトークンが必要になるのは当たり前なんですけども、それでアルファ、ベータテストの配信や、Production用の配信が可能になります。
あとはみなさんあまりご存知ないかもしれませんが、Intune Company Portalという、Microsoftが提供してるエンタープライズモビリティ管理サービスにも配信が可能です。
Distribute。配信するとメールで来て、メールから起動して、「野良APK入れてもいい?」みたいな感じになって、それで入れるとアプリ起動、みたいな感じになります。
そのほかにHockeyAppアプリという……名前がVisual Studio APP Centerアプリとかじゃないんですが、もともとHockeyAppというサービスだったので。HockeyAppアプリをインストールすると、VSAppCenterに登録されているアプリがほかのOSも含めて表示されて、過去のバージョンも選択してインストールすることが可能になります。
次がクラッシュ情報取得ですね。クラッシュに対してレポートを取得可能です。
クラッシュ情報がAppCenterに送信されるのは、アプリ再起動後。これはCrashlyticsと同じだと思っています。スタックトレースなども閲覧可能です。
「同じバグが何回発生したらトラッカーにチケットを起票する」とか、そういう連携も可能です。
今連携できるのはVisual Studio Team Serviceと、GithubとJiraに自動起票などができます。
Analyticsですね。
よくあるFirebase Analyticsと同じような感じで、どの地域から来てるかとか、何回アクセスがあるかとか、OSはなにかとか、そういうものがいろいろ見られます。
あとはカスタムイベントというかたちで、イベントを出すときにプロパティを渡すと、ユーザーがなにかを選択したときに、なにを選択したかとか。そんな統計も取ることが可能になります。
Analytics-Log Flowということで、今どういうログが出てるのか、ログの流れを見ることができます。
あとは通常のAppCenter Analyticsだけだとログの情報があまりイケてない部分もあるんですが、AzureのBlob Storageとか、Application Insightsにエクスポート可能です。これをやると、FirebaseのログをBigQueryで検索するような感じで、生データを検索していろんな解析が可能になります。
次にPushですね。Pushは、通知情報を登録して、管理用のキャンペーン名を登録したりサイレントプッシュにするかとか、タイトルとメッセージを入力、アプリ側に渡すデータを登録して、次に通知対象をすべての登録デバイスとかデバイスリストとか、あとオーディエンスとかで選択して送ることが可能です。
オーディエンスはApp VersionとかCountryだとか、言語とかそういうのを選んで送ることが可能になります。
選択したら送信を行うとプッシュ通知が行われて、送信状況が「何人に送ったか」「何人が受け取ったか」などが確認可能です。
その他として、Webhookですね。今のところ2つしかないんですが、新しいクラッシュグループがクリエイトされた場合とか、あとは新しいAppのバージョンが生成された場合とかに、Webhookでフックしたところに通知することが可能です。
あとはSlack Appが用意されてます。いろいろビルドとかアナリティクスだとか、そういう情報をSlack経由で取得することが可能です。
また、App Center Clientと言って、Slack側でAPIが用意されています。
けっこうGUIで設定したものを保存するのって面倒だとか、そういう人いらっしゃると思うんですけれども、だいたいGUIの操作ほとんどRest APIになってるので、全部その設定をコード化しておくということも可能になります。
あとはVSCodeのApp Center Toolsというものがあって、それを使うと先ほどのAPIなど簡単にVSCodeから叩いて操作することが可能になります。
ほかにも、App Center fastlane pluginというのも出ています。
ビルドしてfastlaneでDeployGateに上げて、DeployGateでいろんなバージョンを管理とか、そういう人はけっこういると思うんですけれども。そうした運用で、ビルドとテストはオンプレミスでやるけれども、チームに配信するのはなにかクラウドのを使いたいとか。そんな場合に、こうしたfastlaneのプラグインとかは役に立つんじゃないかなと思っています。
あとは無料レベルのサービス内容とかを、ちょっとここの資料に記述してみました。
まとめです。Visual Studio APP Centerは、CI/CDに必要な機能が揃っています。そして、プルリクエストの検証を早くするためにはCIとの連携が必須です。Github AppのCIツールを活用しましょう。クラッシュ情報はBug Trackerと連携して、素早く対処しましょう。RestAPIやWebhookなどを使って、いろいろなサービスと連携しよう。
ご清聴ありがとうございました、以上です。
(会場拍手)
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05