Salesforceモバイルアプリの開発・保守に役立つツールやサービス集

はじめに

前回、前々回の記事で、要件定義の注意点や、zkSforceを使ってSalesforceにログインするアプリケーションの作成などの内容をご紹介しました。

今回の記事では、iOSアプリの開発を実施する中で使用すると便利なツールやサービスをご紹介します。これらのツールは実際にテラスカイの案件でも使用したものです。案件で使用するときに工夫したノウハウなどもあわせて紹介します。

cocoapodsの紹介

まずは、cocoapodsの紹介です。

cocoapodsは、Rubyで使われているbundler や gemとよく似たツールで、開発に使用するライブラリの追加や削除、開発者間でのバージョンの統一ができます。また、cocoapodsを使わない場合に非常に面倒な、Xcode上での追加ライブラリの組み込みとビルドの設定をコマンド1つで行ってくれる非常に便利なツールです。このツール無しでのiOSアプリ開発はありえないと言っていいほどだと思います。

cocoapodsのインストール

cocoapodsはRuby上で動作するツールなので、rubyがインストールされていれば、gemで簡単にインストールすることができます。Mac OS Xの環境ならRubyは標準でインストールされています。

$ sudo gem install cocoapods

具体的なライブラリの設定の方法と設定後のライブラリのインストール方法は、前回の記事でzkSforceをインストールした手順をご確認ください。

cocoapodsでインストール可能なライブラリの例

  • zkSforce 前回の記事でも紹介したSalesforceのSOAP APIのラッパーライブラリ です。
  • AWS SDK エンタープライズ向けシステムでも利用が増えてきたAWSへiOSアプリから接続するための公式SDKです。弊社でもファイルをSalesforceではなくS3に配置するアプリケーション開発などで活用しています。
  • Facebook iOS SDK エンタープライズ向けシステムで利用することは、ほとんどありませんが、Customer Communityなどでは利用する可能性もあるFacebookの公式SDKです。

その他にもさまざまなライブラリがcocoapodsでインストール可能です。また、次の節でご紹介するcocoacontrolsといったサイトのように、cocoapodsでインストール可能な部品のギャラリーが公開されているところもあります。ちなみに、非常に残念なことに、現在(2014年3月)のところSalesforce 公式の Mobile SDKはcocoapodsに対応していません。

cocoacontrolsの紹介

iOSアプリ開発では、Saelsforceやforce.com上でのVisualforceを使った画面開発と比較して、お客様からさまざまなUIに関する要望をいただくことが多くなります。cocoacontrolsで紹介されているUI部品はそういった要望に応えるときに役立ちます。

お客様のご要望は主に、そのお客様ご自身がユーザーとしてiOSアプリケーションを使われているときに経験されたものが多く、それを設計中の業務アプリケーションにも活用したいと考えられているケースがあります。cocoacontrolsには、「よくある」部品がかなりの数で公開されていますので、これらを活用することは、その要望に応え、しかも短期間に品質の高いアプリケーションを提供するのに役立つでしょう。ただし、個人の開発者が公開されている部品がほとんどですので、選ぶ部品は十分に品質を確認したり、開発の活発さなども確認する必要があります。cocoapodsでインストール可能な部品も多数公開されています。

cocoacontrols
cocoacontrols。iOSアプリ開発で利用可能な部品を公開しているサイトです。

テスト用アプリ配布サービスTestFlightの紹介

iOSのアプリを開発したら、開発者側のテスト担当者にアプリケーションを配布したり、あるいは、お客様のテスト部門の方にアプリケーションを配布する必要があります。Mac OS XとXcodeがインストールされた端末であれば、直接iOSデバイスを接続してビルド・インストールすることができますが、全てのアプリケーション配布先の方々にビルド作業を行っていただくのは、現実的ではない場合があります。

そのようなときにTestFlightを使えば、開発環境を持たないユーザーにもテスト用のアプリケーションを配布し、配布状況を監視することができます。なお、TestFlightは、Appleへ買収の報道がされており、もし、これが本当に実現されれば、Appleの公式サービスになっていく可能性もあるため、使い方を学んでおくのは今後のためにもなるかもしれません。

TestFlightのダッシュボード画面
TestFlightのダッシュボード画面

クラッシュログ解析サービスCrittercismの紹介

クラッシュログ解析の難しさ

