verbalize

文章書く練習…。

imgcatコマンドで遊ぶ

近況

インターンに行ってJavaを用いたWebアプリケーション開発を経験してきました。

もともとサーバーサイドの方の知識は0に近く、データベースとかサーバーってめんどくさそう…くらいの認識でした。今回その辺りのコーディングをいくつか担当させて頂き、Webアプリの全体像が見えた気がします。とりあえず、Webアプリ開発を一通り経験したというのはとても大きな意味がありました。

また、チーム開発が初めてだったこともあり、Gitを初めて実践的に使った他、かんばんやKPTといったアジャイル的な開発手法にも触れられたのも楽しかったです。

imgcatコマンド

がらっと話は変わりますが本題。みなさんimgcatというコマンドをご存知でしょうか。おそらくiTerm上でしか動かない…と思いますが、ターミナル上で画像を表示するコマンドです。

f:id:bonhito:20160921220429p:plain

これ、一見ネタのようなコマンドですが、Qiitaにはこんな記事が投稿されています。

qiita.com

いや、やっぱりネタかもしれない。

こんなimgcatですが、もしかしたらこれってすごい力を秘めているのではないかと私は思いました。というのも、黒い画面というのはどうしても地味になりがちで、長時間コーディングをすると精神的に良くないと感じるからです。これを使えばもしかしたらターミナルが賑やかになるかもしれない...!

GIPHYからGIF画像を取得して表示する

ということで、いつまでも自分の手元にある画像を見ていても面白くないのでネットから拾ってきます。最初はGoogle画像検索を使おうと思っていましたが、最終的にGIPHYというサイトのAPIを使ってGIF画像を取ることにしました。そうです、imgcatでGIF画像を表示するとちゃんと動くんです!できたものはこんな感じ。

猫。

f:id:bonhito:20160921221902g:plain

ピカチュウ

f:id:bonhito:20160921221919g:plain

カートマン。

f:id:bonhito:20160921221936g:plain

GIPHYは海外サイトなので日本語では検索できませんが、結構素材は豊富っぽいです。

ソースコード

Pythonで書きました。簡単ですが...。 コレくらいだったらwgetとかでワンライナーで書けたりしそう。どうだろう。

手順はこんな感じです。

  1. コマンドライン引数で検索ワードを受け取る

  2. GIPHYのAPIを使って画像を検索し、結果からランダムに一つをピックアップする

  3. 選んだ画像のURLにHTTPリクエストを投げてかえってきた画像データをそのままバイナリで標準出力に流す

  4. imgcatにリダイレクトする

GIPHYのAPIGoogleのCustom Search APIと違って(おそらく)制限がないのと、現在public beta keyを出してくれてるので使うのが楽でした。

また、今回使った検索以外にもトレンドの画像の取得や絵文字からGIFへの変換など色々できるようで今度使ってみたいなと思います。

応用例

さて、そもそもこれを作ったワケというのは、黒い画面を眺め続け疲弊した心に安らぎをあたえてやることでした。

一つ考えた例としてgit commitする度に好きなテーマの画像が表示されるようにします。zshrcに以下を追加。

すると…

f:id:bonhito:20160921222816g:plain

予想外に地味?。 今回は検索ワードを"LGTM"にしましたが、猫でいいかも。git commitmycommitに置き換えなきゃいけないのはスマートじゃないですね。

ということで、みなさんもくれぐれも心のケアは大切にして下さい(適当)。

終わりに

こういうの作ってる最中はいいんだけど、作り終わった後の賢者タイムの辛さ…ね…。

所感

  • 拾ってくる画像

    Twitterからとってきても面白いかも。

  • 最後の使い方の例のところ改良の余地有り

    元々git commitしたら画像を表示するというのは、たまたま見かけたcdしたらlsするという記事にヒントを得たものでした。なので本当はgit commit() { \gitcommit "$@" && [GIF画像表示}のような感じにしたかったのですが、ちょっとうまくいきませんでした。今後改良したい。  

  • 画像が表示されるまで1〜3秒かかる

    お茶でも飲んで一息つきましょう...。