Kōenji

とうきょうとすぎなみく

Hubot の Ruby 版 Rubo 作った

Github 社製の Bot フレームワーク Hubot の Ruby 版 Rubo 作った

どうでも良い話

Hubot のメッセージを受け取って正規表現でマッチングしてメッセージを返したり返信したり音楽を再生したりという構造が自作ツイッターのツイートとかイベントとか保存したり通知したりする便利ライブラリと似ている箇所があり自作ツイッター(中略)ライブラリをさらなる高みを目指して開発するための参考になるからだとかブラウザ以外のプラットフォームで極力 JavaScript 書きたくないからだとかどうせ外に出てもチョコレート貰えないしだとか雪降って外に出られなくて暇だしとかそんな理由で書いた

インストール

下記コマンドでインストール出来る

$ gem install rubo

使い方

こんな感じで使える

$ rubo --adapter=shell
Rubo> rubo help
Rubo die - End rubo process
Rubo echo <text> - Reply back with <text>
Rubo fake event <event> - Triggers the <event> event for debugging reasons
Rubo help - Displays all of the help commands that Rubo knows about.
Rubo help <query> - Displays all help commands that match <query>.
Rubo ping - Reply with pong
Rubo show storage - Display the contents that are persisted in the brain
Rubo show users - Display all users that rubo knows about
Rubo the rules - Make sure rubo still knows the rules.
Rubo time - Reply with current time
Rubo> rubo ping
PONG
Rubo> rubo echo にゃーん
にゃーん
Rubo> rubo show users
1 Shell

Rubo> rubo the rules
第一条 ロボットは人間に危害を加えてはならない。また、その危険を看過することによって、人間に危害を及ぼしてはならない。
第二条 ロボットは人間にあたえられた命令に服従しなければならない。ただし、あたえられた命令が、第一条に反する場合は、この限りでない。
第三条 ロボットは、前掲第一条および第二条に反するおそれのないかぎり、自己をまもらなければならない

よく分かんないんだけど具体的に何が出来るの

Rubo Adapter(Rubo が動ける場所)

  • シェル

Rubo Plugin(Rubo が出来ること)

  • ヘルプの表示
  • ロボット三原則
  • ピング
  • 偽装イベントの発火

まだ最低限の部分しか書いてないのでシェルでしか動かない
クエリを投げたらラーメン画像検索してきてくれたりもしない

もっと色々させたいんだけど

  • rubo- から始まる名前の Gem がインストールされてる場合は全て自動的に読み込まれる

  • 下記コマンドオプションで指定ディレクトリ内の .rb ファイルを全て読み込んで起動することが出来る

$ rubo --require "/path/to/my_beautiful_plugins"

Plugin の書き方はピングのソースを読めばなんとなく雰囲気を掴めると思う

これからやりたいこと

Rubo Adapter

  • Twitter
  • Idobata
  • ChatWork

Rubo Plugin

  • 便利そうなやつを片っ端から

を書いていきたい

NHK 番組表 API を触る為の Ruby クライアント作った

NHK 番組表 API が公開されたので RubyAPI ライブラリを作った

インストール

下記コマンドでインストール出来る

gem install nhk_program

使い方

こんな感じで使える

client = NHKProgram.new(api_key: 'YOUR_API_KEY')

# 明日のNHK総合1の番組表取得
data = client.list('130', 'g1', Date.today + 1)
# 違う書き方
# data = client.list('東京', 'NHK総合1', :tomorrow)
data.list.g1.each do |program|
  # 何かする
end

# 明日のNHK総合1のアニメの番組表取得
data = client.genre('130', 'g1', '0700', Date.today + 1)
# 違う書き方
# data = client.genre('東京', 'NHK総合1', 'アニメ/特撮(国内アニメ)', :tomorrow)
data.list.g1.each do |program|
  # 何かする
end

# みんなのうたの番組詳細取得
data = client.info('130', 'e1', '2014020700918')
# 違う書き方
# data = client.info('東京', 'NHKEテレ1', '2014020700918')
program = data.list.e1.first
# 何かする

# 今NHK総合1でやってる番組表取得
data = client.now('130', 'g1')
# 違う書き方
# data = client.now('東京', 'NHK総合1')
data.nowonair_list.g1.following.each do |program|
  # 何かする
end

その他

深夜のテンションで一気にコード書いたけど今のところ自分で使う予定がない
是非皆さんご活用ください

関連リンク

mitukiii/nhk_program-for-ruby

NHK番組表API

NHK番組表APIを触る為のPerlクライアント作った - その手の平は尻もつかめるさ

人間をダメにするソファが僕をダメにした

所謂ビーズクッションってやつ。

ビーズクッション CUBE L ブラウン

ビーズクッション CUBE L ブラウン

半年ほど前に買ってずっと愛用していたが使うのをしばらくやめてみることにした。どうもこれのせいで調子が悪くなっている気がする。

部屋とビーズクッションと僕

普段はビーズクッションにうずまって MacBook でインターネットや開発をしている。ビーズクッションにうずまると両脇のビーズが盛り上がり、膝に MacBook を置いているとキー打つためにはをそこに肘を置くことになる。更にリクライニングした状態だとディスプレイの文字がよく見えないので首を前に出す姿勢になる 。この不自然な姿勢が肩と首に大きな負荷をかけていることに気付いた。ここのところずっと肩こりと頭痛に悩まされてる。

これは MacBook を使っている時の問題なので、普通に本を読んだり TV を見る分には良いと思う。

それとは別に、ビーズクッションにうずまるとだらけた気持ちになってしまう。僕はだらけた人間なのでだらけるのは大好きだが、四六時中ずっとだらけてるわけにもいかない。漢はやるべきときはやらねばならぬ。

僕とビーズクッションのこれから

今は畳に正座し背筋を伸ばしながらこの文章を書いている。膝に負荷がかかっていることを感じるが肩や首には全く負荷を感じない。快適、だと思う、多分。心なしか意識が高まってるがする。

しばらくはビーズクッションなしの生活をしてみる。健康になりたい。