Android開発で泣かないための「テスト」の重要性より
第1回Androidテスト祭りレポート その自由度の高さや多様性ゆえに、さまざま
な課題を抱える、Androidアプリ開発の“テスト”に焦点を当てたイベントの模様
を紹介します
「わははは。まさにギャグだな」
「ギャグ?」
「前から思っているが、テストの視点を欠落させることがIT詐欺の定番の1つだ」
「どうしてそれが詐欺になるの?」
「誰でも3秒で思いつくような実用性が低いアイデアを、未来の本命として売り込むためには有効だからだ」
「なぜ実用性が低いのに、本命と言い張れるの?」
「だからさ。自由さや多様さっていうのはテストの手間が爆発することを意味する。しかもソースを1文字でも書き直したらテストは最初からやり直しさ。もし、テストの手間が極めて大きい場合、それは許容できないコスト高になって実用的では無くなる。しかし、テストの重要性という概念が無い人たちは簡単に騙せる。もともとテストという概念が無いんだから。コードは書いてコンパイルしたら出来上がりと思っている人たちはすぐ騙せる。IT詐欺としてはとても使い勝手がいい。定番の1つだ」
「定番の1つってことは、前例があるの?」
「いくらでもある。いちばん分かりやすいのがJavaだろう。JavaはWrite Once Run Anywhereと言ったが、そのうちにWrite Once Test Anywhereと陰口を叩かれるようになった。もちろん、あらゆる環境を揃えてテストできるのは大手の大規模部隊に限られるが、それでもマイナーな環境は取りこぼされる」
「それって無理じゃん。すべての環境でテストするなんて無理じゃん」
「そうだ、だから無理なんだよ」
「そうか。無理を通せば道理が引っ込むわけだね」
「そうだ。結局、それが理由でJavaは一定以上の成功を収めることができない。成果を期待して参入した人たちに言った通りの成果を差し出せないのだからね」
「なるほど」
「そういう意味で、Androidも同じだ。要するにJavaの失敗を何ら学ぶことなく、同じ失敗に自分から突っ込んでいった」
「どういうこと?」
「実行環境のバリエーションが多すぎてテストしきれないという意味では同じことだ。大手はある程度対応できるだろうが、弱小ソフト開発者は死ねと言っているのと同じだ」
「でも支持されているじゃん」
「こちらが驚くほどのハイペースで支持が減っている」
「そんなに?」
「まあ未来は不透明だがな」
オマケ §
「じゃあ、君はどう対処しているんだい?」
「簡単だ。ソフト開発の手間の半分はテストという認識だ」
「半分は多いのじゃないか?」
「おおざっぱな考えだ。それにけして多くは無い」
「そんなに?」
「そうさ。でも、それですら、十分にテストしているとは言いがたい」
「まさか」
「まさかと思うのは、世間の常識がテストを軽視しすぎているということさ」
「ぎゃふん」
「ちなみに、テストのコスト対策にどう対処しているかは企業秘密だ」
「ここから先は入っちゃダメよ、ってことだね」
「ある意味で最重要の領域だからね」