モチベーション

絵文字を作成する際は、普段こちらで行なっているのですが、できるならコマンドで実行したいなとか、もっとランダム要素あった方が楽しいのにな、と思ったので自分で作成してみました。

作成物

今回はコマンドと api のどちらでも動くものが作りたかったため、Go 言語で作成しました。作成したものはこちらです。 どんな感じの挙動になるかをぱっと見たい方は、https://wordimg-otho5yxlgq-an.a.run.app/wordimg を叩くと分かりやすいと思います。以下で軽く使い方の説明をやっていきます。

Http

README に書いてある URL に対してクエリとして text を設定するとその text に設定した文字が絵文字として生成されます。試しに以下の URL を叩いてみると分かりやすいと思います。

https://wordimg-otho5yxlgq-an.a.run.app/wordimg?text=helloworld

アクセスするたびに違う画像が表示されるはずです。下の画像も見る人によって変わるはずです。この見る人によって変わる画像ってのが面白そうっていう気持ちだけで作成しました。

helloworld

他にもいくつかクエリを用意したので、試しに色々試してもらえるといいかもです。 ちなみに特定の行に文字サイズを収めたい時は size=j${line} のように指定して下さい。size=j1 と指定すると 1 行に、size=j2 と指定すると 2 行に収まるように文字サイズが決定されます。

helloworld

CLI

こちらは結構癖があります。適当に go のお作法でインストールしたら、使えるといわけでもありません。

go get github.com/komem3/wordimg/cmd/wordimg

絵文字の生成にはフォントのデータが必要です。デフォルトでは go のライブラリの goregular という中に含まれているフォントデータを使用して絵文字の作成を行ないます。そのため、当然のように日本語なんか文字化けします。 絵文字は日本の文化のため、絵文字を作成する方は日本語を使いたい方が多いと思います。その場合、適当な日本語が含まれるフォントファイル(ttf) を用意して引数で指定してください。

$ wordimg -m "こんにちは世界" -f ./SawarabiGothic-Regular.ttf

アルファベットしか含まない文字の場合はフォントを指定する必要がないので以下だけで問題なくいけます。

$ wordimg -m "hello world"

ちなみに、こちらも 1 行とかで収めたい場合は、sizej1 などと指定すると、収まるように文字サイズが決定されます。

$ wordimg -m "hello world" --size j1

感想

Go で絵文字作るのすごい面倒でした。ドキュメント無いに等しくて手探りすぎて辛かったです。昔 php でやったことあったので、ちょろちょろってできるかなって思ったんですが、いやーさすが go って気持ちになりました。 いつもお世話になっているサイトにはまだまだ機能が及ばないので、もう少し機能性豊かにできたらいいなと思っています。

また、このサイトと連携して、僕の方でも絵文字生成サイトを作りたいなって思ったりしています。