2013年08月01日

アスキーアート (ASCII ART) をコマンドラインで楽しむ3つの方法

Apache Maven なんかに影響を受けて自分が作ったアプリケーションにもアスキーアート(AA)を使った起動メッセージを実装した!、なんて経験無いでしょうか。 え、馬鹿じゃないの? ・・・ 僕は真似したことがあるんですけど作るのが大変なんですよね。 今日はコマンドラインでアスキーアートを楽しむ3つのプロダクトをご紹介します。

ascii art commands


FIGlet で楽しむアスキーアート


僕がアプリケーションの起動メッセージ作成に使いたかったのがこれ。 FIGlet は文字列をアスキーアート化してくるコマンドです。

FIGlet - hosted by PLiG

FIGlet は Mac から Windows まで幅広くサポートしていますが、ここでは次のコマンドで Ubuntu へインストール。

$ sudo apt-get install figlet


さあ準備が出来ました。 figlet コマンドの引数に文字列を指定して実行みましょう。

$ figlet netbuffalo

figlet simple ascii art

これですこれ。 何処か楽しい気分になりますね。

FIGlet では幾つかのデザイン(フォント?)が用意されています。

まずはデザインの保存場所を次のコマンドで確認して、

$ figlet -I2
/usr/share/figlet


表示された場所にある *.flf ファイルを見てみましょう。

$ ls /usr/share/figlet/*.flf
/usr/share/figlet/banner.flf    /usr/share/figlet/script.flf
/usr/share/figlet/big.flf       /usr/share/figlet/shadow.flf
/usr/share/figlet/block.flf     /usr/share/figlet/slant.flf
/usr/share/figlet/bubble.flf    /usr/share/figlet/small.flf
/usr/share/figlet/digital.flf   /usr/share/figlet/smscript.flf
/usr/share/figlet/ivrit.flf     /usr/share/figlet/smshadow.flf
/usr/share/figlet/lean.flf      /usr/share/figlet/smslant.flf
/usr/share/figlet/mini.flf      /usr/share/figlet/standard.flf
/usr/share/figlet/mnemonic.flf  /usr/share/figlet/term.flf


この flf ファイル名を -f オプションで指定するとデザインの変更が出来ます。
 
$ figlet -f bubble netbuffalo

figlet design bubble


-p オプションと組み合わせてファイルに含まれる文字列をアスキーアートに変換する事も可能。

$ figlet -p < /etc/hosts

詳しい使い方は man ページをどうぞ。


boxes で楽しむアスキー/ボックスアート


boxes はメッセージを囲むボックス・アスキーアートを表示してくれるコマンドです。

boxes - draws any kind of box around some given text

ここでは次のコマンドで Ubuntu へインストール。

$ sudo apt-get install boxes


百聞は一見に如かず。 早速、次のコマンドで boxes を体感してみましょう。 パイプで受け取ったメッセージを -d オプションで指定したデザイン(ここでは peek )で AA 出力しています。

$ echo -e "going to shutdown after 3 minutes...\n`date +"%Y-%m-%d %H:%M:%S" -d '3 minutes'`" | boxes -d peek  -a hcvc

boxes ascii art sample1


-d で指定可能なデザインは次のコマンドで確認出来ますよ。

$ boxes -l | less


使ってみると分かりますが boxes はソースコードのコメント編集と相性の良いコマンドです。

実際に Vim, Emacs、Jed との統合が可能。 例えば次のようなソースファイルを vim で開いて、

public class Hoge {

  public void print() {
    System.out.println("hogehoge");
  } 
}

メソッドの前に2行ほどコメントを追加します。

public class Hoge {

  This method print 'hogehoge'.
  @author netbuffalo
  public void print() {
    System.out.println("hogehoge");
  } 
}

最後に 'This method ...' 行にカーソルを合わせて 2!!boxes -d peek とコマンド入力すると、

public class Hoge {

  /*       _\|/_
           (o o)
   +----oOO-{_}-OOo--------------+
   |This method print 'hogehoge'.|
   |@author netbuffalo           |
   +----------------------------*/
  public void print() {
    System.out.println("hogehoge");
  }
}

指定した範囲(2行)が peek 形式のコメントに変わりました。

より詳しい使い方はこちらをどうぞ。


cowsay で楽しむ吹き出し型アスキーアート


cowsay はその名が指し示す通り可愛いお牛さんが指定したメッセージを喋ってくれるユーティリティで、最も有名・派生(xcowsay, ponysay)も多いアスキーアート・コマンドかもしれません。

cowsay - Wikipedia

Ubuntu へは次のコマンドでインストールします。

$ sudo apt-get install cowsay


初めての cowsay 。

$ cowsay Oops!

cowsay ascii art sample1


cowsay で利用出来るデザイン、キャラクターは cowsay -l で確認出来ます。

$ cowsay -l
Cow files in /usr/share/cowsay/cows:
apt beavis.zen bong bud-frogs bunny calvin cheese cock cower daemon default
dragon dragon-and-cow duck elephant elephant-in-snake eyes flaming-sheep
ghostbusters gnu head-in hellokitty kiss kitty koala kosh luke-koala
mech-and-cow meow milk moofasa moose mutilated pony pony-smaller ren sheep
skeleton snowman sodomized-sheep stegosaurus stimpy suse three-eyes turkey
turtle tux unipony unipony-smaller vader vader-koala www


デザインは -f オプションで指定しましょう。

$ cowsay -f elephant お前それサバンナでも同じ事言えんの?

cowsay ascii art sample2


cowsay では純粋にアスキーアートを楽しむことができますね。

簡単にオリジナルのデザインを用意することも出来ます。

次のようにアスキーアートを $the_cow = <<"EOC"; 〜 EOC で囲んだファイルを用意して、
($thoughts は吹き出しに使われる埋め込み変数)

$the_cow = <<"EOC";
 $thoughts
  <(_ _)>
EOC


このファイルを cowsay コマンドで指定すればOK。

$ cowsay -f /path/to/gomen.cow ごめんね


もし、日本語文字を含むデザインを用意したいのであれば ソース(Perlスクリプト)を少し修正しましょう。

次のコマンドでスクリプトの場所を確認して、
 
$ which cowsay 
/usr/games/cowsay

このファイルをエディタで開き、 use Encode 'decode'; 、$the_cow = decode('UTF-8', $the_cow); 行を追加します。

#!/usr/bin/perl

##
## Cowsay 3.03
##

- snip -

use Getopt::Std;
use Cwd;
use Encode 'decode';

- snip - 

print @balloon_lines;
$the_cow = decode('UTF-8', $the_cow);
print $the_cow;

- snip -


これで日本語(全角)文字を含んだデザインも使えるようになりました。

cowsay ascii art sample3


それでは、より良い AA ライフを!



顔文字くん グラス ショボーン AR-1305-2
愛龍社
売り上げランキング: 5,652

Posted by netbuffalo at 12:00│Comments(0)TrackBack(0) Linux | ユーティリティ


この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/netbuffalo/4540527

コメントする

名前
URL
 
  絵文字