Go Conference 2024に参加した #gocon

Go

Go Conference 2024に参加/登壇してきました。 gocon.jp 前日のUnofficial Pre Partyから参加させていただき、2日間Goの話題に浸かってしました。 moneyforward.connpass.com 2日に渡って理解した range over func いろいろ楽しかったのですが、印象に残って…

最近、参照したり共有したりすることが多いURL

「user そーだい」で検索することN回目— k1LoW (@k1LoW) 2024年4月15日 soudai.hatenablog.com gihyo.jp scrapbox.io scrapbox.io よく参照するならまとめておけばいいじゃない。 ラインナップからフェーズ的なものについては察してください。 ガッチガチに…

APIテスティングツールに必要なのはテストケースごとのIDなのではないか #cicd_test_night

先日、機会をいただきましてCI/CD Test Night #7でAPIテスティングツール*1を開発している中で考えていることをお話しさせていただきました。 testnight.connpass.com 詳細はスライドをご覧ください。 speakerdeck.com APIテストはスモールテストと比べて効…

PHPerKaigi 2024に参加した #phperkaigi

今年も参加してきました。 phperkaigi.jp 聴講した発表へのフィードバックも終わり、このエントリで私のPHPerKaigi 2024はフィニッシュです。 #runn開発者会議 最近恒例の廊下での会議ですが、テストランナーのシンタックスの改善の方向性についてどうしても…

contextのキャンセル時にtesting.T.Cleanupのようにクリーンアップ処理を実行できるパッケージdonegroupを作った

Go

contextのキャンセルとそれに対応したクリーンアップ処理 Goにおいてcontextはさまざまな値を伝搬させるために使用します。その1つがキャンセル信号です。 ctx, cancel := context.WithCancel(context.Background()) defer cancel() contextを通じてキャンセ…

octocov-action v1 をリリースしました

追記 with.workdir: は with.work-dir: に変更になっています https://t.co/RsAqx9wVhT の v1 リリース作業をしている— k1LoW (@k1LoW) 2024年1月24日 octocov-action v1 をリリースしました。octocov-actionはoctocovをGitHub Actionsで使う際に使用するAct…

2023年の振り返りと2024年の抱負

2023年の振り返り 2023年は私にとっていろいろ思いを巡らせる年となりました。将来とか家族とか人生とか。内容は割愛しますが、HIPHOPクラシックを1つだけ貼っておきます。 open.spotify.com 2023年の抱負は「書く」でした。はじめてZenn Bookを書いたりなど…

GoのHTTPミドルウェアやその周辺パッケージを配布する新しいGitHub Orgをはじめました

Go

このエントリは GMOペパボエンジニア Advent Calendar 2023 および、 Go Advent Calendar 2023 シリーズ3 の19 日目の記事です。 以下のエントリでも少し触れられていますが、現在プロキシサーバをGoで書くプロジェクトがあります。 ten-snapon.com k1low.ha…

カジュアルに使えるスタブサーバとしてhttpstubとgrpcstubを作って使っている

Go

このエントリは Go Advent Calendar 2023 12 日目の記事です。 Goのテスティングパッケージで一番好きなパッケージは net/http/httptest です。 テスト実行時に実際にHTTPサーバを立ててHTTPリクエストを受けるというシンプルかつ強力なアプローチが良いです…

Go Conference mini 2023 Winter IN KYOTOに参加してきた #kyotogo

Go

京都に行ってきました。 Go Conference mini 2023 Winter IN KYOTO kyotogo.connpass.com すでに、ne-sachirouさんによりスライド資料などが集められています。感謝! scrapbox.io 「miniとは?」となるGoで濃縮された1日になりました。運営の皆様、本当にあ…

GitHub Actions上で安定したベンチマーク環境を得る(ただし、相対比較専用)

現在、実験的にですが少しパフォーマンスを気にしたいパッケージを書いています。 ちなみに、その1つはリバースプロキシです。 github.com 「気にしたいパフォーマンス」というのは以下の2つです。 現在のGoの実装がNGINX(のリバースプロキシ機能)と比べて…

スタブの役割をするためだけに生まれてきたバイナリstubin

Go

複数のコンポーネントが連動するアプリケーションのテストを書くとき、「どこまでを本物を使ってどこからモックするか」みたいな話は開発の現場のいたるところであると思います。 「要はバランス」だったり「答えは現場の数だけあ」ったり*1。 外部コマンド…

octocovで任意のメトリクスを記録できるようにした(カスタムメトリクス)

Go

octocov octocovはコードカバレッジのためのツールキットです。 github.com コードカバレッジなどのコードメトリクスを手元のターミナルで確認したり、GitHub ActionsのActionとしてPull Requestにレポートしたりできます。 計測したコードメトリクスを、さ…

テストでしか使わないパッケージをgo.modに含めない方法

Go

元エントリは↓で、これが全てです。 dev.to 最高じゃんhttps://t.co/c1hfSYhgx2— k1LoW (@k1LoW) 2023年8月26日 Goでツールではなくライブラリ(パッケージ)を作っているとき、テストにしか使わないパッケージがgo.modに入って依存関係ができてしまうのが、…

PHPカンファレンス福岡2023に参加した

PHPカンファレンス福岡2023に参加してきました。 phpcon.fukuoka.jp ホームでのカンファレンス開催と参加 私は福岡に住んでいます。その福岡のカンファレンスが、復活しました。実に4年ぶりとのことです。 4年で様々なことが変わりました。その変化の中、あ…

