【レビュー】テストが書けない人のAndroid MVP

プログラミング
この記事は約3分で読めます。

仕事でAndroidアプリを作成しています。このアプリケーションが将来に渡って価値を提供できるようにするにはどうしたら良いかなと考えて、テストを書こうと思い立ちました。テストがあれば、他の開発者に生きた仕様書を提供できると考えたからです。しかし、私が作ったアプリは絶望的にテストが書きにくいことに気づきました。そこで藁にもすがる気持ちでこの本を買ってみました。あまり期待をせずにとりあえず買ってみましたが、いい意味で予想を裏切られ、まさにわたしが必要としているテクニックのオンパレードでした。この本のおかげで無事に作成中のAndroidアプリにテストを追加することが出来ました。

マッチョなアクティビティ

Androidアプリを開発する際は、初心者は恐らくサンプルをコピー・アンド・ペーストして自身のアプリの仕様に合うようにカスタマイズしていく作業をするかと思います。そのようなサンプルは総じてテストのことを考えて作られてないです。サンプルを実現するための最低限の実装しかされていません。余計なコードは理解の妨げになるからです。そのようなサンプルをいくつかアプリに実装していくと直ぐにマッチョなアクティビティクラスが出来上がります。マッチョなアクティビティに対してテストを書くのは至難の業になります。わたしもどのようにテストを書こうか途方に暮れてしまいました。

この本はそのようなマッチョなアクティビティに対してMVPパターンを適用することでテストが書けるように指南してくれます。Androidアプリのテクニックとして他にMVVMや、RXや、DIなどがあるけども、まずはMVPにしましょうと提案しています。MVPを一度通ればそこからMVVMに発展させるのはその延長線上をいけばいいし、MVPで作ればDI使わなくてもテストが書けると筆者は主張しています。MVPが現実的で有効なデザインパターンであるから、まずはMVPを目指しましょうということです。

実践的なテクニックの数々

MVPのデザインパターンについて説明をした後は、実際にMVPに変更していくにあたって開発者がぶち当たるであろう困難の解決策を提示してくれます。これが、あるあるのオンパレードで実際に私が作成したアプリにも適用がたくさん出来ました。恐らくどのようなアプリであっても、外部ライブラリやタイマー、コールバックなどを使用して開発しているかと思いますので、実践的であるけれども、汎用的な価値のある記載を見つけることが出来ます。

UIテストも書けるように

この本のおかげでユニットテストは書けるようになりました。そしたら欲が出てきてもっと広範囲なテストを書きたいと思うようになりました。この本の最後には、「次のステップへ」ということでEspressoを使用したUIテストが少しだけ記載されているのですが、これがそんなに難しくなさそうだったので私もUIテストの実装に挑戦し、いくつか書くことが出来ました。アプリをMVP化せずに、いきなりEspressoを使用したUIテストを書こうとしていたら恐らく挫折していたと思います。MVP化したおかげで、コードの役割が明確になり、ユニットテストとUIテストのカバーすべき範囲が見えてきました。

テストが書けるようになるとソフトウェアへの信頼性がぐんと上がって、プログラミングの満足度が上がりました。今までは、自分で書いたコードですが、アプリに対して自信が持てない状態でしたが、テストがあることで不思議と自信を持てるようになりました。生きた仕様書としてのテストは他の開発者のためだけでなく自分にとっても意味のあるものだと気づきを得ることが出来ました。

スポンサーリンク
プログラミング
ヤマカワをフォローする
タイトルとURLをコピーしました