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

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

GooglePlay/AppStoreのレビューを取得するスクリプトを少し整えた

過去、GooglePlayのレビューを新着順に取得するみたいな雑な記事書いていたのですが、気晴らしに少し書き換えてみました。 Nokogiriとか使っていたのですが、たかだか性能も求めない処理にNokogiriは重たいのでOgaを使ってみることにしました。Bundlerだけで完結できる環境です。楽だ。 ついでに、引数にjpやenなどの言語を与えることで、その言語に対応したレビューを取得できるようにしました。ページングのようなちょっと面倒なことはしていないので、本当に単純なものです。 こんな感じで使える。 https://github.com/KazuCocoa/simpleAppReviewReporterMore

Snorkeling with Dagger 2でDagger2に潜った

Dagger2を味見してみたやDagger2を使って依存性の存在する箇所をテストしてみたでは、簡単な自分で作ったModuleに対して、テスト時だけ返り値を置き換える、という簡単な例を使ってDIを試してみました。 今回は、SharedPreferenceのような外部ライブラリに依存する箇所をうまく置き換え、Unit test / Integration testレベルにおけるtestabilityを向上させることを目的に追加で味わってみました。ここまでくると、大分頭の理解としては馴染んだ感があります。 元になった記事はこの Snorkeling with Dagger 2 というものです。 http://konmik.github.io/snorkeling-with-dagger-2.html 以下では、この記事を読んで、頭になじませながら備忘録として書いたもの。 @Inject や @Module をつけたメソッドから、コンパイルによって @Component つきのブリッジが生成されて @Inject のフィールドへひも付けられる流れなんかも書かれています。Dagger prefixがついているメソッドの生成、MembersInjector を持ったインスタンスの生成という流れも載っています。 @Inject と @Module、 @Providorのひも付き方は、以下の図つきで説明されていました。 @Inject アノテーションは、以下で同じ意味を持ちます。個人で試行錯誤しながら学んでいるときも、public付きでないといけないと警告もらったりしていて、なるほどという感じ。 Dagger prefixのつくメソッドは、コンパイルされなければ生成されないコードが関係します。そのため、コンパイルするまではエラーが表示され続けます。 そこに対しても言及されていて、著者がDagger2Helperを作ってそれを使ったエラー回避の方法や、reflectionを使った回避方法を書いていたりします。なるほど。 Tipsとして、injectionの方法を共有していました。 通常は MyApplication.inject(…) と書くのですが、ここは MainInjector.getComponent().inject(…) としてもかけるそうな。 他、reflectionを使わずにinjectionする方法も書いています。Dagger2Helperを使ってApplicationクラスにinjectを定義しておき、そのApplicationクラスを他クラスから@Injectで直接とってきて使うという方法。 この方法の性能面での有用性も書いていて、なるほどという感じでした。 A direct injection on a subclass takes about 0.0013 ms, a reflected injection on…More

GoogleAppScriptを使ってHipChatなんかの外部サービスに通知を渡す

