golang.tokyo #7に参加してきました

techplay.jp

に参加してきました。

会場は先月dots.(ドッツ)から名称変更されたTECH PLAY SHIBUYAでした。
techplay.jp
久しぶりに来ましたが、相変わらずお洒落な内装。

今回のトークテーマは「本番運用されている自社パッケージ紹介」です。

パーソルキャリアさん(元インテリジェンスさん、7/1に商号変更)によるお酒とピザの提供があり、お酒を飲みながらLTを楽しんだり、休憩時間にピザを食べられたりと快適でした。

LT

スポンサー枠(パーソルキャリア 吉元 裕人)

MIIDASの独自パッケージ ありがちなやつと珍しいやつ

MIIDASという転職支援サービスのWeb側の実装をHHVM/HackからGoへ移行中。
miidas.jp
Go移行開発中に以下のような独自パッケージを作成したとのこと

ありがちなもの

  • 曜日系 - 祝日、n日前、日本語の曜日を返す
  • ログ
  • 配列処理 - スライスの分割
  • 文字列処理 - 半角カナ -> 全角カナ、全角英数 -> 半角英数

珍しめなもの

  • DBからgorm用のモデルを生成

DBFluteFuelPHPのfromdbのような機能
コマンド一発で生成してくれて便利

  • HHVM(PHP)のセッションを読み込んでGoの構造体に取り込む

クッキーに出力しているFuelPHPのロジックをGo化
Cookie <-> セッション <-> Go構造体

  • Goの定数からJS/Swift/Kotlinのクラスを生成

Goで定義した定数をgo generateで読み込み、テンプレートを生成する
f:id:hapoon:20170704112754j:plain
f:id:hapoon:20170704112817j:plain

LT1(榊原 宏祐)

Go言語でffmpegのラッパーを作った話

Befyという女性向けエステアプリを最近公開し、その中で正しいスキンケア方法を動画で紹介する機能がある。

f:id:hapoon:20170704113655j:plain
mp4からHLSへの変換はAmazon Elastic Transcoderを使っても良かったが、作り直しが頻繁に起こるのでコスト削減の為、手作業で行っている。
ffmpegは動画変換の際のパラメータ設定がコマンドライン引数で行うので見づらい&頻繁に使う設定は設定ファイルとして残しておきたいということでツール化。
Web上での記事が多い&クロスコンパイルで別環境でも動作させることができる点からGo言語で開発することを決定。

CLIツールを作成するにあたり下記のパッケージを使用。
github.com
github.com

ツール化することにより、コスト削減ができ、設定ファイルに設定を残せるので使いやすくなった。

LT2(yudppp)

外部のAPIを叩くときの話

お天気APIのような外部APIを実行して返ってきたJSONレスポンスからGo構造体を生成するツールを作成。

スライドはこちら↓
blog.yudppp.com

作成したパッケージはこちら↓
github.com

LT3(Yusuke komatsu)

GoとCouchbaseでmicroservicesを作るには?

labstack/echoを使用していたが、不満があったので自前でgo-shosa/shosaを作成。
MySQLのデータをCouchbaseに移行する際にNullableな型判定をする為にusk81/genericを作成。

スライドはこちら↓

www.slideshare.net

作成したパッケージはこちら↓
github.com
github.com

LT4(Takuma Morikawa)

水平・垂直分割に対応したパッケージとしてevalphobia/wizardを作成。
現在はgo-xorm/xormのみサポート。

作成したパッケージはこちら↓
github.com

LT中に使ってて会場で話題になってたリモコンはこちら↓
amzn.to

LT5(Akira Chiku)

PostgreSQLデータベースからデータモデルを生成するパッケージとしてachiku/dgwを作成。
knq/xoを参考にしつつ、複合主キーやカスタムテンプレートに対応。

スライドはこちら↓
speakerdeck.com

作成したパッケージはこちら↓
github.com

LT6

スピーカー不在だったようでスキップ

LT7(渋川 よしき)

C++ビルド支援ツール qtpm
社内GUIツールを作成するのにQtを使用しているが、パッケージマネージャ・ビルドシステムがいろいろつらいのでGoっぽいパッケージマネージャをGoで作成。

スライドはこちら↓

www.slideshare.net

作成したパッケージはこちら↓
github.com

LT8(@dxhuy,@huydx)

HTTP APIクライアントの独自パッケージの話

  • HTTP ClientとHTTP Transportを分割
  • RESTリソースをサービスに分割
  • 複数サービスに対してひとつのクライアントを使いまわせるようにしている

LT9

急遽追加になったLT

HTTPテストからドキュメントを生成するパッケージmercari/go-httpdocと構造体の任意のフィールドにアクセスできるパッケージtenntenn/gpath

作成したパッケージはこちら↓
github.com
github.com

まとめ

データモデルあたりはどこも苦労している印象。
うちも結局自前で作っちゃったし。

ちょうど今動画生成まわりでパッケージを作成中だったので、開催がもう少し後ろだったら紹介したかったな。