ぐるなびをちょっと良くするエンジニアブログ
https://developers.gnavi.co.jp/
ぐるなびエンジニアブログは、ぐるなびのサービス開発を支える技術やデザイン、文化を紹介するオウンドメディアです。
フィード

【アドベントカレンダー2025】CI/CD と単体テストで守る! cdk-nag をアサーションテストに組み込んでセキュアなクリスマスを🎄
ぐるなびをちょっと良くするエンジニアブログ
はじめに メリークリスマス! 🎄 アドベントカレンダー最終日を担当します、村田です。 普段はメールを配信するシステムなど社内で共通に利用されるプラットフォームの運用、開発を行っています。 みなさん、クリスマスの準備は万端でしょうか?エンジニアにとって最高のクリスマスプレゼントは「平和で、何も起きない(アラートが鳴らない)夜」ですよね。 AWS CDK はインフラ構築を強力にサポートしてくれますが、その反面、S3バケットのパブリック公開や広すぎるIAM権限など、意図しないセキュリティホールを作ってしまう危険性もあります。 そのようなリスクをコードの段階で発見してくれるツールが、 cdk-nag …
13日前

【アドベントカレンダー2025】Jira のコンテキストを Copilot に読ませようとして MCP サーバーを自作したが「ツールの引力」には勝てなかった話
ぐるなびをちょっと良くするエンジニアブログ
はじめに こんにちは。ぐるなびウエディング開発チームの渡邊です。普段はバックエンドエンジニアとして開発・運用を担当しています。 この記事では、Jira を GitHub Copilot の Agent Mode(MCP)から参照できるように MCP サーバーを自作してみた話を書きます。 作って動かすところまではできた一方で、最終的には本格運用までは至らず、個人 PoC に近い状態で止まりました。 どんな MCP tools を作ったのか(ReadOnly で絞った話) Jira 連携で地味に面倒だったところ(customfield 周り) なぜ「作ったのに使われなくなった」のか(GitHub …
14日前

【アドベントカレンダー2025】キーボード操作でも快適に!ウエディングサイトリニューアルで実践したカレンダーのアクセシビリティ対応
ぐるなびをちょっと良くするエンジニアブログ
はじめに こんにちは。Restaurant Service Devグループの高岡です。現在ぐるなびウエディングのフロントエンド開発・運用を行っています。 ぐるなびウエディングのリニューアルプロジェクトでは、UIを一新するにあたり「すべての利用者にとって使いやすいサイト」を目指してアクセシビリティ対応に力を入れています。 特にキーボード操作への対応は、マウスを使わない利用者やスクリーンリーダーを使用する視覚障害者の方々にとって重要です。しかし、特に意識せず実装してしまうと使い勝手が悪くなるケースも多く、細かな配慮が必要でした。 この記事では、ウエディング二次会のリニューアル時にデザイナーと協力し…
14日前

【アドベントカレンダー2025】JavaのEOSL対応について取り組んだこと
ぐるなびをちょっと良くするエンジニアブログ
はじめに こんにちは、開発部の古川です。 普段は、ぐるなびの認証や個人情報、ポイントシステムといったぐるなび内の各サービスから利用される共通システムを担当しています。 今回は、私たちが担当しているシステムにおける JavaのEOSL (End of Support Life) 対応 について、検証から意思決定までの取り組みをまとめました。
15日前

【アドベントカレンダー2025】Secrets Manager vs Parameter Store:社内APIのキー管理、どっちがいい?
ぐるなびをちょっと良くするエンジニアブログ
はじめに どうも、開発部の加藤です。社内では「なるみん」て呼ばれてたりします。 普段はぐるなびの店舗ページやインバウンド向けのぐるなび外国語版のサーバーサイドの開発を担当しています。 APIキー認証を入れるとき、地味に悩むのが「キーをどこに置くか」です。 AWSなら候補はだいたいこの2つかなと思います。 AWS Secrets Manager AWS Systems Manager Parameter Store この記事では社内APIのAPIキー認証を設計する中で行った2つのサービスの「比較」と「選定」について記載します。 (注)料金・上限は変更されることがあるため、最終判断は公式価格表/制…
15日前

【アドベントカレンダー2025】クエリチューニングの最初の一歩~実行計画を見てみよう~
ぐるなびをちょっと良くするエンジニアブログ
はじめに こんにちは。開発部の國友です。 普段はデータベース管理者の業務を担当しています。 アプリケーションのパフォーマンス改善に取り組む際、「クエリが遅い」と感じたらまず行うべきことがあります。それは、RDBMSがそのクエリをどう実行しているか、その実行計画を確認することです。 皆さんは実行計画の確認方法、そして読み方を理解されていますか? よく見るテーマではありますが、基礎だからこそ具体的な事例を通じて改めて実行計画を再確認しましょう。
16日前

【アドベントカレンダー2025】GitHub CopilotとSpec Kitを使ってSDDの世界を覗き見する
ぐるなびをちょっと良くするエンジニアブログ
はじめに こんにちは!ぐるなびでバックエンドエンジニアをしている開発部の寺井です。 十数年PHPを主戦場にしてきましたが、最近Go言語を使ってぐるなびアグリサービスの開発に携わっています。 クリーンアーキテクチャも初めて理解しようとしており……難しい。 この記事では、GitHubが提唱する 「Spec-Driven Development(仕様駆動開発 / SDD)」 と、その実践ツール 「GitHub Spec Kit(speckit)」 を紹介します。仕様と設計原則を明文化し、それを中心に開発を進めることで、AIとの協働でも一貫したアーキテクチャを維持できるようになります。
16日前

【アドベントカレンダー2025】ActiveDirectoryの功罪とクラウドネイティブな認証戦略
ぐるなびをちょっと良くするエンジニアブログ
こんにちは。ぐるなびの田代です。 今回は、長年にわたり当社のITインフラの心臓部として機能してきたActive Directory (AD) の役割の変遷と、クラウド時代における当社の新たな認証戦略についてお話ししたいと思います。
19日前

【アドベントカレンダー2025】「cdk diffが長すぎる」問題をGitHub Modelsで攻略する!変更内容を自動要約するCI/CD構築
ぐるなびをちょっと良くするエンジニアブログ
こんにちは。ぐるなびでバックエンド開発を担当している小林です。 この記事では、AWS CDKの変更差分(cdk diff)をGitHub Modelsを用いて自動的に要約し、プルリクエストにコメントとして通知するCI/CDパイプラインの構築方法を解説します。
19日前

【アドベントカレンダー2025】Gemini 3 Canvas × HTMLテンプレート活用術:GASを書かずに実用レベルのスライドを出力する
ぐるなびをちょっと良くするエンジニアブログ
はじめに こんにちは、ぐるなびの江口です。 ついに登場したGemini 3、皆さんはもう試されましたか? Google独自のTPUを活用した処理速度もさることながら、新機能のCanvasが非常に強力です。 今回は、このGemini 3とCanvasを使って、「社内テンプレートのデザインに限りなく近づけ、実用十分な"90点"を目指してスライド資料を完全自動生成する」という試みについて共有します。 これまでGoogle Apps Script (GAS) を書いて行っていた転記作業が、プロンプト一つで不要になった、というお話です。 この記事でわかること Gemini 3のGem + Canvasに…
20日前

【アドベントカレンダー2025】Snowflake移行はゴールじゃない!老舗企業が直面した「リフト止まり」の現実と、そこから描く筋肉質な未来地図
ぐるなびをちょっと良くするエンジニアブログ
はじめに こんにちは、ぐるなびでデータエンジニアをしている大塚です。 私は現在、ぐるなびが長年蓄積してきた膨大なデータを、全社で安全かつ快適に活用するための「データ基盤」の構築・運用を担当しています。 創業から長い歴史を持つ弊社には、言わば「秘伝のタレ」のように継ぎ足されてきたデータやシステムが多く存在します。そんな老舗企業ならではのデータの悩みに向き合い、モダンな環境へと刷新していくのが私のミッションです。 今回は、近年で取り組んだデータ基盤の刷新プロジェクトの裏側と、そこで見えてきた「正直、まだここが足りていない!」というリアルな課題、そしてこれからの展望について赤裸々にお話しします。
20日前

【アドベントカレンダー2025】DevTools で分かる Flutter アプリの動きと最適化の考え方
ぐるなびをちょっと良くするエンジニアブログ
こんにちは!ぐるなびアプリの開発をしている戸川です。モバイルアプリの「なんとなく重い」「ときどきカクつく」といった問題を、Flutter DevTools を使って可視化して、どのように原因を切り分けていくのかを解説していきます。
21日前

【アドベントカレンダー2025】DuckDBで変わる繁忙期対策のログ分析とサイジング - 1時間の1%に潜む36秒のリスク-
ぐるなびをちょっと良くするエンジニアブログ
はじめに こんにちは。Reservation Service Devグループの佐藤です。ネット予約に関する開発全般に関わっています。 本記事では、繁忙期前のサイジングや新機能リリース時の負荷予測で利用しているログ分析について、従来利用していたSQLiteからDuckDBへ移行し、分析フローを改善した事例を紹介します。また、パーセンタイル分析を活用した具体的なminReplicasの算出方法や、「99%なら無視できる」という誤解を解くデータドリブンなサイジングアプローチについても解説します。
21日前

【アドベントカレンダー2025】ぐるなびが取り組む「設計からのオブザーバビリティ」 3つのプロダクトで実践した Observability Shift Left
ぐるなびをちょっと良くするエンジニアブログ
はじめに こんにちは、ぐるなびの APM(Application Performance Monitoring)分科会 です。 私たちは、全社的なシステム品質の向上を目指し、組織横断でオブザーバビリティ(可観測性)の導入・活用を推進しています。 昨今、「オブザーバビリティ」という言葉は広く浸透しましたが、多くの現場では依然として「リリース後の監視」や「障害調査」といった運用フェーズでの利用に留まっているのが実情ではないでしょうか。 私たちも以前はそうでした。 しかし、システムが複雑化する中、リリース後に問題に気づくスタイルでは手戻りコストが増大し、ユーザー体験を守りきることが難しくなっています…
22日前

【アドベントカレンダー2025】【NotebookLM × Gemini】仕様書からテスト項目書を自動生成する「専門家AI」の育て方 -ぐるなび組織間連携の事例-
ぐるなびをちょっと良くするエンジニアブログ
皆さまこんにちは。ぐるなびで主に会員系サービスのフロントエンド開発を担当している小松です。主務はフロントエンドですが、開発部内で組織間連携分科会という活動も行っており会長も務めています。他にも肩書が増えてしまいましたが…今回はその組織間連携分科会での取り組みについてご紹介したいと思います。 この分科会は、長年、開発部の中でエンジニアとディレクター・デザイナー間などで課題となっていたコミュニケーションの認識齟齬や組織をまたいだ連携に関する課題に取り組むため発足しました。実は現存する分科会の中でも長く活動している分科会の1つです。 以下の内容は分科会メンバーの多大なる協力で執筆することができました…
23日前

【アドベントカレンダー2025】ほんとにできてる?New Relic Alertの通知
ぐるなびをちょっと良くするエンジニアブログ
こんにちは。開発部の江島です。 普段はコンテナ基盤の運用やサービスの品質向上に向けたSRE活動などの業務を行っています。 New RelicのAlert機能は、システムの異常を検知し、即座にPagerDutyやSlackなどの外部ツールに通知を送るために非常に便利なツールです。 しかし、デフォルトの設定のままでは、重要なアラートを見逃してしまう可能性があることをご存知でしょうか? 本記事では、New Relicでアラートを設定する際に見落とされがちな2つの問題点と、それらに対する具体的な対策手順を解説します。
1ヶ月前

【アドベントカレンダー2025】AI Agentの「自律性」との向き合い方
ぐるなびをちょっと良くするエンジニアブログ
はじめに こんにちは。データサイエンティストの閔(みん)です。普段はAIレストラン検索アプリ「UMAME!」の開発に携わるほか、社内のデータ管理、AIを用いた業務改善などに関わっています。 本記事では、今年1年間、AIの話題として最もホットだったであろう AI Agent(以降Agentとする)を触ったり、作ってみたりしながら感じた、Agentの「自律性」との向き合い方について話します。Agentについては、過去の記事をご参照ください。 Vertex AI Agent Engine Memory Bankを使ってみた - ぐるなびをちょっと良くするエンジニアブログ AIレストラン検索アプリ『U…
1ヶ月前

【アドベントカレンダー2025】「AIと爆速で0→1を作る」 豆苗アーキテクチャ
ぐるなびをちょっと良くするエンジニアブログ
こんにちは。ソフトウェアエンジニアの吉村と申します。 会社ではUMAME!の開発を行っています。バックエンドからキャリアを始めていますが、モバイル、ウェブフロントエンド、クラウドインフラ、AIエージェントなど、なんでも設計/実装します。アドベントカレンダーの10日目はAI時代におけるソフトウェアアーキテクチャとの向き合い方について思考実験的な話をさせていただければと思います。どうかお手柔らかにお願いします。
1ヶ月前

【アドベントカレンダー2025】オンラインイベントを盛り上げたリアクションツールをつくって、クローズするまでの話
ぐるなびをちょっと良くするエンジニアブログ
こんにちは!普段は ぐるなびウエディング の開発をしている滝口(@ytakiguche)です。 ぐるなび Advent Calendar 2025 の 9 日目を担当します! この記事では、オンラインイベントを盛り上げるために社内で開発した「リアクションツール」が、どのような課題から生まれ、どのように使われ、そしてなぜクローズに至ったのかを振り返ります。
1ヶ月前

【アドベントカレンダー2025】社内向け生成AI 構築から廃止まで
ぐるなびをちょっと良くするエンジニアブログ
受注情報からぐるなびの店舗ページへのデータ連携を開発している有賀です。 「セキュリティとガバナンス確保を目的に社内独自AIチャットを構築」をテーマに生成AIの変化を実感した経験を記載します。
1ヶ月前

【アドベントカレンダー2025】検索エンジンを「解剖」する:Elasticsearchでの検索精度改善に役立つ3つの分析
ぐるなびをちょっと良くするエンジニアブログ
こんにちは! 検索開発のグループ長をしている牧野です。 今期、レストラン検索ではフリーワード検索の精度改善を大きな目標にして取り組みました。 今回はその過程で得られたナレッジ、特に「検索結果の分析手法」についてシェアしたいと思います。
1ヶ月前

【アドベントカレンダー2025】CCoEが挑む「AWSナレッジ共有の壁」──AWS Knowledge MCP Server × Amazon Bedrockで実現した新しい情報アクセス環境
ぐるなびをちょっと良くするエンジニアブログ
こんにちは。技術戦略室 CCoEグループの石井です。普段は、CCoEとして全社的なガバナンス強化を目指し、クラウド利用の最適化と可能性の最大化に取り組んでいます。具体的には、「コスト最適化」「クラウドセキュリティ」「アセスメント」の3つを軸に、ビジネスの柔軟性と競争力を高める活動を行っています。
1ヶ月前

【アドベントカレンダー2025】Copilot/VSCode活用:外部システム連携と自動化
ぐるなびをちょっと良くするエンジニアブログ
はじめに:Copilotで「やれていること」 ぐるなびで Principal Tech Lead をしている大文字亮(ダイモンジリョウ)です。 本記事では、VSCode上のGitHub Copilotと外部システムを連携させ、開発業務を効率化・自動化する手法について紹介します。 Copilotは各種APIやCLIの操作方法を学習しているため、適切な権限と指示を与えることで、単なるコード補完に留まらない広範なタスクを実行可能です。 例えば、現在、私の環境では以下のような連携と自動化を実現できています。 SSH連携: ログ調査やサーバー上のインストール作業、バッチ実行などを自律的に実施。 ブラウザ…
1ヶ月前

【アドベントカレンダー2025】GitHub移行と一緒にmonorepo対応した話
ぐるなびをちょっと良くするエンジニアブログ
こんにちは!ぐるなびFineOrderというモバイルオーダーサービスでバックエンドの開発をしてます谷です。 担当しているプロジェクトでGitLabからGitHubへ移行することになり、せっかくなら一緒にsubmodule運用もやめてmonorepo化したいと思いまして、今回、両方一緒に対応しました。 そのときの話を紹介していけたらと思います。
1ヶ月前

【アドベントカレンダー2025】GenAI Week Silicon Valley 2025参加のおもひで
ぐるなびをちょっと良くするエンジニアブログ
はじめに 皆さん、こんにちは! 株式会社ぐるなびで Principal Tech Lead を務めている小向です。 アドベントカレンダー2日目よろしくお願いします(アドベントカレンダーをやろうと言い出した本人が2日目ですが^^;)! 今回は、GenAI Week Silicon Valley 2025 で得た学びや現地の熱気を、ぐるなびの未来、そして日本のエンジニアの皆さんの未来にどう繋げていくか、という視点でご紹介したいと思います。
1ヶ月前

【アドベントカレンダー2025】GitHub CopilotでのAndroid開発体験
ぐるなびをちょっと良くするエンジニアブログ
TL;DR GitHub Copilotに頼りながら、「極力自力ではコードを書かない」方針でAndroidアプリ(アナログゲーム・ディスクゴルフ向けのスコア集計)を作りました。Androidはほとんど初めてでしたが、CopilotがUIの雛形や集計ロジックを提案してくれて、最終的に実用レベルのアプリに仕上がりました。この記事では取り組み方、実際の使い方(プロンプトの工夫)、得られた学びを共有します。
1ヶ月前

毎週大量のプルリクエストを捌く!Next.js App Router時代のスケーラブルなフロントエンドアーキテクチャ設計
ぐるなびをちょっと良くするエンジニアブログ
はじめに こんにちは。Restaurant Service Devグループの高岡です。現在ぐるなびウエディングのフロントエンド開発・運用を行っています。 ぐるなびウエディングは結婚式場検索・予約サービスで、検索・会場詳細・特集・ランキングなど多様な機能を持つ大規模なウェブアプリケーションです。 そのぐるなびウエディングはリニューアルプロジェクトが進行しており、今年の7月に二次会検索と会場ページをリリースしました。 今回は大規模なウェブサービスのリニューアルにおいてチーム開発の効率性と保守性を両立するフロントエンドアーキテクチャをどう設計するか、ぐるなびウエディングリニューアルプロジェクトで実践…
2ヶ月前

PHPのレガシーシステムをTypeScriptで刷新! フロントエンドとバックエンドの職能の壁は壊せるのか?
ぐるなびをちょっと良くするエンジニアブログ
こんにちは!「ぐるなびウエディング」開発チームの滝口(@ytakiguche)です。普段はサーバーサイド開発を担当しています。 私たちのチームは現在、オンプレミスで長年稼働してきた PHP のシステムをAWSクラウドへ移行し、同時に TypeScript で全面的に書き換えるという、大きな挑戦の真っ只中にいます。 この記事では「フロントエンドとバックエンドの言語統一」をテーマに、その過程で明確になった技術的課題と、それらに対する我々のアプローチについてお話しします。
2ヶ月前

Vertex AI Agent Engine Memory Bankを使ってみた
ぐるなびをちょっと良くするエンジニアブログ
はじめに こんにちは。データサイエンティストの閔(みん)です。普段はAIレストラン検索アプリ「UMAME!」の開発に携わるほか、社内のデータ管理、AIを用いた業務改善などに関わっています。 本記事では、近年話題となっている LLM Agent (最近は単にAgentとも呼ばれます。以降Agentとします) の、会話内容をまとめて保持する「長期メモリ」の仕組みの一つであるMemory Bankについてご紹介したいと思います。その前に、Agentとは何かについても少しだけおさらいしたいと思います。
2ヶ月前

PHPカンファレンス新潟2025で型について語ってきた
ぐるなびをちょっと良くするエンジニアブログ
はじめに こんにちは。プラットフォームサービスグループの村田です。普段はメールを配信するシステムなど社内で共通に利用されるプラットフォームの運用、開発を行なっています。 2025年5月31日に開催された PHPカンファレンス新潟2025 で「新潟で型について語ってみた」というテーマで初めてカンファレンスの登壇をさせていただきました。 今回は登壇内容のポイントとカンファレンスの雰囲気などを紹介できればと思います。
4ヶ月前