EmotionTechテックブログ

https://tech.emotion-tech.co.jp/

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

フィード

記事のアイキャッチ画像
Model Context Protocol(MCP)について調べてみた
EmotionTechテックブログ
はじめに 皆様、メリクリです。エモーションテックでバックエンドエンジニアをやっているしん(@sinyo-matu)です。 Anthropic社が11月に公開したModel Context Protocol(MCP)について調べてみたので、こちらの記事では、MCPの紹介とその応用について書きたいと思います。 また、この記事は エモーションテック Advent Calendar 2024 25 日目の記事です。 MCPって? まず一次情報源として、公式の紹介ブログ及び公式ドキュメントを載せておきます。 最近では生成AIと既存のワークフローの連携をテーマにした製品開発が非常に盛り上がっています。ID…
9日前
記事のアイキャッチ画像
社内勉強会は進化して継続中!
EmotionTechテックブログ
はじめに こんにちはテックリードのかどたみです。 昨年のアドベントカレンダーでプロダクトチームが行っている勉強会のリニューアルについて紹介しました。この記事から1年経過しましたが、提案者である私が育児休暇を取っている間も自然消滅することなく継続することができております! 途中で振り返りも実施し、更に内容をブラッシュアップしました。 今回はこの一年で行った勉強会の内容や振り返りの内容を紹介したいと思います。 この記事はエモーションテック Advent Calendar 2024の24日目の記事です。 開始当初の目的 本題に入る前に勉強会の目的をおさらいしておきます。 この勉強会のもともとの目的は…
10日前
記事のアイキャッチ画像
GitHub Actions の permission 設定ミスで突然デプロイできなくなった話
EmotionTechテックブログ
はじめに こんにちはあるいはこんばんは。フロントエンドエンジニアの id:kasaharu です。 エモーションテックでは GitHub Actions のワークフローを使ってフロントエンドのデプロイフローを組んでいます。 少し前にワークフローの permission の設定ミスにより突然デプロイができなくなったことがあったので、今回はそのとき起こったことについて書きます。 これは エモーションテック Advent Calendar 2024 23 日目の記事です。 前提 今回の問題について話す前に、まず対象リポジトリとワークフローについて前提を揃えようと思います。 今回登場するワークフローは…
11日前
記事のアイキャッチ画像
Angular Material M2からM3へ:見た目を崩さずテーマ移行する方法
EmotionTechテックブログ
Angular Material を愛する皆さんこんにちは!フロントエンドエンジニアの高橋 a.k.a 黄色い人( @fusho_takahashi )です。 エモーションテック Advent Calendar 2024 22 日目の記事を担当させていただきます! M2 のまま使い続ける恐怖 エモーションテックでは、UI コンポーネントライブラリとして Angular Material を使用しています。Angular Material はその名の通り、Material Design のデザインを基に作られており、本家 Material Design のバージョンアップに伴い、これまでに 2 …
12日前
記事のアイキャッチ画像
1Password CLIでPostgreSQLのロールをセキュアに作成する
EmotionTechテックブログ
はじめに こんにちはProduct Teamのマネージャーのよしだです。弊社では、様々なサービスのバックエンドでPostgreSQLを利用しています。セキュリティを強化するためにロール管理、特に新規ロール作成時のパスワード管理は、非常に重要です。データベーススキーマの変更を行う管理者権限とBIツール連携などで利用される読み取り専用ロールを分けて運用することで、意図しないデータ変更のリスクを低減できます。読み取り専用ロールは新規作成の機会が多く、パスワード管理を適切に行わないとセキュリティリスクが発生する可能性があります。 弊社では、機密情報管理に1Passwordを活用しており、Postgre…
13日前
記事のアイキャッチ画像
Azure OpenAIのモデル管理方法の紹介
EmotionTechテックブログ
はじめに こんにちはProduct Teamのマネージャーのよしだです。エモーションテックでは、生成AIを活用したテキストAI分析サービス「TopicScan®︎」を提供しております。「ChatGPT」の登場以来、生成AIの進化は目覚ましく、日々新しいモデルが登場しています。TopicScanも常に最新のモデルを活用し、お客様により良い体験を提供できるよう努めています。しかし、Azure OpenAI Service (以下Azure OpenAI)のモデル管理は決して簡単なものではありません。モデルのアップデートは頻繁に行われるため、公式ドキュメントの更新が追いつかないこともあります。今回は…
14日前
記事のアイキャッチ画像
Rust のマクロの実装例
EmotionTechテックブログ
はじめに こんにちは。バックエンドエンジニアのよしかわです。本記事では Rust の簡単なマクロの実装例をご紹介します。 この記事はエモーションテック Advent Calendar 2024の19日目の記事です。 動機 まず今回紹介するマクロを実装した動機について述べます。弊社では下記のようなレイヤードアーキテクチャを採用しているのですが、レイヤーをまたぐ際の値の詰め替えについての気掛かりが動機となっています。 project/ |- api/ |- domain/ |- infrastructure/ |- usecase/ |- Cargo.toml Rustバックエンドのテスト構成何も…
15日前
記事のアイキャッチ画像
LightGBMによる重要度算出の試み
EmotionTechテックブログ
こんにちは。Analyticsチームの川向です。 Analyticsチームはクライアント企業の皆様がよりよい示唆を得られるために、新たな解析手法やビジュアライゼーションを考案しています。今回はその中の一つの取り組みである「決定木モデルにより重要度を算出する試み」を紹介させていただきます。 この記事はエモーションテック Advent Calendar 2024の18日目の記事です。 NPS®について 本題に入る前に、エモーションテックでの調査で目的変数になることが多く、本記事内での検証においても目的変数であるNPS(Net Promoter Score)について紹介させていただきます。NPSは顧…
16日前
記事のアイキャッチ画像
旧プロダクトのAurora MySQLを 5.7 から 8.0 へアップグレードしました
EmotionTechテックブログ
はじめに エモーションテックでSREチームに所属しているsugawaraです。先日弊社の旧プロダクトで利用していたMySQL 5.7をMySQL 8.0へアップグレードしました。(旧プロダクトとは、先日アナウンスされた「EmotionTech CX/EXの新環境・パブリックベータ版」に対して、従来から存在していたプロダクト環境を指します。)今回はこのアップグレード対応についてまとめてみました。この記事はエモーションテック Advent Calendar 2024の17日目の記事です。 経緯 弊社の旧プロダクトではMySQL 5.7(Amazon Aurora MySQL バージョン2)を利用し…
17日前
記事のアイキャッチ画像
SREチームの取り組み2024
EmotionTechテックブログ
はじめに こんにちは、SREのおかざき(@tomoy_715)です。本記事ではSREチームとして今年やってきたことを振り返ってみます。 この記事はエモーションテック Advent Calendar 2024の16日目の記事です。 SREチームの紹介 簡単にSREチームの位置付けについてご紹介します。 SREチームは複数のプロダクトの開発チームを横断的に支援します。 チーム構成概略 開発初期から信頼性と開発生産性を意識し、開発メンバーが機能開発や改善にスムーズに取り組める環境を整備します。 また、開発メンバーが信頼性向上や顧客に届ける新たな価値を考える上で「試したい」と思ったことをすぐ行動に移せ…
18日前
記事のアイキャッチ画像
Analyticsチーム脱Excelへの道
EmotionTechテックブログ
1. はじめに: 変革の背景と目的 こんにちは。Analyticsチームの松田です。 Analyticsチームではクライアント企業のCXMおよびEXMに関する課題解決のため、統計解析を用いて主にアンケートデータ等の分析およびレポーティングを行なっているチームです。 今日は長年使い慣れたExcelから、Pythonベースのデータ分析環境に移行した話をしたいと思います。 Excelは便利なツールですが、分析を進める上では様々な課題がありました。そこで、より効率的で柔軟な環境構築を目指しPythonを導入して業務に取り入れていくまでの経緯と過程について共有したいと思います。 この記事はエモーションテ…
19日前
記事のアイキャッチ画像
Intersection Observer を利用した仮想スクロール
EmotionTechテックブログ
はじめに こんにちは、フロントエンドエンジニアの有馬です。前回 Intersection Observer を利用して遅延読み込みを行う方法についてお伝えしましたが、応用して仮想スクロールのようなものを実装することもできたので今回はその方法についてお伝えします。 この記事はエモーションテック Advent Calendar 2024の14日目の記事です。 課題 現在開発中の機能には、アンケートの回答を質問ごとに集計し、質問の種類に応じてグラフや表で表示する画面があります。 現状ではこの画面を開いたときに、全ての質問に対して個別に集計リクエストが送られています。質問数が10問くらいであれば問題に…
20日前
記事のアイキャッチ画像
BigQueryの結合テストの準備
EmotionTechテックブログ
はじめに こんにちは、テックリードのかどたみです。 今回もテストネタです!こちらの記事でも紹介しましたが、エモーションテックではデータストアとの結合テストを行っています。RDBに関するコードのテストは実行ごとにデータを生成するのですが、BigQueryに関しては事前にデータをアップロードしてSQLのテストを行っています。 今回はBigQueryのテストデータ準備について紹介したいと思います。 この記事はエモーションテック Advent Calendar 2024の13日目の記事です。 前提 BigQueryのデータもテストの実行ごとに生成すればよいのでは?という意見もあるかと思いますが、以下の…
21日前
記事のアイキャッチ画像
エモテクに参入して2年が経った話
EmotionTechテックブログ
はじめに こんにちは、QAチームのもときです。 私は正社員1人目のQAエンジニアとしてエモーションテックに参入し、今日2024年12月12日で丸2年が経過しました。2年の間にQAチームのメンバーの一員として、どのようにプロダクトに関わってきたかを振り返ってみます。 この記事はエモーションテック Advent Calendar 2024の12日目の記事です。 参入当初 〜 テスト体制確立まで 参入当初は、サービスのテスト体制が無いに等しい状態でした。テスト管理ツールは無く、過去のテスト記録、実績は残っていませんでした。また、テストに関するレビューは実施しておらず、テスト範囲は個々のエンジニアによ…
22日前
記事のアイキャッチ画像
googletest-rust クレートを使ってみた
EmotionTechテックブログ
はじめに こんにちは、バックエンドエンジニアのおおたわらです。 アドベントカレンダー 2 日目でテストコードの振り返りという記事も公開されましたが、弊社では単体テストをしっかりと書きながらプロダクト開発を進めています。 そんな中でテストをもっと書きやすくしたい!という思いから、Rust の googletest-rust クレートをプロダクト開発で使ってみたので、所感を紹介します。 この記事はエモーションテック Advent Calendar 2024の11日目の記事です。 googletest-rust とは もともと Google 社が C++ 向けのテストライブラリ GoogleTest…
23日前
記事のアイキャッチ画像
GitHub Actions のワークフローを少し安全に書くコツ
EmotionTechテックブログ
はじめに こんにちは。バックエンドエンジニアのよしかわです。本記事では GitHub Actions のワークフローを少し安全に書くコツを一つご紹介いたします。 この記事はエモーションテック Advent Calendar 2024の10日目の記事です。 脆弱性を含むワークフローの例 今回取り上げるのはスクリプトインジェクション対策です。例として公式ドキュメントで脆弱性を含むとして挙げられているコードを見てみます。これはプルリクエストのタイトルが octocat で始まっていれば「PR title starts with 'octocat'」を出力して成功し、そうでなければ「PR title …
24日前
記事のアイキャッチ画像
おいしいCookieを焼きたい
EmotionTechテックブログ
こんにちは!バックエンドエンジニアの谷口(@ravineport)です。 この記事はエモーションテック Advent Calendar 2024の9日目の記事です。 一度言ってみたかったんですこのタイトル。WebのCookieの話です。食べ物のクッキーについてはかつてクッキーのレシピで作ったつもりが蒸しパンのようなものになったくらいには焼くのが苦手ですが、WebのCookieも焼くのが苦手です。よくないですね。 そんな折、お仕事でWebのCookieについて意識する機会がありソフトウェアエンジニアとして生計を立てる以上、せめてWebのCookieについては一定ちゃんと知っておこうということで調…
25日前
記事のアイキャッチ画像
Rust から Google Cloud の API を呼び出す
EmotionTechテックブログ
はじめに こんにちは、バックエンドエンジニアのおおたわらです。 何度かこのブログでも紹介しましたが、新サービスの開発ではマイクロサービスの言語の 1 つとして Rust を採用しており、クラウドサービスは Google Cloud をメインに使っています。 現状、Google Cloud の 公式 Rust クライアントライブラリはありません*1。そのため、サードパーティーのクレートを使って開発していますが、使いたいサービスに対応したものがなかったり期待した作りではない場合があります。 クレートの内部でやっていることは基本的に Google Cloud API の呼び出しなので、それを自前で実…
1ヶ月前
記事のアイキャッチ画像
Intersection Observer を利用した遅延読み込み
EmotionTechテックブログ
はじめに こんにちは、フロントエンドエンジニアの有馬です。今回は Angular で Web API である Intersection Observer を利用して、 component のデータを遅延読み込みする方法をお伝えします。 この記事はエモーションテック Advent Calendar 2024の7日目の記事です。 課題 現在開発中の機能には、アンケートの回答を質問ごとに集計し、質問の種類に応じてグラフや表で表示する画面があります。 現状ではこの画面を開いたときに、全ての質問に対して個別に集計リクエストが送られています。質問数が10問くらいであれば問題になりませんが、アンケートによっ…
1ヶ月前
記事のアイキャッチ画像
未経験からプロダクト開発してみた
EmotionTechテックブログ
はじめに はじめまして、データアナリストの柳です。 今回は、私が担当しているプロダクト「分析&レポート資料作成自動化ツール」を開発することになった経緯についてご紹介します。このツールは、手動で数時間かかっていた作業を数分で完了させ、データ分析業務の効率化を目指して開発したものです。 未経験からプロダクト開発に挑戦する中での学びや気づきが、これから挑戦する方だけでなく、すでに開発に関わっている方々の参考になれば幸いです。 背景と課題 当時、エモーションテックでは人手不足が深刻で、分析レポートの需要に供給が追いつかず、受注をお断りせざるを得ない状況が続いていました。このような状況に、目の前のビジネ…
1ヶ月前
記事のアイキャッチ画像
エモテクは子育て家庭にも働きやすい職場です!
EmotionTechテックブログ
はじめに こんにちはテックリードのかどたみです。 私事で申し訳ないですが、昨年末に第一子が誕生し幸福度が爆上がりしています。 私生活が子育てでガラッと変化しましたが、多くの方の配慮によって充実した生活を送ることができています。 今回は、その一因である弊社の働きやすさについて紹介したいと思います。 この記事はエモーションテック Advent Calendar 2024の5日目の記事です。 弊社のここが子育てしやすい! 男性も育休を取りやすい雰囲気がある 時代として取りやすくなっているのは確かだと思いますが、弊社は取らない事で逆に心配されるような雰囲気があります。コロナ禍になる前からリモートと出社…
1ヶ月前
記事のアイキャッチ画像
実装予定期間に入ったのに、検討も終わってないよ!ってなったときにやったこと
EmotionTechテックブログ
はじめに こんにちはテックリードのかどたみです。 今回は仮説検証期あるある?、検討がうまくいかずスケジュールがおしちゃった話をしようと思います。 我々プロダクトチームはロードマップという形で年間を通した開発スケジュールを社内に公開しています。これによってビジネスサイドとの会話の円滑化を図っています。 もちろん、期初に決めたスケジュールのまま固定されるのではなくお客様の要望や、会社や市場の状況によって見直しはしますが、基本的に我々はロードマップの通りに開発することを念頭に置いています。 そんな中、タイトルの通り今年はいろいろな事情が重なり1つのチームが大幅な遅延に見舞われました。 大変でしたが、…
1ヶ月前
記事のアイキャッチ画像
Rustのライブラリの探し方
EmotionTechテックブログ
はじめに こんにちは。バックエンドエンジニアのよしかわです。本稿では業務で用いる Rust のライブラリをどのように探しているかやその際に何を気にしているかについてご紹介します。 この記事はエモーションテック Advent Calendar 2024の3日目の記事です。 ライブラリとクレートの関係 まず先に、ライブラリという語と Rust で頻出する「クレート(crate)」という語の関係について述べておきます。といっても大抵の場合ライブラリとクレートは同じものを指すと考えて差し支えありません。詳しくは “the book” と呼ばれるドキュメントの 7.1. Packages and Cra…
1ヶ月前
記事のアイキャッチ画像
New Relic でフロントエンドのモニタリングダッシュボードを作ってみた
EmotionTechテックブログ
はじめに この記事はNew Relic Advent Calendar 2024の 2 日目の記事です。 こんにちは。株式会社エモーションテックでフロントエンドエンジニアをしているすずきです。 弊社ではアプリケーションの監視に New Relic を使っているのですが、その機能の 1 つにダッシュボードがあります。 New Relic で収集したデータをどのように視覚化・活用すればいいのか、まずはフロントエンドチームで検討してダッシュボードを作ってみました。 作ったものを定期的に見て話し合うという運用を始めてある程度時間が経ったので、今回はそのダッシュボードについてご紹介しようと思います。 ダ…
1ヶ月前
記事のアイキャッチ画像
テストコードの振り返り
EmotionTechテックブログ
はじめに こんにちはテックリードのかどたみです。 突然ですが、マイクロサービスでの開発を始めてから3年が過ぎ去りました。。。時の流れは早いですね。。。 既存のサービスの運用を行った後、そこにある課題をできる限り再現させないように新たなコードベースを構築してきました。 その中でも個人としてはテストに課題感を持ち以前こんなポエムも書きましたが、ポエムを書いただけで振り返ってこなかったのでここで振り返ってみたいと思います。 この記事はエモーションテック Advent Calendar 2024の2日目の記事です。 効果の実感 しっかりテストを書いてきて良かったことは、やはり仕様の変更時に安心ができる…
1ヶ月前
記事のアイキャッチ画像
Web エンジニアが使いたいギャル流行語2024
EmotionTechテックブログ
みなさんこんにちは!今年も始まりました エモーションテック Advent Calendar 2024。 1日目は私、Product チームの黄色い切り込み隊長 高橋(@fusho_takahashi)が務めさせていただきます! 初日の本日は Advent Calendar 恒例の Web エンジニアが使いたいギャル流行語 2024 年版を発表します! 言わずとしれた日本の宝ギャル雑誌 egg が毎年発表している egg 流行語大賞 。 youtu.be まだチェックしていなかったみなさんもご安心ください!昨年に引き続き、この中から Web エンジニアが使える流行語をピックアップしてご紹介してい…
1ヶ月前
記事のアイキャッチ画像
大規模調査を支えるアンケートシステムのアーキテクチャ
EmotionTechテックブログ
はじめに こんにちは、バックエンドエンジニアのおおたわらです。 弊社のプロダクトの一部に、顧客企業の行いたい調査(例えば、企業が顧客のニーズを理解し、最適なサービスを提供をするためのユーザー向け調査)に応じてアンケートを作成し、回答を集めることができる「アンケート機能」があります。 この機能はコンシューマ向けの大規模な調査(具体的にはメールやプッシュ通知等で数十万〜数百万人にアンケート回答を依頼するような調査)での利用も想定しており、大量アクセスに対応できることが求められます。更に、集めた回答に対し分析を実施し、すぐに結果を確認できることも求められます。 このためのアーキテクチャを構築したので…
1ヶ月前
記事のアイキャッチ画像
Terraformのバージョンをv1.3.5からv1.9.5に上げた話
EmotionTechテックブログ
はじめに エモーションテックでSREチームに所属しているsugawaraです。弊社ではインフラ管理にTerraformを利用しており、複数のプロダクトや社内インフラを含めて約90の環境を管理しています。優先度の兼ね合いもあり長い間Terraformのバージョンアップができていなかったのですが、最近v1.3.5からv1.9.5にアップデートしました。この記事では、バージョンアップ作業において苦労した点と、バージョンアップして良かった点について詳しく解説します。 アップデート前の環境 Terraform: v1.3.5 Terragrunt: v0.50.6 stateファイルの保存先: AWS …
1ヶ月前
記事のアイキャッチ画像
1年間運用したAzure OpenAI Serviceの負荷分散構成の紹介
EmotionTechテックブログ
はじめに こんにちは、 SREのおかざきです。 エモーションテックでは、Azure OpenAI Serviceを活用したテキストAI分析サービス「TopicScan®︎」の開発を進めています。 本記事では、Azure OpenAI Serviceの負荷分散を実現するために設計したアーキテクチャと、その1年間の運用を踏まえての感想をご紹介します。 課題:増え続けるAzure OpenAI Serviceリソースへのアクセス方法 Azure OpenAI Service (以下、Azure OpenAI)には、TPM (Tokens-per-Minute) という利用制限(*1)があり、サブスク…
2ヶ月前
記事のアイキャッチ画像
RustでGoogle CloudのService AccountからAWSのRoleを使う
EmotionTechテックブログ
こんにちは!バックエンドエンジニアの谷口(@ravineport)です。 Google Cloud上のアプリケーションからAWS内のサービスにアクセスする必要があり、AWSのAssumeRoleという方法を教えていただいたのでそのご紹介です。今回は例としてS3のオブジェクトにアクセスする方法をご紹介しますが、その他にもGoogle CloudにはないソリューションがAWSにあったり、データ連携等でクラウドサービスをまたぐとき等にも活用できるかと思います。 やりたいことイメージ図 方法はいくつかありますが、今回はAWS Security Token Service (AWS STS)のAssum…
3ヶ月前