Skip to content

Twitter のユーザーストリームを受け取ってアレコレする CLI ツール作りました

|

作りました。

creepy
https://github.com/mitukiii/creepy

前置き

以前にも同名の CLI ツールを作ったんですが、全くの別物になってます。
以前のものは “rm -rf *” という男らしいコマンドによりなかったことにされました。
もし以前のバージョンが必要であれば v0.0.1 (0-0-unstable) から利用することが出来ます。

以下、README より。

creepy

Twitter のユーザーストリームを受け取ってアレコレするアプリ

主な機能

  • 全てのステータスの MongoDB への保存
  • 指定したキーワード文字列/正規表現にマッチしたツイートの通知
  • 指定したユーザーのツイートの通知
  • 指定したイベントの通知
  • MongoDB からツイートの検索

便利機能満載です。

使い方

Github の README を見て下さい。

なお、設定は Ruby で書く必要があります。
そのため難易度は高いですが、自由度も高いです。

ソースコード

https://github.com/mitukiii/creepy

ライセンス

http://sam.zoy.org/wtfpl

Comments (1)

初めて Chrome Extension 作ったメモ

|

先日書いた記事 で紹介しましたが Chrome Extension を初めて作成しました。

Chrome ウェブストア – Make::Booth Stream

おそらく、何を考えてどんな作業をしたか忘れるであろう自分のために
今度 Chrome Exntension を作る時のメモを残しておきます。

参考資料

Chrome拡張入門
Chrome Extension の概要と作り方、また各種参考記事についてまとまっています。
まずはこの記事に目を通すのがオススメです。

Google Chrome Extensions – Google Code
公式ドキュメント(英語)です。

Chrome Extensions API リファレンス
上記の日本語意訳です。

プロジェクトの作成

僕は手動でディレクトリやマニフェストファイルを作成しました。
プロジェクトのディレクトリ構造は taberareloo を参考させて頂きました。

├── Rakefile
└── src
    ├── manifest.json
    ├── popup.html
    ├── background.html
    ├── images
    │   ├── icon.png
    ├── stylesheets
    │   └── popup.css
    └── javascripts
        ├── background.js
        └── popup.js

プロジェクトの作成から開発の流れはこちらが参考になります。
はじめてみよう | Chrome Extensions API リファレンス

ジェネレータを使う

後から調べると Ruby 製のジェネレータがありました。

https://github.com/piglop/chrome-extension-scaffold

JavaScript を .coffee、HTML を .haml で記述出来ます。
ファイルの変更を感知しコンパイルまで面倒を見てくれます。
普段から .coffee や .haml を利用している方は使えば楽を出来ます。

パッケージ用の Rakefile を作成

作成した Chrome Extension をギャラリー公開用の .zip にパッケージするため Rakefile を用意します。
Ruby ライブラリの crxmake を使います。

Rakefile

require 'rubygems'
require 'crxmake'
require 'json'

NAME          = 'YOUR EXTENSION NAME'
PEM           = 'YOUR PEM PATH'
MANIFEST_PATH = File.join(File.dirname(__FILE__), 'src', 'manifest.json')
MANIFEST      = JSON.parse(open(MANIFEST_PATH).read).freeze
VERSION       = MANIFEST['version']

namespace :pkg do
  desc 'create zip for Google Extension Gallery'
  task :zip do
    mkdir_p 'pkg' unless File.exists? 'pkg'
    package = "pkg/#{NAME}.zip"
    rm package if File.exists? package
    CrxMake.zip(
      :ex_dir     => 'src',
      :pkey       => PEM,
      :zip_output => package,
      :verbose    => true,
      :ignoredir  => /^\.git$/
    )
  end
end

NAME, PEM(秘密鍵)は適宜読み替えて下さい。

後は

rake pkg:zip

上記コマンドで “pkg/#{NAME}.zip” にパッケージが作成されます。

パッケージングに関してはこちらが参考になりました。
パッケージング | Chrome Extensions API リファレンス

アイコンとスクリーンショットの準備

パッケージの中に含めるものとして

  • 128×128 の png アイコン
  • 48x48p の png アイコン

ギャラリーへ公開時に

  • 440×280 の宣伝用画像
  • 1280×800 または 640×400 のスクリーンショット

が必要になります。
(2012/5/2 現在)

