9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

さぁ!クリスマスツリーを生やそう!

Last updated at Posted at 2022-12-23

クリスマスが今年もやって来る〜♪ 悲しかった ♫ 出来事を ♫ 消し去るように〜♬
さあ, パジャマを脱がずにクリスマスツリーを作りましょう!

この記事は MicroAd Advent Calendar 2022 の 24 日目の記事です.

今年も去年に引き続きクリスマスの日がやってきました. ここ最近は寒かったり, リモートワークだったりで外に出ておらずクリスマス気分を味わえていない方も多いのではないのでしょうか.
そんなあなたに少しでもクリスマス気分を味わってもらうために今すぐ無料でできるクリスマスツリーの作り方を届けたいと思います.

Step. 1 木を植える

まずは木の AA を作りましょう!昨今は流行りの chatGPT に言えば勝手に作ってくれるので簡単ですね. すごい!🎉
もちろん味わい深く手書きするも良いですし, 画像を AA に変えるようなプログラムなどを作って使うも良しです.

ascii-tree.png

今回は非常にシンプルな木を用意したので, こちらを使っていきたいと思います

      *
     ***
    /...\
   /.....\
   /.....\
  /.......\
  /.......\
 /.........\
^^^^^[_]^^^^^

Step. 2 飾り付けをする

まず今回は Bash スクリプトを用いるので実行可能な形に少し修正します.

printf "
      *
     ***
    /...\\
   /.....\\
   /.....\\
  /.......\\
  /.......\\
 /.........\\
^^^^^[_]^^^^^
"

一部の文字はエスケープシーケンス扱いになるので修正しています.
さて, ここからは楽しい時間です...!例えば次のように自由にツリーへ飾りを付けていきましょう...!

printf "
      *
     ***
    /...\\
   /.o...\\
   /..o..\\
  /.o..o..\\
  /.....o.\\
 /..o......\\
^^^^^[_]^^^^^
"

tree.png

いい感じのツリーは完成しましたか?しかしまだこのままではモノクロの木で味気がないです. いくつかの色を足しましょう.
色は \e[属性;文字色;背景色m で指定することができます.
この \e[... とかなんやねん...って人は ANSI escape code を読むと, この指定でターミナルの文字に色を付けたり, カーソル位置を変えたりといろいろ遊べそうなことがわかります.
さて, どんどんいろんなツリーを作って飾っていきましょう...!

printf "
      \e[1;33m*\e[38;5;22m
     ***
    /...\\
   /.\e[1;35mo\e[38;5;22m...\\
   /..\e[1;36mo\e[38;5;22m..\\
  /.\e[1;37mo\e[38;5;22m..\e[1;35mo\e[38;5;22m..\\
  /.....\e[1;36mo\e[38;5;22m.\\
 /..\e[1;37mo\e[38;5;22m......\\
^^^^^[_]^^^^^
"

これでカラフルなツリーが出来上がりました...! 実行してみると...
color-tree.png
すばらしい...!👏

Step. 3 いろんなイルミネーションパターンを作る

ところでイルミネーションは様々な色に変わったり, 光る位置が変わったりしますよね?
というわけで, いろんなイルミネーションのパターンの木を用意しましょう.

      \e[1;33m*\e[38;5;22m
     ***
    /...\\
   /.\e[1;35mo\e[38;5;22m...\\
   /..\e[1;36mo\e[38;5;22m..\\
  /.\e[1;37mo\e[38;5;22m..\e[1;35mo\e[38;5;22m..\\
  /.....\e[1;36mo\e[38;5;22m.\\
 /..\e[1;37mo\e[38;5;22m......\\
^^^^^[_]^^^^^
\e[;39m

とか

      \e[1;33m*\e[38;5;22m
     ***
    /...\\
   /...\e[1;35mo\e[38;5;22m.\\
   /\e[1;37mo\e[38;5;22m....\\
  /.....\e[1;36mo\e[38;5;22m.\\
  /.\e[1;35mo\e[38;5;22m..\e[1;37mo\e[38;5;22m..\\
 /....\e[1;36mo\e[38;5;22m..\e[1;35mo\e[38;5;22m.\\
^^^^^[_]^^^^^

です.

Step. 4 イルミネーションを動かして眺める

最後は簡単です. ここで作った複数の木を順番に描画していき, ツリーのイルミネーションを楽しみましょう...!
適当な秒数で sleep し, リフレッシュしてループしながら再描画します.

while true
do
clear
printf "
      \e[1;33m*\e[38;5;22m
     ***
    /...\\
   /.\e[1;35mo\e[38;5;22m...\\
   /..\e[1;36mo\e[38;5;22m..\\
  /.\e[1;37mo\e[38;5;22m..\e[1;35mo\e[38;5;22m..\\
  /.....\e[1;36mo\e[38;5;22m.\\
 /..\e[1;37mo\e[38;5;22m......\\
^^^^^[_]^^^^^
"
sleep 1
clear
printf "
      \e[1;33m*\e[38;5;22m
     ***
    /...\\
   /...\e[1;35mo\e[38;5;22m.\\
   /\e[1;37mo\e[38;5;22m....\\
  /.....\e[1;36mo\e[38;5;22m.\\
  /.\e[1;35mo\e[38;5;22m..\e[1;37mo\e[38;5;22m..\\
 /....\e[1;36mo\e[38;5;22m..\e[1;35mo\e[38;5;22m.\\
^^^^^[_]^^^^^
"
sleep 1
done

Step. 5 いつでも心を休められるようにする

いつ何時も心の安らぎを得られる環境はとても重要です.
先程作ったスクリプトをbinに配置して, パスを通してコマンドとして扱えるようにしておきましょう.

$ mkdir -p /usr/local/work/bin
$ touch /usr/local/work/bin/xmas-tree
$ vi /usr/local/work/bin/xmas-tree
$ chmod 777 /usr/local/work/bin/xmas-tree
$ export PATH="$PATH:/usr/local/work/bin/work"
$ xmas-tree

これで無事にxmas-treeでスクリプトが実行できるようになりました...!
実際に動かすと以下のようになります
tree.gif

他にも様々な画像を AA に変換したりして gif にしてしまうのも楽しいかもしれません.

追伸

忘年会後に酔いの勢いだけで書きましたが, 実際のところはこんなことをしていても悲しくなるだけなので, 外に出て本物のクリスマスツリーでも見に行きましょう.

9
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?