上京して、使ってるいるアプリ(ガジェット)と簡易スクリプト達。

この記事は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 をテンプレートに整形して表示しただけです。

f:id:whitech0c0late:20141207180354p:plain

色の閾値はちょっとおかしい気がしますが、最近は土日もちゃんと草が生えていることがわかります。岩手にいる時よりも、はるかに歩くことが増えました。  

f:id:whitech0c0late:20141207181053p:plain

他にも歩いた経路や、徒歩数などのデータがあるので、他にもいろいろ活用方法がありそうですね。
ちなみに、最近 Ingress  もはじめました。

Jigadori スクリプト

これは、

http://whitech0c0late.hatenablog.com/?page=1395054814

の、記事でも使った GIF 生成スクリプトです(少し改良しました。)
Github などのコメントするときにも、その場で(Mac で撮った)GIFで LGTM を送ることができます。
Mac -> Gyazo -> lgtm
という流れです。

これを使えば、岩手にいる離れた人との作業でも感情を伝えやすいですね。

※ 動作は Mac のみになります。
gyazo での写真は消されないので、注意してください。

http://lgtm.herokuapp.com/http://cdn-ak.f.st-hatena.com/images/fotolife/w/whitech0c0late/20140314/20140314192343.gif

# $ 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つだけ「上京して、役に立ってるアプリと簡易スクリプト達」を紹介しました。
簡単な紹介でしたが、次はインフラ的なことを話したいと思います。 ではでは。

参考・引用