every Tech Blog
https://tech.every.tv/
株式会社エブリーのTech Blogです。
フィード

Laravel × Octane / Swoole × Auroraのマルチテナント化2パターン比較
every Tech Blog
はじめに こんにちは、リテールハブ開発部でバックエンドエンジニアをしているホシと言います。 現在、小売アプリの開発でLaravel11を利用してサービス開発を行っています。 今回は現在サービス提供している環境をマルチテナント化したお話をしようと思います。 既存の単一テナント前提のLaravelのサービスを、コンシューマ向けアプリと企業向け管理画面を維持したままマルチテナント化しています。 現在の構成をなるべく維持しつつ、最小改修・性能・運用の観点で2方式を比較しました。 比較した結果として、テナントごとに実行環境を分離する方式を採用しています。 本記事では、その判断基準とLaravel側の実装…
2日前

Android アプリのエンゲージメントを向上させる Engage SDK とは
every Tech Blog
はじめに Android 開発エンジニアを担当している岡田です。 今回はユーザーエンゲージメントを高める強力なツールである、 Engage SDK について導入のメリットについて解説できればと思います。 Engage SDK とは Engage SDK は、Google が 2024 年 7 月に「Introducing Collections, a new on-device surface for your content」というタイトルで発表しました。 この SDK を導入することで、アプリのコンテンツを Android システムの複数の場所に表示し、ユーザーエンゲージメントを向上させる…
3日前

echo.Contextはどこからきているのか
every Tech Blog
私は入社して初めてWebフレームワークのlabstack/echoに触れました。使っていく中で「便利だけどこれどうやって動いているんだろう?」と思うことが増えてきました。そこを意識しなくていいのがフレームワークの良いところなんだとは思いますが、気になるので内部実装を覗いてみようと思います。
5日前

Go Conference 2025 に Platinum "Go"ld スポンサーとして今年も協賛いたします!
every Tech Blog
はじめに この度、株式会社エブリーは、2025 年 9 月 27 日(土)、28 日(日)に開催される「Go Conference 2025」に、Platinum "Go"ld スポンサーとして昨年に続き協賛することになりました! Go Conferenceとは? gocon.jp プログラミング言語 ”Go”ユーザーのためのカンファレンスです。今年はなんと2日間開催で、セッションはもちろん、ワークショップや懇親会など多数のコンテンツが用意されています! 今年の開催概要は以下のとおりです。 開催日時 Day 1: 2025年9月27日(土)Day 2: 2025年9月28日(日) 開催場所 東…
6日前

AI と学ぶ Go のスライス/メモリ/パフォーマンス
every Tech Blog
最近、AI を利用して Go のスライスやメモリ、パフォーマンスに関する内容を学習してみる機会がありました。今回はその際の体験についてまとめてみたいと思います。
9日前

Go 1.25でのtesting/synctestを用いた並行処理テスト
every Tech Blog
開発2部の内原です。 Go 1.25がリリースされ、並行処理のテストを簡単にするtesting/synctestパッケージが正式に利用可能になりました。1.24では GOEXPERIMENT=synctest フラグが必要でしたが、1.25では不要になりました。 今回は実際にtesting/synctestを使って、その使い方や利点、注意点について紹介します。 testing/synctestとは testing/synctestは、Go 1.24で実験的に導入され、Go 1.25で正式リリースされた並行処理テスト用のパッケージです。 このパッケージを使うことで、時間に依存する処理や非同期処理…
10日前

Amazon Q in QuickSight を利用する上でコスト最適化から得た知見
every Tech Blog
開発1部でデリッシュリサーチ開発を担当している塚田です。 今回は基盤として利用しているAWSサービスのコストについてどのように改善するべきかを考える機会があり、事象としてレアケースかもしれませんが、記事として公開させていただきます。 はじめに エブリーでは「AIファースト・カンパニー」に向けて様々な取り組みを進めています。 技術的な取り組みについては本テックブログに記事を多数公開していますのでご参照いただければと思います。 今回はその中でデリッシュリサーチのビジュアライズに利用しているAmazon QuickSight(以降QuickSightと記載)に関するAI機能でつまづいてしまった内容を…
11日前

