2012/09/08 #atest_hack に参加してきました

 主宰の id:sakura_bird1 sakura_bird1 さん
その他 登壇者の方々 、参加者の方々、ドリコム様お疲れさま&ありがとうございました

 総括まとめ的なコメント

  • 「全体的に Androidテスト初心者向けのお話が全然なくてすみません(ぺこり」

な感じですかねー。自分のも含めて(汗

 テスト自体を全く遣られていないという方には
snskさんや sassy_watsonさんやsue445さんの話は凄くいいのかもなとは感じた

alterakey さんのお話は圧巻。名古屋の人もマサカリ投げなかったくらいw
Robolectricをガチで使った話は見た事がないので後で読み直すべき資料。
Groovyはさておきみたいな


まず 詳細はまとめをみていただくとして

 やはりLTの中身よりも端末の話がウケてましたねー(苦笑
身近に実感できる物のお話は確かにw


 何点か名古屋からマサカリ飛んでたのでちょっとコメント
さすがにアレ中は余裕無かったorz


 「テスト観点=テストをしたい事=状態を知りたい事」
という感じが正確かも。TDD界やQA界での「テスト観点」という言葉の使い方とは
一致しない、正しくないかも知れない

 snskさんも話されていたけど

  • 「3回以上確認する事=>テストを書きましょう」

これは真理かもなと。特にver上がった事の動作保証が無い訳ですし
どちらかというと「ライブラリ評価」という形のテストの表現が正確だったのかも。

 きょん様の質問は、出来るだけ質問してくれる姿勢はすばらしいと思うのですけど*1
答えにくい質問も実は多いかな と感じたのは正直なところ



 ここに関しては

  • 初学者=GUIを使う*2
    • Android標準で用意されているのはbuild.xmlだよね。
    • Gradleはコマンドラインとしてはすばらしいけど・・IDEサポートはSTSじゃないと駄目
    • 従って build.xmlのコマンドをくるむ形でバッチファイル的にgroovy使った
  • というのがデモムービー。
    • 手動めんどいよね=>Groovyスクリプト経由なら adb shellの自動化とかも楽さ

今回はQuickTimePlayerで録画した感じですけど、alterakey さんみたいに
movに文字入れるのは別途有料ソフトが必要らしい・・・・(当たり前ですね・・



    • cmd.execute版


  • スクリプトがうまく動かない場合は
    • local.properties等がUTF8になっていないかも=>UTF8で保存して!
    • sdk.dirの場所が違うかも=>書き換えて!
    • srcがUTF8でないかも=>MultiTextConverterで一括UTF8置換!*3
  • でも今回時間間に合わなくて出来なかったのは
    • monkeyrunnerをgroovyスクリプトで動かす=>スナップショット取る

とかあたり。現在動いているGroovyScriptに動的にライブラリが突っ込めないからな・・
ライブラリを通して =>別のGroovyScript起動 はいくらでも見るし、書いた事もあるんだけど・・

  • 最近のandroidの開発だとライブラリプロジェクト、テストプロジェクトと分ける感じなので
    • IDEAが使えない>< *5

 IDEAやmike_neckさんも紹介されてたAppCodeもリアルタイム補完が凄くすばらしい
と思うのですけど*6

 ライブラリプロジェクトに関しては カヤックさんのNakaMapを含めてだいぶ増えている気がする
jarとかで提供するよりはかなりフレキシブルな提供の仕方ですばらしいと思うんだけどな。
テスト観点からすると不確定要素が増えるのでカオスっぽくなりそうですが・・*7




  • ここら辺は資料の不足かもしれないので見直す処



  • Mediation自体は広告を自前で切り替える仕組みです。
    • 配信比率を一応パーセントで設定できるけど偏るよ、テストしづらいよ という話*8
  • AdStirさんとか同様のサービス提供している処もあるけど、AdMobで遣った方が無料・情報が多いしカスタムが出来るよう

というお話ですね。さっと流してしまったのでなおさら分かりづらかったかも
この手の話は人を選ぶので難しいですね*9

  • 正確には、IOSのAdがAndrodより高いという意味です。説明が悪かったかな(汗

  • これは記載漏れ
  • Q)あとライブラリプロジェクトの評価なのに、なんで普通のプロジェクト経由で評価しているの?
  • A)Activity(表示)に依存してしまうテストだったから
    • 表示が見えてなんぼのテストたったりもする*10

とか出てくるんですが、TestCaseやAndroidTestCaseレベルで書くのが厳しい・・。
Adなんか特にWebViewな訳ですしね・・・。

  • 資料の参照先が消えたので del

以前は[ @ さんが書かれていたような

な話はする必要がなく、ADTやbuild.xmlがライブラリプロジェクトlibsを見てくれるようになったので
楽になっている面もあります




 懇親会でも色々とお話し聞いたのですけど

  • Androidテスト自体初学者*11で一から実装等を知りたい人

もそれなりにいるんだよな・・・と。物を作ったり、サービスを既に始めている人は凄く多いのですけど・・・・

「ググリでテストコードがかけない」
って話に関しては、テスト部の@ITの記事を学生さん等に紹介しても反応いまいちだったので凄く分かる
数学で言う「解法パターンが浮かんでこない」状態。

 実際欲しいのは

  • 大学受験等での「解法パターンの習得」

 現実にお話ししていただけるのは

  • 「テストはこう書くべき」「テストをする為の心構え」って話*12

なおさら煙に巻かれている感じなのかもしれない

 テスト部とかの活動って
こういうテストパターンを集約してく、集めていくとかそういう話が出来たらいいのになとは端から見てて思う。
Androidテストを書く人口が増えてくるのかも

 Testterの開発もコアメンバ以外が結局さわらないので開発中断(終了)の流れのようだ・・・。
仕事でもないのでこういうモチベーション維持は難しいのだろうな・・。
だれか強引に引っ張ってくれる人がいないと、なあなあになってしまう(汗
日本人だと能動的に動くより、周りのあわせてというタイプが未だ多いので
 

  • Googleの新しい技術(テストライブラリ)試してみました

とかだと寂しいよね・・・NativeDriverとかの話も実務でこういうコード書いて こういう風に使っているよ
とかの話が表にでてこないから、あーいまいちだとか感じている人も多いのかなと・・・
試してみましたはよく見るのですが・・

 Androidのテストも
OpenGLやndkやアプリ内課金 自体はテストがない気がするな・・・

代わりに質問していただいたのですけど(汗

  • twitter4jにしてもアプリでどう利用されるか
  • みなさんがどう利用しているか、どうテストしているか

までは見えてないですよね・・。ここら辺は有名ライブラリだから大丈夫!という事で盲信している面も多々(苦笑


備考)

アプリ内課金のお話も聞けて凄く参考になった

  • 一応minSDK:4の形で動かせるが・・・*13
  • biringServiceとの通信が上手くいかない
    • 決済までは行くが、「決済完了」のメッセージが受け取れない
    • minSDK:8にするとなぜか動く・・。

ここら辺は多分端末のSDK_INTバージョンを見て動く*14という仕様にしてもらえると良いのですけど
minSDKみて対応されているコードが存在するのかもな・・

 開発側からしてみれば、日本はUnityとか高端末専用なの除いて
低い端末で遊んでいる人多いので

  • apkとしては動く
  • 対象サービスが動かない

が正しいと思うのですよね

 あと返金の仕組みも自分で実装とか今一なんですけどね・・・

  • Ad出せない =>アプリ内課金でやろうず

と安易な流れになってしまうのが正直微妙な線なので



 仕事の面で見てると

  • Androidは未だ低端末で遊んでいる人が多い
  • OpenGL,NDKとかNativeActivityに寄せようぜ
    • OpenGL:WebView重ねるとチラつかね?
    • NDK:C++レイヤーでWebViewだせないよなー

という流れを汲んで

  • アプリ内課金しようず

な決定をしようとしてるプロジェクトもあるな。。。
端から見てて微妙だと思うんですけどね。決済だけは良いと思うんだけど。


あと課金するものにもよるかな。

  • 死んだ場合のコンテニュー
  • 時間が経つと1時間程度で回復するが、直ぐ回復できる高速アイテム*15

がそれなりに手間をかけずに課金してくれるもので不満が出にくいかと。

モバマスのように

  • きれいな所有欲を誘うカード

とかだとイラスト作るとか含めて大変かも><

*1:殆ど質問が出ない勉強会は実は多い

*2:コマンドラインやvi、emacs等は厳しい

*3:antはutf8対象だよ

*4:後日使い方読んだらjavadoc等は別DLしてDocsにパス追加する形式らしい。あの説明だけだとわからんわな。。

*5:1プロジェクト1ウインドウなので・・

*6:有料だから当たり前かも

*7:カヤックさんのサンプルもアプリプロジェクトとセットだよな

*8:乱数で遣っているにしても乱数初期化してない疑惑。PHPプログラムとかでよくあるかな。同じような現象

*9:お金に絡む話より技術的に高まる話を聞きたい という人も多いのかも

*10:ライブラリ的に初期化はOKでも表示されないとクリックされないので<汗

*11:もしくは書いてない人

*12:ケントベックの本とかすばらしいのですが

*13:端末としてはtarget:8

*14:もしくは動かさない、エラーを返す、biringSerice起動失敗させる

*15:ミリオンアーサーとか辺り