画像からQuineを生成するGemを作った

AAQ - Ascii Art Quine

できること

画像からRubyQuineをつくれます。たとえば、Octocatの画像をQuineにしてみます。

f:id:yskoht:20180721224507p:plain
Octcat

出力されるアスキーアートは自分自身を出力するRubyのプログラムになっています。

f:id:yskoht:20180721231717g:plain

aaq Octocat.png | tee OctocatQuine.rb
ruby OctocatQuine.rb

--colorオプションを付けるとカラフルになります。これもQuineになっているので、エスケープシーケンスを取り除けばRubyで実行できます。

f:id:yskoht:20180721234346g:plain

ruby OctocatQuine.rb --color
ruby OctocatQuine.rb --color | ruby -ne 'puts $_.gsub(/\e.*?m/, "")'  | ruby  #  エスケープシーケンスを除いて実行

インストール

以下の環境で動作確認しています。

rmagickを使っているので、 ImageMagickを先にインストールしておきます。 ImageMagickのバージョン7を入れてしまうと、rmagickのインストール時にエラー1が出てしまうので、バージョン6をインストールします。

brew install imagemagick@6
echo 'export PATH="/usr/local/opt/imagemagick@6/bin:${PATH}"' >> ~/.bash_profile
echo 'export PKG_CONFIG_PATH="/usr/local/opt/imagemagick@6/lib/pkgconfig:${PKG_CONFIG_PATH}"' >> ~/.bash_profile

gemでaaqをインストールします。

gem install aaq

動作確認します。

$ aaq -v
aaq 0.1.2

Enjoy!

参考

Quineの作り方

gifはasciinemaasciicast2gifを使いました。

asciinema rec screen.cast
docker run --rm -v $PWD:/data asciinema/asciicast2gif -s 1.8 -t monokai screen.cast screen.gif

Gemの公開方法

色のエスケープシーケンス