サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2025年ランキング
tech.enigmo.co.jp
こんにちは!Webアプリケーションエンジニアのレミーです! この記事はEnigmo Advent Calendar 2025の24日目の記事です。 Ruby on Rails アプリが遅いと感じるのは、ほぼ次の3の原因になります。 DBクエリが多すぎる(特に N+1、COUNT/EXISTS の使い分けミス、インデックス不足) 不要なデータを読み込みすぎる(テーブル全て/重いカラム全て取得、あるいは全部を RAM に書き込む) ビューのレンダリング/コールバックが働きすぎる(partial の多用、重いフォーマット処理、不要なコールバック/バリデーションの実行) この記事では、効果が見えやすいものに絞って、自分が特によく使う最適化10個をまとめます。 1. includes で N+1 クエリを防ぐ 問題: posts の一覧を取得して、view 側で post.user.name や p
こんにちは!Webアプリケーションエンジニアのレミーです! この記事はEnigmo Advent Calendar 2025の7日目の記事です。 最近「Operation Hanoi Thief」という事件を読みました。 これは、ベトナムのITエンジニアや採用担当者を狙ったサイバー攻撃についての内容で、怪しいファイルを送りつけて情報を盗む手口が紹介されていました。 その中で、一見ただの画像に見えるファイルでも、実は中に攻撃的なコードが入っている恐れがある、という点が気になったので、SVGの中にある危険な仕組みを紹介します。 多くの人にとって、SVGファイルは「軽くて、拡大しても劣化しない便利な画像ファイル」という印象だと思います。 ロゴ、アイコン、バナーなど、Webでは定番の形式ですよね。 でも、実はSVGは「ただの画像」ではありません。 SVGはテキストベース(XML形式)のファイルであ
こんにちは、インフラエンジニア の 森田です。 この記事はEnigmo Advent Calendar 2025の4日目の記事です。 BUYMAは8月に本番環境を移行しており、その後コストのチューニングを行っています。 この記事では実際に進めた内容を元に自分のAWSにおけるコスト削減の考え方と役立つ機能について紹介します。 サマリ まず最終的なゴール設定ですが、リザーブドインスタンスやSavings Plans等利用量をコミットしてコスト削減を行えるモデルの購入とします。 また今回は分かりやすいよう主要なサービスであるEC2とRDSでのコスト削減をターゲットとします。 大枠では次のような流れでAWSのコスト削減を考えています。 サイジングを考える 利用状況の変化を考える コストコミットを考える 次項からそれぞれで検討すべき項目と、それに利用できるAWSの機能を紹介します。 1. サイジング
こんにちは!フロントエンドエンジニアの張です! この記事はEnigmo Advent Calendar 2025の8日目の記事です。 「型安全」、「堅牢性」、「開発体験」、どれもエンジニアでしたら、近年よく聞くキーワードだと思います。特にウェブ開発、フロントエンド開発界隈では、それらを改善するためにTypeScriptを導入・採用するチームが増える一方です。 でも、「それでは足りない、もっと堅牢的、かつ保守しやすいTypeScriptを書きたい!」だと主張するコミュニティが実は存在していて、彼らがたどり着いた解決策は今回私が導入を検討したEffect TSです。 私の調査を説明する前に、記事をわかりやすくするために、まずはいくつかのキーワードを定義したいと思います。 キーワード 型安全 プログラミング言語、あるいは一部の言語(TypeScriptなど)においては、ライブラリを形容する単語。
はじめに こんにちは、SE本部の加藤です。現在はインフラグループに所属し、BUYMAのAWS基盤を運用しています。 この記事は Enigmo Advent Calendar 2025 の 1日目の記事です。 背景課題 BUYMAのAWS運用を続ける中で、RDSのバージョンアップ作業等で取得した手動スナップショットが、複数のAWSアカウントに作業後も削除されずに残留しており不要なストレージコストを生んでいました。 スナップショットを自動削除するためのマネージドサービスの機能がないか調べてみたものの、今回の要件に当てはまる機能は存在しないようでした。 そのため、複数アカウントのスナップショットを一括で監視し、通知する仕組みを作成することにしました。 システム構成 本監視システムは、親アカウントに主要なリソースを集約し、クロスアカウントアクセスによって子アカウントの情報を取得する構成です。 シス
国内最大級の海外ファッションECサイト「BUYMA(バイマ)」を運営するエニグモ。 今回は、エンジニア組織を支えるエンジニアリングマネージャーとして、プロジェクト推進からメンバー育成まで幅広く携わる穴澤さんにインタビューしました。これまでのキャリアやエニグモに入社した経緯、現在の役割、そして「BUYMA」の開発に携わる魅力について伺いました。 これまでのキャリアとエニグモに入社した経緯を教えてください 前職では、オンライン英会話サービスを開発する会社でWebサービス開発チームのリーダーを務めていました。 サーバーサイドエンジニアとして英会話レッスンの予約システムや決済機能のメンテナンスからスタートし、その後はシステムの刷新やサービスの拡大期にチームリーダーとしてチームをまとめる役割を担うようになりました。スマホ向けの新規事業の立ち上げや、海外子会社で講師向けシステムを開発するなど、本当に多
こんにちは!Webアプリケーションエンジニアのレミーです! この記事はEnigmo Advent Calendar 2024の 8日目の記事です。 Ruby on Rails 8が新しくリリースされ、Kamalという迅速かつ便利なデプロイツールが統合されました。私はこれまでRuby on RailsアプリケーションのデプロイにCapistranoを使用していましたが、Kamalを試してみると、その便利さと簡単さに魅了されました。 この記事では、Kamalを使用してRuby on Rails 8アプリケーションをAWS EC2サーバーにデプロイする手順を詳しく説明します。 Kamalとは? Kamalは37Signalsのチームによって開発された新しいデプロイメントツールです。このツールを使用すると、デプロイメントプロセスを1つのファイルで定義でき、複雑な手順を簡素化できます。ほとんどのアプ
こんにちは、エンジニアの川本です。 主にBUYMAの決済・配送を担当しているチームでバックエンドの開発をしています。 この記事は Enigmo Advent Calendar 2023 の 20 日目の記事です。 個人開発でPlanetScaleというMySQL互換のサーバーレスデータベースを使用しているのですが、特筆すべき仕様として外部キーのサポートがありません。 planetscale.com 外部キー制約はDBレベルで強い整合性を担保できる便利な手段ですが、PlanetScaleではその機能が利用できないので、アプリケーションレベルで整合性を担保する必要があります。 MySQLの外部キーのオプションにはいくつか種類がありますが、これらが使えない場合にアプリケーション側ではどのように担保すればよいのでしょうか? 今回は、Railsを例にしてアプリケーション側でMySQLの外部キーに相当
はじめに こんにちは、株式会社エニグモの開発を担当しているグループでエンジニアリングマネージャーをしている後藤です。 この記事は Enigmo Advent Calendar 2023の15日目の記事です。 私は、開発グループでエンジニアリングマネージャーという役割をしています。この記事では、チームメンバーとの関わりの中で大切にしている「心理的安全性」についてポエムを書かせていただきます。 この記事の対象者 この記事の対象は、「心理的安全性」という言葉は聞いたことあるけどモヤッとしかわからないが大切そうだ、みんなが「心理的安全性」といっているから上っ面だけでも理解してドヤ顔をしたいという人を対象にしています。 この記事を通して、読者の方に「心理的安全性」がどうソフトウエア開発に影響を与えていると感じているのか、どうしたらソフトウエア開発チームにとって良い「心理的安全性」のある環境を作れるの
こんにちは、デザイナーの細田です。 この記事はEnigmo Advent Calendar 2023 の 15日目の記事です。 日頃の業務ではBUYMAの様々なコンテンツのデザインを担当しています。 中でもHTMLメルマガのデザインに関しては、数年前から改修に携わるようになり、ABテストによるデザイン検証に取り組んできました。 今回はその中でも、改修によって、お問い合わせフォームへの流入数が前月比で140%増加し、本施策のコンバージョンとなるお問い合わせ数も約3倍に増えた成功事例をご紹介します。 改修前のデザイン まずは、今回改修依頼を受けたメルマガの概要をご紹介します。 対象者 高額な商品を複数回閲覧しているユーザー 内容 “BUYMAコンシェルジュ” *1というサービスを紹介し、お問合せフォームへ誘導する デザイン このメールを見て、皆さんはどう感じましたか? 私は、「なんだか唐突だな
こんにちは。株式会社エニグモにてフロントエンドエンジニアを務めています新井です。 こちらは Enigmo Advent Calendar 2023 および アクセシビリティ Advent Calendar 2023 の 14 日目の記事です。 はじめに:ウェブアクセシビリティとは? 1. ページ内の見出しの最適化 2. リンクや状態の判別を色の変化だけで行わないようにする 3. キーボード操作時のフォーカスインジケーターは非表示にしない 4. クリッカブルな要素の実装には a タグまたは button タグを使用する 5. 画像の代替テキストの指定と装飾的な画像の取り扱い 6. フォームコントロールには必ずラベルを付与する 7. フォームの入力欄のオートコンプリートを有効にする 8. ラジオボタンやチェックボックスを装飾する際は元の input の隠し方に気をつける 9. アコーディオン
こんにちは、サービスエンジニアリング本部の寺田です! この記事は Enigmo Advent Calendar 2023 の13日目の記事になります。 私はエンジニアとして BUYMA の決済システム・配送システムの保守/運用や、またこれらのシステム領域を中心としたサービスの新規開発などを主に担当しています。 この記事では Emacs Orgmode を使ったタスク管理の方法について紹介していきたいと思います。 みなさんはタスク管理に何を利用しているでしょうか?? 紙とペン、OS 標準の Reminder アプリ、Google Calendar など、人それぞれ普段お使いのものがあるかと思います。 私は実際に普段の業務で Emacs Orgmode を利用したタスク管理を行っています。 これを使っていく中で私は以下のようなメリットを感じています。 仕事の抜け・漏れを起こさなくなる。 自分の
こんにちは、今年の4月に新卒で入社したデータエンジニアの中村です。 この記事はEnigmo Advent Calendar 2023 の11日目の記事です。 入社してからは、社内のデータを利用者がより使いやすくなるように、データ基盤の整備・データ連携を進めております。 最近弊社のデータ基盤をTerraformによる管理に移行するタスクに取り組んでいるので、どのようなディレクトリ構成を採用したか説明していこうと思います。 データ基盤をこれからTerraform化しようとしている方に有益な情報となれば幸いです。 目次 背景 ディレクトリ構成 構成の説明 各ディレクトリの役割 stateファイルの分割粒度 工夫したポイント 環境差分の切り出し BigQueryのリソースはyamlで管理 今後の展望 最後に 背景 弊社のデータ基盤はGCP上にあり、BigQueryをはじめとした様々なサービスを活用
こんにちは、データサイエンティストの髙橋です。業務では企画/分析/機械学習モデル作成/プロダクション向けの実装/効果検証を一貫して行っています。 この記事では 2023/11/01 に公開した AIでさがす機能の実現にあたり工夫した点について紹介します。本機能では OpenAI の Chat Completions API (Web 版の ChatGPT の API 版のようなもの)を活用しているため、同 API 関連での工夫が中心となります。 この記事は Enigmo Advent Calendar 2023 の 9 日目の記事です。 AIでさがす機能の紹介 素早い機能公開とコスト削減の工夫にフォーカスした理由 素早い機能公開のため工夫 おすすめ商品以外の質問には回答できなくする RAG は行わずシンプルに検索結果を返す仕組みとする API に渡す過去のメッセージの組み立てをアプリ側でや
こんにちは、データアナリストの井原です。 この記事は Enigmo Advent Calendar 2023 の 5日目の記事です。 この記事では、不正対策のデータ分析から機械学習モデルの導入を決定した経緯についてご紹介します。 私は普段、データアナリストとしてBUYMAの様々な業務にデータ分析担当としてかかわっています。 分析内容は施策の効果検証、ユーザーの行動分析、売れ筋商品の分析などマーケティング的な要素が多く、ビジネス判断の正確性を上げることを目的とした業務が多いです。 機械学習については、ある程度の知識と経験もありますが、本職のデータサイエンティストが社内にいることもあり、どちらかといえば、統計検定や因果推論などの手法を使用することが多いです。 ただ、今回は、不正対策をしているチームからの不正検知の精度を上げたいという相談があり、検証の結果として機械学習モデルを導入しようという結
~「Committee・新開発体制」導入後の成果と魅力~ 目次 新開発体制について 新開発体制導入の背景/なぜこのような体制にしたのか 新体制導入後に感じている進化や手ごたえ 当社エンジニア組織の魅力・キャリア まとめ エニグモのエンジニア組織の新しいマネジメント体制と、新開発体制についてCOOの安藤、エンジニアリングマネージャー(EM)の木村・山本にインタビューした記事の続編です。 前編は、Committee体制(エンジニア組織をCTOや部長を頂点とするワントップ型ではなく、EM陣で構成する「Committee」という合議体を意思決定のトップ機関)ができた経緯や、どのような体制でエンジニア組織を運営しているかを中心にお話ししました。 後編は、エンジニア組織全体がどのような体制になり、エニグモのプロダクトを開発しているのか、実際に新しい体制になりどのような効果があったのか、当社エンジニア組
エニグモのエンジニア採用担当の廣島です。 エンジニア組織が昨期から新体制になりました。今回は、エンジニア組織のトップが全社会議で新体制について説明した内容をまとめた記事となります。 エニグモはCtoCグローバルECのBUYMAというサービスを運営していますが、どういう体制で開発しているのかというお話です。 ぜひご覧ください! 目次 Committeeとは? 新組織体制、新チーム、新ロールの概要 「Squad」「Domain」「Chapter」体制について Squad(スクワッド)とは Domain(ドメイン)とは Chapter(チャプター)とは 開発組織を支える5つのチーム あるプロジェクトの編成例 新体制の狙い この体制のメリット/Squad、Chapterの導入が納期短縮になる理由 まとめ Committeeとは? Committee Headの木村です。現在、BUYMAのエンジニア
エンジニアの竹田です。 BUYMAの検索システムやMLOps基盤の開発・運用を担当しております。 今回はSolr Operatorによる検索システム構築を行いましたので、その実施内容と得られた知見についてご紹介したいと思います。 はじめに 昨期から今期にかけて、オンプレミスのシステムからの脱却、およびマイクロサービス化を目指し、商品検索システムのリプレイスを進めていました。 エニグモでは機能毎にApache Solrを用いた複数の検索システムを保持しており、クラウド移行に伴い、構築面や運用面の負担は大幅に軽減できております。 なお、リプレイスを行った商品検索システムの構成も下記の記事と大きくは変わっていません。 tech.enigmo.co.jp 今回フォーカスする検索システムの課題 検索システムの運用には、開発案件や障害対応、システムのバージョンアップやシステム増強作業などがあります。
~合議制 “Committee体制” の導入~ 目次 新体制の導入の背景について Committee体制の実行に向けて Committee体制の詳細について ビジネスサイドとの連携について 〈インタビュイー経歴・紹介〉 安藤 英男 COO/取締役 最高執行責任者 1997年に株式会社電通国際情報サービスに入社。2004年株式会社エニグモ設立。2005年当社取締役、2010年に当社COO(取締役最高執行責任者)に就任。 木村 慎太郎 / エンジニアリングマネージャー Committee Head 2013年にエニグモにWebアプリケーションエンジニアとして入社。 データ・機械学習・検索の基盤開発・運用を担当するエンジニアチームを立ち上げ、BUYMAのエンジニア組織のマネージャーおよび、組織の運営方針を決定する合議体のHeadを務める。 山本 浩貴/ エンジニアリングマネージャー Commit
こんにちは、インフラエンジニアの 高山 です。 この記事は Enigmo Advent Calendar 2022 の25日目の記事です。 はじめに エニグモ入社後に AWSを徐々に触れ始め 数年経過しました。 最初はWebコンソールからポチポチしていたのですが、CloudFormationでコード化を進めたり AWSCLIやSDKを使うようになり、最近は Rubyで AWSリソースの情報取得や操作をすることが多くなってきました。 (以下、RubyでAWSリソースの情報取得や操作をすることをAWSをRubyで操作すると表現します) AWSをRubyで操作するようになった理由は以下です。 そもそもWebコンソールは苦手(というより怖い)で、CLIで操作したい派である 構造的なデータを扱うのは Shellスクリプトだと厳しい(jqが嫌い) Ruby on Rails(以下、Railsと表記しま
こんにちは、エニグモでデータアナリストをしている井原です。 この記事は Enigmo Advent Calendar 2022の22日目の記事です。 本記事の概要 この記事は、データ分析案件の進め方に関して、課題の選定からゴールの具体化、分析完了に至るまで、私が今年実際に対応した事例でどのようなことに気をつけながら対応したのか、振り返ってみることを趣旨とした記事になります。 データ分析の案件は必ずしも具体的な目的やゴールがある時ばかりとは限りません。 漠然とした課題意識から始まり、ヒアリングを重ねて具体的な目的やゴールを明確化していくプロセスが入ることがあります。 ことによると、初めから目的やゴールが明確化されている案件の方がレアケースかもしれません。 この分析以外のプロセスの進め方について、分析そのものと同等、あるいはそれ以上に難しいと感じることが多々あります。 しかし、分析の手法やアル
こんにちは。データエンジニアの谷元です。 この記事は Enigmo Advent Calendar 2022 の21日目の記事です。 目次 はじめに どうしてデータ基盤を最適化する必要があるの? どうしたら改善できるの? 現状のデータ基盤のおさらい 主要なBUYMA基幹データの最新ビューに着目してみる 最新ビューをどう変更するの? システム概要としてはどんな感じ? この方針で思ったこと BQ履歴テーブルの作成方針だけど 本当にその方法で改善するの? 運用保守する上で気になっていたこと 見込み効果はどうなの? 実装する上で意識したところ BQ履歴テーブル作成前提となるDAG依存関係 本番データを使った確認期間をできるだけ長めにとろう データ品質担保はどうしよっかな 今回は見送ったデータ品質対応 既存の手動実行スクリプトをAirflowに移植しようと思ったら そろそろリリース後の話をしよう 効
こんにちは、iOSエンジニア の 池田 です。 この記事は Enigmo Advent Calendar 2022 の20日目の記事です。 はじめに 2018年のWWDCで発表されたCreateMLですが、発表当初Xcodeを用いたモデル作成などMacでの利用に限定されていました。 ですが最近ではiOS、iPadOS、tvOSでも利用できるようになっており、オンデバイスでの機械学習モデル作成ができます。 (利用可能OSは iOS15.0以降、iPadOS15.0以降、tvOS16.0以降です。) この記事ではiOSを用いたオンデバイスでの機械学習モデル作成と、作成したモデルの利用をしてみようと思います。 MLStyleTransfer を利用してモデル作成を行い、画像の画風変換をしてみます。 コード内に見やすさのため Forced Unwrapping してる箇所がありますが、実装時はgu
この記事は Enigmo Advent Calendar 2022 の 19 日目の記事です。 こんにちは、Webエンジニアの平井です。普段はSELLチームに所属していてBUYMAにおける出品者側の機能開発を担当しています。 今回は、最近リリースしたカタログシステムをサーバレスアーキテクチャで開発したので利用した技術や学びについて書きたいと思います。 目次 目次 サーバレスアーキテクチャ メリット デメリット カタログシステムとは システム設計 技術スタック サーバレスフレームワーク API カタログデータ新規作成、更新処理 メリット デメリット 学び 良かった点 悪かった点 サーバレスアーキテクチャ そもそもサーバレスアーキテクチャとは何でしょうか。人によって解釈は異なるかと思いますが、私はイベント駆動型のプログラム実行環境を利用してアプリケーションを開発するアーキテクチャだと理解してい
こんにちは、UIUXデザイナーの和田です。 この記事は Enigmo Advent Calendar 2022 の18日目の記事です! 弊社では、BUYMAのサービスやアプリ・WebサイトのUIUXをよりよくしていくことを目的に、 「より深くユーザーを理解して」「ユーザーにとって価値のある体験」を届けていくために、UXリサーチに基づいた改善に力を入れています。 今回は、BUYMAの顧客理解のために進めているUXリサーチの取り組みについてご紹介します。 【1】ユーザーセグメント分類|User Segmentation BUYMAの会員について、RFMの指標をベースに「利用頻度軸(Recency&Frequency)」「価格志向軸(Monetary)」「年代軸」 からユーザーセグメントの分類を進めています。 【各セグメントのボリューム】を把握して、主要なセグメントにおけるユーザーの購買傾向や利
こんにちは、データサイエンティストの堀部です。 この記事はEnigmo Advent Calendar 2022の16日目の記事です。 普段の業務では情報検索(検索/レコメンド)、不正検知、ユーザー属性の推定などをBUYMAにプロダクトとして組み込むことを行っています。その中でもモデリング以前のタスク設計や探索的データ分析(EDA: Explanatory Data Analysis)、データのクレンジング・前処理、特徴量エンジニアリングなどを主にSQL(BigQuery)で行う部分に多くの時間を割いています。1 今回は、違和感のある予測結果から気づいた傾向を元にデータの前処理を追加したことでモデルの精度改善につながった一例を紹介いたします。 概要 気づいた経緯 検出方法 結果 まとめ おまけ 概要 データから機械的な(ボットのような)アクセスを除外したことで、機械学習モデルの精度が改善し
こんにちは、エンジニアの竹田です。 この記事は、Enigmo Advent Calendar 2022の15日目の記事です。 さっそくですが、エンジニアのみなさまは一流のエンジニアとはどんなエンジニア像をお持ちでしょうか。 自分は「障害を未然に防ぎ、継続的に安定運用可能なシステムを構築できるエンジニア」を一流のエンジニアだと考えています。 ひとえに障害と言っても、仕様と異なる動作をしない、リソース不足等によるシステム停止が発生しない、などいろいろと定義はあるかなと思います。 今回のエントリでは前者の「仕様と異なる動作をしない」という点について、業務を通じて見識を深められる場面がありましたのでご紹介したいと思います。 検索システムのリプレイス 今期は、とある検索システムのリプレイスに注力していました。 エニグモでは検索システムにApache Solrを利用しており、今回リプレイスするシステム
こんにちは、サーバーサイドエンジニア の 橋本 です。 この記事は Enigmo Advent Calendar 2022 の 14 日目の記事です。 はじめに エンジニアとして仕事をしているとコードを読むことが多いと思います。例えば、仕様調査、CSからのお問合せ対応、レビュー対応などがあると思います。 今年を振り返るとコードを書く以上に読むことが多く、コードをより正確かつ速く読むにはどうすればいいかを考えることが多くありました。 ということで、この記事では私個人がコードを読む時に意識していることを紹介していこうと思います。 いきなりコードは読まない 1つ目はいきなりコードは読まないことです。業務で使われているコードの量は1つの機能でもとても多いです。いきなり読み始めるととても時間がかかったり、迷子になってしまうかもしれません。なのでまずはシステム全体を把握してインプットとアウトプットが何
この記事は Enigmo Advent Calendar 2022 の13日目の記事となります。 お疲れさまです。インフラチームの山口です。 弊社では一部インフラリソースのモニタリングにDatadogを利用しています。 その中で、今回はDatadogの利用開始当初にGUIで作成されたモニターをTerraformerとTerraformを使用して構成管理した際の事例について報告します。 同様の技術スタックを使用したインポートや構成管理における具体的なテンプレート等の事例には事欠かないと思いますので、作業計画を中心に説明します。 要は、TerraformerやTerraformの使い方は様々良い資料があると思うため、今回固有の対応をした点を注力して説明します。 本稿の構成を以下に記載します。まず、対象とするモニターの状態などの前提を説明します。次に、作業の流れを概説し、Terraformのディ
次のページ
このページを最初にブックマークしてみませんか?
『エニグモ開発者ブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く