$30 off During Our Annual Pro Sale. View Details »

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

takamii228

July 09, 2018
Tweet

More Decks by takamii228

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. 絵文字使ってますよね

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

  13. Happy Emoji Life

    View Slide

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

    View Slide

  15. Happy Gopher Life

    View Slide

  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

    View Slide