Goで絵文字メーカーを作ってみた / gopher-dojo2-emojigen

Goで絵文字メーカーを作ってみた / gopher-dojo2-emojigen

Gopher道場 #2 のLT大会の資料 : https://mercari.connpass.com/event/93427/
go-emoji-gen : https://github.com/takami228/go-emoji-gen

553784f5490e80cde79ef80ee70b5ed2?s=128

takamii228

July 09, 2018
Tweet

Transcript

  1. Goで絵文字メーカーを作ってみた Gopher道場 #2 LT大会 @takamii228

  2. • @takamii228 (takami228) ◦ エンタープライズな会社の Agile専門組織に所属 ◦ アジャイル開発における開発基盤整備やプロジェクト支援 ◦ 認定スクラムマスター

    • AWS, CI/CD, アーキ, アプリ開発等なんでもやる雑食系 ◦ 開発基盤(GitLab, Jenkins, Mattermost, JIRA, Conflu等)をk8sで運用中 ◦ 主にJava(Spring)、PHP 自己紹介
  3. 絵文字使ってますよね

  4. 絵文字はコミュニケーションを活性化する • コミュニケーションの心理的ハードルが低い • 絵文字リアクションで盛り上がる(?) • 楽しい

  5. Custom Emojiを追加する • Slack、Mattermost等では自作の画像を絵文字として登録できる ◦ デフォルトの絵文字だけじゃ物足りない! • 以下の仕様を満たす画像ファイルを作成して追加すればOK ◦ 128

    ✕ 128px以下 ◦ 64KB未満 ◦ 拡張子はjpg、png、gif
  6. イラレ・フォトショできないので 画像の作成はめんどくさい

  7. emojigenコマンドを作ってみた

  8. emojigenコマンドでできること 1. 既存画像を絵文字サイズにリサイズする 2. 入力のテキストから絵文字を作成する 3. 絵文字画像をgifでアニメーションさせる

  9. 1. 既存画像を絵文字サイズにリサイズする • 課題1でやった画像変換を応用 • 画像を読み込んで、サイズを変換して出力する • nfnt/resize を利用 $

    emojigen -type=resize -image=gopher.png
  10. 2. 入力のテキストから絵文字を作成する • 正方形の中に二行に分割にして文字を描画 ◦ ※4文字以外の描画箇所調整は未実装 • -fontオプションでttfファイルを指定可能 • freetype

    を利用 $ emojigen -type=text -string=”半端ない” -font=sample.ttf $ emojigen -type=text -string=”忖  度” -font=sample.ttf
  11. 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
  12. ハマったところ • 文字は4文字縛りなしで出せるようにしたかったけど挫折した • gifを悠長に回転させていると画像サイズが64KBを越えてしまった • 背景透過画像だと背景が黒抜きになってしまった(結局加工した)

  13. Happy Emoji Life

  14. Gopher道場の振り返り • Keep ◦ 体系的にGo言語を学べた ◦ 毎週の課題をPRで提出する • Problem ◦

    業務と並行して課題を 1週間でやるのは大変だった ◦ 最初に自己紹介LTがあってもいいかも • Try ◦ 課題を全部やりきる & 他の受講者のコードを読む ◦ Gopher道場が終わっても継続的に Goを書き続ける
  15. Happy Gopher Life

  16. 参考資料 • 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