タグ

ブックマーク / shunirr.hatenablog.jp (18)

  • LINE Bot API の HTTPS Callback は Amazon API Gateway を使うと簡単便利安価で最高 - おともだちティータイム

    追記 (4/15) 現在は Let's Encrypt の証明書が利用できるようになっているようです。なので「https で Callback が受け取れない」と言う理由のためだけに Amazon API Gateway を使う必要も無くなりました。 LINE Bot API は Callback URL が https のみで、しかも Let's Encrypt や StartSSL と言った無料の証明書が使えない。どうにか安価で Bot を動かしたいとなると Heroku のようなドメインを指定しなければ Wildcard 証明書が割り当てられている PaaS を使うのが一般的でしょう。 しかし Heroku は外に抜ける IP アドレスがどんどん変わっていくので、 Bot API の IP Whitelist に登録することが出来ない。仕方無いので Heroku に rack-rev

    LINE Bot API の HTTPS Callback は Amazon API Gateway を使うと簡単便利安価で最高 - おともだちティータイム
    Tomohiro
    Tomohiro 2016/04/14
  • 3G 付き体組成計 (301SI) を買いました - おともだちティータイム

    Withings WiFi Body Scale が 2009 年の暮れに発売 されてから、体重の情報をクラウド上で管理することが有益であると考えられてきました。しかし、その Withings WiFi Body Scale は体重計なので、体重しか測ることができません。 体組成計メーカの中でも特に先進的な開発を行なうタニタでは、体組成のデータを SD カードに保存したり (2010 年) 、 Bluetooth を使って利用者の携帯電話に転送 (2012 年) させることを実現させてきました。 ユーザは SD カードや携帯電話経由で、自分の体組成データを PC に取り込み、ウェブ上にアップロードすることで、自分の健康や体調を把握し、管理することが出来るようになったのでした。 しかし、僕が求めていたのはそういうことではなかった。 Withings WiFi Body Scale のように測

    3G 付き体組成計 (301SI) を買いました - おともだちティータイム
    Tomohiro
    Tomohiro 2014/03/28
  • Genymotionとか言う Android エミュレータが爆速なのでメモ - おともだちティータイム

    Genymotion Android x86 を VirtualBox で動かしたりするやつ Windows, MacOSX, Linux でも動くらしい (OSX のみ確認) かなりお手軽にインストールできる 感覚的には HAXM よりも速い (ベンチマークとかは取ってない) なぜか Google API 入りのイメージもある IntelliJ や Eclipse のプラグインがある まあ Genymotion のエミュレータ管理が IDE 上で行なえるくらいだけど

    Genymotionとか言う Android エミュレータが爆速なのでメモ - おともだちティータイム
    Tomohiro
    Tomohiro 2013/09/01
  • アプリケーションの漸進的リリースについて - おともだちティータイム

    とりあえずメモ アプリケーションの機能や UI を大きく変更する際、変更後のアプリケーションがどんなに優れていたとしても既存ユーザからは悪い反応しか来ない。 それはそうだ、既存ユーザは "優れた UI" や "画期的な機能" を使いたいのでは無くて、いままで使っていたアプリケーションを明日も変わらず同じ操作で使い続けられることを期待しているからだ。 しかし、今のアプリケーションでは、明らかに良くない UI 、不足した機能、 UX 上の問題がある。開発者としてはアプリケーションを変更する必要を感じている。 では、一体どうやってアプリケーションをリリースすれば良いのだろうか。 当たり前の話なんだけど、少しずつアプリケーションを変更していけば、そういった問題は無くなる。だけど、一般的にはそういうリリースをしているアプリケーションをあまり見掛けない気がする。 そもそも少しずつ変化していくアプリケー

    アプリケーションの漸進的リリースについて - おともだちティータイム
    Tomohiro
    Tomohiro 2013/05/14
  • Jenkins で静的解析のグラフを作るとコードを読まなくてもソフトウェアの品質が分かって面白い - おともだちティータイム

    細かく書きたいけど、とりあえずメモだけ。 ステップ数が増ている なんらかの開発が行なわれている ステップ数が減っている リファクタリングが行なわれている? 単に仕様落ちしたコードが削除された可能性もある テストカバレッジが下がる テストが書かれていない ... ステップ数が増えている場合 テストが減っている ... ステップ数が変わらない場合 FindBugs 、 PMD 、 Android Lint の警告数が増えている 品質の低下、レビューが正しく行なわれていない CPD 警告数が増えている 品質の低下、レビューが正しく行なわれていない そろそろリファクタリングしたほうがいい Checkstyle 警告数が増えている 品質の低下、レビューが正しく行なわれていない Jenkins で継続的にビルドしたり、テストを行なうのは言うまでもなく大切だけど、こういった静的解析の数値をグラフ化してい

    Jenkins で静的解析のグラフを作るとコードを読まなくてもソフトウェアの品質が分かって面白い - おともだちティータイム
    Tomohiro
    Tomohiro 2013/05/06
  • Jenkins の設定内容をリポジトリで管理したい - おともだちティータイム

    Jenkins の設定内容がウェブで操作できるのは便利と言えば便利なんだが、設定をいろいろ弄っている間にどこ変更したか分からなくなるとか、他人が勝手に設定変更して気付いたらビルド出来なくなるとか、そういう問題が起こる。 そもそもリポジトリの中身を勝手にビルドして変更内容に問題ないかを確認したりするツールなのに、ツール自体の設定内容はリポジトリで管理しないのはあまりにナンセンスだと思う。 例えば TravisCI では、 CI が行なう処理を travis.yml というファイルに書いておけば良い。上記の問題が解決されている。 そういうことを Jenkins でもしたいなと思って Plugins をざっと眺めて見たが、よさそうなプラグインは無かった。 そもそも、 Jenkins を使っている人たちは、一つの Job に対して単一の処理 (build という job なら build だけ)

    Jenkins の設定内容をリポジトリで管理したい - おともだちティータイム
    Tomohiro
    Tomohiro 2013/04/21
  • Travis-CI で Android のテストを動かす - おともだちティータイム

    ちょっとした開発でも CI がしたい!というときに便利なのが Travis-CI です。 この Travis-CI を使って、 Android のテストを動かしてみましょう。 Android アプリのテストは大きく分けて、以下の 2 種類があります。 DalvikVM 上で動くテスト ActivityInstrumentationTestCase2 とか Robotium とか JVM 上で動くテスト Robolectric DalvikVM で動くテストを実行させるためには、実機または Android エミュレータ上でテストを動かす必要があり高コストです。ですので、今回は比較的 PC 上で動作させやすい Robolectric を使ったテストを実行したいと思います。 JVM でのテスト (Robolectric) まず、リポジトリのトップディレクトリに .travis.yml ファイルを

    Travis-CI で Android のテストを動かす - おともだちティータイム
    Tomohiro
    Tomohiro 2013/04/02
  • MacOSX をクラウドで利用できる vmOSX を契約してみた - おともだちティータイム

    以下のエントリの続きです。 MacOSX をクラウドで利用できる Xcloud を契約してみた 月額 7000 円払って、レイテンシは 300ms 以上、スペックも微妙な Xcloud をこのまま契約しつづけるのも無意味だなと思いちょうど 1 ヶ月で解約しました。 vmOSX (OSX Server Ent+) を契約 vmOSX - Server Plans 同じ 7000 円台なので、 vmOSX の Server Ent+ を契約。 Xcloud MINI vmOSX Ent+ メモリ 2GB 3GB ストレージ 80GB 60GB vCPU 2 2 価格 CHF79/mo USD84.75/mo 価格 (JPY*) 7220円/月 7468円/月 まずネットワークレイテンシですが、東京港区の一般回線から ping を打って計測したところ以下のような結果になりました。 min avg

    MacOSX をクラウドで利用できる vmOSX を契約してみた - おともだちティータイム
    Tomohiro
    Tomohiro 2013/01/17
  • Ubuntu に OracleJDK 1.6 (sun-java6) を入れる - おともだちティータイム

    Ubuntu では、何も考えず apt で JRE や JDK を入れると OpenJDK を入れられてしまうのですが、 Java6 時点での OpenJDK は OracleJDK と挙動がかなり異なるため、しばしば問題になることがあります。 筆者は WindowsMacOSX を利用して開発した Android アプリケーションを、 Ubuntu 上の Jenkins で CI しようとした際に、アプリケーションがビルドできずに困ってしまい、その原因が OpenJDK にあるということを突き止めました。 ところで、 Ubuntu で OracleJDK をインストールする方法を検索すると、以下のような apt を使う方法が見つかりますが、現状はこの方法を利用することが出来ません。 sudo add-apt-repository 'deb http://archive.canoni

    Ubuntu に OracleJDK 1.6 (sun-java6) を入れる - おともだちティータイム
    Tomohiro
    Tomohiro 2013/01/11
  • Jenkins の Slave マシンはとても簡単に作れるのでメモ - おともだちティータイム

    なんでもかんでも Jenkins を利用してビルドしているようになると、ジョブ数が爆発して Jenkins を動かしているサーバのスペックに不満が出てくるようになると思いますが、 Jenkins の Slave 機能が思った以上に便利だったのでメモをしておきます。 Jenkins の Slave 機能を調べると、まず SSH と JNLP という二つの方法が出てくるのですが、意外と違いを説明している人を見掛けなかったので書いておきます。 まず最初に書いておきますが、どちらの場合も Slave マシンに Jenkins を手動でインストールする必要は ありません 。 SSH を使う Jenkins のノードの追加から SSH を選択すると、ホストやユーザ名、パスワード、秘密鍵なんかが設定できるようになります。 設定して Slave の起動を行なうと、 SSH 経由で Jenkins Slav

    Jenkins の Slave マシンはとても簡単に作れるのでメモ - おともだちティータイム
    Tomohiro
    Tomohiro 2013/01/08
  • Homebrew を使って OSX に GNU sed を入れる - おともだちティータイム

    MacPorts は見付かったけど何故か Homebrew は見当らなかったのでメモ。 brew install gnu-sed GNU sed の使い方 sed では無く gsed というコマンドを使う。 sed は標準で入っている /usr/bin/sed を指しているので注意。 gsed --help どうしてわざわざ GNU sed を入れるの? OSX に入っているの sed は BSD 由来の POSIX sed で、 GNU sed (Linux とかによく入っているやつ) は GNU 拡張が入っている。 拡張と言うからには POSIX 準拠のバイナリよりも便利になっていて、例えば -i (--in-place) というオプションがある。 これは、ファイルを開いて置換して保存するという機能を実現するコマンドなのだけれど、 MacOSX だとこのオプションは使えない。 たとえば

    Homebrew を使って OSX に GNU sed を入れる - おともだちティータイム
    Tomohiro
    Tomohiro 2012/12/20
  • xargs -P が激しく便利なのでメモ - おともだちティータイム

    xargs の -P オプションを使うとプロセスを複数起動して処理を並列に行なうことが出来る。 例 例えば、 1 万枚の JPEG 画像を全て 800x800 に収まるように効率良くリサイズしたい。 まず私はこのようなコマンドを考えた。 convert --geometry 800x800 *.jpg しかし zsh に怒られた。 zsh: argument list too long: convert 引数が全て展開されるためこのような事が起きる。 私は xargs を使って処理することを思い付いた。 ls | xargs -I{} convert --geometry 800x800 {} c_{} 処理は行なわれるが非常に遅い。 しかも CPU を全く使っていないことが分かり、私は処理を並列的に行なう事を考えた。 そこで xargs の -P オプションの出番である。 P の後に並列

    xargs -P が激しく便利なのでメモ - おともだちティータイム
    Tomohiro
    Tomohiro 2012/11/21
  • GCC 4.7 を Homebrew で入れるメモ - おともだちティータイム

    以下を参考にした。 MacOSXの Homebrewで最新の GCC 4.7.0 をインストール コマンド抜粋。 brew install https://raw.github.com/Homebrew/homebrew-dupes/master/gcc.rb --enable-all-languages --use-llvm ちなみに GCC のビルドやらなんやらが走るので結構時間かかる。 sudo ln -sf /usr/local/bin/gcc-4.7 /usr/bin/gcc sudo ln -sf /usr/local/bin/g++-4.7 /usr/bin/g++ sudo ln -sf /usr/local/bin/g++-4.7 /usr/bin/c++ sudo ln -sf /usr/local/bin/gcc-4.7 /usr/bin/cc なんか OSX にデフ

    GCC 4.7 を Homebrew で入れるメモ - おともだちティータイム
    Tomohiro
    Tomohiro 2012/11/20
  • CMake が激しく便利なのでメモ - おともだちティータイム

    CUI アプリケーションとかライブラリって割とちまちま Makefile 書いてたんですが、 Makefile あまりにレガシーすぎてググっても 10 年以上前の情報とかしか出てこなくてかなり絶望感高かったのですが、 CMake つかったら思いの外簡単というか便利というか革命的だったのでここに記して置こうと思います。 まず以下のようなフォルダ構成でプログラムを書く hoge_library └── src ├── hoge │ ├── bar.cpp │ ├── bar.hpp │ ├── foo.cpp │ └── foo.hpp └── hoge.hppCMakeLists.txt を書く CMAKE_MINIMUM_REQUIRED(VERSION 2.8) FILE(GLOB SOURCES src/hoge/*.cpp) SET(CMAKE_CXX_FLAGS "-Wall --

    CMake が激しく便利なのでメモ - おともだちティータイム
    Tomohiro
    Tomohiro 2012/11/20
  • 自分の仕事を他人が出来るようにすること - おともだちティータイム

    (ベンチャーだから/中小企業だから) 慢性的に人員が足りていないから自分が無理してでも頑張らないと行けないみたいな意識がみなさんあるようですが、規模のある企業だからと言って余分な人員がいたり、一つの仕事に対して過剰に人をアサインしている訳ではないので、忙しいときに人員を追加して負荷分散を図ろうとするのにはそれなりなコストがかかります。 無理に休まず結果として休職や退職となると業務に支障が出てしまいますし、無理に休んでも支障が出てしまいます。 つまり、あなたは心身を壊さずに過労し続ける必要があるのです。しかしそれは出来ない、どうすれば良いのでしょう? やるべきこと あなたがやるべきは日々自分のやっている仕事を出来る限り他人が行なえるようにすることです。 日々やっている仕事を他人が出来るように資料に落とし込んだり、自分の仕事を他の社員が出来るように作業を教えたりするのです。 急に休んだり、休職

    自分の仕事を他人が出来るようにすること - おともだちティータイム
    Tomohiro
    Tomohiro 2012/10/03
  • Jenkins を OSX に入れるときは公式の .pkg を使ってはいけない - おともだちティータイム

    OSX に Jenkins 入れるってことは iOS アプリだとか Mac アプリを CI したい時だと思うんだけど、キーチェーンアクセスの取り回しが複雑なので (結局僕は挫折した) 、ログインユーザ権限で Jenkins を動かしたほうがよい。 具体的には公式の .pkg を使うと Jenkins とかいうユーザが作成されて、そこで作業をすることになるんだけど、それだと署名が付けられなくてアプリビルドできない。 で、ググると分かるが、ログインユーザ権限で Jenkins を動かすのが一般的っぽい。 やり方 Jenkins をOS X のログインユーザー権限のデーモンで自動起動しておく設定

    Jenkins を OSX に入れるときは公式の .pkg を使ってはいけない - おともだちティータイム
    Tomohiro
    Tomohiro 2012/08/30
  • Facebook アプリはパーミッションの利用方法をユーザに教えてから要求してほしい - おともだちティータイム

    Facebook アプリで追加パーミッション ("ウォールへの投稿"とか) を拒否すると、アプリが壊れることが多い。というかまともに動いたアプリに出会ったことがない。とあるアプリは内部 Error みたいな画面が出て、なにも操作できなくなった。また別なアプリでは、 "ウォールへの投稿" という追加パーミッションを必死に取ろうと無限ループしてしまった。仕方なく何回かループした後に許可したら、今度はブラウザが無限にリロードして、やっぱりなにも操作できなくなった。 Facebook のパーミッションにはいくつか種類があり、その中に Extended Permission と言うものがある。これが所謂「追加パーミッション」なのだが、追加パーミッションはエンドユーザが個別に拒否/許可が出来るようになっている (下図では、右側の×ボタンを押すと Post on your behalf の権限だけ拒否す

    Facebook アプリはパーミッションの利用方法をユーザに教えてから要求してほしい - おともだちティータイム
    Tomohiro
    Tomohiro 2012/07/17
  • ゴミのようなコードを見たときに利用するべき astyle のススメ - おともだちティータイム

    他人の書いたコードがクソな場合は相当数ありますが、それでもフォーマットさえ整えば多少なりとも読みやすくなります。 僕は最近まで世の中の整形ツールはインデントくらいしか直してくれないと思っていました。 しかし、 astyle というツールに適切なオプションを渡せば、とても読み易いフォーマットに整形されることを知ったのです。 たとえば以下のようなゴミコードがあるとしましょう。 (処理に意味はありません) #include <stdio.h> int main(void){ int a,b; int * p; b= a=1;p=&a; if(a==b) printf("hello!") ; else printf ("hello, %d",a ); return b; } よく紹介されている astyle の使い方は以下のようなもので、せいぜいがインデントしか直してくれません。 astyle -

    ゴミのようなコードを見たときに利用するべき astyle のススメ - おともだちティータイム
    Tomohiro
    Tomohiro 2012/06/29
  • 1