以下の内容はhttps://hiroblogdesu.hatenablog.com/entry/2025/01/23/171220より取得しました。


【Ruby】新年の挨拶をターミナル上で表示するアニメーションを作りました

今年も学習頑張ります!

こんにちは、ひろきです。

フィヨルドブートキャンプ(以下、FBC)で学習を始めて1年が経ち、クリスマスはJavaScriptのクラスの学習でメモアプリを作成していました。
プラクティスも後半に差し掛かり、「やろうと思えば何かしら作れるでしょ?」みたいな気持ちでずっといたのですが、機会がなく口だけ野郎になっていました。

クリスマスを終えたあたりに、新年の挨拶でプログラマーらしいことをしたら面白いのでは?と思い、急遽、新年の挨拶をターミナルで表示しよう!と思い立った次第です。

私について

  • RubyRailsのプラクティスを終えている
  • ターミナルでアスキーアート(以下AA)を表示できるのを知っている
  • プラクティス以外で何かを作ったことはない

完成品はこちら

*ごめんなさい。はてなブログに動画が載せれないので、Xの投稿を貼りました。GIFも期待した挙動をしなかったのでこちらで失礼します。

コードは以下です。

github.com

READMEにもありますが、引数に年号を打ち込めばその数字が表示されます。なので毎年使えます。笑

少しだけ凝りたかった

AAで「Happy New Yearだけ」を表示するだけならば、きっとgemを使えば一瞬だろうと思いました。実際に、調べたらすぐにできました。
上記の通り、「何か」を作ってみたかったので、私はAAを動かしてみようと考えました。

作った感想

  • 初めての締切ありの制作。緊張感を持って取り組めた。
  • 思ったよりも時間がなく、まずは動くものを作ることに専念した。
  • 命名も適当に動くものを作ると、リファクタリングが大変すぎた。
  • ChatGPTを使いたくはなかったけど、実力&時間不足で大分お世話になった。(次はほぼ0を目指したい)
  • 最低限の抗いとして、理解できないものは取り入れなかった。
  • 配列をいじくり回すこともなかなかなかったので、勉強になった。
  • 命名めっちゃ難しい。

完成して、すごく嬉しかったです!
また何か作れたらいいな!と思いました。

Xで公開した後に、リファクタリングをし、オブジェクト指向版に書き換え、READMEを書いてGitHubに公開した次第です。

使用したgem

AA出力はartiiを使用しました。
miketierney/artii: A small gem to generate ASCII art from text fed in to it
文字に色をつけるのにRainbowを使いました。
ku1ik/rainbow: Ruby gem for colorizing printed text on ANSI terminals

artii -lで利用できるフォントを調べられるのですが、420ありました。びっくりしました。笑

苦労したこと

  • 時間が足りなくて考える時間を十分に取れなかった
  • 配列の操作
  • ターミナル上での挙動
  • 命名

アニメーションを作成する際に、どのようにすれば動くのか?という部分でした。
ターミナルで文字を動かしたことがなかったので、そもそもターミナルで文字を動かせるのか?というところから考えました。
パラパラまんがのようにすれば動いているように見えると思ったので、その流れで制作を始めました。

頭では大まかなコードは思い浮かんでいましたが、細かい部分で詰まることが多く時間もなかったので、ChatGPTを多めに併用したことが悔やまれました。

新年を迎えてから、OOP版に書き換えました。
ここからは空いた時間で取り組み、クラス化でうまくいかないこともありましたが、それ以上に命名でだいぶ悩みました。
と言うのも、FBCのレビューで命名のアドバイスをたくさんいただいている最中だったからです。
もらったアドバイスを新しい取り組みで使えるようにならなければ身についたとも言えませんし、ここでアドバイスを存分に使えてこそ、学びだと思ったからです。

あとは、命名した後にかっちりハマった気がするととても気持ちが良いので、妥協したくありませんでした。
いただいたアドバイスをしっかり使えたのかなと思います(思いたいです)
もっと命名上手になりたい!

何はともあれ、投げ出さずGitHubの公開までやり切ることができてよかったです。

参考

miketierney/artii: A small gem to generate ASCII art from text fed in to it
Rubyでコンソール上の文字をクリアする方法 - 脳汁portal
RubyでANSIカラーシーケンスを学ぼう!




以上の内容はhttps://hiroblogdesu.hatenablog.com/entry/2025/01/23/171220より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14