EmotionTechテックブログ

株式会社エモーションテックのProduct Teamのメンバーが、日々の取り組みや技術的なことを発信していくブログです。

大規模調査を支えるアンケートシステムの負荷試験

はじめに こんにちは、バックエンドエンジニアのおおたわらです。 これまで2つの記事にわたり、弊社のアンケートシステムについて紹介させていただきました。 大規模調査を支えるアンケートシステムのアーキテクチャ 大規模調査を支えるアンケートシステムの…

Google CloudのPrivileged Access Manager (PAM) でセキュアで効率的な一時的な権限付与を実現しました

はじめに こんにちは、エモーションテックでSREチームに所属しているsugawaraです。 エモーションテックでは、Google Cloudにおける一時的な権限付与の運用を改善するため、Privileged Access Manager (以降PAM) を導入しました。 PAMの導入によって、これま…

実測!Angularテンプレートでのメソッド呼び出しはどれだけ負荷が高いのか?

はじめに こんにちは!フロントエンドエンジニアの有馬です。 以前、コードレビューでこんな指摘を受けたことがあります。 「テンプレートでメソッドを呼び出すとパフォーマンスに影響が出る可能性があるので、Pipeを使いませんか?」 当時はその理由を深く…

大規模調査を支えるアンケートシステムのアーキテクチャ おかわり

はじめに こんにちは!バックエンドエンジニアの谷口(@ravineport)です。 以前、 大規模調査を支えるアンケートシステムのアーキテクチャという記事で弊社のアンケートシステムのアーキテクチャについて紹介しましたが、今回はこれをもう少し深堀りしてみよ…

もうすぐやめるエンジニアが思うエモテクのいいところ

はじめに 皆様こんにちは。エモテクでエンジニアとして働いているしんです。個人的な都合でエモテクを7月いっぱいで卒業することになりました。 そんな時だからこそ、エモテクプロダクトチームの特に良いところ3つを本音で紹介したいと思います。社内Slackの…

100個超あるCloud Runマニフェストの管理方式とデプロイワークフローの紹介

はじめに こんにちは、エモーションテック SREのおかざきです。 弊社ではGoogle Cloud Runを利用していますが、そのマニフェスト管理方式とデプロイワークフローを紹介します。 背景 弊社プロダクトでは複数のマイクロサービスをCloud RunとCloud Run Jobs上…

プロダクト開発における「60%最速」とは

こんにちは、生成AI事業開発・データサイエンティストのikegameです。 最近当社では、「60%最速」すなわち「60%の成果物を最速で出す」という行動指針を掲げています(ご参考:エモーションテックという船の加速度をあげるために|エモーションテック)。 …

生成AIを利用した製品に対するQAについて

はじめに こんにちは、QAエンジニアのなかじまです。 昨今、生成AIを利用したサービスや製品に触れる機会が増えてきており、弊社でもTopicScanという生成AIを利用したプロダクトを展開しております。 今回は増えつつある生成AIを利用したサービス・機能に対…

GitHubのリポジトリを横断的にライセンスチェックする方法

はじめに こんにちは、PMのかどたみです。 今回はライセンスに関するお話です。以前cargo-deny によるクレートのライセンス確認 という記事でよしかわさんにRustにおいて採用しているクレートに意図しないライセンスが含まれていないかをチェックする方法を…

バグ分析を始めました

はじめに こんにちは、QAチームのもときです。以前、参入後のQAチームの取り組みについて、以下の記事で紹介させていただきました。 https://tech.emotion-tech.co.jp/entry/two-years-passed-enter-qa-team この記事内で紹介できなかったことがいくつかあり…

フロントエンドアプリケーションの assets ファイルのサイズを監視する

はじめに こんにちは、あるいはこんばんは。フロントエンドエンジニアの id:kasaharu です。 Web アプリケーションにユーザーがアクセスしてきたとき、ユーザーはブラウザを介して HTML / CSS / JavaScript といった多くの assets をダウンロードすることが…

Google Cloud Workflows で Cloud Run Jobs を安定運用する方法

こんにちは。バックエンドエンジニアの李です。弊社ではアンケート回答の分析など時間のかかる処理の実行環境として Cloud Run Jobs を活用しています。そこで今回は Cloud Run Jobs を使ったプロダクトを安定運用するための仕組みの一部として、Google Clou…

cargo-deny によるクレートのライセンス確認

はじめに こんにちは。バックエンドエンジニアのよしかわです。Rust を用いた大抵のソフトウェア開発では何らかの外部クレートを用いるかと思います。crates.io で公開されているようなクレートは MIT や Apache-2.0 といったライセンスを採用していることが…

Figmaでラジオボタン+文字入力欄のプロトタイプを実現する

こんにちは!エモーションテックで UX エンジニアをしている高橋(@fusho_takahashi)です。 今回はFigmaのプロトタイプ機能を活用して、以下のようなフォームを実現する方法をご紹介します。 このフォームはユーザーの趣味や興味のある分野について尋ねる内…

Model Context Protocol(MCP)について調べてみた

