上京して、使ってるいるアプリ(ガジェット)と簡易スクリプト達。
この記事はIwate Developers Advent Calendar 2014の7日目の記事です。
はじめに
今年の春に岩手から上京しました。
まいどどうも、なかじまです。
今回は、上京して役に立ってる?アプリと、スクリプト達を紹介します。
Hue スクリプト
Meet hue | ja-JP : http://www2.meethue.com/ja-jp/
Hue は、プログラマブルな電球で、HTTP 経由で光らせたり、明るさや色を変えることができます。 これで、
- 家にいながら、ディスコの気分になれる
- 朝、天気が悪くても擬似日の出で自然に起きられる
- リプライが来たら点滅させる
- 帰ったら、電気ついてる
なんてことができます。
例えば、disco コマンドを動かすとこんな感じです。 Perfume を聞きながら実行すれば、 東京にいてもホームシックになることはありませんね。 (少々値段は高いですが、オススメです。) 運用は、crontab などに設定すると良いと思います。
一部中身を紹介します。
$ ruby hue.rb -h Commands: hue.rb disco # Dance floor (Stop : Ctrl + C) hue.rb flash # flash on and off hue.rb help [COMMAND] # Describe available commands or one specific command hue.rb okaeri # Okaeri bot hue.rb twitter # Notification from twitter(Stop : Ctrl + C) hue.rb weakup # Alerm hue.rb weather :location # How is the weather (bule: rain, red: sunny)
#!/usr/local/bin/ruby require 'weather-report' require 'hue' require 'thor' class HueCLI < Thor option :location, default: "東京", type: :string desc "weather :location", "How is the weather (bule: rain, red: sunny)" def weather init weather = WeatherReport.get(options[:location]) @light.on = true @light.saturation = 80 @light.brightness = 255 if weather.today.umbrella? @light.hue = 47000 # 青 else @light.hue = 60000 # 赤 end end desc "disco", "Dance floor (Stop : Ctrl + C)" def disco init @light.on = true loop do @light.hue = rand 65535 @light.saturation = rand 255 @light.brightness = rand 255 sleep 0.5 puts %w(☆ ★).sample goodbye("Good night disco!") end end desc "weakup", "Alerm" def weakup init @light.on = true @light.hue = 80000 # オレンジ 10.times do |i| @light.brightness = 25 * i sleep 60 end end desc "flash", "flash on and off" def flash init loop do @light.on = true sleep 0.5 @light.on = false sleep 0.5 goodbye("goodbye hue") end end desc "twitter", "Notification from twitter(Stop : Ctrl + C)" def twitter # 省略 end desc "okaeri", "Okaeri bot" def okaeri # 省略 end private desc "init", "init" def init client = Hue::Client.new @light = client.lights[1] end desc "goodbye", "goodbye hue" def goodbye(message="goodbye") Signal.trap(:INT){ puts message exit(0) } end end HueCLI.start(ARGV)
Moves
Moves - Activity Diary for iPhone and Android
Moves は iPhone にインストールするだけで、自動でいろんなライフログを撮ってくれるアプリサービスです。Moves ではログデータをダウンロードすることができるため、今回はアプリをインストールした4月27日からのログデータを可視化してみました。 Moves を使っている人ならば、 https://accounts.moves-app.com/ から、さまざまなログデータをダウンロードすることができます。
1日のカロリー消費をGithub ライクに可視化してみました。(d3.js) やったことは、ダウンロードした JSON をテンプレートに整形して表示しただけです。
色の閾値はちょっとおかしい気がしますが、最近は土日もちゃんと草が生えていることがわかります。岩手にいる時よりも、はるかに歩くことが増えました。
他にも歩いた経路や、徒歩数などのデータがあるので、他にもいろいろ活用方法がありそうですね。
ちなみに、最近 Ingress もはじめました。
Jigadori スクリプト
これは、
http://whitech0c0late.hatenablog.com/?page=1395054814
の、記事でも使った GIF 生成スクリプトです(少し改良しました。)
Github などのコメントするときにも、その場で(Mac で撮った)GIFで LGTM を送ることができます。
( Mac -> Gyazo ->
lgtm )
という流れです。
これを使えば、岩手にいる離れた人との作業でも感情を伝えやすいですね。
※ 動作は Mac のみになります。
※ gyazo での写真は消されないので、注意してください。
# $ brew update && brew upgrade # $ brew install imagesnap # $ brew install imagemagick # $ gem install gyazo #!/usr/local/bin/ruby require 'gyazo' LGTM_API = 'http://lgtm.herokuapp.com/' file_name = Time.now.strftime("%Y-%m-%d-%H-%M-%S") # あれば、消しとく system("rm -f /tmp/capture_*.gif") # 3回写真撮る system("say Say cheese!") (1..3).each do |i| system("/usr/local/bin/imagesnap -w 2.0 /tmp/capture_0#{i}.gif") system("say next shot!") if i < 3 end # 撮った3枚で gifをつくる(素材は消しとく) system("/usr/local/bin/convert -delay 10 -loop 0 /tmp/capture_*.gif /tmp/#{file_name}.gif") system("rm -f /tmp/capture_*.gif") image = "/tmp/#{file_name}.gif" # Gyazo にアップロード g = Gyazo::Client.new gyazo_url = g.upload(image) # 5秒くらい待ったほうがよさそう puts "generating..." sleep 5 # ブラウザで開く system("open #{LGTM_API}#{gyazo_url.gsub(/gyazo/, 'i.gyazo')}.gif")
その場だけで使うことを考えて、ローカルに保存される写真は消すようにしています。 ここは、適宜使いやすいように path や設定などを変えると良いと思います。
まとめ
今回は、厳選して3つだけ「上京して、役に立ってるアプリと簡易スクリプト達」を紹介しました。
簡単な紹介でしたが、次はインフラ的なことを話したいと思います。
ではでは。
参考・引用
- 橋本商会 » プログラマブル電球hueをRubyから使う : http://shokai.org/blog/archives/8324
- 無料でライフログを自動で取れるアプリ「Moves」を1週間使ってみました - GIGAZINE : http://gigazine.net/news/20140502-moves/
- Cal-HeatMap : Calendar Heat map with d3.js : http://kamisama.github.io/cal-heatmap/v2/#itemname-example
- lgtm : http://lgtm.herokuapp.com/