メモ awesome series for Elixir https://github.com/h4cc/awesome-elixir ReactJS + Phoenix 少しReactJSを触るという目的も含め、やってみました、程度です。 https://github.com/KazuCocoa/react_phoenixMore
Android端末の特定パッケージが使う資源を可視化する単純なライブラリを作った
AndroidのCPUリソースやメモリリソースを可視化するために、以下のような簡単なライブラリを作りました。 すみません。Java系ではなくRubyスクリプトです。 https://github.com/KazuCocoa/droid-monitor 単に、 cpuinfoやmeminfoを整形してjsonファイルとして書き出す Google APIを使ってグラフ化する形式にファイルを整形する 簡単なテンプレートHTMLを生成する ということだけを行っている小さなものです。こういう可視化するツール、手軽に使えるものがなかったので用意してみました。以外と開発者はここらへん気にしないのですかね?? adbコマンドの dumpsys を使うので、Androidのバージョン関わらず値を取得することができます。meminfo に関しては、API Level 18を境に取得可能な形式が変わっているので、ライブラリ側でAPIバージョンを見て対応フォーマットを判断してます。 以下のような感じ。 CPU Memory 使い方 https://github.com/KazuCocoa/droid-monitor/tree/master/sample に2種類用意したのでそれを見るのが早そう。 こういうときに使う 例えば、Appiumなどを使って常に同じシナリオで、開発周期ごとのリリース物のCPU使用率を計測します。それにより、突然資源の使い方が激しくなったときを検出しやすくします。 あと、adbコマンドを使うだけなので、初期化時の引数にadb devicesなどで得られる端末のシリアル番号を指定してあげると、特定の端末のみをターゲットにすることができます。 締め adbコマンド、いろいろあって便利。モニタリング用のAPKアプリを作って常駐させておくのも良いのですが、adbコマンドがいろいろ便利なので計測対象の端末に何も手を加えずに資源を可視化できるほうがお得感ありますね。More
PhoenixをHeroku上で動かしてみた
ElixirのPhoenixをHeroku上で動かしてみました。久しぶりにheroku動かしたのですが、GitHub連携やDropbox連携も追加されたのですね。 環境 Erlang version 17.5 Elixir 1.0.4 Phoenix 0.13.1 テンプレートプロジェクトの作成 Deployするプロジェクトは以下を参考に、簡単なサンプルプロジェクトにしました。 http://www.phoenixframework.org/v0.13.1/docs/up-and-running Herokuへのdeploy対応 Herokuへのdeployは、heroku-buildpack-elixirを使いました。 https://github.com/HashNuke/heroku-buildpack-elixir 基本的にはここに書かれている手順を踏めば良いのですが、軽く手順を残しておきます。 elixir_buildpack.config を生成する 内容は以下です。 Procfile の作成 内容は以下。 Heroku側の設定 ひとまず、手軽にdev環境を稼働させたかったので以下の対応をしました。 1. dev環境の設定 2. config/dev.exs を修正してポートをシステム依存にする 以下のような感じ。 3. DBの設定 HerokuのPostgreSQL Pluginを使い、usernameやpassword、databaseを作成します。 passwordなんかの大事な情報は、Herokuの環境設定を活用しましょう。 4. Deploy 接続 あとはHerokuのダイナモの数を調整して、アクセスできるようにします。 だいぶんお手軽にDeployできるようになりました。これから手を動かすぶんにはEC2やローカルで良さそうな気がしますが。 実施したリポジトリはこちら https://github.com/KazuCocoa/hello_phoenix/releases/tag/20150521 追記: 2015/07/30 Phoenix 0.15のheroku deployを見てみると、 config/prod.secret.exs を消して config/prod.exs に統一することが必要みたいですね。 確かに、何もしないでdeployすると config/prod.secret.exs が無いというエラーが確認されます。More
Phoenix Frameworkを触ってみる
何かやるなら、簡単なWebアプリとかかなと思ったのと、Elixirのフレームワークを何か触ってみようかなと思い以下のPhoenixを試してみました。 私が試したのはv0.13.0です。 http://www.phoenixframework.org/v0.13.0 雛形のinstallからsetupまでは以下を見ると特に問題なくできるのでリンクだけ。 http://www.phoenixframework.org/v0.13.0/docs/up-and-running 試しに、以下の記事を参考にテストを書くまで使ってみました。 http://postd.cc/testing-a-phoenix-elixir-json-api/ 作成したリポジトリは以下。 https://github.com/KazuCocoa/hello_phoenix 実行する前にpostgresqlを以下のように用意しておく必要があります。 確認 ユーザ作成 ざっとディレクトリ構成やmigrationを試してみると、Ruby on Railsがまんま持ってこられている印象をうけました。なるほど。 まだ1日くらいしか触ってないのですが、ちょっとexersism.ioで幾つか問題解きながら頭に文法をなじませようかな。More
Elixirを触ってみた
ErlangのVM上で動作する、文法はRubyのようなものですね。 WebPage http://elixir-lang.org/ GitHub https://github.com/elixir-lang/elixir Erlangの資産を使えます。ErlangはConcurrencyな処理では以前より使われていると聞くので、Rubyをそのような方面でも使えるようにといったコンセプトでは面白いですね。 exercismでは、Elixir向けの問題も提供しているので、少しやってみました。 以下のような感じでコードがかけます。 Gistはこちら: https://gist.github.com/KazuCocoa/b2c3d910d33c16210fc1 Rubyを少し書いたことがあると、大きくつまづくことはなさそう。 なるほどね。More
Appium1.4.0の変更でwaitForAppScriptでテスト開始タイミングを調整する必要があった
Appium 1.4.0から、iOSアプリのテストを行おうとした時にinstrumentsの起動、sessionの確立が成功した後に Error(“App did not have elements”)); とエラーが表示されてテストが中断することが見られるようになりました。 これは、例えばプライバシーダイアログを初回アプリインストール時に表示するような、システムダイアログが表示されるアプリで発生するようになってます。 これは、以下のコードに含まれる https://github.com/appium/appium/blob/2b0ede71d1a2f50376a2edcd15636cfa9e9b8f1e/lib/devices/ios/ios.js#L457 の !IOS.isSpringBoard(sourceObj.UIAApplication) がtrueになるため、はかれるエラーです。 これはアプリ起動直後にSpringBoardが表示されて偽陽性(false positive)を検出してしまうことを避けるために入れられました。ただ、意図してシステムダイアログが出るようなアプリだと、誤ってfalseと判断されるようになりました。 一方、アプリ起動を待つために waitForAppScript というcapabilityが用意されています。これは、独自で定義した条件にマッチするまでテストシナリオの実施を待つ、というものです。これを使うことで、先ほどの問題を回避することが可能です。 例えば、簡単な対応として waitForAppScript:true;“ としておくことで、問題となる条件分岐を通らなくなります。ここら辺をもう少し調整しておくと、柔軟にテスト開始タイミングを調整することも可能ですね。 なお、すでにissueでも報告さえていました。その時の回避策が waitForAppScript の利用です。 https://github.com/appium/appium/issues/4971More
『融けるデザイン ハードxソフトxネット時代の新たな設計論』を読んだ
前々から気になっていたのですが、融けるデザイン ハードxソフトxネット時代の新たな設計論を読んでみることにしました。 最近、より身直な存在になったハードとソフトウェア、ネットの関係を、デザインの視点からどう捉えられるのか知見をまとめたかったので。 ざっくりと、文系は人間の活動を研究の対象とし、理系は自然界を研究の対象とする学問といわれることがあります。著者の渡邊さんはその中で、高校時代にMacintoshiを心理学者が設計していることから、コンピュータに文系のノウハウを注ぎ込んでいることに驚きを受けたということから内容にはいっていきます。 人とコンピュータの関係を、ARを題材に本来は単なるアナログ世界をディジタル世界に持ち込むのではなく、知覚や行為の身体能力の拡張や強化であり、聴覚や触覚、行為や行動そのものもその適用範囲であると書いています。ただ、コンピュータが珍しい世界だったころはディジタル世界の浸透を助ける目的としての実世界のメタファを持ち込むことが有効です。一方、ディジタルが当たり前になってくると、実世界からメタファとして持ち得ないものがディジタルに登場してきます。そのため、ディジタルの”体験”を中心に、価値を形作ることが必要になってきます。 この時代の流れをAppleのスキュアモーフィズムという実世界のメタファを中心としたUIデザインと、基本的に実世界のメタファを用いないフラットデザインを例に説明していました。そう考えると、UXが最近もてはやされている裏には、メタファに頼らない、体験から価値を作るという考え方が単なる流行ではなく実世界に存在しない価値を作るためという話も納得できました。(流行だからやっている、書籍でかかれているAppleのスタイルを表面的に使っているだけという人も多いかもしれないが。。。) つまるとこ、今の時代は体験の設計が鍵であり、 社会レイヤ: 印象やブランド 文化レイヤ: ストーリー 現象レイヤ: 知覚・行為/身体性 を考慮した設計が必要だとされます。その中で、現象レイヤを含んだUI/UXは売れるための要素になりにくいうえに、説明もしにくい。だが、ここが欠けると社会/文化レイヤに特筆しない限り使い続けられない設計になると説明しています。 そこも含めた設計に関して、体験を中心としたものづくりの話をいろいろ根掘り葉掘りかかれているのがこの書籍でした。この書籍には、エンジニアリング的内容と、現象学、心理学が混ぜ合わされています。 ギブソンの生態心理学の話、「投げたボールはどこまで身体か?」という命題への考察を行いながら、自己帰属意識に関して述べられます。UXは、この自己帰属意識をいかに作り、育てるかが大事なのですね。 この本を読み終わると、品質関連の話で出て来る”魅力的品質”とか、そういったものの多くがこの書籍で体験としてまとめられている感覚になりました。対人間の話になるのでUI/UXは複雑さがありますが、サービスを開発する側の人はこういう知見も蓄えていきたいですね。More
Appium1.4.0とruby_lib7.0.0がリリースされた
Appium1.4.0がBeta外れましたね。今回は、いくつかサポートに関わる気をつけておく内容がありましたのでめもめも。 Appium https://github.com/appium/appium/releases/tag/v1.4.0 いくつかにdeprecateがつきました Node 0.10サポート iOS6.1、iOS7.0サポート(1.5でサポート切るかも) Xcode6.3未満のXcodeサポート Xcode6.0.1+iOS8.0の組み合わせは例外 他は、BugfixやAndroid向けの新しいcapabilityの追加など。 ruby_lib https://github.com/appium/ruby_lib/blob/master/release_notes.md#v700-2015-05-08 わせて7.0.0がリリースされていましたね。本体と一緒にリリースする必要があるといってたので、miniWindowがnilになるときの対応が関係しているのかな。 default waitが0になった resourceIdのバリデーションが追加された install? メソッドが app_installed?にリネームされた rubocop対応More
–suppress-adb-kill-server on Appium 1.4.0
Appium1.4.0で –suppress-adb-kill-server フラグが追加されていたのですね。 このフラグをonにしておけば、Appium Serverが adb kill-server してコネクション切断するということを防ぐことができる模様。 adbコマンドって、ip-address越しでも送ることができることは広く知られていると思います。ネットワーク越しで環境を構築している場合、adbのコネクションが切れると都度接続が必要になります。また、Selenium Gridを使って実施を並列化した環境を整えていると、テスト終わるときにkill-serverされるとadbのコネクションがこぞって切れるようなので、それを防ぐのにも良いとか。More
『人口知能は人を超えるか』を読んだ 〜 シンギュラリティは突破されるか
人口知能は人を超えるかを読みました。GWの帰省時の移動のお供に。 がっつり数式な人工知能の説明本ではないですが、人工知能に対する取り組みの歴史的な移り変わりとその簡単な説明を把握する上ではとても面白い書籍でした。イヴの時間が表紙なのも、個人的に惹かれました。 私は大学でベイズ推定や隠れマルコフを学んだり、ほかの人がニューラルネットワークやオントロジーに触れていたこともありそれらを軽く学びました。なので、のちに書く人工知能のレベルでは、レベル3の端くれ程度はうっすらと想像がつきます。そのくらいの知識を持った上で読んでいました。また、オントロジーの話に関連してIBMのワトソンの話が出たりと、新しいネタを題材にもしているので楽しく読むことができました。 SF好きの人も、この本は楽しめそうですね。 人口知能は大きくわけて以下の4つに区分されていて、歴史とともにその移り変わりや流行りがどうなってきているかが書かれていました。 レベル1: 単純な制御プログラム レベル2: 古典的な人工知能。入力と出力の組み合わせが極端に多いもの。 レベル3: 機械学習を取り入れた人口知能。推論の仕組みや知識ベースがデータをもとに学習されているもの。 レベル4: ディープラーニングを取り入れた人口知能。機械学習をする際のデータを表すために使われる変数自体を学習するもの。 レベル4のディープラーニングは最近流行ってますが、多層ニューラルネットワークという説明が少し本書にも書いていて、少し中身が見えた気がします。 Siriのようなものは、イライザと呼ばれる、レベル2の段階で知性があるように見えている状態だというところも、書かれると確かにそうだなーという感じ。 IBMのワトソン、シェフワトソンなどで有名ですが、ライトウェイト・オントロジーと呼ばれる領域のものだとは知りませんでした。(そういうようにオントロジが分けられていることも) ニューラルネットワークに、意図的にノイズを埋め込んで少ない学習で良い成果をあげるという考え方、面白かったです。ソフトウェアテストだと、fault injectionや自動エラー検出とか、そういう考え方につながるものがありますね。 そういえば、シンギュラリティが突破される世界がくるのか、楽しみでも怖さでもありますね。ターミネータの世界がくるのかどうか。 ディープラーニング、Software Testでも使えそうなので、少し手を出してみたい感。More