kazumalab tech log

流行りとリラックマと嵐が大好きです。技術的ログ。

⛪️チャペルをASCII Artで表示してみたい

mwedアドベントカレンダー1日目の記事です。今年からみんなのウェディングでもアドベントカレンダーを始めました! 初日、初年ですので、少し肩を温めるネタ、やりたいけどやれてなかったことをテーマでいきたいと思います。

チャペル

みんなのウェディングは結婚式の口コミサイトを運営しているサービスです。 そこで、結婚式といえば、、、とりあえずチャペルでしょ!

ということでターミナル上にShellにログインするたびにASCIIArtでチャペルを表示していきます。

ASCII Art

Search · ascii art · GitHub

githubでAsciiArtと検索すると結構な数が引っかかります。 結構人力だった。笑

下ごしらえ

# .zshrc
export MYZSH=$HOME/.zsh

function loadlib() {
  lib=$1
  [[ -f $lib ]] && . $lib || echo "Could not load $lib"
}

function _main() {
  for zsh in $MYZSH/*.zsh; do
    loadlib $zsh
  done
}

_main

まずは起動時にzshrcが読まれたときに実行するスクリプトを記述します。

github.com ここを参考どころか、そのまま使わせてもらいました。

これであとは.zshディレクトリ配下にShell ScrpitをおいてあげればOKです。

はじめの一歩

文字を出力する

とりあえず読み込まれたらHelloWorldの文字を出す。

$ vim .zsh/sample.zsh
echo "HelloWorld"

f:id:kazumalab:20171130231823p:plain

いい感じですね。 しかし色がなくて寂しいですね。

色を変更する

調べて見たところ

\e[31mなどで色を変更できるらしいのでそれを使ってみます。 ちなみに今回はechoを使うのでそちらでも色を付けることができました。

echo "\e[31mHelloWorld"
echo "\e[32mHappyWedding"

f:id:kazumalab:20171130231725p:plain つけた場合こんな感じ。

チャペルを作る

f:id:kazumalab:20171201122142p:plain

ちょっとこれだと寂しいので色々中身をいじってみます。

やりたいこと

  • チャペルのASCIIART作成
  • 花火の色を読み込みごとに変更

これらをやるのにShellScriptを書きました。

ヒアドキュメントを使ってみる

chapel=`cat << Chapel
  (  \e[31mHappy Wedding!!\e[m )
   (_________    ___)                   \e[0;${col}m \ / \e[m
             \  /             _|_       \e[0;${col}m  *  \e[m
              \/               |        \e[0;${col}m / \ \e[m
                              / \       \e[37m  |  \e[m
                             /~~~\
                            /~[+]~\
                           /~~~~~~~\
                  \e[32m  $%&  \e[m /_________\
                  \e[32m #%$%$ \e[m |         |
                  \e[32m#$%&%$&\e[m |   ###   |
                  \e[32m &%&$& \e[m |   ###   |
          __________|_|___|___###___|_!-!_______
                          /          Minnna no Wedding AdventCalender!
Chapel`

こんな感じで、ヒアドキュメントをまずはcatで変数にぶっこんで、 それをあとでechoで表示させました。

GithubのShellScriptをみてみると意外とこの方法が多かったので採用しました。

で、せっかくなのでRubyも使ってみる

今回はヒアドキュメントを使って、ShellScript内にRubyのコードを展開して、 ランダムな値をArray Sampleを使って弾き出し、それを花火の色を毎回変更することにします。

terminalで使える色は以下を参考にしました。

stackoverflow.com

col=$(ruby << EOM
puts [31, 32, 33, 34, 35, 36, 37].sample
EOM
)

pickup random number from arrayはShellScriptで書けますが、Rubyを少し入れたかったのです。

リポジトリ

今回のリポジトリはこちらに作りました。

github.com

結果

今回はASCII ART初挑戦でした。 最終的にこのようになりました。

f:id:kazumalab:20171201141818g:plain

今後はもう少し頑張りたいですね。

明日12/2のmwedアドベントカレンダーまさくんRubyのI/Oクラスについて語ってくれるそうです! 楽しみですね!