Garsue の記事一覧

コンテナ中でVCS Stampingが失敗する話

こんにちは、garsueです。最近、手元の開発環境を一新していて遭遇したちょっとした小ネタを紹介します。同じ問題に遭遇する人もいそうな気がするので参考になれば幸いです。

事象: DockerにマウントしたGoのプロジェクトでビルドがコケる

当社の開発環境では開発中のコードをDockerのコンテナにマウントしてコンテナ中でビルドしています。その際に一部のコンテナで以下のエラーとともにビルドが失敗していました。

error obtaining VCS status: exit status 128
Use -buildvcs=false to disable VCS stamping.

VCS StampingはGo 1.18から追加された機能で、Gitなどのバージョンコントロールシステムからリビジョン番号などを取得してバイナリに埋め込む機能です。

エラーの詳細としては exit status 128 としか表示されておらず、なぜ失敗しているのか上記のエラーだけではパッとはわかりませんでした。

なお、単にエラーが起きないようにするだけならエラーメッセージにあるようにビルドオプションに -buildvcs=false を追加すればいいだけです。大抵の場合、開発途中では不要かと思います。1

Cloudflare WorkersからTinyGoでビルドしたWabAssemblyバイナリを呼び出す

こんにちは、マネーフォワード ケッサイのテックリードをやっておりますgarsueです。

最近、CDNのエッジで動くサーバレス環境が充実してきましたね。

代表的なものとしてはCloudflare WorkersやfastlyのCompute@Edgeなどがあります。CloudflareではKey-Valueストアもあり、S3やGCSのようなオブジェクトストレージまで揃いつつあるようです。

そんな流れに乗って、Cloudflare Workersを使ってGoで実装した計算ロジックをエッジで動かせるか検証してみました。今回はその結果をレポートします。

TL;DR

  • アップロードサイズ制限があるのでTinyGo使って小さいwasmバイナリを作る
  • wrangler.tomlで type = "CompiledWasm"のモジュールとしてwasmバイナリをアップロードする
  • wasmのエントリポイント内でJavaScriptの名前空間にJavaScriptの関数としてセットする

GoLandでテンプレート中でも補完を効かせる

こんにちは、マネーフォワードケッサイでバックエンドの開発をしているgarsueです。

みなさんGoの開発環境は何を使ってますか? ぼくはVim -> Visual Studio Code -> GoLandと移り変わってきましたが、もう5年位はGoLandで開発しています。

そんなGoLandユーザーのぼくから、GoLandでGo標準のテンプレート1を書く際のちょっと便利な小技をお伝えします。

NestJSでgRPCクライアントを管理するtips

こんにちは、マネーフォワードケッサイでバックエンドの開発をしているgarsueです。

1年くらい前にNestJSでBFFをつくった話を書き、今も引き続きNestJSは活躍してくれています。

その間に得られた知見もいくつかあるので、その中からgRPCを呼び出す際のgRPCクライアントの管理方法についてのtipsを書こうと思います。

gRPCクライアントの初期化における注意点

公式ドキュメントでgRPCクライアントのインスタンス管理方法がいくつか紹介されています。

ほとんどの場合、上記の情報で特に困ることはないですが、gRPCクライアントを利用する箇所が増え、ある程度複雑化してきた場合に困ることがあります。

フルリモート!チーム対抗パフォーマンス改善合宿 結果編

MF KESSAI開発合宿運営のgarsueです。 前回に引き続き、チーム対抗パフォーマンス改善合宿の様子をお送りします。

今回は結果編として、実際にどういう改善が行われたかをお伝えします。

パフォーマンス改善サイクル

合宿でパフォーマンス改善に取り組む前日、GoogleでCloud Profilerをご担当なさってる山口(ymotongpoo)さんのご協力のもと、Cloud Profilerのハンズオンを実施していただきました。 ハンズオンの概要についてはチーム対抗パフォーマンス改善合宿 準備編をご覧ください。

そのおかげで「プロファイルを取る」「ボトルネックを見つける」「改善に向けて改修する」「実際に改善できたか再度プロファイラーで確認する」というパフォーマンス改善サイクルを各メンバーが身についていました。

このサイクルのなかで見つけたボトルネックと、実際に効果のあった改善について紹介していきます。