blog.syfm

徒然なるままに考えていることなどを書いていくブログ

2020-01-01から1年間の記事一覧

一年を振り返り… (2020)

仕事 去年と変わらずメルペイのコード決済チームでバックエンドエンジニアをしていた。 今年関わったプロジェクトの中でもっとも大きかったのはメルペイと d 払いの QR コード (MPM) 統一だった。これによってメルペイの QR コードを d 払いアプリで読み込ん…

curl から Go の API クライアントを自動生成する

これは Aizu Advent Calendar 2020 の 10 日目の記事です。9 日目は虚無さん、11 日目は虚無さんです。 curl を使って API クライアントやリクエスト・レスポンス型を自動生成したいと思ったことはありませんか?わたしはあります。ということでつくりました…

gRPC のトランスポートを任意の実装に差し替えられる grpchan を試す

GitHub を眺めていたら protoreflect や gRPCurl で有名な jhump 氏が fullstorydev org 配下に面白いリポジトリを公開していることに気づいた。 github.com grpchan は gRPC Channel の抽象を定義・提供し、HTTP/2 ではなくインメモリや HTTP/1.1 などのト…

gRPC リフレクションはなにをしているか?

gRPC リフレクションは、対象の gRPC サーバがどのようなサービス、メソッドを公開しているかを知るための機能です。 gRPC を使う上でリフレクションを有効にすると、gRPCurl や Evans といったツールを使う際に Protocol Buffers などの IDL を直接的に読み…

Go の t.Cleanup がとてもべんり

Go 1.14 で testing パッケージに新しく t.Cleanup(func()) や b.Cleanup(func()) が導入されました。 最初は今まで defer を使っていたところを置き換えられるくらいしか良いところがないかな〜と思っていましたが、想像以上に柔軟な使い方ができるので今ま…

Evans v0.9.0 をリリースしました

汎用 gRPC クライアントである Evans の v0.9.0 をリリースしました。最後にリリースしたのは昨年末だったので、実に 5 ヶ月ぶりとなります。 今回のコードネームは GOLD RUSH です。 このリリースでは、多くの機能追加、バグ修正等があったため、特徴的なも…

CLI ツールのフラグ設計むずかしい

CLI ツールを作る・保守していく上で最も難しいのはフラグ設計かもしれない。 一つのことをうまくやる、サブコマンドを持たないレベルまで小さいものであれば比較的容易だけど、サブコマンドを使うレベルになってくると途端に難しくなる。 どういった点が難…