Googleスプレッドシートやフォームって、ちょっとした情報を共有したり何か申請してもらう時に何気に便利ですよね。 ただ、お問い合わせが発生したときなんかの通知がメールに集まる傾向があって、最近のようなチャットを主に使っている環境ではすぐに通知に反応できなかったり、必要以上にメールがたまってしまう傾向があります。 以下のようなGoogleAppScriptをスクリプトエディタから作成、保存して契機を設定しておくと、任意のサービスに通知を出すことができるようになります。 以下では、 messageToHipchat() をフォーム送信を契機に設定しておくと、フォームが送信されたことを契機に、フォームの中身含めてHipChatの特定のルームに通知を投げます。 UrlFetchApp がGoogle App ScriptでHTTPリクエストを発行したりするところです。 FormApp がフォームに対する操作をするところです。 This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters Show hidden characters /* *…More

『リッツ・カールトンが大切にするサービスを超える瞬間』を読んだ

リッツ・カールトンが大切にするサービスを超える瞬間を読みました。サービス産業におけるサービスの提供がどんなものか、サービスの品質をどのように保ち、より良くしているのかという仕組みに興味があったので、パラパラとめくる感じで読んでいきました。 大事そうなところをさっとまとめると、以下のようなものでした。 従業員も顧客同様の立場で接し合うことで、どのようなサービスがより顧客に価値があるかを考えられるようにする チームワークの良さがサービスの良さにつながる SQI(サービス・クオリティ・インジケーター)を計測、再発防止に取り組むことで日常的に高価値のサービスを提供できる体制を作る 会社の哲学を浸透させる 抜粋 いろいろまとめると長くなりそうなので、いくつか抜粋するにとどめます。半日かからないくらいでさっと読めるので、読んでみると良いかもしれません。 従業員を”内部顧客”と呼び、同じ目線でお互いを理解しあい、心から尊敬しあう リッツカールトンのサービス哲学 「明日はまたどんな感動があるのだろう」と思っていただけるようなサービスが提供できているかどうか 紳士淑女であるお客様に仕える私たちも紳士淑女である We Are Ladies and Gentlemen Serving Ladies and Gentlemen みんなが常にお客様の視点に立ったサービスを心掛けている 会社都合のシステムからは感動は生まれない チームワークの良さが最高のチームをつくる 会社の哲学はクレドとして共有される クレドは会社の哲学や、従業員の行動指針 クレドは時代に合わせて変化する クレドを自分と同じレベルで共有できるかが最上位の優先 同じ結果を出すためにマニュアルは必要 ただし、「ああしなさい、こうしなさい」ではない サービスで重要なことは高く感性を共有すること 技術は訓練できてもパーソナリティは訓練できない サービスを提供するひとは ジャズプレイヤー マニュアル通りで済ませるのではなく、より良いことがあればそれを実施できるように ホスピタリティ(おもてなし)産業 SQI(サービス・クオリティ・インジケーター) 毎日の仕事やサービスを提供する場面で起きてくる 欠陥事項、失敗事例、問題事項などを一つ一つ数値化して、記憶に残す作業。 これらは収集され、同様なことが再現しないように内部プロセスが見直したりされる。 締め サービス産業としては、例えばWebサービスも重要な点は共通しているところが多いです。何かサービスを創り出す技術が高くとも、サービスとして価値を出せなければ消えていくだけです。 こう考えると、SQIのような仕組みを組織全体として循環させることは非常に重要だと痛感します。技法的な文言はこのSQIしか書籍にでませんでした。これからも、科学的なアプローチをあげた場合、SQIは大事な要素なのだと見て取れます。 Webサービスの現場では、テストエンジニアやQA的な役割に責任を持つところはまだ少数だと思います。が、これから広がっていくだろうし、そういう人たちの活躍が会社の成長を、サービスを創り出すエンジニアやディレクター、営業の方々と相まって後押しするものになるのでしょうね。 頑張ろう 蛇足 こういうサービス産業のおもてなし、経験できるときに経験したいですね。サービス的な面白さがありそう。More

『武士道』を読んだ

武士道の根本のところを、お前はどう考えているか >『葉隠』 武士道と云は、死ぬ事と見付けたり >『葉隠』 武士道を読みました。読んだ後になって知ったのですが、こちらの武士道のほうが有名?なのですね。Amazonのレビュー見た感じですと。 この書籍では、”武士道”とは、『対峙的人倫観をふまえた独立の精神』と説いていました。解説によると、新渡戸稲造氏の武士道は、武士道そのものではなく、新渡戸氏の道徳思想を主に説明しています。一方、この書籍では武士道という精神論に対して、様々な原典を持ってきた上で分析しています。そういう意味では少し硬くて読みにくい反面、1つの事柄に関しても多くの原典を参考にしているので本当に理解を深めたい人には良書なのかもしれなです。 『武士道と云は、死ぬ事と見付けたり』 文面にも引用した、おそらく武士道として広く知られるこの引用の一節は、武士道として解かれる『葉隠』の一節でしかありません。そして、その本質は死を目前としたとしても、確かに存在している自己の確立を求めるものであるらしいです。武士道とは、自己を磨くことや、他者へも礼儀を持つことなどの心持ちが多く解かれていたり、また、独立ということも重要な要素として解かれている、同時の人としての有り様全体を説いた道のようです。 ありのまま、名と恥、死の覚悟、しずかながらも力強い、などなど、様々な要素がちりばめられていました。 茶道、禅、武士道と読んできましたが、自己の洗練やそれに付随する質素さなど、多くが繋がっているように見えました。それらはざっと浅く見聞きした今までの知見と大差なく。一方、こういう話は海外の人たちの興味の対象として一定の強さがあることも事実のようです。無知よりは知っていたほうがいいし、宗教のように強く依存するまで行く必要もないけれど、ざっと時間を見つけて技術書以外にも文化を学ぶって良いですね。 食文化にもつながる要素も多い。More

『星の王子さま、禅を語る』を読んだ

最近、茶道の本を読んだり、今回読んだ禅に関して読むことで日本固有の文化に触れてみています。合わせて、禅に触れてみようと思い、星の王子さま、禅を語るを読みました。 ソフトウェア開発において、Zenという言葉が使われることがあります。それらは、簡素・質素といった禅から派生していると説明されていることを見ます。発問もZen(禅)というので、日本の禅が大きく影響しているのでしょう。 海外のソフトウェア開発では、開発物の設計思想だとか、何を大事にしているかといった芯を重要視していることが多いように見えます。そこで、幾つかのきっかけも相まったものの、その禅というものを少し学んでみようと思い今回の書籍を手にとってみました。 自らの立つ場所を深く掘れ。そうすればよい泉が湧くだろう それとは別に、純粋に、 星の王子さま を題材に禅を説明していたという、非常に興味沸かせる題材を扱っていたこともあります。 この書籍は、以下のそれぞれの題目に対して、星の王子さまの引用、その説明という形で流れていました。星の王子さまの引用と、各項目だけつらつらと残しておきます。 不立文字 肝心なことは、目に見えないんだよ 目では、何も見えないよ。心で探さないとね。 目に見えない世界、円 直指人心 どんな大人だって、はじめは子供だった。でも、それを覚えている大人は、ほとんどいない 智慧 脚下照顧 君の探しているものなら、たった一輪のバラの花にだって、一滴の水にだってあるのになぁ 色即是空(平等) ちょっと離れたところから見ると、それはもう、本当にすばらしい眺めでした 空即是色(差別) おれにとって、あんたは、世界中でたった一人しかいない人間になるし、あんたにとっては、それは、世界中でたった一匹しかいないキツネになるのさ もう一度、バラの花を見にいってごらんよ。あんたのバラが、世界中にたったひとつしかないことがわかるからね 一隅を照らす ばかばかしいと思えないのは、あの人だけだ。それは、たぶん、あの人が、自分のことだけでなく、他人のことも考えているからだろう 自由 もし五十三分を好きに使っていいんだったら、僕は、新しい水のわく泉のほうへ、のんびり歩いていくのになぁ 仏性 「砂漠が美しいのはね」、と王子さまがいった。「どこかに井戸が隠されているからさ」 一期一会 最後の朝には、いつもやっていた仕事が、とても大切なことのように思われました 全体的には、思想というよりも禅という考え方について書かれていました。これらは明日から使えるなにか、といった類ではないですが、このような考え方に触れるって面白いですね。 少し蛇足。私の実家では、叔父/叔母が主に信仰していたものが浄土真宗でした。親鸞が有名ですかね。一般的に仏壇などあれば浄土真宗や浄土宗がおもだと思います。それらも茶道や禅などと大きく違わない。異なることはあるけれど、同じところもある、という感じに見て取れました。私自身は浄土真宗を特別学んだりしたりはしていないのですが、質素や簡素、直指人心のようなところは心地よいなと感じました。 茶道と禅に合わせて並んでいた武士道について読んでみようと思います。以前、剣道を学んだときに武士道に関して少し見聞きしたことがあるのですが、それも中学校の部活動なので、正直覚えていない…いずれも質素や芯を持つというところで重なることがありそうな気がしています。 このくらいの本であれば、数時間あればざっと目を通すくらいできて気軽でよいですね。More