STORES Product Blog

こだわりを持ったお商売を支える「STORES」のテクノロジー部門のメンバーによるブログです。

Goのテストで GraphQL APIサーバのE2Eテストを書く方法

Go

はじめに こんにちは、STORESの高田です。 STORES には Go で実装した GraphQL API サーバがあり、そのプロジェクトでは Go のテスト内で E2E テストを行っています。今回はそのテスト方法についてご紹介します。 実装例 今回の E2E テストは CI でも実行し…

実装漏れをテストで防ぐ仕組み

実装漏れをテストで防ぐ仕組み STORES 予約 で Web エンジニアをしている osd です。 実装漏れの問題はプロダクト開発の中でも根本的な解決が難しい問題の一つだと思っていて、その問題を解決する一例として「複製機能の実装漏れを防ぐ仕組み」についてお話…

STORES レジにおけるSwift6移行対応

この記事は STORES Advent Calendar 2024 の16日目の記事です。 はじめに こんにちは、STORES レジ でアプリ開発している @nekowen です。 STORES のモバイルプロダクトは STORES レジ 以外に「STORES ブランドアプリ」「STORES 決済」「STORES 予約」が存在…

新卒1年目を振り返る!

こんにちは! STORES 決済 Androidチームのchukaです。 こちらはSTORES Advent Calendar 2024 16日目の記事です。 気がつけば12月ももう終わりですね。 2024年は私が新卒として STORES に入社し、たくさんの初めてに直面した1年でした。 せっかくなので、こ…

GraphQLの @oneOf ディレクティブの活用事例

STORES でバックエンドエンジニアをしている片桐です。 みなさんはGraphQLの@oneOfというディレクティブをご存知でしょうか? このディレクティブは、GraphQLの標準仕様においてBuilt-in Directivesへの追加が検討されている新しいディレクティブです。 RFC:…

go-cmp/cmp/cmpopts のオプション活用事例

Go

はじめに こんにちは、STORESの高田です。 今回は github.com/google/go-cmp/cmp のオプションの中から、実際のテストコードで使用頻度の高いオプションについてご紹介します。 基本的な使い方 cmp パッケージ用の汎用的なオプションは cmpopts package - gi…

net/http/httptest でHTTPクライアントをテストする方法

Go

はじめに こんにちは、STORESの高田です。 今回は net/http/httptest でHTTPクライアントをテストする方法についてご紹介します。 外部サービスのクライアントを含めたテストを実装する際には net/http/httptest を使うと、外部依存を排除しつつ再現性のある…

Dependabotを活用してライブラリのアップデートを効率化

はじめに こんにちは、STORESの高田です。 今回は Dependabot を用いてライブラリのアップデートに追従する方法についてご紹介します。 プロジェクト開始時に見落とされがちな物のうちの一つに、ライブラリのアップデートがあると思います。途中から更新に追…

一括登録機能実装における設計と実装

はじめに STORES 予約 で Web エンジニアをしている osd です。 今回は STORES 予約 で店舗一括登録を実装した際の設計、実装についてお話しします。 前提 なぜ必要とされているのか STORES 予約 では、事業者が店舗を追加する毎に開設手続きを行う必要があ…

2024年にチャレンジしたことを振り返るぞ

こんにちは! STORES 決済 Androidチームでお仕事しています。みっちゃんといいます。 こちらは STORES Advent Calendar 2024 の 12月19日の記事です! よろしくお願いします!! 12月なので2024年にチャレンジしたことを振り返ろうと思います。 2024年にチ…

データベースのJSON型をRailsらしく扱う方法の提案

データベースのJSON型をRailsらしく扱う方法の提案 この記事はSTORES Advent Calendar 2024の13日目の記事です。 はじめに STORES 予約のエンジニアの@ucksです。 なぜかブログはDBネタばかり書いていますが、今回もDBネタになります。 多くのRailsアプリケ…

Playwrightを活用したRESTful APIのシナリオテスト

はじめに こんにちは、STORESの高田です 今回は Playwright を用いて RESTful API のシナリオテストを実装したことについてご紹介します Playwright ではAPIの操作フローをプログラムで書けるため、想定利用ケースをコードで明示できる上、融通の効くテスト…

モバイルアプリのリリースから振り返る STORES 決済 の 2024年

師走っ!! こちらは STORES Advent Calendar 2024 の 13日目の記事です。 product.st.inc なんだか毎日寒いですね! さて、毎年のように 決済 モバイルアプリのリリースから1年を振り返ってますが 今年もはりきって振り返りますよ。 ということで、こんにち…

Go言語プロダクトでテストヘルパー関数を導入した話

Go

はじめに こんにちは、STORESの高田です STORES には Go 言語で書かれたプロダクトがいくつかあります。今回は、その中で使用しているテストヘルパー関数である testutils.Assert と応用についてご紹介します ベースは google/go-cmp 現在のコードベースでは…

カンファレンスへの参加・協賛が決まった時に技術広報がやること

こんにちは、技術広報のえんじぇるです。 この記事は技術広報アドベントカレンダー17日目の記事です。 技術広報として、欠かせない業務のひとつ、カンファレンスへの参加・協賛が決まった時にやっていることを紹介します。 お金 カンファレンスの参加・協賛…