収録時間: 42:37 | Download MP3 (20.9MB)
伊藤直也さんをゲストに迎えて、iOS アプリのレーティング、エンジニア向けバックパック、Boxen、テストなどについて話しました。
- Eff Your Review
- App Store ratings are broken, let’s get rid of them
- nicklockwood/iRate
- nicklockwood/iVersion
- Apple Can't Ban "Rate This App" Dialogs
- ntaku: 軽微なアプリのバグはすぐに直して申請したいと思いつつも...
- Developers Seeing Influx Of Unexplained 1-Star Ratings
- 重い鞄の斜めがけで椎間板ダメージ疑惑とバックパックのススメ
- BOXEN
- BrewfileでHomebrewパッケージを管理する
- テスト考2014
- Testing like the TSA by David of 37signals
0:00
miyagawa: 今日からマイクが新しくなりましたね。naoya さんの。たぶんちょっと、というかかなり、声の音質がよくなったと思いますけど。僕が前使ってたやつで、Rebuild のサイトにいったときにアートワークのとこに写ってるマイクがあると思うんですけど、あれを使って。
naoya: いただきました。R2-D2みたいな形してますね。
miyagawa: ちょっとインテリア的にいいですよね。
naoya: うん。かっこいい。新年初ですかね。
miyagawa: そうなんですよね。まあちょっと、連休が長かったんでだらだらしてたんですけど。まあ今年も、いつも通りの感じでやっていきたいと思いますんで、
naoya: 去年一年で27回やったんすかね。
miyagawa: そう、28回ですね。
naoya: 28回。あれ、何月くらいに始めたんでしたっけ?
miyagawa: 2月か3月ですね。だから基本的にはもう、2週間に1回、あるいはそれ以上のペースでやってたんで。
naoya: うんうん。じゃあ今年もずっとやると30回くらい?
miyagawa: そうですね。もう年末には、50、60くらいになってる、と。
naoya: すごいな。
miyagawa: すごいすね。まあ途中で飽きると思って始めた(笑)
naoya: (笑)そうね、よく続くなぁ、と。
miyagawa: よく続くよね。びっくりしますけど
01:27
miyagawa: こないだ、なんかあの、iOS の通知がうんちゃら、みたいな話がちょっと盛り上がったんですけど。
naoya: はい。
miyagawa: なんか、もう一つ iOS ネタで、海外のブログでは一ヶ月前に盛り上がったネタがあって、Apple の AppStore のレーティングの話なんですけど。
naoya: ふんふん。
miyagawa: 一番最初の発端は、AppStore、というかアプリを立ち上げたときに、何回かに一回の割合で、なんかしようとしたら「レーティングください」みたいな、
naoya: うん、出る出る。
miyagawa: 五つ星のレビューお願いします、みたいな感じのダイアログが出てくることが結構あって、これはみんなうざいから、このレーティングダイアログを出すアプリに一つ星をつけようみたいな、
naoya: (笑)
miyagawa: そういう、キャンペーンみたいなのがあって、
naoya: はいはい。
miyagawa: そこでちょっと盛り上がってたんですけど。なんかそういうの結構ある、ありますよね?人気があるというか。そういう、デベロッパーがそういうのつけたがりますよね、基本的に。
naoya: うん、そうなんですよ。結構こう、個人で作ったアプリはあれなんだけで、会社で作ってるアプリとかだと、会社によってレビューの数とか、星で何点とったか、というのを、チームのKPI っていうのかな、目標にしてる会社も多いんですよね。だからそうすると、レビューをユーザーにたくさん投稿してもらおうといって、やっぱああいう導線をつけたがるっていうのは、かなりあるんですよね。
miyagawa: そうそう。でもだからといってこう、毎回起動時とかに出るとさすがにうざいんで、一応ちょっと工夫してあって。ほとんどのデベロッパーが、iOS の場合はこの iRate っていうライブラリか、もしくはそれに似たものを自作したりとかして使ってると思うんですけど、ちょっとの期間使っていて、この人はこのアプリ気に入って使ってくれそうだなぁ、みたいなタイミングで出す、っていうふうには、一応コーディングされてる感じなんですけども。
naoya: そうですね。
miyagawa: うん。だからそういう、よく使ってくれてる人ほど、いい点をつけてくれるだろうという期待のもとに、やってはいると思うんですけどね。
naoya: うん。
miyagawa: なんかでも、こないだある iOS のアプリの作者の人と話してたら、フォトアルバムを作ってる人なんですけど、あまりたいしたことないバグを僕が発見してレポートしたんですけど、もう一ヶ月前くらいからバージョンアップしてなくて、本人も気づいて直していて、ローカルでは直してるんだけど、バージョンアップすると iOS の AppStore のレビューっていうのがバージョンに紐づいているので、レーティングとか、どーでもいいバグで直してアップロードするとそれが一応リセットされちゃう。そういう問題があるので、なんか、多少、もうちょっと貯まってから出したい、みたいな、
naoya: (笑)
miyagawa: すごいモチベーションが下がる要因があるみたいで。
naoya: わかる。
miyagawa: それですごい、お互い不幸な感じだなっていうのを思ったんすよね。
naoya: そう僕も、出してるアプリとか、レビューが20個くらいしかついてないんですよ。
miyagawa: うん。
naoya: でもその20個がだいだい全部5なので、それがちゃんと貯まってれば、ほんとは星が5個ついてるアプリになるはずなんだけど、ちまちまアップデートしちゃってるせいで、しかもAppleってレビューが何個か貯まらないと、なんていうんだろ、トータルの星の数っていうんですか、
miyagawa: うんうん。
naoya: 検索した時に出てくるやつ。あれがなんか、ゼロ扱いになっちゃうんすよ。
miyagawa: なるほど。
naoya: ていうので、僕のアプリはいまだに星ゼロ個扱いみたいなことに…
miyagawa: (笑)結構アップデートも激しいっすもんね。
naoya: で、こないだその、はてブの SDK のバージョン、というのは、僕の手元の方じゃなくて、はてな側のコードにバグがあって、それをチェックアウトしてきて、ビルドしなおしてアップデートしたんですけど。そのときに、またレビューがリセットされちゃって、
miyagawa: (笑)
naoya: 繰り返してます。
miyagawa: それがね…それやっぱり、もう一回新しいバージョンでやりなおして、その評価が検索結果に出てくるわけですもんね。
naoya: そう、だから今、レビュー見にいくとレビューが空になってて、過去のバージョンっていうとこを押すとはじめて見れる、みたいな。
miyagawa: うんうん。
naoya: だからなんか、一見すると「このアプリ全然使われてない!」みたいな感じです。
miyagawa: (笑)
naoya: (笑)
miyagawa: いろいろ AppStore そういう問題が結構あってね、多分もっと初期のころは結構ひどくて。アプリをアンインストールしようとすると、レビューするダイアログが出てたと思うんですよ、すごい昔の iOS って。
naoya: あ、そうだったっけ。
miyagawa: うん。だから、それってもう、悪いレビューをつけてくれ、って言わんばかりの感じじゃないですか。
naoya: (笑)まあ、一番嫌なときに。
miyagawa: さすがにそれはなくなったけど。まあなんか、そのキャンペーンというか、それが海外のブログとかポッドキャストとかでちょっと盛り上がったせいでもあるんですけど、iRate っていうのはダイアログがバンッと出てきたときの選択肢が確か3つあって、はい、レーティングしますっていうのと、いや、今はいいですっていうのと、最後は、もう金輪際聞いてくれるなっていうオプションがあるんだけど、なんかバグってるというか、バージョンがあがると「金輪際聞いてくれるな」っていうのがリセットされちゃって、
naoya: あー
miyagawa: それがバグったのか仕様なのかわかんないけど。いらねーっつってんのに、次のバージョンあげるとまた出てくるっていう感じだったのが、一応その影響を受けてというか、そのアプリでは決して聞かないっていう風に仕様は変わったみたいですね。
naoya: なるほど。しかもあれ、モーダルダイアログなんですよね。
miyagawa: そうなんですよ。それが一番問題で、例えば、About 画面とか、クレジットみたいな画面とかに、こっそり「5つ星つけてね」みたいな導線を張っておくのはいいと思うんすけど、モーダルだとね、なんかしようとしたときに出てきて、完全に止められちゃうから。
naoya: Facebook Messenger がモーダルで、メッセージ書いてるときにボンッとか出てきて、
miyagawa: (笑)
naoya: (笑)「いや、今レビューしてるヒマないんだけど」みたいなときにね、バンッと出てきて、イラッとするみたいなのありましたけど。
miyagawa: そう。おもしろかったのが、Instagram の Instagram Direct っていうメッセージングみたいなやつを発表している発表会のときに、CEO の Kevin がプレゼンしてたら、「レーティングしますか?」っていうダイアログが出てきて、
naoya: (笑)
miyagawa: 一瞬ウケたっていう。多分あれも、一回前の晩とかにデモ用のマシンにインストールして、一応ちゃんと動くかどうか導線を確認して、で本番に向かったら、「あ、この人は一回、一晩使ったからいいだろ」っていうタイミングでバッてダイアログが出ちゃって、すごい悪いタイミングなんだよね。
naoya: そうなんですよね。
miyagawa: あんまりね、Android ではこういう問題って、ストアの問題は別にあるとして、あんまりダイアログは出てこないんですよ。
naoya: Android のときって、レビューしてください、って言われないんですか?
miyagawa: 言われるアプリは、ゲームとかだとたま~にあるんですけど、多分この iRate みたいにユニバーサルに使えるスタンダードなライブラリがないので、大手のゲームメーカーとかは自分で作ったのがあるけど、ほとんど出ないっすね。
naoya: なるほど。iRate と別に iVersion ってやつがあって、それはレーティングじゃなくて、アプリがアップデートされたときに古いバージョン使ってるユーザーに「アップデートされたからアップデートしろ」っていうのを通知するライブラリがあって、
miyagawa: はいはい。
naoya: それもなんかこう、なんていうのかな、「今はいい」とか、「キャンセル」みたいなのがあって、ユーザーがいい感じのタイミングで出るようになってますよね。で、同じようなのあるんだけど、iRate とか iVersion とか組み込んだんだけど、僕個人的に「これちょっと難しいな」と思ったのは、自分でデバッグ、デバッグじゃない、ドッグフーディングっていうんですか?
miyagawa: うん。
naoya: 自分自身で出す前に使っててもそのダイアログがほとんど出てこないから、1回「いいや」とかやっちゃうと。なんか、それが如何にウザいかっていうのを自分で分かんないっていう問題があるんですよね。
miyagawa: そうだね。
naoya: で、ユーザーに配信してはじめてユーザーが「これうざい!」とか言ってて気づいちゃう、みたいな。
miyagawa: これって、アップルのガイドライン的にどうなのかなっていうのがちょっと気になってて、
naoya: ガイドライン上は多分大丈夫なんだけど、カンファレンスかなんかで、あんまりモーダルダイアログでそういうことやるな、って、
miyagawa: そうそうそう。
naoya: 口頭で言ったみたいな記事、読んだことあるな。
miyagawa: だから、逆に言うと、Apple のレビュアーの人がレビューしてる間に出て、却下されるということは、まぁないとは思うけど。そういうポリシーに変えた場合は、そういうパターンもあるわけで。
naoya: まあでも最近ね、そういうのでレビューで落とされるの嫌がって、なんていうの、Apple の人がレビューしてるときには走らない、みたいなフラグをつけてやってる人すごい多いですからね。
miyagawa: そういうチートがありなのか、っていう気もするね。
naoya: ダメだと思うけど…
miyagawa: (苦笑)
naoya: よく、広告系のアプリで、ブラウザに一回飛ばしてランディングページ踏んで、ビーコン飛ばしてからとかいうのよくやってんだけど、それをレビューの間にやると Ban されるから、裏でサーバーサイドで制御してその間は飛ばないとか、
miyagawa: すごいねぇ。
naoya: そういうことやってる人多いんですよ。
miyagawa: 激しいチートだね、それは。
naoya: まあそもそも、Apple のレビューが厳しすぎるっていう問題があるとは思うんだけど。
miyagawa: うん。なるほどね。
naoya: でも結構こういう、マーケティング系の施策っていうんですかね、「レビューしてください」とか、は、ガイドラインもしかしたら載ってるかもしんないけど、案外緩いっていうのも一方ではあって。プッシュ通知って本当は広告に使っちゃいけないんですよね。
miyagawa: うん。
naoya: 新しいの出たよ、とか、買ってください、とか。でも結構ばりばりみんなやってて、多分 Apple の中の人はプッシュ通知のなかの文言まで関与してないから、
miyagawa: そうなんだよね。そこはレビューでは弾けないから、現状許されちゃってるって感じだけど。
naoya: そうそう。結構そういうせめぎ合いっすね。
11:29
miyagawa: そうだね。Androidでもね、こないだ年末くらいから、Google の Play ストア、AppStore みたいなところの、アプリの詳細画面のところにクイックレーティングダイアログみたいなのが出てきて、レビュー書かなくてもとりあえず星だけつける、みたいなウィジェットができたんすよ。
naoya: うん。
miyagawa: それをきっかけに、1 star のレーティングをする人がすんごい増えたっていって、文句を言ってる開発者の人がいて、そのレーティングが邪魔だから 1 をつけたのか、使い方が分からなくてとりあえず 1 押したのか、よく分かんないけど、
naoya: (笑)なるほど。PS Vita の PlayStation なんだっけ、マーケットあるじゃないですか、あそこのゲームもそういう「レビューを書かなくても星だけ投稿できる」ってやつがあって、それであそこは逆にほとんど 5 なんですよ、レビューが。
miyagawa: へぇ。
naoya: だから、全然参考になんないんですよね。どのゲームも星 4 か 5 ついてて。微妙に、クソゲーだと星 4 くらいになってて、おもしろいと 4.5 くらいの。0.5 刻みの間にすごいユーザーの評価が貯まってて。
miyagawa: それはそういうコミュニティなんですかね?
naoya: わからない。もしかしたら、ちゃんと見てないけど、星つけるときの UI で 5 個とかがつけやすいとかかもしれないんですけどね。
miyagawa: なんかありそうだね。
naoya: 割と結構その、デフォルト値がどっちに寄ってるかとかで、どのくらいの値が平均値になるかっていうのは、
miyagawa: どうやったら 5 を押させやすくなる UI になるんだろ。
naoya: わかんないけど。
miyagawa: 5 の方にこう、すごい寄ってるとか。
naoya: 最初全部 5 になってるとか(笑)
miyagawa: (笑)それあるかもね。デフォルト値が 5 になってて、無視すると 5 になるようになってるとか。
naoya: だから逆にそれで、レビューの書き込みもほとんどないんで、全然参考にならなかったりする。そっちは。
miyagawa: そうね。でもそもそも星 5 個の評価ってどうなのかなっていう気もして。例えば、2 とか 3 とかに意味はあるのかっていう気もするし。1 と 4 と 5 でいいんじゃない、っていう気がするよね。
naoya: 確かに。食べログの謎の、3 から 4 の間にすごいひしめいてる、
miyagawa: そうそう。4.0 はすごく良くて、3.2 とかだとあんま良くないとか、そういう感じじゃん。食べログって。
naoya: あれって、食べログでスコアつける人はその店を絶対評価してるんじゃなくて、自分の中のレストランの…
miyagawa: 客観視ね。
naoya: そうそう、レパートリーのなかから、「あそこのレストランは 5 だけど、ここはラーメン屋だから、まぁラーメンだったら 3 かな」みたいな基準でつけてるからああなってんですよね。
miyagawa: あと、高い店ほど評価も高くなる、みたいな、そういう感じあるよね。
naoya: そうそう。
miyagawa: そういう意味でいうと、AppStore とかも有料アプリとかの方がレビューをする人のリテラシー、とまで言うと言い過ぎかもしれないけど、有料アプリの方が評価するまでの敷居がちょっと高いから、
naoya: あ、それよく言われます。
miyagawa: どうでもいい点をつけることが少ないんじゃないか、っていう仮説もあるよね。
naoya: いやそれ多分実感として実際そうですね。有料もしかもフリーミアムの有料じゃなくて、買うときの有料ね。
miyagawa: そうそう。
naoya: あれにすると結構、そもそも買ってくれる人が少ないからっていうのもあって。やっぱり無料で買って、「なにこれ動かない」とか言って、「クソアプリ」と
miyagawa: (笑)
naoya: (笑)レビューするユーザー結構多いっすから。特に日本だと。
15:02
miyagawa: いやでもそれ、日本だけじゃないんですよ、最近は。
naoya: あ、そうなんだ。
miyagawa: 英語圏でも、「Doesn't work」とか言って、1 star みたいな。まあ Google Store だとほんと多くて、「Galaxy S4 で動かない。ゼロ」みたいな。
naoya: (爆笑)あるわー。
miyagawa: あるある。あとまあちょっとね、ネタっぽい話なんですけど、僕の Podcast もね、 iTunes Store でレーティングがあって。皆さん五つ星をつけてもらってありがたいんですけど。1人だけ星一つの人がいるんですよ。で、その人のレビューは見れないから、なんで 1 なのかは分かんないんだけど。
naoya: うん。
miyagawa: 昔聞いた面白い話で、イギリスは学校とかのスコアの付け方が 1 から 5 までだったら 1 の方がいい評価らしいんですよ。
naoya: (笑)なるほど。
miyagawa: 初期の AppStore で、イギリスだけ異常に一つ星が多いとかいって、いいアプリなのに。でよく調べたら、間違えてみんな 1 がいいと思って出してる人がいたらしいっすよ。
naoya: 通信簿が 1 がいいか 5 がいいかみたいな。
miyagawa: そうそう。そういうネタがありましたけどね。ま、レーティング話はこんな感じですかね。
naoya: この Rebuildfm 聞いてて僕のアプリ使ってる人いたら、ぜひレビュー 5 を投稿してください(笑)
miyagawa: (笑)そうだね。小さい、個人でやってるデベロッパーとか、そういう評価が結構モチベーションになる。
naoya: むしろ僕の場合ね、広告も貼ってないし無料で出してる、完全ボランティアアプリだから、それだけが唯一のモチベーションだったりするんで。付けてほしいなぁ、とか思ったりしますけど。
16:53
miyagawa: さて次。先週 Twitter で盛り上がってた、カバンは斜めがけがいいかバックパックがいいかっていう話が。Twitter で「次の Rebuild で話してほしいな」というツッコミが3~4件ほどあったんですけども。これはどういう話かというと、t_wada さんが、レントゲンを撮ってみたところ椎間板に対してダメージを与えている可能性があると。それは何でかって言うと、普段 MacBook Pro とか、iPad の第四世代だから、ちょっと重いやつですね、などなどが入ったカバンを斜めにかけているので、それが問題じゃないか、という Tweet をしたことに対して、バックパックがいいですよ、と沢山ツッコミが入って。Togetter とかにまとめがあるんですけど。
naoya: あれなんか、すごいリプライの数でしたね。僕もしたくなった、いやしちゃったんだけど。
miyagawa: そうなんだよね。なんか、ついついこう「俺はこうしてるぜ」っていうのを、突っ込みたくなる話題なんだけど。
naoya: Bikeshed 的なところもあって。
miyagawa: そうだね。僕もご多分に漏れず、まったく同じ状態だったんですよね。
naoya: あー、前聞きました、それ。
miyagawa: 2010年…まぁずーっと、肩掛けを使っていて、昔はもっと荷物が少なかったんですけど。MacBook、僕の場合は Air なんで Pro よりも軽いんですけど、やっぱ iPad を持ち運ぶようになったころから結構その辺がきつくなってきて。しかも、右の肩にずっとかけてるからバランスが悪いっすよね。両方じゃないから。さすがにこれやばいな、と思ったのは、作業してると左腕のとこがしびれてきたりとか、
naoya: おおお。
miyagawa: 病院も一回行ったんすよね。関節炎みたいになってて、親指と人差し指の間とかが曲げるとものすごい痛かったりとか。なのでバックパックにして。まあそれで全部が解決しましたってわけじゃないんすけど、それでかなり改善したってのはありますね。
naoya: なるほど。
miyagawa: naoya さんも重いの持つときはね、バックパック使ってるって言ってたけど。
naoya: そうです。僕は自転車に乗って通勤するようになって、そのときにバックパックにしたんですけど。すごいいいですよね、バックパック。
miyagawa: でも日本の人の、突っ込んでる人のなかには、「電車乗るときにちょっと邪魔だ」みたいなことを言ってる人がたまにいてね。
naoya: まあ確かに、満員電車だとね。バックパックすごい嫌がられるっていうのは。
miyagawa: でもまあ、一応前にまわせばいいしね。
naoya: あと、せっかく Mac だと、僕 Pro だからあれだけど、Air とかだとスッと取り出してパッと開いて、とかやりたくても、バックパックだと結構奥にしまってるからすぐに取り出せない、みたいなのがあって。
miyagawa: はいはい。
20:01
naoya: それでトートバック使ってるって人が結構、見てたら多かったけど。
miyagawa: 確かに。でも、僕が使ってるバックパックは横にラップトップ入れる用のスライドするところがあるんで。
naoya: 横?
miyagawa: うん。背中のちょうど一番背中側のところに、横からスライドインできるバックパック用のコンパートメントがあるんすよね。
naoya: なるほど。
miyagawa: で、ちゃんとこう、厚い生地であるんで、そんなに背中も痛くないし。
naoya: それって、MacBook を入れるっていうよりかは、本来、水とかを入れるとこなんじゃないですかね?違うのかな。
miyagawa: いや、これは完全にラップトップバックで、そういう風に宣伝されてるね。
naoya: あ、そういう専用のバックなんだ。
miyagawa: ま、そういう違う、登山用とかで本来は別の物入れるところに入れるっていう人もいると思うんすけど。僕のやつは完全にラップトップ用ですね。
naoya: なるほど。今はもう、パタゴニアの完全登山仕様なんで、雨が降っても全然濡れない、みたいな、そういうやつですね。
miyagawa: いやー、このツッコミ入れてる人は、多分みんな30代後半みたいな感じの(笑)
naoya: アラフォーエンジニア(笑)
miyagawa: おっさんほいほいスレになってるけど。
naoya: MacBook は重い問題。
miyagawa: まあでも、PC とかは年々軽くなってはいくじゃないですか、基本的には。でもね、ここで書いてる人は結構 MacBook Pro、Retina の前の MacBook Pro 15インチとかさ、異常に重い物持ってたりとか。
naoya: あと 17 とかね。超でかいやつ。
miyagawa: そうそうそう。あとは、ガジェットの数が増えると、ガジェットが1個増えるととりあえずそのためにバッテリーが2個必要とかさ、なんかどんどん増えていくじゃないですか、基本的に。
naoya: うん。
miyagawa: だからまず、荷物を減らすのがまず最初だと。
naoya: (笑)
miyagawa: ちょっと思ったけどね。
naoya: 弾さんとか出かけるたびにガジェット10個とか持って歩いてんすよ(笑)
miyagawa: (笑)
naoya: なんか意味ないよね、ガジェットの方が軽くなっても。
miyagawa: そうそうそう。せっかく、軽くなってるのにね。物が増えすぎちゃってるから。
naoya: なんか、カバンだと櫛井さんがブログに書いてた…なんだっけな。斜めがけなんだけど、パッと置いてすぐ開いて使えるみたいなカバンがあって。Evernote がプロデュースした OEM 版があったりとかするやつが。
miyagawa: 撮れるカメラバックみたいなやつ?
naoya: ああ、そうそう!それが結構人気あるみたいだけどね、ブロガーの人たちにはね。
miyagawa: なんかね、あれ、もともと日本でいしたにさんとかが作ってたやつをいま、Evernote が Evernote ブランドで売ってるんすよね。
naoya: あ、そっかそっか、いしたにさんが作ったんだ。知り合いの人たちと。
miyagawa: うん、そうそうそう。そんな感じらしいっすよ。
naoya: なんかすごくいいってみんな書いてるけど。でも、あれ買って持ってたらすごい確率でカブりそうだから(笑)
miyagawa: (笑)そうそう、それ結構問題で、あのスレッドでいっぱいバックパックとかカバン紹介されてんだけど、すごいカブる率高そうっていう。
naoya: (笑)
miyagawa: ありますよね。
naoya: そうね。
miyagawa: 僕はオーストラリアのブランドをアメリカで買って使ってるんですけど。日本でもちょっと、楽天とかで輸入してる業者があるけど、あんまりメジャーではないんでカブる心配はそんなにしてないんだけどね。
naoya: 確かに。結構、パタゴニアとか North Face とかすげー有名ブランドの安いやつ使ってると、すごい勢いでおんなじの持ってる人いますけどね。特に自転車で走ったりしてる。
miyagawa: まぁ、街中で会ってちょっと恥ずかしいくらいなら全然いいけど、何百人とかいるカンファレンスでカブると、荷物を置いたりしたときに間違えられたりしそうでちょっとやだな、っていうのはあります。バックパックに限らずなんですけど、ラップトップとかも MacBook Air そのままで使ってると結構熱とかがきつくて、あげるやつ、ライザーみたいので視線もまっすぐになるようにして、外付けのキーボードも使ってやってるんで、あんまりこう、ラップトップである必要あるのか、っていう疑問も若干あるんだよね。
naoya: (笑)分かる分かる。僕は Retina の Mac 使ってるんですけど、組み込みのキーボードの F キーが効かないんですよ、壊れちゃって。
miyagawa: (笑)
naoya: で、買い換えるかと思ったけど、全然マシンとしては使えるから、だから常に外付けキーボードでやってんですよね。ほとんどラップトップとして…(笑)
miyagawa: (笑)
naoya: じゃないんですけど。
miyagawa: そうそう、それはかなりある。
naoya: だからほんとはね、iCloud とかがもっと進化して、完全にデータ手元になくて、どこに行っても同じ環境で使えるって状態になって、
miyagawa: そうね。
naoya: それこそ Mac Pro みたいな高性能なマシンでいつでも開発できるってのが一番理想的なんだけど。
miyagawa: そうそう。
naoya: そしたら持って歩かなくて済むしっていう。
miyagawa: なんか、エジケン(@kenn)とか、それに近い感じでやってるよね。
25:06
naoya: 今それしようとすると、どこがボトルネックなんですかね。データはだいぶ、Dropboxとかに寄せるようになったんだけど、開発環境なんですかね。
miyagawa: だろうね。マシンがローカルのソフトウェアのバージョンが微妙にずれてたりとか。あと、Dropbox 、昨日からすげぇ落ちてるし。
naoya: そうなんだ。
miyagawa: あと、git にコミット、毎回仕事が終わる度に、きりのいいとこでプッシュして、家に帰ってその続きから、みたいなことが出来れば一番理想的だけど。なんか、電車のなかでちょろちょろやってて、今ちょっと電波とおんないからプッシュしないで、なんか開いたら、「あ、まだこれプッシュしてなかった」みたいな。
naoya: あるある。
miyagawa: そういう、行った来たりはうざそうだな、ていう。
naoya: あと stash に入れてて、入れてるの忘れて、すっかり忘れて「あ、あれ取り出したい」って言っても無い、っていうの結構ありそう。Boxen とか、そういうのを使ってローカル環境も再現可能にしましょう、っていう感じにはなってきてるけど、その辺が進めばもしかしたらマシン持ち歩かなくてよくなるようになるかもしれないけど。
miyagawa: Boxen とかすごくいいな、と思ったのは、やっぱラップトップ買って開発に使える状況にするのって、だいたい一日作業なんですよね。で、インストールするソフトとかも、覚えといたりメモっといたりするんですよ、テキストファイルに。でも、一年とかたつと「このソフト前回セットアップ時にはいれたけど、あんま使ってないからもういれなくていいか」みたいな感じで、選んだりとか。そういう、ドキュメント化されてない、コード化されてないものがあるっていうのが、最近の Infrastructure as a code とかの流れでいくと、開発マシンになんで手でやってんだ、みたいな感じになるから。そこをコード化するっていうのは、Boxen だけじゃなくて、homebrew とかでも同じようなことできると思うけど、そこは自然な流れではあんのかな、という気はするんすけどね。
naoya: Boxen ね、めっちゃ使い辛いっすよ。
miyagawa: (笑)あれって puppet ベースなんだっけ?
naoya: puppetが原因っていうよりは、やっぱりオーバースペックなんでしょうね。だいたい、Boxen って、本来は GitHub のチームが自分たちのチームの環境を整えるために作ってるんだけど、みんなは自分のラップトップを買い直したときに再セットアップするときに使いたいと。
miyagawa: うん。
naoya: そこにユースケースのギャップがすごいあって、みんな Boxen ちょっと大げさだっていって、brewfile かなんかに書いて、brew bundle ってやると入ってくるっていうのを使ってるって記事をここ一ヶ月か二ヶ月の間によく見たんだけど。でもね、brew bundle だと逆にソフトウェアインストールしたあとの設定とかは chef みたいに出来ないから、ちょっと帯に短したすきに長し、みたいな。
miyagawa: なんか Boxen はその辺の、インストールしたあとの設定とかも出来るような記述を見た覚えが。
naoya: それは出来る。だから、それこそ puppet をそのまま使ってるから、例えば「Development 環境だったらこれ」とか、そういう切り分けとかも出来るし、なんだけど…
miyagawa: 普通に Mac OS のアプリ、GUI のアプリとかも設定できるんすか?
naoya: まあでも設定できるってもたぶんそのファイルが要求する XML ファイルを書き換えるとか、そういうレベルだけど。
miyagawa: あと、Applescript とかで無理やり GUI をいじるとか。
naoya: そうそうそう。そういう感じ。ただね、いろいろ問題があって、Boxen 経由で入れると AppStore 経由で入んないからバージョンアップのときに…
miyagawa: (笑)あー、なるほどね。それあるね。AppStore じゃなくて dmg をどっかからダウンロードしてくると、アップデートがずれる、とかね。あるよね。
naoya: 最近ほら、しかもサイレントアップデートで、勝手にやってくれるからすごい楽になったのに、また一昔前の感じになっちゃうとか。
miyagawa: 確かに。
naoya: だから全然完璧じゃないんだけど。ほんとは dmg 系は全部 AppStore からダウンロードできるようになって、iCloud 経由で同期して、マシン買い直したら勝手に全部入ってるっていうの、多分 Apple が目指してる姿で。
miyagawa: そうね。
naoya: あとは、ターミナルのなかのコマンド類だと思うんだけど、そういうのは brew bundle とかで入れて、みたいな。
miyagawa: あとは、アプリの設定ファイルとかも、ほんとは iCloud で全部やってくれれば、自分で管理しなくていいし、っていう。
naoya: その辺までいけばね。
miyagawa: ほんとはね、そうっすね。
naoya: その辺いやがって、自分の知り合いのなかには、OS X じゃなくて中に Linux VM たてて、それを Chef とかでコンフィギュレーションしてそっちで開発してる、っていう人も結構いますけどね。
miyagawa: まあでも開発って、サーバーを立ち上げるとかはそれで出きるけどね、エディターとかをそこに入ってとかはしないわけで。結局エディターは自分で好きなものを入れて使えるから。
30:02
miyagawa: こんなもんっすかね。
naoya: (笑)
miyagawa: いやまだあるんだけど、ネタ(笑)別に短くしていこう、ってのはないんですけど。
naoya: 最後、CROSS の宣伝も兼ねて、テストの話をちょっとしますかね。
miyagawa: ちょっとだけね。年末にね、エジケンが。
naoya: 江島さんが燃料投下して。
miyagawa: 釣りポストしてたんですけど。「テスト考2014」っていう。これ、僕は書いてる内容については概ね同意なんですけどね。
naoya: 要するに、テスト書きすぎると色々問題があるけど、世の中ではテスト書くことは絶対正義として扱われすぎてて、一回見なおしてもいいんじゃないの?っていうスタンスですよね。
miyagawa: まあ、地獄への道は善意で舗装されている、っていう話があるけど。テストを書く方が書かないよりいいっていうのは普遍的な価値観としてあるんだけど、じゃあ、テスト100% じゃないといけないのか?テスト書きすぎることによって自分の足を打つ、みたいな現象が起きたりするので、その辺のバランスも重要だよね、みたいな感じだと思うんすけど。
naoya: 特にその、江島さんが一番強調したかったのは、テストによってコードの慣性っていうのかな、内部APIとかをテストしすぎるとテストが重くて、アーキテクチャを変えたいようなリファクタリングをするときにそっちがむしろ足かせになるってことを言いたいと思うんだけど。だから、テストっていうのを良いバランスで書いておかないと。
miyagawa: うん。
naoya: いわゆる、テスト書くとコスト高いとか、そういう問題っていうよりは、もっと本質的な問題っていうんですかね。
miyagawa: ただ、kenn の主張のなかに一貫してあると思うのは、テストが必要なコードっていうのは、テストとかコメントとかを必要以上に書かなきゃいけないってのはそもそも良くないって発想があるのと、あと、テストがないと他の人にコードを壊されるかもしれないっていうのは、そもそもいい環境ではないっていう考え方が多分あると思うんですよね。
naoya: うん。
miyagawa: で、その発想のなかにも、一つのコンポーネントは一人が最初から最後まで責任をもっていじっていれば、わざわざテストを書くことによって担保をする必要はないんじゃないかっていう定義だと思うんすよね。まあでも、僕の場合はそこまで自分に対して厳しくできないので、将来の自分が間違って壊すことの恐怖とか、あるいは、とりあえず汚いコードでも動くからいいやってコミットして、テストを書くことによってとりあえずどんどん悪くなっていかないことの担保をするほうが、なんとなく安心できるってのはあって。
naoya: うんうん。
miyagawa: テストを書かなくてもちゃんとメンテできるコードをコミットするっていうのはすごく敷居が高い、自分に対する規律が高くないと出来ないことだな、っていうのは思ってるんすよ。
naoya: それ僕、宮川さんと江島さんのチャット読んでて思ったんだけど、たぶん、二人の仕事、取り組んでるソフトウェアの対象がやっぱ違うな、と思ってて。江島さんって、やっぱりウェブサービスで、しかもずっとひとつのソフトウェアを暫くの間おんなじようにずっと作り続けるようなタイプじゃないですか、仕事が。宮川さんって結構、オープンソースでいろんなソフト作ってて、しかも CPAN モジュールとか自分で作ったやつ過去に100個とかあるから、そうすると、コンテキストが維持できないっていうんですかね。
miyagawa: そうだね。
naoya: で、僕、それはよくわかって、iPhone アプリとか作ってる時は、半年とかずっとそれしか作らない、みたいな時期があるんですけど。
miyagawa: うん。
naoya: そういう時ってあんまテスト書かなくても頭のなかにコードがあるから、怪しいとこわかるんだけど、半年前とか一年前に作ったアプリをいざメンテしようとなると、もう完全に手が止まるみたいな。「何やってたっけ、おれ」みたいな。
miyagawa: そう。そういう時にテストがあって、いい粒度のテストを書いてると、安心して「これが通るからいいんだ」とか、「ちょっとここいじってみよ」と思ってテスト走らせてこけて、「あ、ちゃんとテストされてる」っていうのが安心感があったりとか。そういうのは結構ありますね。
naoya: そうっすね。それで僕も江島さんの書いてることに大体同意で、あと昔、2年前くらいに DHH が「お前らテスト書きすぎんじゃねーぞ」みたいなことを一回言ったことがあって、それも多分、盛り上がったと思うんだけど。要するに、普段の開発のときにテスト書いてる時間の方が長くなってきたら、ちょっと怪しいと思え、みたいな。書きすぎんなよ、ってことを書いて。
miyagawa: はいはい。
naoya: で、ずっと僕もそういうスタンスだったんですよ。トレードオフがあるから、ある程度で妥協というか、切ったらいいんじゃないかと。なんだけど、去年かな、そのことを YAPC で話したら、それを聞いてた若い人が「最近こういうことを言ってる人がいるけどそれじゃダメだ」って。
miyagawa: (笑)
naoya: 「もっとテスト書け!」って反論があったんすよね。だから、「DHH とか結構影響力のある人がこういうこと言ってて、みんなが盲目的にそれを信用して『テストはカバレッジ100%じゃなくてもいいんだ』って思ってる人がいるっぽいけど、自分はそうは思わない」っていうのを、hitode くんだ、はてなの hitode くん。
miyagawa: それ見た気がする。
naoya: そんときは盛り上がったんだけど。でもやっぱ、その人の置かれてる立場みたいなのもあって。
35:27
miyagawa: あるね。
naoya: 最近、hitode くんがって話でもないんだけど、ちょっと感じるのは、僕らって Web アプリケーションとかをそもそもテストも全然書かない時期から書いて、で段々テスト書くようになってっていう歴史を最初に踏んでいった世代だけど。 彼らって、そういう人たちが書き残していった古いアプリみたいなのをメンテさせられたりする、みたいな。
miyagawa: はっはっはっ(笑)
naoya: (笑)そういうところもあると思うんですよ。
miyagawa: 世代間の格差があるんだ。
naoya: そうそう。で、その古い人が書いたコードをパって開いたらテストもなんもなく、しかもアーキテクチャもすごい古くて、超レガシー、みたいな。テスト書いとけよ!みたいなのも、どっかにちょっとあるのかな、って気もする。
miyagawa: DHH が言ってたからって、おっさんとかが「これからはテストはなくてもいいんだ!」みたいな感じ。
naoya: 「それを免罪符にするな!」みたいな。
miyagawa: (笑)それありがちだね。
naoya: まあ、それは半分冗談で。もうひとつはね、僕は最近テストに対しては、メンタルモデルっていうんですかね、何をしようとしてたか、っていうことを表現する場がテストになってきてるから。RSpec とか、BDD とかのおかげで。単純に、ソフトウェアの品質面とか動作を保証するってだけじゃなくて、仕様をもっと本来のコードの方に反映できるようになっていけばある程度テストが減っても大丈夫なんだろな、って気はするんですよね。
miyagawa: そうね。Rails とかでね、Controller テストとか View テストとか書き方あるけど、こんなん書いてなんの精度が上がるのかよく分かんないし、っていうの結構あるからね。
naoya: Serverspec ってあるじゃないですか、mizzy さんが作ってるの。あれがまさにそれなんですよね。アレのテスト自体に、「これが入ってる」とか「80番ポートにバインドしてる」とかっていうテストを書くんですけど、別にそれ chef でインストールしたらその通りになるしテストいるのかな、って思う時があるんだけど。要するに、Serverspec ってテストするそのことよりも、それがテストに書かれてて、テストのコードを見たほうが chef の本体のコードを見るよりも「この chef のレシピが何をしてるのか」ってのが直感的に把握できるんですよね。そのためにテスト書いてるみたいなとこがかなりあって。
miyagawa: あるある。
naoya: 特にインフラ系ってそういう、手で作業して誰もメモ残してないみたいなのがすごいクリティカルになりがちだから。暗黙知を減らすために Infrastructure as a code してて、Serverspec するとそれが更に良くなるんで。でも本来的には、chef のレシピ見るだけで全部分かるのがベストなんですよね。
miyagawa: 逆に言うと、chef を見て分かるんだったら全く Spec を書く必要がないというか。そこの副作用がどうなってるかとかももし分かっていて、レビューするときに皆がそれを「正しいものだ」って分かるんであれば、なくてもいいというか、あることの価値はすごく下がるとは思うんですけど。
naoya: そうですね。ないと二重チェックの役割を果たせないから、ないのは問題なんだけど。このテスト書く必要ないだろな、っていうテスト書いてる時あるんだけどね…
miyagawa: 結構、会社とかで機能を出すときにプルリクエストを出すパターンの一つにあるのが、RSpec の結果で -fs
ってやると、「何をしたら何が起こる、こういうことがここはテストされてる」っていうのが自然言語で出てくるフォーマットがあるんですよね。その結果をプルリクエストのとこに貼るっていうやり方があって。全員がそれをやるってわけじゃないんですけど。そうすると結構複雑なフィーチャーを出すときに、最初にそれを見て、何がテストされてどういうことを実装しようとしてるのかっていう意図が明確になることが多くて。コードの diff だけ見てもね、「なんでここをこう変えたのかな」っていうのが分かんないんだけど、それに対応するテストが書いてあると、「あ、これをこう変えたのはこういう意図なのね」っていうのが分かるんで、それは一つパターンとしてありそう。
naoya: 自分も最近それやってて。プルリクに必ずテストを貼ってから送るってのやるんですけど。
miyagawa: そういう意味で言うと、RSpec のあの記法、あの最初 "it" とかで書くってのが最初分かんなかったんだけど、Perl の Test::More みたいな「ただ assert するだけ」みたいなのに比べると。
naoya: (笑)同じく同じく。
miyagawa: あれ見ても何をテストしてるかちょっとわかんないですよね。だから、自然言語を書く二度手間はあるんすけど、そういうメリットはあるのかな、っていう。まぁ、すごい当たり前の話なんすけどね。
naoya: 最悪なのは RSpec のフォーマットを使ってるんだけど、全然 Spec になってないというか、全然文法的に整合性取れてないテストってのが一番読みづらい。
miyagawa: 僕それ多分ね、RSpec 使って最初一週間くらいそんな感じでしたよ。
naoya: (笑)
miyagawa: (笑) なんでこうなの、"is" とかでいいじゃん、って。"it" とか中身とかすげー適当に書いてたりする。
40:36
naoya: というので、この話をちょっと CROSS で。今週末にあるんですけど。
miyagawa: これ多分ね、配信は今日するとして、1月17日の金曜日にあります。これどこでやるんですか?
naoya: 新宿かな、多分。去年と変わらなければ。西新宿の nifty のオフィスのすぐ隣のビルだと思うけど。
miyagawa: ベルサール新宿グランドってとこらしいです。
naoya: 多分そうです。
miyagawa: 僕も時間があれば顔を出したいと思ってるんで。Rebuild 聞いてて、っていう人がプチミートアップみたいなの飲み会のときに出来ればと思ってますけど。まったく CROSS の人たちの許可とってないんで勝手に言ってますけどね。
naoya: (笑) まあ大丈夫ですよ。あれそもそもボランティアイベントっていうか、一見 NIFTY が開いてるイベントに見えるんだけど、実際 NIFTY もただの最大スポンサーでしかなくて。セッションとかもオーナーが自分で決めるんですよ、どういうことをやるかとか。完全エンジニアのコミュニティイベントなんで、許可とか全然関係ないと思いますよ。
miyagawa: 結構日本的なイベントだな、って思うのが、各セッションのコンテキストがすごいハイコンテキストで。例えば「ぶつかり稽古」とか。
naoya: (笑) 確かに。
miyagawa: Twitter とか追ってないとまったく理解できない前提みたいなのがあって。内輪とまでは言わないけれど。前提があるからこそコミュニケーションが加速するっていうのもあるとは思って。日本の技術コミュニティの特徴を一つ表してるかな、と。
naoya: 技術というか、Web コミュニティですかね。
miyagawa: そうそう。ま、そういう感じで。今年一発目でしたけれども。今年もよろしくお願いします。
naoya: はい、よろしくお願いします。
miyagawa: それではまた。どもー。
naoya: ではではー。
Transcribed by @harupong http://blog.harupong.com/