第5回の連載では、チーム開発におけるビルド管理のポイントをご紹介しました。最終回である今回は、Application Insightsを利用して、本番環境から情報を取得し、アプリケーションの価値を高く保つ方法をご紹介します。

アプリケーション開発中の不具合に即時対応するには?

開発中のアプリケーションに不具合が発生したとき、テスト実施者は障害票に発生した環境から取得したログを添付し、不具合が発生するまでの手順を書き、開発者と不具合の情報を共有できるようにします。そして、開発者は障害票に書かれた情報を基にして、不具合の解析と対策をおこないます。これは、開発に携わっている人であれば、いつもやっていることでしょう。

では、本番環境へリリースしたアプリケーションに不具合が発生したときは、どのようにして、発生したときのログや再現手順などの情報を収集し、不具合の解析と対策をおこなっていますか? また、情報の収集から対策完了までに、どれくらいの時間がかかっていますか?

これまでは、電話やメールなどによる利用者からの連絡をきっかけに、本番環境のアプリケーションの動作しているサーバにアクセスし、ログから原因の追及と対策をしていた方も多いのではないでしょうか。しかし、この方法では、開発者と利用者を含む、アプリケーションの関係者すべてに、やり取りの回数や対応完了までの時間が多くかかってしまいます。また、それだけではなく、対策が後手に回ることによって、不具合への対応版の本番へのリリースが遅れてしまいます。これらの結果、アプリケーションがユーザーの使いたいときに期待通りに動かないという事態が発生し、アプリケーションの価値が低下してしまう一因にもなっていました。

不具合を解消するまでのフロー:これまで

Application Insightsで状況を簡単に把握し、即座に対応

この状況を解消するため、近年ではアプリケーションの不具合や利用状況やパフォーマンスなどの情報をアプリケーションの動作しているサーバにアクセスしなくてもWeb上で得られるようになってきました。Web上で情報を得られるため、電話やメールなどによる利用者からの連絡を待つ必要はなく、不具合発生時にアラートを飛ばすように設定することで迅速な対応が可能になっています。ただ、こういったサービスの多くは、情報収集用のコードを対象のアプリケーションの内部に埋め込む手間がかかるものでした。

そこで登場するのがApplication Insightsです。Application Insightsは、対象アプリケーションに依存せず、いつでもパフォーマンスと使用状況を監視できる、360°ダッシュボードを持ったMicrosoft Azureのサービスです。アプリケーションが.NET、Java、PHP、Ruby、Python、iOS、Androidのいずれかであれば、Application Insights SDKを利用することで、簡単にApplication Insightsとアプリケーションが連携し、アプリケーションに「何が起きたのか」をすぐ知ることができます。特に、Visual Studio 2015やApplication Insights for iOSを利用してアプリケーションを作っている場合は、画面や関数ごとにコードを追加しなくても、ウィザードに従って設定するだけで連携の準備が完了します。

Application Insights SDKを使った場合、アプリケーションの不具合や利用状況やパフォーマンスなどの情報は、常にMicrosoft Azure上のApplication Insightsリソースへ送信されます。Application Insightsでは、アプリケーションの応答時間が遅くなったり、不具合でクラッシュしたりしたときなどにアラートを通知する設定が簡単にできます。状況が変わったときにApplication Insightsがアラートを通知するので、「これまでのやり方」よりも早く「何が起きたのか」を取得できます。

不具合を解消するためのフロー(Application Insightsを使った場合)

Application Insightsの利用で中長期的なアプリケーションの改善

上記の通り、開発者にとってのApplication Insightsを利用するメリットは、本番環境で不具合が発生したときに「何が起きたのか」を知るために既存のアプリケーションに大きなソースコード変更をおこなう必要がないことです。

では、プロジェクト全体を通して、Application Insightsを利用することで、どのようなメリットが得られるでしょうか? これまで、アプリケーションに不具合が発生したときは、利用者が問い合わせの窓口へ連絡し、多数の部門を経由した後に、開発者が不具合の調査と修正をおこない、リリースをしていました。

中には窓口に連絡せずにアプリケーションを使わなくなってしまう利用者がいたことは想像に難くありません。Application Insightsを利用することで、アプリケーションに不具合が発生したときに即座にその状況を把握でき、不具合発生から対応までにかかる時間を短縮できます。また、Application Insightsはアラートによる通知をおこなうだけでなく、ポータルからアプリケーションのパフォーマンスや使用状況などを常に確認できます。そのため、「どこで遅くなっているのか?」「どの機能が使われているのか?」といった実際の利用者がどのように使っているのかといった情報を把握でき、その情報を基にアプリケーションの継続的な改善に生かすことができます。

短期的にはアプリケーションの不具合の対応期間を短縮するため、中長期的にはアプリケーションを継続的に改善するために、Application Insightsを始めてみてはいかがでしょうか。Application Insightsは無料で試用可能です。まずはスモールスタートとして無料版を試用、自分たちの現場に合う、合わないを判断し、問題がなければそのまま継続利用する、といったことをお勧めします。

編集協力:ユニゾン

執筆者紹介

TFSUG(Team Foundation Server User Group) 石神 政典

一貫して、組み込み機器向けファームウェアやアプリケーションのシステム開発に寄与。2013年、TFSに興味を持ち、ユーザーグループのセミナーに参加する。同年、「開発において、今よりも良いやり方を学び、実践する」ために、メンバーに加わる。最近は、開発だけでなく、全工程をより良くすることを目的に、職場でDevOpsの布教活動をおこなったり、自身がこれまで経験していなかったOps側についても積極的に身に着けようと動いている。