gh auth loginで作成されたクレデンシャルだけで生活するためにgh-doを作った

やっとgh auth loginで得たクレデンシャル(OSのセキュアストレージに保存されているもの)のみを使う生活になったぞ— k1LoW (@k1LoW) 2023年5月15日 GitHub CLIの gh auth login で作成されたクレデンシャルはOSのセキュアストレージに保存されるようになり…

Calendar Versioningを扱うパッケージ/ツールとしてcalverを作った

Go

提供する機能とは関係なくリリースを定期的に実施するようなプロダクトや、バージョンにSemantic Versioning(以下SemVer)のような意味付けがしにくいプロダクトの場合、バージョン管理手法にCalendar Versioning(以下、CalVer)というものが採用されるこ…

OSSとPHPerKaigi 2023

3月23日から25日までPHPerKaigi 2023に参加してきました。 phperkaigi.jp 参加してみての感想は、一言で表すと かつて思い描いていたカンファレンスと、想像以上を提供してくれるカンファレンスの融合を体験できて楽しかったし嬉しかった です。 想像以上の…

tblsをセットアップするGitHub Actionとしてsetup-tbls(を作るツールとしてgh-setup)を作った

タイトルが何を言っているのかよくわからないと思いますので順を追って紹介したいと思います。 tblsをセットアップするGitHub Actionとしてsetup-tbls を作った setup-tblsはtblsをインストールしてくれるGitHub Actionです。 github.com 各所で「ないの?」…

データベースドキュメント生成コマンド tbls 更新情報(Mermaid対応 / schema.json / tbls outの強化)

Go

久しぶりのtblsの新機能紹介エントリです。 ドキュメントのER図出力にMermaidを指定できるようになりました ER図の出力フォーマットにMermaidを指定できるようになりました。次のように er.format: セクションか --er-format オプションに mermaid を指定す…

「runn クックブック」はじめました

昨年からrunnというオペレーション自動化ツールを開発しています。 runnの認知のされ方としては「インテグレーションテスティングツール」とか「シナリオテスティングツール」といったほうがいいかもしれません。 github.com runnにはさまざまな機能がありま…

2022年の振り返りと2023年の抱負

2022年の振り返り 2022年はそれなりに変化のあった年でした。 仕事もですがプライベートの方面で多くの変化がありました。一番大きいのは引越しです。変化を嫌う私としては当時本当にストレスだったのですが、今、「引っ越していなかったら」と思うとゾッと…

octocovのコードメトリクスをMackerelで可視化する

この記事はMackerel Advent Calendar 2022の5日目の記事です。3年ぶりのMackerel Advent Calendarへの参加です。 4日目は id:buty4649 さんで、サーバの温度を監視するmackerel-plugin-thermalを作った - ぶていのログでぶログでした。自宅サーバ、私にはま…

octocovで実現できる3つのレポートコメントの方法

octocovはコードメトリクスを取得してPull Requestにレポートをコメントしたり、設定したデータストアに記録することができます*1。 今回はoctocovで実現できる3つのレポートコメントの方法を紹介します。 Pull Requestへのレポートコメント Pull Requestへ…

tagprで実現するPull Request上で進めるOSSのリリースマネジメント

これがtagprで実現したかったこと統制されていながらも自由なリリースの自動化エイッと踏み込んでくださった @katzchum さんに感謝 https://t.co/OEXq6i5xXC— k1LoW (@k1LoW) 2022年10月1日 私の趣味は少し実用的で小さなOSSを書くことです。 今までも多くの…

GitHub上で構築するコードメトリクス計測基盤

TL;DR GitHub "のみで" 構築するコードメトリクス計測基盤 バッジ生成機能 CIで計測したコードメトリクスのバッジを生成したとして、そのバッジを誰が配布するのか CI上で生成したバッジをそのままリポジトリのコミットしてしまう Central modeを使う GitHub…

経過時間を内訳も含めて計測するためのストップウォッチライブラリ stopw を作った

Go

runn を使ってシナリオテストを順調に積み上げていった結果、順調にテスト実行時間が長くなってきました。 そこでテストのどの部分に時間がかかっているかを計測したくなったのですが、runnにその時間計測機能はなかったのでそれを作ろうと考えました。 とこ…

シナリオテスティングツール/パッケージであるrunnをgRPCに対応させた

Go

gRPC、Unary以外のメソッドの挙動が面倒すぎてうまくrunnの実装の落とせない特にBidirectional-Streaming、お前だ— k1LoW (@k1LoW) 2022年6月26日 なんとかgRPC対応ができました。 「そもそもrunnって何?」については会社のテックブログにエントリを書きま…

gomockで「呼ばれるべき」と指定した関数の非同期な実行を待ちたいのでテストヘルパーを書いてみた

Go

gomockでデータベース操作などをモックすることはよくあると思います。 そのテスト関数内で「呼ばれるべき(EXPECT())」と指定した関数に非同期に実行される挙動がある場合、テスト関数の書き方によっては実行終了までにその関数が実行されないことがあり、…

octocovはコードカバレッジを確認するCLIツールとしても使える

octocovは私が開発しているコードメトリクス計測のためのツールキットです。 主となる用途であるCI(GitHub Actions)に組み込む使い方は会社のテックブログで紹介させてもらいましたのでそちらをご覧ください。 tech.pepabo.com 私自身もドックフーディング…