プッシュ通知基盤におけるアラートの方針について
every Tech Blog
はじめに エブリーでヘルシカのサーバーサイドの開発をしている赤川です。 ヘルシカでは、APIサーバーの監視をSentryを用いて行っており、開発中のプッシュ通知基盤にもSentryを導入することになりました。通知基盤が一度に処理するデータ量は、ユーザーの数に対して線形に多くなっていきます。そのため、どのように監視を行うかは重要な検討事項となります。 本記事では、今回実装したプッシュ通知基盤のアラート設計における自分の考えについて述べようと思います。 背景 ヘルシカのプッシュ通知基盤は、AWS LambdaがFirebase Cloud Messagingにメッセージを送る構成になっており、まと…
12日前

デリッシュリサーチの新機能レシピトレンドを実装した話
every Tech Blog
はじめに こんにちは! 2025年の夏、株式会社エブリーで1ヶ月間インターンシップに参加している常木泰成です。配属されたのは、国内最大級のレシピ動画メディア「デリッシュキッチン」のデータを活用して食のトレンドを分析し、メーカー・小売の意思決定をサポートする「デリッシュリサーチ」部門です。 この1ヶ月間で私が取り組んだのは、動画視聴データを用いた新たなトレンド分析機能の開発です。この記事では、ユーザーの隠れたニーズから機能開発の背景、そして人生初のSQLと格闘しながらデータを可視化するまでの技術的な裏側を伝えていければと思います。 背景 なぜ「動画視聴データ」の分析が必要だったのか? デリッシュ…
13日前

社内アンケートから見るエブリーの生成AI活用の現状と今後の取り組み
every Tech Blog
はじめに こんにちは。株式会社エブリーの開発1部で部長を務めている村上です。 弊社は2023年のGithub CopilotとChatGPT plusの利用サポートから始まり、直近では4月ごろからCursorを導入し、生成AI活用に力を入れています。今回は、直近の生成AI活用推進で取り組んだ内容や、社内で実施した生成AI活用状況アンケートの結果、そして今後の取り組みについてお話しします。 直近の取り組み ツールの導入だけではなく、組織全体でAIを使いこなしていくために、直近では以下のような取り組みを行っています。 生成AI活用の知見を共有するslackチャンネルの開設 AI活用勉強会の開催 A…
16日前

iOSアプリでの画像処理におけるCPUとGPUのパフォーマンス比較
every Tech Blog
はじめに デリッシュキッチンのiOSアプリを開発している成田です。 アプリで画像処理を行う場合、そのパフォーマンスは非常に重要です。 画像処理を行うケースとして、例えばユーザーが送信した画像を使って何かしたいといった時に、「予めローカルで画像の平均輝度を算出し、解析できないほど暗すぎる画像は弾く」といったユースケースがあります。 そして、平均輝度を計算する時に単純にCPUで処理するか、GPUで処理するのかで大きくパフォーマンスが異なります。 本記事では、以下の3つのアプローチで実際にiOSアプリで画像処理のパフォーマンス比較をしてみたいと思います。 CPUベースの逐次処理 Core Image…
17日前

EC2インスタンスとFargateの料金比較とAWS Pricing MCP Serverの検証
every Tech Blog
はじめに こんにちは、リテールハブ開発部の杉森です。 私たちのチームでは、既存のバッチサーバーに対して、EC2インスタンスからECS on Fargateへの移行を検討しています。 しかし、「コスト面で大きなデメリットがあるのではないか?」という疑問が挙がっていました。 本記事では、実際のバッチサーバーの運用パターンを想定し、EC2インスタンスとECS on Fargateの料金に関して、コスト面での比較を実施します。 また、AWS Pricing MCP Serverを活用したAIによる料金計算で同様の結果が算出できるかの検証も行います。 EC2インスタンスとECSの料金比較 基本となる仕様…
18日前