テスト用のアプリケーションを配布して受け入れテストを行っている最中や、アプリケーションをリリースし、ユーザーに使用してもらっている最中に、アプリケーションがクラッシュして突然落ちてしまうことがあります。そして、その場合、開発を担当している側としては原因を究明して、修正を行わなければなりません。

しかし、アプリケーションが突然クラッシュする場合、同じ手順を行ってもクラッシュを再現することができず、中々原因の究明が進まないことの方が多いです。

そのような場合には、クラッシュログを解析するとアプリケーションがロジックのどこで例外を出して落ちているかが分かります。ただし、このクラッシュログを解析するためには、何もツールを使わなければ、アプリケーションが落ちたユーザーにiTunesやiPhone構成ユーティリティ、Xcodeに接続してもらい、クラッシュログを抽出してもらう必要があります。これは、通常ユーザーや受け入れテストの担当者に行ってもらう作業としては、かなりハードルが高いです。

しかも、そのハードルを越えてクラッシュログを送ってもらったとしても、送られてきたアプリのバージョンのdSYM(デバッグシンボル)ファイルやipaファイルがなければ、肝心の例外発生箇所がマスクされた状態になってしまい、内容を確認することができません。

これはユーザーにとっては、中々アプリの改善がされず不満がたまり、一方、開発者にとっても緊急度が高いにもかかわらず対応することが困難、という不幸な状態になってしまいます。

crittercismでできること

このような場合に、crittercismのようなクラッシュログ解析サービスを使うと、クラッシュログの送付やデバッグシンボルの管理を自動化することができ、緊急的なアプリケーションの保守作業を非常に効率よく行うことができます。crittercismには、具体的には、以下の様な機能があります(有料版にはこれ以上の機能があるようです)。

  • アプリケーションのビルド時に、自動的にdSYMファイルをcrittercismのサーバーへ保存
  • アプリケーションがクラッシュした後、アプリケーションが起動されたときなどにクラッシュログをcrittercismのサーバーへ送付
  • 未解決のクラッシュの状況管理

正しく設定をすると次の図のように、クラッシュの発生傾向を監視し、Webの画面からクラッシュの内容を知ることができるようになります。

crittercismのクラッシュトレンド画面

crittercismのクラッシュトレンド画面

Salesforceのサンドボックス環境と本番環境でcrittercismの監視対象を分ける

Crittercismのアプリ登録画面にも記載されていますが、同じアプリケーションであっても、開発用と本番用に分けてcrittercismに登録することができます。分けて登録することで、crittercism上のアプリとしては別のidが振られ、ログやdSYMファイルの送付先用にそれらを区別して使うことができます。

こうしておくことで、実際にユーザーの端末で発生したクラッシュと、開発中や受け入れテスト中などに発生したクラッシュの監視を分けておくことができます。ユーザー数が多い場合などにはこうしておかないとユーザーから送られてきたログと、受け入れテスト中に発生したログが混在してしまって、分かりにくくなってしまうので、必ず分けて登録しておいた方がよいです。Salesforceでの開発の場合には、本番環境用とサンドボックス用に最低2つ登録しておけばよいでしょう。

crittercismのアプリ登録画面
caption="crittercismのアプリ登録画面

おわりに

いかがでしたでしょうか。今回、3週にわたってSalesforceのモバイル開発に関する記事をご紹介しました。まだ、他の記事を読んでいない方は、ぜひご確認ください。

これらの記事で、かなり駆け足な説明にはなりましたが、Salesforceに接続するモバイルアプリケーションを開発する案件の流れにおいて、それぞれのフェーズに使用する技術的な要素や考え方、注意すべき点、工夫すべき点など、テラスカイに蓄積しているノウハウをご紹介してきました。この記事を読んでくださった開発者の皆様にとっては、要件定義から開発・保守の流れで行う仕事のイメージが湧いたのではないでしょうか。

この記事の筆者の個人的な思いとしては、Salesforceというプラットフォームは、企業向けのシステムの中でもかなりモバイル関連の技術と相性がよく、SIerの企業は積極的に取り組むべき内容なのではないか、という考えがあります。しかし、企業向けのシステム開発を行う技術者にとって、通常、Objective-CやiOSのフレームワークを使った開発の経験はあまりなく、開発の方法論や使用するツールなど想像もつかない人が少なからずいるとも思います。今回の記事がそういった人たちへ少しでも勇気を与え、そして、一歩踏み出すきっかけになればと願います。