ささざめブログ

さめざめと語ります。日記、エッセイ、短編、感想、その他。

🥒精霊馬がパソコンの黒い画面に流れてきたらなんか愉快な気がしたのでそういうツールをClaude Codeで作った話🍆

まえがき

お盆ですね~。

今年は運良く、お盆休みを結構しっかり目に取得できた私。ただ、悲しいことに、この数日間は完全に某感染症よりダウンしていました。

どうしよう。このままじゃ、なにもしないまま連休が終わっちゃう! まだ全然お盆を感じていないのに!

というわけで、パソコンに向かっていても、お盆を感じられる魔法の(ジョーク)ツール、『syo-ryo-uma』を作ったというお話です。

デモ動画とかは以下で見られます。

起動要件

  • Node.js(nodeが動く環境なら、Win/Mac/Linuxいずれも動作するはず……)
  • npm または npx(Node.js に同梱)
# npxで直接実行(インストール不要)
npx syo-ryo-uma

その他詳細は以下のgithubリポジトリをご参照ください。

github.com

なんで?

そもそも精霊馬(しょうりょううま)ってなんやねん、っていうのは各々お調べいただくとして、とりあえずこの時期・お盆を象徴するものといえばやはりコレだとおもうんですよね。

なんか、精霊馬のAAが流れてくる、とか普通にありそうだよなぁと思って調べてみても、見当たらなかったので、それじゃあ作ってみようじゃないかと。

コンソールにAAを流すだけであれば、先駆者としてslとかcowsayとかがいるだろうし、簡単にできるんじゃないかという勝手な想像で作り始めました。

まずは素材から

作り始めるに当たって、まずは肝心のAAを調達します。

と言っても、ネットに転がっているAAを利用しちゃうと、権利的な問題がありそう。というわけで、まずはフリー素材として使える精霊馬を探しました。

で、こちらの「サクッとイラスト」さんに、なかなか立派な精霊馬🥒🍆があって、個人、法人、商用、非商用問わず無料で利用可能だったためこちらを拝借。

sakutto-sozai.com

これを、AAにするわけですが、画像をAAに変換するツールは色々あるため、それを活用。今回使ったのはコチラ。

www.asciiart.eu

ちょうど良さそうなサイズ感で出力。実装はClaude Codeにお任せです。

実装の流れ

やることが明確ですから、実装自体はすぐでした。

大まかな指示したことは

  • ツールの名前
  • ツールの概要(ジョークツール、AAが流れてくるだけ)
  • 実行環境(node.js、ゼロコンフィグ、ゼロ依存とかのワードを渡しています)

くらい。で、これだけで割と完成はできていました。


ただ、実際にこの時点で出来上がったものだと問題があって、AAがすっごい上下にガクガクと動いて画面がちらつく。

で、それを色々と指示して修正させてもなかなか治らなかったんですよね。1フレームずつログファイルに吐き出して確認させてみるとか、色々やってみても、毎回彼は「I see the issue!」とか「Fixed!」とか言ってくるのに実際見ても治ってない。

で、どうしてもダメだったので、改めて処理の流れを確認して、

  1. 全体の高さ・幅を取得
  2. 中心にAAが流れるように各要素の開始位置を計算
  3. 画面右端から、AA左端のピクセルから1列ずつ出力されるように流す

というような処理の流れであっているか? というような確認をしつつ、該当箇所をゼロから作り直せという指示に。

するとうまく動作するようになったのでした。


綺麗に出るようになったら、あとはオマケの機能をつけて完成というわけで、いくつかオプション付与して、うんうんちゃんと動きそうだねというのも確認して完成。

実はそのあと、ターミナルのデモ動画を撮る部分のほうが手こずったんですが、それはまた別の話……。

まとめ

というわけで、何の役に立つわけでもないジョークツールの制作(秘)話でした。

今私のパソコンの隅っこでは、npx syo-ryo-uma --endless 50が叩かれ、延々と精霊馬が訪れ続けているのでした。

github.com