CloudFront Functions で詰まった話、const も exports も使えない罠と解決策
every Tech Blog
はじめに こんにちは、@きょーです!普段はデリッシュキッチン開発部のバックエンド中心で業務をしています。 AWS の CloudFront は CDN としての基本的な機能があるだけでなく「エッジで処理を実行できる」機能もあることをご存知でしょうか? CloudFront には主に 2 つのエッジ実行機能があります。 CloudFront Functions - 軽量・高速な処理用 Lambda@Edge - 複雑な処理用 この記事では、CloudFront Functions を初めて使った際に遭遇した「JavaScript の制約」について、実体験を基に詳しく解説します。特に const …
19日前

スケジュールクエリの整理を行いました
every Tech Blog
はじめに こんにちは。 開発本部 開発1部 デリッシュリサーチチームでデータエンジニアをしている吉田です。 今回は、Redashのスケジュールクエリを整理し、データウェアハウス(DWH)のコストを最適化した話をご紹介します。 背景 デリッシュキッチンでは、データ分析や可視化のためにBIツールとしてRedashを活用しています。 データ基盤としては、DWHのTreasureDataにDatabricksで加工したデータを集約し、RedashからTreasureDataへクエリを発行してデータを可視化する、というアーキテクチャです。 そんな中、TreasureDataのクエリ実行時間が契約の上限に…
23日前

GoのCI/CDを少しでも早くしたい
every Tech Blog
目次 はじめに 背景 現状の把握 AWS CodeBuild GitHub Actions デッドコード 改善したところ 不要なコード削除 キャッシュの有効活用 Codebuild GitHub Actions まとめ はじめに こんにちは、開発本部開発 1 部トモニテグループのエンジニアの rymiyamoto です。 プロダクトを安心安全に提供するに当たり、CI/CD を用いてテストやデプロイを自動化することで、手作業を取り除いているのは昨今の流れです。 しかし、CI/CD のパイプラインを長い間運用するにあたり、テストやデプロイの時間が長くなるという課題がありました。CI/CD のたった…
25日前

CursorにAPI仕様書を作成させてみた
every Tech Blog
はじめに こんにちは、エブリーでサーバーサイドをメインに担当している清水です。 私の所属する小売アプリチームでは他社から事業譲渡という形で引き継がれた小売店様向けのシステムの保守運用を行っております。 引き継いだシステムについて PHP, Laravelで開発されており、MVCにService層とRepository層を加えた形で設計されています APIエンドポイントが100個以上 外部API連携有り 数年以上運用している 事業譲渡で引き継いだシステムの保守運用における課題 事業譲渡のタイミングで様々な資料を引き継いでいるのですが、いくつかの資料は改修前の状態のまま残っているなど、不十分な状態…
1ヶ月前

デリッシュAIの評価基盤を改善した話
every Tech Blog
デリッシュAIの評価基盤を改善した話 はじめに こんにちは、デリッシュキッチンでインターンをしている村上です。本記事では、料理アシスタント「デリッシュAI」の評価基盤を改善し、より多角的な性能評価を可能にした取り組みについて紹介します。 背景 デリッシュAIは、ユーザーのクエリに応じてチャット形式でレシピを提案する料理アシスタントです。AIモデルはDatabricks上で動作し、評価にはMLflowのAgent Evaluationを利用しています。 docs.databricks.com 従来の評価基盤では、AIが生成するコメントの安全性や正確性といった限定的な側面に留まっていました。これに…
1ヶ月前

生産性向上のためのドキュメント戦略
every Tech Blog
はじめに デリッシュキッチンでiOSアプリ開発を担当している池田です。 皆さんは開発現場でこんな経験はありませんか。「あの機能の仕様が知りたいのに、どのドキュメントを見ればいいのかわからない」「ドキュメントはあるけれど、欲しい情報が見つからない」。 多くの組織でドキュメントを残す取り組みは行われていますが、ドキュメントは「残す」だけでは価値を発揮しません。この記事では、ドキュメントを活用するための考え方をご紹介します。 よくある問題事例 Case 1 ある機能の不具合が見つかり修正が必要になった。実装を見ても該当箇所がどのような経緯でそうなっているかがわからない。正式なドキュメントが見つからず…
1ヶ月前

