STORES Product Blog

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

STORES ネットショップ

heyの統合データ基盤と今後の展望

はじめに はじめまして、4/1からデータチームでデータエンジニアとして働いている @shoso です。 突然ですが、みなさんデータ基盤って開発したことありますか? 私はheyに来るまでなかったのですが、チームの経験あるメンバーと毎日話しながら(助けてもらい…

MongoDB(Mongoid)を利用したRails開発のメリット

はじめに はじめまして、hey でECとかレジのバックエンドエンジニアをやっている @ucks です。 STORES (以下、区別のため STORES EC と表記) と STORES レジでは、Webアプリケーションフレームワークに Ruby on Rails 、 データベースに MongoDB 、 ODM (RDB…

Docker の要素技術について

はじめに STORES EC の SRE を担当している北原と申します。 hey では SRE チームが主催の 'SRE なんでも相談会' という勉強会を定期的に開催しています。 今回は、先日私が担当した 'Docker ことはじめ #1' の内容について紹介させていただきます。 Docker …

SREチームでスクラムを導入した話

はじめに STORES でECサービスのSREエンジニアをしている角田と申します。 SREチームではチームのタスク管理のためにスクラムを利用しています。 スクラムを導入してから今までの半年と少しの間に感じたことをまとめてみました。 元々のSREチームの働き方と…

GKE Autopilotをデータ基盤に導入してみた

データエンジニアの@komi_edtr_1230です。 今回データチームが管理しているデータ基盤にてGKE Autopilotを導入したのでその感想についてまとめていこうと思います。 TL; DR GKE Autopilotを使い始めて、インフラ管理から解放され開発業務に専念できるように…

CSPを利用してRailsアプリから安全にiframeを制限する

STORES EC本部のソフトウェアエンジニア @_morihirok です。 STORES ECではクリックジャッキングの脆弱性に対応するため、2021年の2月に他ドメインのサイトからのiframe要素などによる読み込みを制限するアップデートを行いました。 コンテンツセキュリティ…

チーム内でも目標設定と振り返りをやってみよう!から1年が経ちました

テクノロジー部門、STORES ECでフロントエンドエンジニアをしている @daitasuです。 私たちのチームでは、会社全体での人事制度で設定する目標とは別に、チーム内で独自にクオーターごとの目標設定と振り返りをしています。 チーム内での目標設定と振り返り…

「【生配信】"hey Talk" Engineers STORESのカジュアル面談全部お見せします!」というイベントをやりました!

STORES でECの開発に携わっている @katsumata_ryo です。先日5月27日に「【生配信】"hey Talk" Engineers STORESのカジュアル面談全部お見せします!」というイベントを行いました。当初20名を定員とさせていただいておりましたが、即日定員に達したため50人…

MongoDBの本番データを使って安全に動作確認できるようにする

最初に こんにちは、STORES ECチーム、SREグループ所属の渋谷です。皆さんは本番データを使って動作確認や検証することがありますでしょうか? 我々も、稀ではありますが本番と同等のデータで動作確認や検証する場合があります。今回は、直近で本番のデータ…

CIでデータマートを自動生成する

データチームにてデータエンジニアとして働いている @komi_edtr_1230です。 2021年1月からheyの1人目のデータエンジニアとして入社し、日々データ基盤の整備にあたっています。 今回の記事ではCIでデータマートの生成を自動化した話について書いていきます。…

クライアントサイドのバリデーションエラーのデータ型についての考察

業務委託で STORES の開発をしている @inouetakuya です。 先日 STORES のフロントエンドチーム内でクライアントサイドのバリデーションについて見直す機会があり、特にバリデーションエラーのデータ型をどうするかについての議論が興味深かったので、共有さ…

Rails 6.0へアップグレードしました

バックエンドエンジニアで STORES EC を担当しているただ @tdakak です。 hey には2021年の1月に入社しました。 現在は業務改善グループという、アプリケーションのセキュリティ対応や運用や開発をなめらかにするための仕組み作りを行うなんでも屋さんなチー…

STORESを支えるいろんなモブ〇〇

heyでSTORESのECサービスを開発をしている morihirok です。 STORES ECでは2019年ごろからモブプログラミングを徐々に導入し始め、今ではモブプログラミングだけでなくいろんなモブ〇〇が誕生したので、その紹介をします。 そもそもモブプログラミングとは …

プロジェクトの振り返りについて振り返ってみた

※この記事は hey アドベントカレンダー2020 22 日目の記事です。 一年の終わりにやることといえばなんでしょうか? ... そうですね、振り返りです。 今年いくつかのプロジェクトに関わりまして、プロジェクトが終わるごとに毎回プロジェクトの振り返りをして…

社内セキュリティ勉強会のはなし

はじめに STORES でセキュリティエンジニアをしている横山です。 hey アドベントカレンダー 2020 の20日目の記事です。今回はエンジニア向けに行ったセキュリティ勉強会の一部を紹介したいと思います。 セキュリティグループでは、セキュリティ施策の一部と…

BigQueryMLでサービス数値の月末着地予測をする

この記事はhey アドベントカレンダーの19日目の記事です。 こんにちは、STORES でデータアナリストをしている@yougaiです。 サービスを運営していく中で、月次でKPIの目標を持っているチームは多いと思います。 そこで月中に気になるのが、今の調子で月末に…

DatadogのApp Analyticsについて

はじめに STORES でECサービスのSREエンジニアをしている角田と申します。 hey アドベントカレンダー 2020 の12日目の記事です! 今回は STORES でサービス監視に利用しているDatadogの機能についてです。 Datadog には App Analytics という機能があります…

フルリモート環境で絆を繋ぐ、 大喜利式チームランチ

この記事はhey Advent Calendar 2020 6日目の記事です。 こんにちは、 STORES でフロントエンドエンジニアをしています @daitasuです。 さて、本日は私たち STORES のフロントエンドチームが行う、フルリモート環境下でのチームランチについての小話です。 U…

MongoDBでnull以外を条件にデータを取得する時にCovered Queryにする方法

この記事はheyアドベントカレンダー2020の5日目の記事です。 STORESでECサービスのSREをしている@wanijiです。 STORESではメインとなるDBにMongoDBを採用しており、RDBと同様にインデックスを使ったパフォーマンス改善をします。その際に、インデックスを使…

Rubyのカスタム例外をちゃんと使おうと思った話

STORES のバックエンドエンジニアの@zakkyです。 本記事は、hey アドベントカレンダー 2020 の 4 日目の記事です! アドベントカレンダーに記事を書くのは初めてで、何を書くか悩みました。 技術記事は過去の自分に向けて書くのがちょうど良いという言葉を先…

STORES EC のインフラ構成

はじめに STORES で EC サービスの SRE エンジニアをしている秋元と申します。 hey アドベントカレンダー 2020 の 3 日目の記事です! 今回は STORES EC のインフラ構成を紹介したいと思います。 正直なところ、弊社のインフラ構成は「すごく最先端を走って…

Vuex ストアに TypeScript の型を付ける(2020年12月版)

業務委託で STORES の開発をしている @inouetakuya です。 下記の記事(2020/09/14)にあるように、STORES では TypeScript の導入を進めています。 プロダクトに途中から TypeScript を導入した話 - STORES Tech Blog 現状、新規に記述するコードについては…

STORESを支える「運用週」という仕組み

みなさんは「保守・運用」と聞くとどのようなイメージをお持ちでしょうか? もしかしたら良いイメージをお持ちでない方もいらっしゃるかもしれません。 しかし、売り上げを生み出している既存コードの保守運用はビジネス上、新規機能開発と同等かそれ以上に…

たまってしまった .rubocop_todo.yml をGitHub Actionsで継続的かつ自動的に倒す方法

こんにちは。heyのCTOをやっている藤村です。 実はCTOになる前はSTORESのRailsのコードを改善する仕事をしていました。その頃に、たまってしまっている.rubocop_todo.ymlをなんとか手間をかけずに消化していきたいな〜と思い、少しづつ自動的に消化する仕組…

STORESってMongoDBを使ってるらしいけど正直どうなの?

STORESのECサービスを開発している@morihirokです。 STORES ECはRuby on Railsで開発されているWebアプリケーションですが、データベースにはMySQLやPostgreSQLといったリレーショナルデータベースではなく、MongoDBを採用しております。 この記事ではカジュ…

職能横断型スクラム体制になってからのチーム改善活動

こんにちは、STORES ECでフロントエンドエンジニアをしている@daitasuとバックエンドエンジニアをしている@phayacellです。 STORES ECでは、今年の5月よりエンジニア内の大きな体制変更がありました。 その変更では、フロントエンド/バックエンドで分かれて…

heyにフルリモートで入社して2ヶ月が経ったので入社体験記を書きました

はじめまして、STORESのバックエンドエンジニアのzakkyです。 2020年8月1日に入社しました。この記事を書いているのは9月下旬なので、約2ヶ月が経過した状態です。 弊社は2月頃から、COVID-19 の影響で全社的にリモート推奨となりました。2月から現在にいた…

Vue に stale-while-revalidate がやってくる

STORES でフロントエンド開発をしているushironokoです。今回は Vue でも SWR のようなしくみが使え、遠くない未来で標準的に使われることになりそうだ、という話を書きます。stale-while-revalidate とはどのようなものなのかについても簡単に解説していき…

プロダクトに途中からTypeScriptを導入した話

heyのSTORESでECの開発をしている@nkobaです。 この記事ではフロントエンドでTypeScriptを導入した話について発信していきます! TypeScriptとは TypeScriptはJavaScriptにリッチな型システムと静的な型検査を付加したプログラミング言語です。 TypeScriptが…

パフォーマンス改善から可視化の重要性を再認識した話

はじめに STORES で EC サービスの SRE エンジニアをしている秋元と申します。 今回は、EC サービスでのパフォーマンス改善について書こうと思います。 特に可視化の重要性について改めて感じたので、そのあたりについて書こうと思います。 STORES の EC サ…