僕は公開直前になって慌てて準備したので、予め準備しておくと良いんじゃないでしょうか。

アイコンのフォーマットとマニフェストファイルへの記述の仕方は下記記事をどうぞ。
Formats: Manifest Files – Google Chrome Extensions – Google Code

ギャラリーへ公開

ギャラリーへの公開はそのまま下記の記事での流れを参考にさせて頂きました。
続・先取り! Google Chrome Extensions:第10回 Chrome拡張の国際化とギャラリーへの公開と総まとめ|gihyo.jp … 技術評論社

最後に

ほぼつまづくことなくプロジェクトの作成からギャラリーへの公開まで出来ました。
Chrome Extension は気軽に作れて楽しいですね。

今回作ったもののソースコード
https://github.com/mitukiii/make-booth-stream-chrome-extension

Comments (0)

Make::Booth で DO INTERNET YOURSELF

|

DO INTERNET YOURSELF

良い言葉ですね

「ものづくり/創作物」の投稿・展示サイトMake::Booth

本日、α版オープンいたしました! | Make::Booth::Blog

あなたの作ったものならば、どんな物でもみんなに知らせる事ができる「ものづくり/創作物」の投稿・展示サイトMake::Booth[http://makebooth.com]のα版サービス(先行ユーザーの作品の投稿受付)をオープンいたしました!

期待の Web サービス Make::Booth がついにα版オープンしました
僕も早速 D.I.Y しました

Make::Booth Stream

リリース初日ということなので Make::Booth をハックしました
Make::Booth の Stream を垂れ流す非公式アプリケーションです

Make::Booth Stream for Ruby

Stream を Growl で垂れ流します
これでみんなの D.I.Y をリアルタイムで知ることが出来ます

詳細はこちらからどうぞ
Make::Booth Stream for Ruby / あばばばばばば あばばっあびゃばびゃばば

Make::Booth Stream Chrome Extension

Stream を Google Chrome でいつでもチェック出来ます
便利ですね

詳細はこちらからどうぞ
Make::Booth Stream Chrome Extension / あばばばばばば あばばっあびゃばびゃばば

DO INTERNET YOURSELF

Make::Boothを通じて、あなたのインターネットをMakeしてください

ものづくり楽しいです

DO INTERNET YOURSELF!

参考リンク

Make::Booth

本日、α版オープンいたしました! | Make::Booth::Blog

Comments (1)

動画からアニメーション GIF を生成する

|

動画を簡単にアニメーション GIF に変換出来たら良いなと思い立って調べてみました。

環境

Mac OX X 10.7.3
ffmpeg version 0.10.2
ImageMagick 6.7.5-7

必要なもの

ffmpeg
imagemagick

Mac で Homebrew を使っているのであれば下記コマンドでインストール出来ます。

brew install ffmpeg
brew install imagemagick

動画からアニメーション GIF を生成する

簡単にやるなら下記コマンドで出来ます。

ffmpeg -i input.mov -pix_fmt rgb24 output.gif

フレームレートやサイズの指定がない場合は元動画ファイルの情報がそのまま使われます。
入力ファイルは .mov に限らず .mp4, .odv など ffmpeg が対応してるものは問題なく変換出来ました。

ただ、このままだとだとファイルサイズが大きくなります。
少し時間がかかりますが ffmpeg で png に分解した後 imagemagick で結合するという方法もあります。

ffmpeg -i input.mov $TMPDIR/outout.%04d.png
convert $TMPDIR/outout.*.png output.gif

ひと手間かかりますが僕が試した限りではファイルサイズが半分になりました。
心持ち画像も綺麗な気がします。

もっと楽をする

楽をするために Ruby でラッパースクリプトを書きました。
ご自由にお使い下さい。
streamio-ffmpeg gem, thor gem が必要です。

こんな感じで使えます。

$ ruby gif_transcoder.rb --help
Usage:
  gif_transcoder.rb INPUT [OUTPUT]

Options:
  -q, [--quality=QUALITY]
                           # Default: row

$ ruby gif_transcoder.rb input.mov output.gif --quality=high

参考リンク

下記のサイトを参考にさせて頂きました。

ffmpeg と ImageMagick で動画をアニメGIF 変換
ffmpeg, GraphicsMagick を使って奇麗で容量の小さい gif アニメを作る – 徒手空拳日記

Comments (0)

Mac の GarageBand でトランス作った

|

久々に DTM 欲が沸き上がったので, Mac に入ってた GarageBand を初めて使ってみた。

mitukiii – ろくろまわす

昨日夕飯後唐突に思い立って作り始めた。
学習/製作時間は4時間ほど。
エレクトロニカを作るのは初めてだったが, 案外それっぽいものは出来た。
無料でこんだけ出来る。凄い。

参考動画

GarageBand での作業の進め方はこれを見てなんとなく掴んだ。

フレーズの作り方はこれを参考にした。

その他

簡単に使ってみたが, トラックのフレーズごとにエフェクトをかけたり音符ごとのベロシティは設定出来なかった。
音源もそれなりに理想に近いものは見つかるものの, かゆいとろこに手が届かない。
だからと言ってシンセを自分で弄るのも難しそうだ。
これはいよいよ Logic Pro を買えというお告げか。

あるいは音源だけであれば MainStage を買うことでもゲット出来るようだ。
参考: GarageBandユーザーが約7万円分相当の音源を2,600円でゲットする方法 | ひとりぶろぐ

Logic Pro – Apple
MainStage – Apple

Comments (0)

Wii のパンドラの塔が神ゲーだった件

|

先月ふらっと買ったパンドラの塔が神ゲーだった。
神ゲーは言い過ぎにしても間違いなく良作だった。

ストーリー

Amazon.co.jp: パンドラの塔 君のもとへ帰るまで: ゲーム

国をあげ巫女となった少女セレスは、突如として獣の呪いに苛まれる。その呪いは、”十三訃塔”に棲む獣、”主”の肉によって浄化できると云う。彼女を救うため、1人打ち棄てられた十三訃塔に挑む青年エンデ。呪いに苦しみながらもエンデの身を案じ、帰りを待つセレス。2人を待つ運命とは・・・。”鎖”を操り13の塔を踏破する、アクションRPG。

どんなゲーム

ジャンル

上記してある通りジャンルは3DアクションRPG。
2chで書かれてた “悪魔城ラブプラスの伝説” って形容が的を得ている。
鎖のアクションによる塔の謎解き+ヒロインとのコミュニケーションによる恋愛要素を合わせたゲーム。

ダンジョンと敵

塔の謎解きはそれほど難しくなくサクサク進む。
頭を捻るのが苦手な僕には丁度良い。
敵はそこそこ強く慣れないうちはチェックポイントからのやり直しが頻発するかもしれない。
敵により攻撃や回避を上手く使い分けるアクション性が要求される。
といってもこれもそこまで難易度が高いわけでもない。
余程アクションが苦手な人でなければすぐに慣れ楽しくなるだろう。

武器

鎖での攻撃やアクションは多岐に渡るが、丁寧なチュートリアルのおかげで難なく出来るようになる。
鎖のアクションはどれも無駄がなくまたエフェクトも格好良いため素晴らしいとしか言えない。
メイン武器は鎖だが、サブ武器もある。
初めは両手剣しか使えないが、二刀剣、大鎌、と後半になるにつれ使用出来るものが増えていく。
これも武器ごとに特徴がありどれを使うかが悩ましい。

恋愛要素

ヒロインとの親密度によってストーリーが分岐するため、ゲームの鍵はヒロインとなる。
ヒロインとは会話をしたりプレゼントを上げたりと様々なイベントがある。
服やアクセサリをプレゼントすると実際にそれを身に付けてくれる。可愛い。
もうひとつひとつの言葉や仕草が可愛い。可愛すぎる。新婚生活みたい。
緊張の糸を張りっぱなしのダンジョンから帰ってきた時の癒しにもなる。

ヒロインは時間経過と共に “獣の呪い” により獣化してしまう。
そのため塔で得られる肉を食べさせて浄化しないといけない。
要するに塔の探索/攻略に時間制限がある。
ただ、時間設定がまた絶妙なバランスに設定されてる。
これが長ければヌルゲー、短ければクソゲーになっていたのではないか。
また、獣化した時の姿が、獣というよりはバイオハザードの生物みたいになってしまう。
大抵のプレーヤーは一度獣化を見るとヒロインが可哀想になりこまめに塔から帰ってくるようになるだろう。
定時退社する夫みたい。ますます新婚生活っぽい。

上述した通り、恋愛要素がゲームの鍵となる。
そのため、キャラクタに感情移入出来ないとこのゲームは辛いかもしれない。

まとめ

恋愛要素が好きで(苦にならず)アクションが好きな人はオススメ。

能登可愛いよ能登

参考リンク

パンドラの塔 君のもとへ帰るまで

Comments (0)

Tumblr のアニメーション GIF で VJ が出来る GifVJ を Web アプリケーションに移植した

|

Tumblr のアニメーション GIF で VJ が出来る GIfVJ1.0 – 反射神経 がクールだったので
アプリケーションをダウンロードしなくても気軽に使えるよう Web アプリケーションに移植しました。

GifVJ – gifvj.co

使い方

元アプリ製作者の方 @bimyoo 作られた参考動画が格好良く, 使用イメージも一発で分かります。

Tumblr の ID を入力

Tumblr の ID を入力すると, 最新200件から最大45枚の GIF アニメーションを読み込みます。
読み込みに CPU とメモリを大量に食うので注意してください。

Tumblr の ID は自分のでなくても構いません。
デフォルトの gif-vj, あるいは bimyoo, dvdp など
クールなアニメーション GIF を集めてる Tumblr ID を入れると楽しいです。

操作方法

読み込み/アニメーション GIF の解析が完了するとプログレスバーが消え自由に操作出来るようになります。
操作方法はオリジナルのものを踏襲しています。

  • enter: アニメーションの再生/停止切替
  • j/→: 次のフレーム(停止時のみ有効)
  • k/←: 前のフレーム(停止時のみ有効)
  • r: 逆再生切替
  • space: リズム同期(キーを叩いた間隔で設定)
  • y/u/i/o/p: アニメーション GIF のブロックを選択(1ブロック9枚)
  • 1-9: アニメーション GIF を選択
  • ?: About & Help を表示

y/u/i/o/p の5つの各キーごとにそれぞれ9枚のアニメーションを 1-9 で選択,
最大で45枚のアニメーションを操作出来ます。

Let’s VJ

後は好きなように弄るだけです。
音楽に合わせて楽しむなり
話の種にするなり
面白アニメーション GIF をスロー/逆再生して楽しむなり
ご自由にお使い下さい。

推奨環境

Chrome / Safari の最新版で動作確認しています。
Firefox も多分動きます。
上記しましたが CPU とメモリを大量に食うので注意してください。

ソースコード

MIT License です。
mitukiii/gifvj – GitHub

技術的なことについては製作中 Gist に書きました。
GIF アニメ分解して Canvas で再生するやつ — Gist

元アプリケーション

クールなアプリケーションを作った @bimyoo に乾杯。
GIfVJ1.0 – 反射神経

上記の紹介記事。
CBCNET:LOG » Blog Archive » GifアニでVJ – GifVJ

合わせて読みたい

WWW.AKIRAFUKUOKA.COM BLOG | 今VJするならブラウザででしょ! HTML5でVJアプリ「Fi-VJ」を制作しました
コンセプトは少し違いますがこれもクールです。
アニメーション GIF ではなく, .mov/.mp4/.m4v ファイルで VJ が出来ます。

Comments (2)

Gisty で快適 Gist 生活

|

ブログ書くの面倒くさい

イケメンプログラマのモテカワ日記 — Gist
※この日記は上記 Gist に書かれた日記(駄文)のミラーです
※タイトルは自重しました

Gisty 入れた

gem install gisty
echo 'export GISTY_DIR="$HOME/Dropbox/Gist"' >> ~/.bashrc
source ~/.bashrc
git config --global github.user <user>
git config --global github.token <token>
cd $GISTY_DIR
gisty sync

これで快適 Gist 生活

本題

Gist で(ブログ|日記)書くの有りな気もする
バージョン管理もラクラク

いや別に普通にブログに書いても良いんだけど
なんとなくハードルの高さありませんか

Gist でも Tumblr でも何でも良いんだけど
Twitter に書くには長い, ブログに書くには短い
そういうものをうやむやにせずどこかに書き残して(捨てて)いきたい

一生遊んで暮らしたい

Comments (0)

2011年振り返り

|

2012年を迎え早10日経ちましたが2011年の個人的なまとめというか雑感というか書き記しておきます。

Ruby is 楽しい

今思うと2011年はひたすら Ruby を触ってる1年でした。Ruby on Rails で Web アプリケーションや RubyGems ライブラリをいくつか作りました。去年一昨年と興味を持ったものに片っ端からあれこれ手を出してたのを考えると、ある程度自分の中での方向性あるいは興味の対象というものが定まってきたのではと感じます。

スマートフォン is 楽しい

2010年も iOS や Android 周りを弄ったりしてましたが、2011年も個人や仕事でとスマートフォン周りを弄る機会がありました。Web アプリケーションから入った僕としてはやはり GUI アプリは難しいなと感じます。ただそれに見合う面白さがあるので、スマートフォン周りも積極的に関わりたいです。

音楽ゲーム is 楽しい

ふとしたことをきっかけに春頃に音ゲにハマりました。今年は僕の音ゲ元年となりました。どうでも良いですね。それに関連し音楽の趣味がメタル/ハードコアからエレクトロニカ/トランスなどにシフトしてきました。バンド周りでも色々と動きがありました。

東京 is 楽しい

2010年の出張中に仲良くなった人達に会いに5月の連休に、そして12月の TDM に合わせ、2度東京へ旅行に行きました。プログラマの人も、そうでない人も、同年代の人も、年上の人も、様々な方と交流させて頂きました。また行きます。

2011年

特に自分の中でのインパクトが大きかったものを上記しました。
2011年もなんだかんだ面白おかしく楽しめました。

2012年

年が明けたことに浮かれて新年の抱負を書き記したりはしません。

最後に

2011年も Twitter と、そこにいる人達を中心にたくさんの方のお世話になりました。
2012年も迷惑をかけますが、2011年以上に面白おかしく楽しみましょう。

Comments (0)

Tumblr API v2 の Ruby ライブラリ “tumblife for ruby” アップデートしました

|

Tumblr API v2 の Ruby ライブラリ “tumblife for ruby” 作りました
更新しました。

使い方/書き方が大幅に変わったのでアップデートする場合は注意してください。

インストール

gem install tumblife

使い方

Tumblr API v2 は OAuth 必須です。
まずは Tumblr にアプリケーション登録をし、OAuth Consumer Key を発行して貰う必要があります。

require 'tumblife'

Tumblife.configure do |config|
  config.consumer_key = '*** consumer key ***'
  config.consumer_secret = '*** consumer secret ***'
  config.oauth_token = '*** oauth token ***'
  config.oauth_token_secret = '*** oauth token secret ***'
end

client = Tumblife.client

avatar = client.avatar('mitukiii.tumblr.com')
avatar.avatar_url # => http://24.media.tumblr.com/avatar_87fdfd3ea0e3_64.png

info = client.info('mitukiii.tumblr.com')
info.blog.name # => mitukiii
info.blog.url # => http://mitukiii.tumblr.com/

dashboard = client.dashboard
dashboard.posts.each do |post|
  # ... do something
end

必要なもの

faraday
faraday_middleware
simple_oauth
json(ruby 1.9 未満の場合)
hashie

API

このライブラリは API を薄くラップし、レスポンスの JSON を Hashie 形式で返してるだけです。

各 API とメソッドとの対応は以下の通りです。

Tumblife Tumblr
info(blog, params = {}) /v2/blog/{blog}/info
avatar(blog, params = {}) /v2/blog/{blog}/avatar
followers(blog, params = {}) /v2/blog/{blog}/followers
posts(blog, params = {}) /v2/blog/{blog}/posts
queue(blog, params = {}) /v2/blog/{blog}/posts/queue
draft(blog, params = {}) /v2/blog/{blog}/posts/draft
submission(blog, params = {}) /v2/blog/{blog}/posts/submission
create_post(blog, params = {}) /v2/blog/{blog}/post
edit_post(blog, params = {}) /v2/blog/{blog}/post/edit
reblog_post(blog, params = {}) /v2/blog/{blog}/post/reblog
delete_post(blog, params = {}) /v2/blog/{blog}/post/delete
dashboard(params = {}) /v2/user/dashboard
likes(params = {}) /v2/user/likes
following(params = {}) /v2/user/following
follow(params = {}) /v2/user/follow
unfollow(params = {}) /v2/user/unfollow
info_user(params = {}) /v2/user/info

各 API の詳細については下記を参照してください。
API | Tumblr

ソースコード

mitukiii/tumblife-for-ruby – GitHub

ライセンス

MIT Licenseです。

Comments (3)