Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

● @takamii228 (takami228) ○ エンタープライズな会社の Agile専門組織に所属 ○ アジャイル開発における開発基盤整備やプロジェクト支援 ○ 認定スクラムマスター ● AWS, CI/CD, アーキ, アプリ開発等なんでもやる雑食系 ○ 開発基盤(GitLab, Jenkins, Mattermost, JIRA, Conflu等)をk8sで運用中 ○ 主にJava(Spring)、PHP 自己紹介

Slide 3

Slide 3 text

絵文字使ってますよね

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Custom Emojiを追加する ● Slack、Mattermost等では自作の画像を絵文字として登録できる ○ デフォルトの絵文字だけじゃ物足りない! ● 以下の仕様を満たす画像ファイルを作成して追加すればOK ○ 128 ✕ 128px以下 ○ 64KB未満 ○ 拡張子はjpg、png、gif

Slide 6

Slide 6 text

イラレ・フォトショできないので 画像の作成はめんどくさい

Slide 7

Slide 7 text

emojigenコマンドを作ってみた

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

2. 入力のテキストから絵文字を作成する ● 正方形の中に二行に分割にして文字を描画 ○ ※4文字以外の描画箇所調整は未実装 ● -fontオプションでttfファイルを指定可能 ● freetype を利用 $ emojigen -type=text -string=”半端ない” -font=sample.ttf $ emojigen -type=text -string=”忖  度” -font=sample.ttf

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

ハマったところ ● 文字は4文字縛りなしで出せるようにしたかったけど挫折した ● gifを悠長に回転させていると画像サイズが64KBを越えてしまった ● 背景透過画像だと背景が黒抜きになってしまった(結局加工した)

Slide 13

Slide 13 text

Happy Emoji Life

Slide 14

Slide 14 text

Gopher道場の振り返り ● Keep ○ 体系的にGo言語を学べた ○ 毎週の課題をPRで提出する ● Problem ○ 業務と並行して課題を 1週間でやるのは大変だった ○ 最初に自己紹介LTがあってもいいかも ● Try ○ 課題を全部やりきる & 他の受講者のコードを読む ○ Gopher道場が終わっても継続的に Goを書き続ける

Slide 15

Slide 15 text

Happy Gopher Life

Slide 16

Slide 16 text

参考資料 ● 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