EmotionTechテックブログ

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

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日目の記事です。 脆弱性を含むワークフロー…

おいしいCookieを焼きたい

こんにちは!バックエンドエンジニアの谷口(@ravineport)です。 この記事はエモーションテック Advent Calendar 2024の9日目の記事です。 一度言ってみたかったんですこのタイトル。WebのCookieの話です。食べ物のクッキーについてはかつてクッキーのレシ…

Rust から Google Cloud の API を呼び出す

はじめに こんにちは、バックエンドエンジニアのおおたわらです。 何度かこのブログでも紹介しましたが、新サービスの開発ではマイクロサービスの言語の 1 つとして Rust を採用しており、クラウドサービスは Google Cloud をメインに使っています。 現状、G…

Intersection Observer を利用した遅延読み込み

はじめに こんにちは、フロントエンドエンジニアの有馬です。今回は Angular で Web API である Intersection Observer を利用して、 component のデータを遅延読み込みする方法をお伝えします。 この記事はエモーションテック Advent Calendar 2024の7日目…

未経験からプロダクト開発してみた

はじめに はじめまして、データアナリストの柳です。 今回は、私が担当しているプロダクト「分析&レポート資料作成自動化ツール」を開発することになった経緯についてご紹介します。このツールは、手動で数時間かかっていた作業を数分で完了させ、データ分…

エモテクは子育て家庭にも働きやすい職場です!

はじめに こんにちはテックリードのかどたみです。 私事で申し訳ないですが、昨年末に第一子が誕生し幸福度が爆上がりしています。 私生活が子育てでガラッと変化しましたが、多くの方の配慮によって充実した生活を送ることができています。 今回は、その一…

実装予定期間に入ったのに、検討も終わってないよ!ってなったときにやったこと

はじめに こんにちはテックリードのかどたみです。 今回は仮説検証期あるある?、検討がうまくいかずスケジュールがおしちゃった話をしようと思います。 我々プロダクトチームはロードマップという形で年間を通した開発スケジュールを社内に公開しています。…

Rustのライブラリの探し方

はじめに こんにちは。バックエンドエンジニアのよしかわです。本稿では業務で用いる Rust のライブラリをどのように探しているかやその際に何を気にしているかについてご紹介します。 この記事はエモーションテック Advent Calendar 2024の3日目の記事です…

New Relic でフロントエンドのモニタリングダッシュボードを作ってみた

はじめに この記事はNew Relic Advent Calendar 2024の 2 日目の記事です。 こんにちは。株式会社エモーションテックでフロントエンドエンジニアをしているすずきです。 弊社ではアプリケーションの監視に New Relic を使っているのですが、その機能の 1 つ…

テストコードの振り返り

はじめに こんにちはテックリードのかどたみです。 突然ですが、マイクロサービスでの開発を始めてから3年が過ぎ去りました。。。時の流れは早いですね。。。 既存のサービスの運用を行った後、そこにある課題をできる限り再現させないように新たなコードベ…

Web エンジニアが使いたいギャル流行語2024

みなさんこんにちは!今年も始まりました エモーションテック Advent Calendar 2024。 1日目は私、Product チームの黄色い切り込み隊長 高橋(@fusho_takahashi)が務めさせていただきます! 初日の本日は Advent Calendar 恒例の Web エンジニアが使いたい…

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

はじめに こんにちは、バックエンドエンジニアのおおたわらです。 弊社のプロダクトの一部に、顧客企業の行いたい調査(例えば、企業が顧客のニーズを理解し、最適なサービスを提供をするためのユーザー向け調査)に応じてアンケートを作成し、回答を集める…

Terraformのバージョンをv1.3.5からv1.9.5に上げた話

はじめに エモーションテックでSREチームに所属しているsugawaraです。弊社ではインフラ管理にTerraformを利用しており、複数のプロダクトや社内インフラを含めて約90の環境を管理しています。優先度の兼ね合いもあり長い間Terraformのバージョンアップがで…

1年間運用したAzure OpenAI Serviceの負荷分散構成の紹介

はじめに こんにちは、 SREのおかざきです。 エモーションテックでは、Azure OpenAI Serviceを活用したテキストAI分析サービス「TopicScan®︎」の開発を進めています。 本記事では、Azure OpenAI Serviceの負荷分散を実現するために設計したアーキテクチャと…

RustでGoogle CloudのService AccountからAWSのRoleを使う

こんにちは!バックエンドエンジニアの谷口(@ravineport)です。 Google Cloud上のアプリケーションからAWS内のサービスにアクセスする必要があり、AWSのAssumeRoleという方法を教えていただいたのでそのご紹介です。今回は例としてS3のオブジェクトにアクセ…