Rubyでメソッドチェイン可能なクエリオブジェクトを書く

ひとでさんのこの前のYAPCでの発表(ベストスピーカーおめでとうございます)の はてなブログではドメイン駆動など使ってイケてるサービスを作り続けているぜっていう話、 オブジェクト指向やらドメイン駆動の話とかいろいろあったけれども、 結局のところイケてるサービスを作り続けるためには継続的にコードベースも良くしていかなければいけない っていうメッセージがあったのだったのだと勝手に解釈していてすごい共感している。

続きを読む

YAPC::Asia Tokyo 2015に行ってきた #yapcasia

YAPCに参加してきたので感想を書く。

会社がスポンサーやっていたのでスポンサー枠で行けそうだったけど、例年あえて自腹でチケット買ってTシャツもらっている。 今年は、ラストのYAPCってことでトークがやらたらと豪華というか幅が広いというか面白いものが多かった。

観たやつ並べる。

続きを読む

mediakit v0.1.1をリリースした

github.com

最初に想定していた機能をひと通り実装し終えたので、v0.1.x*1リリースしましたです。

最後に実装したのがffmpeg -formatsとか-codecsとかで出力されるフォーマットをパースして、現在利用しているffmpegで利用できるコーデックやエンコーダーデコーダーの情報を定数として利用できる機能です。

こんな感じで利用できます。

# .createでシングルトン生成
ffmpeg = Mediakit::FFmpeg.create

# インスタンスごとに初期化処理が行われ、各リソースのインスタンスが定数として定義されていく
ffmpeg.init

# ffmpeg.init後に利用できる
Mediakit::FFmpeg::AudioCodec::CODEC_MP3 #=> #<Mediakit::FFmpeg::AudioCodec:0x007fb514040ad0>
Mediakit::FFmpeg::AudioCodec::CODEC_MP3.name #=> "mp3"
Mediakit::FFmpeg::AudioCodec::CODEC_MP3.desc #=> "MP3 (MPEG audio layer 3)"
Mediakit::FFmpeg::AudioCodec::CODEC_MP3.encoders #=> [#<Mediakit::FFmpeg::AudioEncoder:0x00000001e6c8b8 @name="libmp3lame", @desc="libmp3lame MP3 (MPEG audio layer 3) (codec mp3)", @type=:audio, @frame_level=false, @slice_level=false, @experimental=false, @horizon_band=false, @direct_rendering_method=false>]
...

これを利用すると、コーデック名をプログラムに記述するときに、現在のffmpegでそのコーデックが使用できるかどうかがわかるし、コーデック名を利用したffmpegのオプションを構築するコードを書くのにも便利そうです。

このようにmediakitではffmpegCLI操作をコードで書くのを助ける機能をどんどん実装し、複雑なトランスコードのスクリプトをテスト可能な状態で記述出来るようにするというのが方針で開発をしております。

*1:v.0.1.0でリリースしようとしたのだけど一番最初にv0.0.1としてリリースしようとした時にv0.1.0としてあやまってリリースしてしまったのでrubygems.orgの仕様でv0.1.0を上書きできない。