WIRED(ワイアード)VOL.25 に多数決の話があったので読んでみた。 ここで扱う多数決は、対象の半数以上を大多数とする、という類のもの。幾つかの政治的な実例から多数決の正しさ、妥当さを考えた記事でした。また、コンドルセの多数決を取り上げていました。 こういう分野、行動経済学と確か呼ばれていますね。 多数決では独立性が非常に鍵で、他要素からの影響であったり不正確な情報が入る環境下では正しく判断できない(判断に重み付けが含まれる)というところが難しいところです。そして、WIREDにもここまで言及されていたところが良かったです。 内容自体は修士論文書いていた頃にすでに言われていた(論文として調べていた)ことなので目新しさはなかったのですが、こういう変わり種も載せてくれるところがWIREDの面白いところですね。More
Author Archives: KazuCocoa
[iOS]Run multi simulators with FBSimulatorControl
複数のシミュレータを1つの端末/OS上で起動可能な FBSimulatorControl はご存知の方も多いかもしれません。 それを使った時のメモ。最後の方に、XCTestを実行する時のものも。 installはリポジトリを参考に。 (以下は 0.2.0 のバージョン) listを表示 2つの端末を同時起動 help 以下のPR/議論で、結果の出力フォーマットとしてJUnitなんかを選択できるようになったようです。 formatterのサポート https://github.com/facebook/FBSimulatorControl/issues/281 https://github.com/facebook/FBSimulatorControl/pull/290 また、以下の通り .xctest を対象にすると、XCTestを実行可能なようです。 という形でテストを実行できる模様。 .xctest はAWS Device Farmとかでも使えるコレですね。 http://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types-ios-xctest.htmlMore
[Android]Reactive系のテストではIdlingResourceやっぱり大事
Rx系において、Android向けの物にはRxJavaの他にAgeraがあります。 codelabsにAgeraがきていたので、簡単な学びがてらやってみました。 Rx系のテスト(Espresso使ったUI含む)までも書かれていたので、Rx系学ぶ人には良い材料になると思います。やっぱりRx系のテストコード書こうとしたら、 Espresso.registerIdlingResources と IdlingResource の実装を使った非同期要素を待つ、ということがかけないといけないよなーということを思いました。 対象 codelabs https://codelabs.developers.google.com/codelabs/android-agera/ my repository https://github.com/KazuCocoa/agera-example-android Repositoryに対する処理 AgeraはRepositoryが1つの大事な要素だと書いていました。その中で、複雑なrepositoryを扱う場合は、以下のようになるそう。 https://codelabs.developers.google.com/codelabs/android-agera/#7 この中で、例えば値の変化を観測してそのないように変化があればそれをsetTextに反映する、というところは以下のようになる。 https://github.com/KazuCocoa/agera-example-android/commit/ba11829000bf820a2c34861cfb3e5c9b071a0e78 なるほど。 テストの書きやすさや保守も考えて… このようなAgeraの特徴の他、Rx系はcallback地獄のように入れ子にコードを書けやすいが、その反面そうするとテストしにくかったり保守が困難なコードが出来上がる。そこで、Ageraの例ではそこを対応する方法を紹介している。 https://codelabs.developers.google.com/codelabs/android-agera/#9 他、処理の分散としてメインスレッド外へ処理を逃がすために、 .goTo(mExecutor) を使った処理方法も。 Espressoも使う 最後、UI含んだテストとして、 IdlingResource の実装を使った Espresso.registerIdlingResources を利用した非同期型のこのようなRx系に対するテストコードも書いています。 https://codelabs.developers.google.com/codelabs/android-agera/#11 アニメーションOFFは毎度のご愛嬌ですね 🙂 最後に Reactive Programmingには幾つか世代があり、Ageraはまだまだ、RxJavaは2.0で世代3~4付近だと言われていました。 https://github.com/google/agera/issues/20#issuecomment-212007539 そうはいっても、Ageraを使ったこの題材は、Androidに対してReactive Programmingを入れてテスト書くまでをざっと学ぶことができるので、やることには良い意味があるものだなーと感じました。More
Appium1.6.0 released !!
https://github.com/appium/appium/releases/tag/v1.6.0 support XCUITest(WebDriverAgent) to test against Xcode8 x above iOS9.3 BTW, this feature has some unstable/known issues support UI Automator 2 for Android I already tried previous its beta version in my company, and then I issued some problems to Appium and it already fixed. I’ll switch to this new version from previous 1.5 in…More
read “子どものUXデザイン”
子供のUXデザインを読みました。 これは人の認知の発達をもとに、子供を2~4歳、4~6歳、6~8歳、8~10歳、10~12歳と2歳ごとに区切りそれぞれの間で何を目指す必要があるのか、というものをモバイルアプリを使いながらまとめたものでした。年齢によって、どういう感覚が形成されていくのか、というところからどういうアプリにしたら良いのか、すべきなのかを例を交えながら書いています。 例えば、ユーザをどうコントロールしていくか、選択肢をあたえるべきかどうか、単純さをどこまで落とし込むか、コンテンツの階層はどこまで深くできるか、デザインパターンが使えるのはどこからか、ということです。 この書籍では入りとしてジャン・ピアジェによる認知能力の発達段階に言及しています。彼の理論では、シェマ、同化、調節、均衡化の4つが中核概念となるそうです。 それが、 感覚で運動する段階である誕生~2歳 前操作段階になる2~6歳 具体的操作段階になる7~11歳 形式的操作段階になる12歳~成人 と段階を経て、認知の段階が分けられていきます。 子供の認知の発達に注目してまとめられたUXに対する話はなかなか見ないので、とても興味深く読むことができました。 サービスを開発するという点だけでなく、子供と接する上でもどういうことが発達段階なのかを知っていると、より面白く接することができそうですね。More
read “オブジェクト指向入門 第2版 原則・コンセプト”
積読になってた オブジェクト指向入門 第2版 原則・コンセプト を、少しきっかけがあって主に11章付近の契約による設計付近を読みました。 行っていただいてます :bow: https://t.co/747YvMJo4a — KazuCocoa (@Kazu_cocoa) September 1, 2016 内容自体は、ある社内勉強会で得たこと中心でしたが、幾つか自分のためにメモ。 ホアトリプル(Hoare triple)による正しさの公式 {P} A {Q} P: 事前状態、A: 処理、Q: 事後状態 防御的プログラミングと、契約によるプログラミングの違い 前者は、他を信頼しないことを前提に入力値などを検査していく 後者は、契約により表明されたことを信頼し、過剰な防御は行わない。 冗長な検査は、ハードウェアは経年劣化などがあって時間によって変動があったり、例えば電気的な干渉などがある。そのため、電気的なシグナルの送り手と受け手の両方で整合性の検査を行うことはよくある方法。ソフトウェアは、何も経年劣化するようなことはないし、電気的な関与を受けるといったこともない。例えば sqrt(a) というメソッドを一度ちゃんと実装すると、それが1年後に挙動が突如変わる、ということはない。(実行環境の変化やシステムが更新されるとか、そういう外的な変化はないものとする) こう見ると、ハードウェアは過剰な防御をしているようで、実は冗長検査と言いつつも、特別・補足的な確認として利用されていることになる。 require/ensureによる事前/事後の表明 これは表明のサンプル 表明するモチベーション 正しいソフトウェアを書くのを助けるため 文書支援のため テスト、デバッグ、品質保証をサポートするため ソフトウェアの耐障害性(fault tolerance)をサポートする 最後に ここら辺を学んでいると、Elixir/Erlangをやっていると、関数に対するマターンマッチや when によるguard clauseを思い浮かべました。Swiftでは where みたいなやつですね。 でも、この青い辞書はとても厚い…More
read “The Way of the Web Tester”
The Way of the Web Tester を読んでみました。 私が読んだ時は、まだBeta3でした。最近、Beta4が出て、JSによるテストコードの話が追加されている状態でした。 この書籍は、自動化されたテストを書くための、テストエンジニア向けの入門書という感じです。内容はいかが大まかなところです。 Unit/Integration/UIのテストピラミッドの話 Unit/Integration/UIのテストコードの書き方(Rubyを例に) コラムとして、例えばrecord/playbackの使えないところ、など 全般的にWebだけの言及なので、モバイルに関しては対象外でした。Selenium系の書籍のようにツールに特筆してはいないので、そういう意味では確かに全般的な入門書という感じです。 ただ、コードの書き方などの話になるとリーダブルコードの内容や実装に近いところの話が含まれてきていたので、そこらへんの実装よりを詳しく学びたいとなったら何かWebフレームワークを使った実装とそのテストコードを書く、というところを開発者向けのなんらかの書籍など見て行う方が良いかもしれないです。 ある程度、書籍などで学んでいたり実装を経験した人からすると確かに入門的なものなのでザーッと読み飛ばしながらコラム中心に読んで終わり、となりそうです。More
reading “Advanced Software Testing – Vol. 3”
ISTQBのTTA(Technical Test Analyst)がどのようなことを学んでいるのか、を知るために読んでみました。 Advanced Software Testing – Vol. 3, 2nd Edition: Guide to the ISTQB Advanced Certification as an Advanced Technical Test Analyst ざっというと、様々なソフトウェアに関するメトリスクやその計測方法、カバレッジの話、さらにはテスト自動化に関する話までありました。 内容として、これはゆるSoftware Engineer in Testと呼ばれるような位置の人は頭に入れておくべき事柄、という感じでしょうか。 data driven や keyword driven なテストコードの話とか、静的/動的テストの分け方やその詳細への落とし込み、様々なコードカバレッジの定義やその役割など。 中でも、コードカバレッジをはじめとした様々なカバレッジ(それこそ、変更量とか含む)の厚みはすごくページを割いていて、その計算(アルゴリズム)の理解までこの書籍でできる感じです。 ただ、これだけできても十分ではなく、ここと実際の経験(開発など)が合わさって相乗効果を発揮する、という感じでしょうか。 効率性のテストの中で、以下のように数多くの xx testingという呼び名があったことは今回初めて気付きました… Load Testing Stress Testing Scalability Testing Resource utilization Testing Endurance or soak Testing Spike Testing Reliability…More
[Elixir]ets vs Agent
on-memory vs processであるets vs Agentに関して、過去に以下の議論があったのでメモ。 https://groups.google.com/forum/#!topic/elixir-lang-talk/RyhiBcD_Zvw 以下の回答は、Elixir in Actionを書かれたErlang developerの方 There are some gotchas with ETS: No garbage collection of individual rows. Memory is released when the owner process dies (and there’s no heir process). Data is copied to / from ETS table. Usually not a problem, but might be when individual rows are huge.…More
read 「料理のアイデアと考え方」
料理のアイデアと考え方 -9人の日本料理人、12の野菜の使い方を議論する- を読んだ。 日本料理を専門とする料理人が、どのような考えで、何を狙って、技術/表現を使ってデザインして料理を造るという一連の流れを知ることができました。やっぱり、ソフトウェア開発など含め、達成したい意図を落とし込む、というところは同じものがありますね。 面白かったのは、この中で各々の対談の記録を形態素解析などの分析にかけてどういうものが日本料理として大事にされているのか、という思考パターンの分析などもしていたところです。世界の地域ごとの料理で何が大事にされているのかなとが分析、可視化されて面白かった。 書籍では幾つかの食材をピックアップしていたのですが、ナス、トマトのところで取り上げられていた料理たちが個人的には美味しそうだった。ので今度作ってみよう。More