Savings Plans Purchase Analyzerを使ってみる
every Tech Blog
はじめに エブリーでデリッシュキッチンの開発をしている本丸です。 エブリーでは元々Savings Plansを使用しており、AWSのコスト最適化を行っています。しかし、Savings Plansをどれだけ購入するかの意思決定は、使用量の予測やコスト削減効果の見積もりが難しく、なかなか判断に迷うことがありました。 昨年発表されたSavings Plans Purchase Analyzerを使ってみたので、今回はその機能と使い方について紹介させていただきます。 Savings Plansとは Savings Plansは、1年間または3年間の指定量のコンピューティング処理(1時間ごとに測定)を使…
1ヶ月前

第6回挑戦WEEK開催レポート
every Tech Blog
はじめに こんにちは、リテールハブ開発部の杉森です。 皆さんは「日常業務の中で新しい技術に挑戦する時間が取れない」と感じたことはありませんか?エブリーでは、そんなエンジニアの想いに応えるため、「挑戦WEEK」を開催しています。 挑戦WEEKとは? 挑戦WEEKは、通常の事業部のロードマップから離れ、エンジニアが自ら提案したテーマに基づいて技術的な挑戦に集中する特別な期間です。従来は1週間かけて実施していましたが、第6回となる今回は運営の軽量化を図り、2日間の集中開催という新しい形式で2025年7月16日〜17日に開催しました。 今回のテーマは「プロダクトにAIを組み込む」と「今までAIを実務で…
1ヶ月前

社内向けRedash MCPサーバーを自作しました
every Tech Blog
はじめに こんにちは!デリッシュキッチンで主にバックエンドの開発を担当している秋山です。 エブリー開発部で先日行われた挑戦weekの中で、私たちのチームが開発したRedash MCPについて紹介していきます。 背景 現在弊社ではAIコードエディタのCursorをエンジニアとPdMに配布しています。 日々のデータ分析にはRedashを用いることが多く、PdMはCursorを使用してRedashのクエリ作成なども行います。 今回は業務改善の一環として、Redash MCPを作ることでデータ分析をより効率化し、PdMの負荷削減をしたいと考えました。 PdMが抱えていた主な課題 具体的な実装に入る前に…
1ヶ月前

Flutter アプリに AWS Cognito 認証を導入した話
every Tech Blog
エブリーで小売業界に向き合いの開発を行っている @kosukeohmura です。 今回は、Flutter アプリケーションに AWS Cognito を使った認証機能を導入したプロセスについて紹介します。 バックエンドで Cognito をラップするか、アプリから直接 Cognito に接続するか Cognito を IdP として採用し認証機構を新たに開発するにあたり、バックエンドを Cognito をラップする実装方針と、アプリから直接 Cognito に接続する方式を検討しました。結論としては今回は Flutter アプリから直接 Cognito に接続する方式を選択しました。 バック…
1ヶ月前

Devinでアラート初動対応爆速計画
every Tech Blog
はじめに 前提 技術スタック 監視の構成 現状の課題 Devin選定理由 1. マルチRepository対応の容易さ 2. 自律型AIとしての運用効率 構成 手順 Playbook 1. Devinの起動とSentryアラート情報の取得 2. Devin Playbookの実行 2-1. 関連情報の取得 2-2. 分析 2-3. 追加情報の取得 2-4. 図表の作成 3. Slackへ出力 結果 運用してみた結果 運用してみて見えてきた課題 まとめ はじめに 開発本部でデリッシュキッチンのアプリウェブグロース向けの開発を担当しているhondです! 今回は先日行われた第6回挑戦weekで私たち…
1ヶ月前

AWS Lambda の IaC ツール移行:Serverless Framework から lambroll + Terraform へ
every Tech Blog
はじめに こんにちは、トモニテで開発を担当している吉田です。 AWS を活用したサービス運営において、IaC(Infrastructure as Code)ツールの選択は長期的な運用効率に影響することがあります。 本記事では、実際に私たちが経験した Serverless Framework v3 から lambroll と Terraform への移行事例をもとに、 移行の背景から具体的な手順、そして移行を通じて得られた知見についてまとめています。 なお、移行先の候補検討や各ツールの比較については、前回の検証編記事で詳しく解説していますので、併せてご参照ください。 背景:Serverless …
1ヶ月前

