最近みたこの記事から、モバイルアプリ開発に関して学ぶことができた気がするので、メモ。
これはメモなので、興味のある方は本文読んだ方が良いです…
最近のiOSのFacebookアプリは、各国で以下のように平均で低いレートを得ています。この記事では、その原因を分析していました。

Breakdown of Issues Reported
以下は、1月1日〜1月15日の間の、USにおけるレビューの内容を集計したものです。

これを見ると、マイナス要因になるレビューは
- アプリのクラッシュ
- コア機能
の2つが大きいそう。他にも要因も書かれていましたが、大きくはこの2つのようですね。
リリースサイクルとQAチーム
FacebookのiOSチームは、2週間のリリース間隔を持っているようです。また、1週間ごとのスプリントで開発サイクルを継続しているよう。
このYouTube記事によると、FacebookはQA期間を設けていますが、公式なQAチームは存在しないらしいです。その代わり、テストベースの開発に注力しているようです。
“As you may know, Facebook does not have big QA teams…we believe that developers are responsible for their own code, and they’re supposed to write the tests to do that.”- Quote from Alan Cannistraro
実施しているテストツールの一部
以下のようなテストツールを使っているそうです。
- Snapshot unit test
- ios-snapshot-testingのやつですね。GitHubで公開されています。
- Testing by employee base
- 開発者ベースの動作確認です
- An Internal Settings development Dashboard
- 開発者ベースのテストで、パラメータかえたり、イベントを送ったりしている?
- Watchdog Timer
- メインスレッドに対してx秒毎にpingを送って、不意なタイミングでスレッッドが予期しないクラッシュしないか見るとかでしょうか
- Shake Report
- Shakeすることで、開発中のアプリの画面キャプチャなどを自動で送ることができる機能
Facebookチームの問題
テストベースで開発していますが、例えば開発者は主に自分たちの開発領域にしか目が届かず、全体としての品質に対して責任を持ったりするところがいないことがよくないとかも書いています。
また、具体的なFacebookチームの問題点として以下のようなものをあげています。
- Facebookは、2週間という短いリリースサイクルを行うための十分なツールやプロセスをまだ持っていない
- 2週間のサイクルは、十分な品質と多くの機能を配信するには短すぎる
記事の締め
今のままだと、Facebookはモバイルアプリを主としたマーケットにおいて、アプリの評価を回復していくことは難しそう。そうなると、モバイルマーケットでは厳しくなるでしょう、とまとめられていました。
感想
Facebookのリリースサイクルなどはいろいろ参考になりますが、彼らの規模、機能製、サービスの内容などを見るといろいろ困難が多いことが容易に理解できます。サービスを提供するために早い開発サイクルを回したいことも理解できます。
その中で、より安定した開発プロセスを回し、組織としてサービスの成長に注力できるように開発サイクルを安定させることは、まだまだ考えて挑戦すべき領域のようですね。
ところで、若干蛇足ですが、QAってどこから関わると良い?と聞かれることがあります。理想をいうなら、プロジェクトの”初めから”です。少なくとも、開発者が関わるのと同じくらいのタイミングで関わることが、理想的ではあります。
というのも、QAの多くはプロダクトを横断的に関わることが多いので、広い視野を持っていることが期待できることが多いと思います。また、主に関わっている製品に関しては、開発者まではいかなくとも、多少なりとも技術的な知見を有していることが期待できます。その場合、不具合作り込みに一番つながる、考慮漏れを防ぐことができる、という意味合いからも、早い段階から入る方が良いと、私は思っています。
あとは、単純にスキルセットが分散されて、チームとして良い感じで協力できそう、というものあります。
これを読んだ時、合わせてこの記事も読みました。
GoogleによるAndroidのパフォーマンスについて
広告にかかる通信などのコスト、バッテリーに大きくのしかかるのですね。なるほど。。。