mercari.go #8
- connpass: リンク
- ハッシュタグ: <code>#mercarigo</code>
- 独自ルール: 懇親会のGルール
懇親会のときに登壇者を囲んでもいいけど、自分たち以外にもう一人入ってこれるスペースを常に開けておこうねっていうルール。とてもよい! - 雰囲気
ビール以外にもおいしそうなご飯もありましたが、写真を撮るの忘れ…
以降、自分用のメモを書き連ねます。
詳細はスライドの方をご覧ください。
1. Goで学ぶKnative
登壇者: @toshi0607 さん
Knative
- Knative = 最新のサーバーレス ワークロードをビルド、デプロイ、管理できる Kubernetes ベースのプラットフォーム
- AWS の Lmabda に近いことを k8s 上でできると解釈
- 登壇者含め、会場内で Knative を本番に導入している人はなし。
まだ時期尚早っぽい - k8s のリソースを抽象化し、独自のPaaS/FaaSを構築するためのパーツを提供
- k8s 上にのっかる。
- Knative の構成
- 現状、一部、Istio に依存してしまっているので、Istioの導入が必要不可欠
- 登壇者は 機能実装に一層集中するための基盤 として注目している
- yml ファイルで定義した内容に基づいて コード生成
感想
終盤、 Knative の内部処理を コードリーディング していたのですが、
見入ってしまいメモを忘れていました。。。
Knative 初めて聞いたのですが、おもしろそうだなという感想。
k8s の勉強しないとな。
2. Gotham GoとGopherCon EUに参加してきました
登壇者: @tenntenn
- 技術をアウトプットするところに人は集まる
- メルペイ エキスパートチーム では 50%以上の時間 をコミュニティへの貢献に充てている
- 海外カンファレンスに参加する理由
- 最新の技術を知る
- 世界各地のエンジニアとの交流
Gotham Go
- ニューヨークで毎年開かれている Go カンファレンス
- 1トラック
- 200名くらいが参加する(そんなに大規模ではない)
- ハンズオンがあった
- パックマン(ゲーム)作った(github )
- 絵文字で動くらしい
- step by step で初心者におすすめ
- 自作楽器 を Go から操作する
- スライスをプール(再利用)する方法
- leachsync を使う方法が良さそうという結論
- セッションのレベルは 日本の Go Conference と同等
- ただし、 現地に Goチーム がいるので登壇者が豪華
- 突然ビンゴ大会が始まったりする
GopherCon EU
- ヨーロッパで毎年開催されている
- ヨーロッパ中から Gopher が集まる
- 参加者は200名くらい
- 2トラックで大きめ
- ダイバーシティスカラーシップがあり、費用の補助が出る(一部)
- リーダビリティに関するセッション
- width が大きいスパゲッティコード と dipth が大きい行き過ぎた抽象化 どちらもそれぞれいやなことがある。この間ぐらいがいいよねーって話。
- GoTrace: Go Routine を可視化するライブラリ → 参考記事リンク
- IDE でコードを読むなんて、 洞窟でたいまつをもって壁画に書かれた文字を読むようなもの。 可視化しましょう!
- 現在使用では、 map に range を使うとキーがランダムに並ぶ ので、それを使ってLT大会の発表順を決めた
感想
- メルペイ エキスパートチーム では 50%以上の時間 をコミュニティへの貢献に充てている
これすごくないですか?
多くのつよつよエンジニアが集まるのも納得です。
海外のカンファレンスのノリがおもしろそうでした。
発表にかける気合がすごい笑
ぜひ、一度行ってみたいです。
3. Go + WebAssemblyを活用する
登壇者: @__syumai
- メルペイのバックエンドエンジニア
- Go Playground にタブを追加する chrome拡張を作った人
Go WebAssembly(wasm ワズム)
- experimental の機能
- 1.11 以上で使用可能
- GOOS=js GOARCH=wasm でビルドすると .wasm ファイルが生成され、JavaScript から使用できる ≒ JavaScriptからGoを使用できるようになる
- クリックの動作をGoで実装したりした
- select{} 使わないと main 関数が終了して JavaScriptから呼べなくなる(参考 )
- つらみ
- GOOS=js GOARCH=wasm でしかビルドできないので、テストができない
- (解決策)テストしたい部分は別パッケージにエクスポートする。Goで実装するやつは main.go だけに依存するようにしたらいい。
- DOM操作をGoでやった(JavaScript ならしゅっと書けるのに…)
- (解決策)ビジネスロジック部分だけをGoで実装するようにしないとつらい
- DOM操作は素直に JavaScript にお任せした方がいい
- GOOS=js GOARCH=wasm でしかビルドできないので、テストができない
感想
JavaScriptからGoで実装した機能を使えるのはいろいろと便利そう。
4. E2E Testing with ‘main’ function
登壇者: @yuki.ito
- サンプルリポジトリ: https://github.com/110y/go-e2e-example
- 普通にテストしようとすると
main
関数 がカバレッジに含まれないから、含まれるように努力する話- e2e で TestMain を起動し、go test . でトップレベルのコードをgoroutineで起動
- Mainで起動されたサーバに対して TestMainから接続してリクエストを投げる
- TestMainで生成したクライアントから個々のテストを実行する。
- mainのカバレッジも取れる。
感想
こういう工夫して問題解決する話大好きです。
その手があったか。とただただ説明を聞き入ってました。
全体まとめ
メルカリ社の技術力の高さがとても分かる勉強会でした。
中の人たちが積極的に外に出てキャッチアップをしている姿見習っていきたいと思います。
また参加したいなー