2019年の最終出勤日、恒例の納会LTでパイプについて話しました。
UNIXパイプはコマンドの出力を別のコマンドの入力に繋げてくれる機構です。発表の中では、猫の画像をターミナルに表示するlongcatというソフトウェアとUNIXパイプを使って、加工した猫の画像を表示させる方法を説明しました。
資料とQandA
Q. 何で太らせようと思ったの?
「longcat はオプションで縦に伸ばしたり何匹か並べたりできるけど、横に伸ばせなかったので」と当たり障りのない答えをしたけど、健康診断で安定の脂肪肝を告げられた後に、年末パーティでフォアグラ食べて罪悪感に苛まれたのが後を引いてたのだと思います…
Q. 何で base64 ってわかるの?
酔っててその場では答えられなかったけど、冷静な今なら英数と / と + しか出て来てないのでわかりますね。パディングの = 見ればわかるのではという話が出たけど、パディングは必ずしも入るとは限らないのでそれに頼らずにわかるようにならないといけない(いけないことはない)
年の締めくくりにこの話をした経緯
他の登壇者はみんな構成しっかりしていたのに、私の話はWhyが完全に抜けてるし、あちこち飛躍してました。聞いてた人はここ見ないだろうけど書いておこう。
longcat との出会い
会社でやってるLT大会でlongcatのことを知って遊び始めたのがきっかけで、ターミナルに画像を表示する仕組み(Sixel Graphics, iTerm2 Inline Images Protocol)とかに興味を持ちました。
10月のhacktoberfestでは、longcatだけでなく、iTerm2にもフィードバック投げたりしました。
楽しいシェル芸
そして12月、シェル芸Advent Calendarで楽しそうな記事を見つけて、これターミナル上で出せたらいいのになと思いました。
ファイル出力したものがimg2sixelで表示できなかったのでissue投げたり
そのあとtextimgの方をパイプ出力でGIFを吐けてなかったのを修正したりして
最終的に、無事にターミナルで表示できるようになりました。
床屋シェル芸をターミナル上で楽しめるようになった!https://t.co/PnRuDWDgl2 #シェル芸
— Yoichi Nakayama (@yoichi22) 2019年12月24日
パイプが繋いでくれた
longcat と iTerm2 とか、textimg と libsixel とか、プログラムの連携部分で両方にフィードバックする機会を与えてもらって、その一部を繋いでくれたパイプってすごいなーって思った。それ自体の機能であるプログラムの入出力を繋げることだけじゃなく、知らなかったプログラムと私、それまで参加してなかった開発コミュニティと私を繋げてくれたのすごいなーって思ったのが、LTでパイプについて話すことにしたきっかけでした。