blog.syfm

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

一年を振り返り… (2023)

仕事 今年の前半は引き続きメルペイに在籍していた。マイクロサービスの技術的負債を解消するプロジェクトをメインで進めると同時に新規のプロダクト機能開発のサポートを中心に進めていた。また、チームではテックリードの移行があり、現テックリードだった…

ISUCON13 に参加した

毎年恒例の ISUCON に参加してきた。メンバーは毎年恒例 @acomagu & @natumn 今回はノベルティが欲しかったのもあり個人スポンサーになってみた。 結果としては最高スコアで 56180 点を出すことができたが、再起動試験に失敗し fail でした…。 事前にやった…

一年を振り返り… (2022)

執筆をサボっていたのでこの振り返りは大晦日の電車の中でスマホで書いています 仕事 今年もメルペイのコード決済チームにいた。今年からチームの TechLead となり、それと同時に一番長くチームに在籍しているメンバーとなった。 仕事内容に関しては大きな…

go-fuzzyfinder で色をつけられるようになった

個人的にほそぼそと開発をしていた ktr0731/go-fuzzyfinder を使うと fzf のような UI を持つ CLI ツールを非常に簡単につくることができます。go-fuzzyfinder では、Preview Window という、現在選択しているアイテムの詳細情報を知らせるための表示領域を…

ローカルで pkg.go.dev 形式のドキュメントを閲覧する

Go

Go を書くとき公開されている API や、そのコメントに不足や余分がないかチェックするために GoDoc を使っていた。特にプライベートパッケージはインターネットからドキュメントを参照できないため、GoDoc をローカルで起動し、チェックしていた。 syfm.hate…

一年を振り返り… (2021)

仕事 今年もメルペイのコード決済チームに在籍しており、主に外部パートナーさまとの接続や、既存のプロダクトの部分的な改善を多く行っていた。今年関わっていたプロジェクトは去年より小粒のものが多く、その点では達成感はやや少なかった。ただ、今年は自…

同棲をはじめて半年くらい経過した

今年の初夏あたりにパートナーと一緒に住み始めて、早半年が経過した。もともと一人暮らしだった二人が一緒に住み始めるので、当然さまざまな課題に直面した。それらの一部について、自分たちの解決策とともにブログに書いておく。 家計管理 一番問題だった…

Go の "missing go.sum entry" エラーによって Dependabot による PR が自動でマージできなくなる問題を修正する

今まで設定していたものたち 個人利用のリポジトリや社内リポジトリでは Dependabot を利用していて、依存のアップデートを自動で行うようにしていた。 依存のアップデートがあると Dependabot は Pull Request を出してくれるものの、放置しがちだったので…

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

一年を振り返り… (2019)

去年は syfm.hatenablog.com 去年の 6 月ごろからほとんど毎日、雑に日記をつけていたのでこの振り返りもだいぶ書きやすくなった。 journey.cloud Journey というアプリを使っている。各プラットフォーム向けにアプリがあり、Google Drive にエクスポートで…

pkg/errors から徐々に Go 1.13 errors へ移行する

Go

Go 1.13 からの新しい errors Go 1.13 からエラー処理が強化され、errors パッケージに As と Is 関数が追加されました。これにより、今までは pkg/errors のようなライブラリを使用しなければ実現するのが難しかった、型情報を保持したままの wrap/unwrap …

アプリケーションにおけるデータ不整合との戦い

これは Aizu Advent Calendar 2019 の 15 日目の記事です。14 日目は uzimaru0000 さん、16 日目は kacky__917 さんです。 はじめに 世の中には日々たくさんの価値ある Web サービスが生まれていますが、その価値を正しく提供するにはアプリケーションが正し…

Pull Request と共に GoDoc を生成してくれる GitHub Action をつくった

これは Go5 Advent Calendar 2019 の 13 日目の記事です。12 日目は shiimaxx さん、14 日目は nsega さんです。 以前、以下のような記事を書いており、その中で GoDoc を通してソフトウェアを見ることでドキュメントや仕様の質を確認しやすくなるといったメ…

Go 1.13 にアップデートするとテスト時に "flag provided but not defined" エラーが発生するケース

Go でテストを実行する際は動的に生成された main 関数がエントリポイントとなっています。 Go 1.13 からはテスト実行時のテストフラグ (-v や -coverprofile など) の登録がこの生成された main 内で行われるようになったため、 main より先に実行される in…

モノレポで Go Modules を使う

Multi-Module Repository Go Modules では Git で管理されているリポジトリ内に複数のモジュールを定義することが可能です。*1 これを利用すると、たとえばプロジェクト内で使う Go ツールの依存管理をプロジェクトのコードとは異なる go.mod で行うことがで…

オフ会

オフ会というとどことなくライトなイベントであるイメージが湧くけど、それでもオフ会という言葉が適切だと思う。 自分が春に就職し、社会人一年目となったこの歳に昔からのコミュニティと初めてオフ会をした。 当時自分は中学 1 年生だったから、実に 10 年…

ISUCON9 予選で負けた

今年も ISUCON に参加していました。メンバーは去年と変わらず @acomagu と @natumn。 去年は syfm.hatenablog.com 去年は温泉旅館に二泊三日で泊まり、中日で ISUCON をやっていて、その体験がすごく良かったので今年も旅館に泊まることにしました。 今回…

Go 1.13 に向けて知っておきたい Go Modules とそれを取り巻くエコシステム

Go

はじめに 今年の 8 月にリリースが予定されている Go 1.13 では、Go 1.11 で導入された Go modules に加え、Go module proxy といった新しいエコシステムが登場します。 そこで、そもそも Go modules は何を行っているのかや、何ができるのか、どういった要…

メルペイに新卒入社しました

正確には株式会社メルカリに入社して株式会社メルペイに出向、という形です。「株式会社メルカリに新卒入社しました」というエントリタイトルが多かったので重複を避けるためにこう書きました。 4 月に入社してちょうど 3 ヶ月が経ち、無事解雇されずに試用…

土善旅館で開発合宿してきた

最近忙しく、なかなかブログを書けなかったのでだいぶ間が空いてしまったのですが、GW 中に大学時代の友人らと土善旅館で開発合宿をしてきました。 5/1 から 2 泊 3 日、あまりお金がない友人らもいたのでエコノミー開発合宿プランでした。 他のブログでも言…

Go Conference 2019 Spring で発表してきた

先日行われた Go Conference 2019 Spring で "Fuzzy finder as a Go library" というタイトルで発表してきました。 gocon.connpass.com 発表スライドは以下。 speakerdeck.com Fuzzy finder をライブラリとしてつくる、という結構マニアックな発表にもかかわ…

GoDoc を多用している

最近は設計をする際にできる限り API 仕様を正確に記述するようにしている。このことを意識し始めた大きな要因は主に次の 2 つだと思う。 1 つ目は以前、前職で働いているときに柴田さんに API 仕様の重要性を教えてもらったことから。この時に聞いたことは…

gRPC における IDL と codec

codec gRPC は非常に柔軟に設計されていて、例えば RPC でメッセージをやりとりする際に、どういうシリアライザでエンコードするかを自由に選ぶことができます。gRPC の公式ドキュメントではシリアライザとして Protocol Buffers のみが利用されていますし、…

追い出し LT で「つよくてニューゲーム」というタイトルで発表しました

卒業式の前日に会津大学の Zli というサークルの追い出し会として LT 会が開催され、そこで「つよくてニューゲーム」*1というタイトルで発表してきました。 普段は基本的に技術寄りの話ばかりしていますが、学生生活最後の発表だったので珍しく自分語りをし…