はじめに 皆様、メリクリです。エモーションテックでバックエンドエンジニアをやっているしん(@sinyo-matu)です。 Anthropic社が11月に公開したModel Context Protocol(MCP)について調べてみたので、こちらの記事では、MCPの紹介とその応用について書きた…

社内勉強会は進化して継続中!

はじめに こんにちはテックリードのかどたみです。 昨年のアドベントカレンダーでプロダクトチームが行っている勉強会のリニューアルについて紹介しました。この記事から1年経過しましたが、提案者である私が育児休暇を取っている間も自然消滅することなく継…

GitHub Actions の permission 設定ミスで突然デプロイできなくなった話

はじめに こんにちはあるいはこんばんは。フロントエンドエンジニアの id:kasaharu です。 エモーションテックでは GitHub Actions のワークフローを使ってフロントエンドのデプロイフローを組んでいます。 少し前にワークフローの permission の設定ミスに…

Angular Material M2からM3へ:見た目を崩さずテーマ移行する方法

Angular Material を愛する皆さんこんにちは!フロントエンドエンジニアの高橋 a.k.a 黄色い人( @fusho_takahashi )です。 エモーションテック Advent Calendar 2024 22 日目の記事を担当させていただきます! M2 のまま使い続ける恐怖 エモーションテック…

1Password CLIでPostgreSQLのロールをセキュアに作成する

はじめに こんにちはProduct Teamのマネージャーのよしだです。弊社では、様々なサービスのバックエンドでPostgreSQLを利用しています。セキュリティを強化するためにロール管理、特に新規ロール作成時のパスワード管理は、非常に重要です。データベーススキ…

Azure OpenAIのモデル管理方法の紹介

はじめに こんにちはProduct Teamのマネージャーのよしだです。エモーションテックでは、生成AIを活用したテキストAI分析サービス「TopicScan®︎」を提供しております。「ChatGPT」の登場以来、生成AIの進化は目覚ましく、日々新しいモデルが登場しています。…

Rust のマクロの実装例

はじめに こんにちは。バックエンドエンジニアのよしかわです。本記事では Rust の簡単なマクロの実装例をご紹介します。 この記事はエモーションテック Advent Calendar 2024の19日目の記事です。 動機 まず今回紹介するマクロを実装した動機について述べま…

LightGBMによる重要度算出の試み

こんにちは。Analyticsチームの川向です。 Analyticsチームはクライアント企業の皆様がよりよい示唆を得られるために、新たな解析手法やビジュアライゼーションを考案しています。今回はその中の一つの取り組みである「決定木モデルにより重要度を算出する試…

旧プロダクトのAurora MySQLを 5.7 から 8.0 へアップグレードしました

はじめに エモーションテックでSREチームに所属しているsugawaraです。先日弊社の旧プロダクトで利用していたMySQL 5.7をMySQL 8.0へアップグレードしました。(旧プロダクトとは、先日アナウンスされた「EmotionTech CX/EXの新環境・パブリックベータ版」に…

SREチームの取り組み2024

はじめに こんにちは、SREのおかざき(@tomoy_715)です。本記事ではSREチームとして今年やってきたことを振り返ってみます。 この記事はエモーションテック Advent Calendar 2024の16日目の記事です。 SREチームの紹介 簡単にSREチームの位置付けについてご紹…

Analyticsチーム脱Excelへの道

1. はじめに: 変革の背景と目的 こんにちは。Analyticsチームの松田です。 Analyticsチームではクライアント企業のCXMおよびEXMに関する課題解決のため、統計解析を用いて主にアンケートデータ等の分析およびレポーティングを行なっているチームです。 今日…

Intersection Observer を利用した仮想スクロール

はじめに こんにちは、フロントエンドエンジニアの有馬です。前回 Intersection Observer を利用して遅延読み込みを行う方法についてお伝えしましたが、応用して仮想スクロールのようなものを実装することもできたので今回はその方法についてお伝えします。 …

BigQueryの結合テストの準備

はじめに こんにちは、テックリードのかどたみです。 今回もテストネタです!こちらの記事でも紹介しましたが、エモーションテックではデータストアとの結合テストを行っています。RDBに関するコードのテストは実行ごとにデータを生成するのですが、BigQuery…

エモテクに参入して2年が経った話

はじめに こんにちは、QAチームのもときです。 私は正社員1人目のQAエンジニアとしてエモーションテックに参入し、今日2024年12月12日で丸2年が経過しました。2年の間にQAチームのメンバーの一員として、どのようにプロダクトに関わってきたかを振り返ってみ…

googletest-rust クレートを使ってみた

はじめに こんにちは、バックエンドエンジニアのおおたわらです。 アドベントカレンダー 2 日目でテストコードの振り返りという記事も公開されましたが、弊社では単体テストをしっかりと書きながらプロダクト開発を進めています。 そんな中でテストをもっと…

GitHub Actions のワークフローを少し安全に書くコツ

はじめに こんにちは。バックエンドエンジニアのよしかわです。本記事では GitHub Actions のワークフローを少し安全に書くコツを一つご紹介いたします。 この記事はエモーションテック Advent Calendar 2024の10日目の記事です。 脆弱性を含むワークフロー…