MLflow Tracing時に並行処理するとTracingが分かれる問題への対処法
every Tech Blog
はじめに こんにちは。デリッシュキッチンでデータサイエンティストをしている古濵です。 今回はニッチな内容ですが、タイトル通りの問題が発生したため、その対処法について備忘録的にまとめます。 動作環境は以下になります。 Databricks Runtime: 15.4LTS for ML Python: 3.11.11 ライブラリはDatabricks Runtimeのバージョンから以下にアップグレードしています openai==1.65.2 mlflow==2.20.3 pydantic==2.10.6 databricks-agents==0.16.0 databricks-sdk==0.50…
2ヶ月前

Terraformで初めてAWS WAFを設定してわかった注意すべきポイント
every Tech Blog
はじめに こんにちは、リテールハブ開発部でバックエンドエンジニアをしているホシと言います。 現在、小売アプリの開発でLaravel11を利用してサービス開発を行っています。 今回はサービス提供をする上でセキュリティ対策としてAWSのWAFを導入することになったお話をしようと思います。 AWS WAF(Web Application Firewall)は、Webアプリケーションを守るための強力なサービスです。 今回、私は初めてTerraformを使ってWAFを設定し、ALBやCloudFrontと連携させました。 まずはChatGPT、Cursorなどを活用して、設定やTerraformコードの…
2ヶ月前

食事画像の栄養素推定をLLM・RAGで精度向上できるか検証しました
every Tech Blog
はじめに こんにちは、デリッシュキッチン開発部でソフトウェアエンジニアをしている新谷です。 エブリーの開発部では、日常業務から離れて新しい技術やアイデアに挑戦する「挑戦week」という取り組みを定期的に開催しています。 今回は限定的に2日間という短期間での開催でしたが、この挑戦weekを活用し、ヘルシカの画像解析機能の精度をさらに高めることを目指して、技術検証として性質の異なる2つのAIアプローチを構築・比較しましたので、その内容についてご紹介します。 ※ 挑戦weekの詳細については過去の記事で紹介していますので、興味のある方は以下をご覧ください。 tech.every.tv 比較する2つの…
2ヶ月前

Android で機械学習機能を実装してみる
every Tech Blog
はじめに こんにちは、デリッシュキッチンでクライアントエンジニアを担当している kikuchi です。 近年 AI 技術の発展が著しく、中でも生成 AI がかなりの勢いで発展し、普段使いや仕事で ChatGPT などの生成 AI のサービスを取り入れる方や企業が多くなってきました。 今回は多くの場合で生成 AI の機能を実現している機械学習 (ML : Machine Learning) について、Android アプリで簡単に実装する方法に触れてみたいと思います。 なお、弊社は開発生産性の向上などを目的として Cursor を導入するなど、積極的な AI の活用を取り入れていますので、ご興味…
2ヶ月前

Amazon Q in QuickSightで計算フィールドを作成してみる
every Tech Blog
はじめに こんにちは、開発部でデータサイエンティストをしている蜜澤です。 ついに東京リージョンでAmazon Q in QuickSightがGAしました! データストーリー、シナリオ、トピックなど自然言語でデータ分析を行う機能が追加されましたが、このあたりの機能の解説は以前の弊社のブログや、他の方が記事にされているので、そちらをご覧いただければと思います。 今回はAmazon Q in QuickSightを計算フィールドを作成する際に使用することで、ビジュアル作成をより効率化させられないかの検証をしたいと思います。 使用する模擬データ 検証には以下のような、レシピ動画サイトの特定のレシピの…
2ヶ月前

Goで実装するUnicode文字数カウントが実はわりと難しい的な話
every Tech Blog
開発2部の内原です。文字コードの話は大好物です。 一般的に、アプリケーションの開発において文字数カウントは非常に身近な機能です。パラメータ取得時やフォーム入力時など、様々な場面で文字数計算を実装する機会があります。 しかし、Unicode文字、特に絵文字や結合文字などが混在するテキスト処理において、「正しい文字数カウント」は意外に複雑な問題です。 この記事では、Go言語でのUnicode文字数カウントに焦点を当てて、実装時に注意すべき点を述べます。 文字数カウントの罠 まず、以下のコードについて考えます。 package main import ( "fmt" "unicode/utf8" )…
2ヶ月前