Gopher道場 #2 のLT大会の資料 : https://mercari.connpass.com/event/93427/ go-emoji-gen : https://github.com/takami228/go-emoji-gen
Goで絵文字メーカーを作ってみたGopher道場 #2 LT大会@takamii228
View Slide
● @takamii228 (takami228)○ エンタープライズな会社の Agile専門組織に所属○ アジャイル開発における開発基盤整備やプロジェクト支援○ 認定スクラムマスター● AWS, CI/CD, アーキ, アプリ開発等なんでもやる雑食系○ 開発基盤(GitLab, Jenkins, Mattermost, JIRA, Conflu等)をk8sで運用中○ 主にJava(Spring)、PHP自己紹介
絵文字使ってますよね
絵文字はコミュニケーションを活性化する● コミュニケーションの心理的ハードルが低い● 絵文字リアクションで盛り上がる(?)● 楽しい
Custom Emojiを追加する● Slack、Mattermost等では自作の画像を絵文字として登録できる○ デフォルトの絵文字だけじゃ物足りない!● 以下の仕様を満たす画像ファイルを作成して追加すればOK○ 128 ✕ 128px以下○ 64KB未満○ 拡張子はjpg、png、gif
イラレ・フォトショできないので画像の作成はめんどくさい
emojigenコマンドを作ってみた
emojigenコマンドでできること1. 既存画像を絵文字サイズにリサイズする2. 入力のテキストから絵文字を作成する3. 絵文字画像をgifでアニメーションさせる
1. 既存画像を絵文字サイズにリサイズする● 課題1でやった画像変換を応用● 画像を読み込んで、サイズを変換して出力する● nfnt/resize を利用$ emojigen -type=resize -image=gopher.png
2. 入力のテキストから絵文字を作成する● 正方形の中に二行に分割にして文字を描画○ ※4文字以外の描画箇所調整は未実装● -fontオプションでttfファイルを指定可能● freetype を利用$ emojigen -type=text -string=”半端ない” -font=sample.ttf$ emojigen -type=text -string=”忖 度” -font=sample.ttf
3. 絵文字用画像をgifでアニメーションさせる● 元画像の編集結果からgif画像を作成● BurntSushi/graphics-go/graphics を利用● 回転のみ実装○ 同じ原理で上下、左右に動くものもきっと可能$ emojigen -type=animation -image=gopher.png -out=gopher.gif$ emojigen -type=animation -image=sontaku.png -out=sontaku.gif
ハマったところ● 文字は4文字縛りなしで出せるようにしたかったけど挫折した● gifを悠長に回転させていると画像サイズが64KBを越えてしまった● 背景透過画像だと背景が黒抜きになってしまった(結局加工した)
Happy Emoji Life
Gopher道場の振り返り● Keep○ 体系的にGo言語を学べた○ 毎週の課題をPRで提出する● Problem○ 業務と並行して課題を 1週間でやるのは大変だった○ 最初に自己紹介LTがあってもいいかも● Try○ 課題を全部やりきる & 他の受講者のコードを読む○ Gopher道場が終わっても継続的に Goを書き続ける
Happy Gopher Life
参考資料● OGP画像をテキストから自動生成するツールをGoで作った○ https://qiita.com/Iwark/items/d3ce30a52ae8e15e2a66● Golang : Print UTF-8 fonts on image example○ https://socketloop.com/tutorials/golang-print-utf-8-fonts-on-image-example● Golangで画像からアニメGifを生成する○ https://qiita.com/from_Unknown/items/30b5b7d7ae9d39ec3200● 簡単に回転画像が生成出来るコマンド「nekokak」をgolangで書いた。○ https://mattn.kaoriya.net/software/lang/go/20150901144726.htm