Retty Tech Blog
https://engineer.retty.me/
実名口コミグルメサービスRettyのエンジニアによるTech Blogです。プロダクト開発にまつわるナレッジをアウトプットして、世の中がHappyになっていくようなコンテンツを発信します。
フィード

【Android】“いつかやる”UI修正、Devinが1日でやってくれた
Retty Tech Blog
Rettyアプリチームの若田(@wakanao_banana)です!北海道出身のため7月の東京の暑さで半分溶けています。 今回はAndroidアプリのデザインをDevinを用いて一括で改善できた例を紹介します! Rettyでの生成AI導入状況 Devinとは 古いデザインの画面が残存 Devinとの改善 手動で参考になるPullRequestを作る Devinに頼む できました Rettyでの生成AI導入状況 現在RettyではGitHub Copilot、Devin、CursorなどのAIツールが導入されています。 2023年の中旬からGitHub Copilotの使用は進んでいましたが、最…
1ヶ月前

オンコール通知の移行
Retty Tech Blog
こんにちは、Rettyプラットフォームチームの中西です。 本投稿ではRettyが最近行ったオンコール通知サービスの移行の背景や具体的手順について紹介します。 移行の背景 オンコール周りで利用している機能 オンコール周りで利用していない機能 1. Oncall スケジュールの移行 2. アラートの移行(CloudWatch Alarm → Datadog Monitor) CloudWatch アラームの棚卸し CloudWatch Metric Streams の導入 Datadog Monitor の作成 移行の効果 今後の予定 Datadog Monitor のしきい値の継続的な見直し D…
4ヶ月前

オーバーエンジニアリングを考える
Retty Tech Blog
ソフトウェアエンジニアの福井です。 前職含めて様々なオーバーエンジニアリングを目の当たりにし、また自身で設計実装してきました。 オーバーエンジニアリングにはオーバースペックな技術やテクニックを使うことや、誤ったビジネス戦略からくる過剰な仕様を満たすこと、善意によるニーズを超えた機能拡張などのケースがあります。 今回オーバーエンジニアリングというワードを、"将来を見越しすぎた設計をすること"にフォーカスし、色んな観点から考えます。 最初に将来を見越しすぎた設計の具体例があると以降の説明がしやすいため、まず具体例をいくつかあげます。 オーバーエンジニアリングのパターンと具体例 抽象化、汎用化、共通…
4ヶ月前

RettyにおけるComposeのUIテスト活用:ユーザー行動ログを守るテストコードの紹介
Retty Tech Blog
Rettyアプリチームの若田@wakanao_bananaです!暖かくなったと見せかけて急に寒くなる東京のツンデレ具合にキュンとし始めたこの頃です(いやツンデレというよりデレツンでしょうか) この記事では、RettyにおけるComposeのUIテスト活用の事例をサンプルを用いながら解説をします🫡 はじめに RettyでのCompose化の状況 ログ実装~テストまで 主な使用ライブラリ 想定する画面とログ ログの実装 ログのラッパークラスを作成 ViewModel側でログを呼び出す ComposeのUIテストを実装 下準備:UiElementを定義してComposeのtestTagに埋め込む C…
5ヶ月前

Rettyが毎週アプリのリリースをする理由と運用を継続するためのポイント
Retty Tech Blog
Rettyアプリはなぜ毎週リリースなのか? 昨年末以来ご無沙汰しています、Rettyアプリチームの今泉@imaizumeです。来月のtry! swift tokyoに約5年ぶりの参加でワクワクしております、会場でお見かけした方はぜひよろしくお願いします! 今回は、RettyのiOS/Androidアプリにおけるリリースサイクルについてのお話です。 Rettyは開発手法にスクラム(LeSS)を採用しており、アプリも含めた全チームが共通のバックログを基に1週間スプリントで開発サイクルを回しています。そしてiOS/Androidのリリースは、スプリントに合わせる形で原則毎週行っていますが、カジュアル…
5ヶ月前

Retty VPoE通信 Vol.3 - インテグリティについて考える
Retty Tech Blog
Retty VPoE(VP of Engineering : 技術部門のマネジメント責任者)の常松です。 VPoE通信は「開発のトップとして今何を考えていて、どう動こうとしているのか」の定期発信企画で、今回が3回目です。 Retty VPoE通信 Vol.2 - Retty Tech Blog (戦術強化を大事にする理由) Retty VPoE通信 Vol.1 - Retty Tech Blog (VPoEになっての所信表明) インテグリティという言葉 12月20日に公開されただいくしーさんのブログが目に止まり、インテグリティ(integrity)という言葉が心に残りました。 daiksy.h…
8ヶ月前

ストレスを感じやすいママエンジニアが2回目の育休&復職で鍛えるべきは心の防御力だと気付いた話
Retty Tech Blog
ストレスを感じやすいママエンジニアが2回目の育休&復職で鍛えるべきは心の防御力だと気付いた話
8ヶ月前

APIリクエスト内で同一関数呼び出しをキャッシュする仕組みとGo実装
Retty Tech Blog
ソフトウェアエンジニアの福井です。 Rettyでは小さなデータを複数取得し、それらを組み合わせて1つの大きなデータにする処理がいくつかあります。そして小さなデータ取得の判定に使うためのデータを取得することがあります。例えば飲食店の画像、メニュー、電話番号を取得し、それらを組み合わせた飲食店データを返すAPIがあります。この際、会員種別によって画像、メニュー、電話番号の取得方法が異なります。いずれのデータもSQLで取得しています。 通常は同じSQLを何回も実行しないよう、会員種別を前段で取得したあとに、それを使ってそれぞれの小さなデータを取得することになると思います。ただ再利用性などのいくつかの…
8ヶ月前

Fastlyでオリジンシールドを設定する
Retty Tech Blog
この記事はRetty Advent Calendar 2024の11日目の記事です️。 adventar.org Rettyプラットフォームチームの今村です。 RettyではContent Delivery Network(CDN)にFastlyを利用しています。今回はFastlyで複数のバックエンドを利用している環境にオリジンシールドを設定する方法についてご紹介します。 オリジンシールドとは オリジンサーバを複数設定している環境でオリジンシールドを設定してみる 1. どのPOPをシールドPOPとして使用するかを設定 2. カスタムVCLのvcl_recvにオリジンを決定するための変数を定義 …
8ヶ月前

Search Console × BigQueryで全量データ分析
Retty Tech Blog
Retty(レッティ)のプロダクトマネージャーをしている松田です。 はじめに Search Consoleではエクスポート行数に1000行までの制限がある、遡れる期間が16ヶ月前まで、など何かと物足りないポイントがあります。 BigQueryにデータをエクスポートすることで、エクスポート開始以降はデータ量に制限がなく全量データを分析できるようになり、意思決定の幅が広がります。 ここではエクスポートしたデータの見方と、簡単な分析例をご紹介します。 はじめに Search ConsoleのデータをBigQueryにエクスポートする方法 searchdata_url_impressionテーブルの見…
8ヶ月前

ベクトル検索を実現する技術選定 ~pgvectorとQdrantの性能比較~
Retty Tech Blog
本記事はRettyアドベントカレンダー2024の9日目の記事です。 Rettyでエンジニアリングマネージャを務めている山田です。 2022年の年末頃にChatGPTが登場してから早2年となります。 当初は革新的なAIという印象でしたが、時間の経過によりLLMを普段の生活や業務に活かしたり、これを応用したアプリケーションの開発を検討するなど、こうした発明もある程度浸透してきている頃合いではないかと思います。 特に、LLMは任意の自然言語形式のデータの取り扱いに優れ、これまで実現が難しかったアイデアを形にすることができるため、LLMを応用して新しい体験を提供する機能の開発に取り組んでいる方や、すで…
8ヶ月前

Combine製ロジックへのSwiftTesting導入とBDDからの移行
Retty Tech Blog
本記事はRettyアドベントカレンダー2024の8日目になります Rettyアプリチームの今泉 @imaizume です。 最近はプロダクトマネージャー(PdM)としての業務が増え、コードを書く時間が以前よりも減ってきています。 そんな中先日久しぶりに参加したiOSの勉強会でSwift Testingの存在を知りました。 Xcodeとの親和性や拡張性の高さに感激したので、さっそくRetty iOSにも導入してみることにしました! また下調べをする中で、Combineを使ったテストの例を見つけられなかったのですが、実際に試してみたところいい感じにテストコードを書くことができました。 この記事では…
8ヶ月前

Rettyアプリ:リリース文言の継続的運用への取り組み
Retty Tech Blog
Rettyアプリチームの若田(@wakanao_banana )です!この記事はRetty Advent Calendar 2024の7日目の記事です🗓️ 今回のテーマは「リリース文言」についてです。これまでのリリース文言作成の課題とその解消、そして現在Rettyで運用されているリリース文言の作成フローについてご紹介します! リリース文言について Rettyでの取り組み リリース文言作成フローが制定されるまでの話 以前は属人化した運用だった 各チームの課題感 リリース文言の作成フロー Slackワークフローを用いた具体的な運用 1. [プランナー]:施策を作成時にissueにリリース文言の叩き…
8ヶ月前

レッティ AndroidアプリにおけるCIチェックの体制
Retty Tech Blog
Rettyでアプリエンジニアをしている松田(@matsudamper)です。 この記事はRetty Advent Calendar 2024の5日目の記事です。 この記事ではRettyのAndroidアプリのテスト、LintのCIチェック体制がどうなっているかを紹介します。 現在は以下のチェックがCIで走っています。 Unit Test Android Lint Instrumented Test ktlint detekt Protocol Buffers Lint/Format 上記のチェックについて、どのような設定、運用が行われているかを紹介していきます。 Unit Test 自分がイン…
8ヶ月前

[iOS] Visionフレームワークを用いた料理写真の画像分類精度検証
Retty Tech Blog
Rettyアプリチームの若田(@wakanao_banana )です!この記事はRetty Advent Calendar 2024の4日目の記事です🗓️ 12月に入り寒くなってまいりましたが、地元の北海道では冬に部屋をぬくぬく温めてお風呂上がりにアイスを食べる、なんてことを思い出す季節ですね🍨 今回はオンデバイスでの画像分類の精度についてお話しします🫡 Webで十分な時代になぜモバイルアプリを作るのか? Visionフレームワークについて VNClassifyImageRequest 推論の速度 料理写真の画像分類の精度検証 精度検証の目的 検証 検証方法 結果 1. foodラベルの確度が…
9ヶ月前

長期関与で学ぶ知見:Rettyの実例から見るシステム改善の軌跡
Retty Tech Blog
Retty VPoE(VP of Engineering : 技術部門のマネジメント責任者)の常松です。 2025年2月27日に開催されるEMConf JP 2025向けに本記事と同じタイトルのプロポーザルを出していましたが、強豪ひしめく選考で負けてしまったようです。本記事に話したかったことをまとめて供養します🙏 fortee.jp はじめに 1. スクラムと大規模スクラム(LeSS)の導入 2. マイクロサービスアーキテクチャへの移行 3. ライブラリやフレームワークの選定プロセス 4. マネージドサービスへの置き換え おわりに はじめに 転職が一般的になりつつある今の時代ですが、「1つのサ…
9ヶ月前

リソース効率向上のためのGoのuniqueパッケージ
Retty Tech Blog
ソフトウェアエンジニアの福井です。 Go 1.23で新しくuniqueパッケージが追加されました。このuniqueパッケージはinterningを提供します。 interning interningとはGoに限らず、新しいオブジェクトを作成するときにすでに同じオブジェクトのメモリ割り当てがあればそのメモリを再利用し、メモリスペース効率を向上させる方法です。 interningを活用した具体的なユースケースとしては以下があると思います。 株価データの集計バッチで、同じ値が頻出するティッカーと株価のオブジェクトのinterning フリマサイト 評価データの集計バッチで、「とても良い取引ができまし…
10ヶ月前

Fastly ディクショナリを駆使してシステムを段階的移行する
Retty Tech Blog
ソフトウェアエンジニアの福井です。 業務では飲食店Webページの機能開発をしつつ、Webページを新システムに段階的移行しています。Rettyに掲載されている飲食店は様々な契約種別があり、その種別ごとに新システムに移行しています。 RettyはCDNにFastlyを使っており、新システムへのルーティングはFastlyで以下のように実装していました。FastlyはCDN(VCLベース)サービスを利用しています。 新システムにルーティングしたい飲食店IDをディクショナリに保存します。リクエストURLの飲食店IDがディクショナリ内に存在していればバックエンドを新システムにします。 ディクショナリの制約…
1年前

大吉祥寺.pmに行ったら美味しいランチも楽しもう
Retty Tech Blog
Retty VPoEの常松です。来たる2024年7月13日(土)に技術勉強会 吉祥寺.pmの10周年イベント 大吉祥寺.pm が開催されます。私も登壇者の一人として参加予定です。 そんな大吉祥寺.pmですが、運営の方が「せっかくだから吉祥寺の美味しいものを食べていって欲しい」という思いから、おすすめのお店をX(Twitter)で募っていました。 大吉祥寺.pmに向けて、吉祥寺駅周辺のランチ情報を収集していますこのハッシュタグをつけて、お店の名前と写真をポストするだけです!#吉祥寺の美味しいものぜひご協力をお願いします! https://t.co/qnq50BNT3a— 吉祥寺.pm (@kic…
1年前

Fastly の Edge Rate Limiting で苦労せずレート制限を実装する
Retty Tech Blog
Retty でエンジニアをしている山下です。 早いもので2024年も残り半分となり、年々1年の長さが短く感じるようになってきました。 Retty では nginx 移行を通じて学んだ Fastly のはじめかた で紹介したように CDN として Fastly を利用しています。 今回は Fastly の Edge Rate Limiting でレート制限を簡単に実装したことについて書こうと思います。 レート制限が必要な理由 Fastly の Edge Rate Limiting とは Edge Rate Limiting でレート制限を実装する方法 UI から設定する方法 Custom VCL…
1年前

低予算でGoのコードカバレッジレポートをPull Requestにコメントする using CircleCI
Retty Tech Blog
ソフトウェアエンジニアの福井です。 コードカバレッジのパーセンテージを上げる(または保つ)ことを強制することは悪いプラクティスとされます。 そのためRettyではいくつかのプロジェクトで、パーセンテージによってmergeできないなど強制せず、カバレッジのパーセンテージのみを見える化していました。 しかしどのコードがカバーされてるか参照できるカバレッジレポートが身近にありませんでした。 どのコードがカバーされてるかを参照することで以下のメリットがあります。 条件が複雑でないコードのリファクタリングの心理的安全性が高まる コード設計面での気づきが得られる 2つ目の"コード設計面での気づきが得られる…
1年前

プロダクトマネージャーとエンジニアリングマネージャーで協力して使われなくなったコードを消していった話
Retty Tech Blog
Rettyの松田です。普段はプロダクトマネージャーとしてSEOに関わっていることが多いですが、今回はエンジニアリング寄りのブログです。 元々Webエンジニアをしていたのである程度はコードを読むことができ、現実的にプロダクトの改善につながるものがあったため、週1時間ぐらいを確保してコードリーディングするのを半年ぐらい続けていました。 一定の区切りがついたのと、実際にいくつか不要なコードを削除することができたので、その取り組みについてまとめてみます。 きっかけ プロダクトの主要なページについて、現状を把握することが難しくなってきていることが課題として存在していました。 主要なページは数多くの施策が…
1年前

アプリのバックエンドをGraphQLに移行しました
Retty Tech Blog
この記事はアプリチームのAndroid、Backendを主に担当している松田がお送りします。 概要 現在、アプリのバックエンドはREST APIで構築されていますが、これを新規開発はGraphQLに移行しました。移行した背景と技術的な選択、実装時の考慮点を紹介します。 移行理由 GraphQLへの移行を考えたのはオーバーフェッチの問題です。 オーバーフェッチをしないために、ユーザー情報の型がタイムライン用、ユーザー詳細用、店舗の口コミ詳細用と様々あり、管理が大変になっていました。 このような理由から、スキーマを定義して1つだけ情報を返す実装すれば良いGraphQLに移行する事にしました。 技術…
1年前

GitHub Copilotで効率的にSQLを書くコツ
Retty Tech Blog
Rettyプロダクトマネージャーの松田です。 プロダクトの現状把握や施策効果の分析など、さまざまなタイミングでBigQueryのSQLを書くことがあります。 Rettyでは昨年末にGitHub Copilotを導入したので、それに合わせてSQLの作成にもGitHub Copilotを使い始めました。 使いたいテーブルが偏っていたりテーブルの設計が似ているものが多く毎回同じようなクエリを書いていましたが、GitHub Copilotの導入で体感としては半分ぐらいに作業時間を短縮できたと思います。 まだまだ不十分だと感じることもありますが、現時点でも十分に活用できているので、GitHub Copi…
2年前

アプリ開発メインの私が業務で擦れるほど使い倒しているGit/GitHub CLIの便利コマンド4つ
Retty Tech Blog
Rettyアプリチームの今泉 @imaizume です。 昨今の開発において、バージョン管理ツール、特にGitとGitHubを多くの方が使っていると思います。 日常的に高頻度で行う作業ですので、かける手間や時間は極力抑えたいもの。 とりわけブラウザ、開発環境、ターミナル間の移動やロード時間を抑え、1つの画面内で開発からPull Request作成までを完了させたいものです。 そこで今回は、普段のモバイル開発で私が使っているGit及びGitHub CLI (gh コマンド)の活用事例について紹介します。 GitHub CLIについて cli.github.com GitHub CLI (gh コ…
2年前

Retty VPoE通信 Vol.2
Retty Tech Blog
Retty VPoE(VP of Engineering : 技術部門のマネジメント責任者)の常松です。 VPoE通信は「開発のトップとして今何を考えていて、どう動こうとしているのか」の定期発信企画で、今回が2回目です。 Retty VPoE通信 Vol.1 - Retty Tech Blog VPoEの管掌は技術組織のマネジメントまでが一般的かと思いますが、2023年4月からは企画・デザインも含めた開発組織全体を見る役割を担っています。 それはVPoEの仕事なんですか? この1年仕事をしていて「それはVPoEの仕事なんですか?」とメンバーから問われる機会が幾度となくありました。 事業戦略の立…
2年前

FRM事業(集客支援事業)の成長を支援!Retty営業企画部の取り組みを紹介
Retty Tech Blog
Rettyの営業企画部マネージャーの平野です。 昨年まではデータ分析チームに所属しており今年1月から営業企画部へ異動しました。 (これまでの取り組みはこちら) 営業企画部は2020年頃から設立されていましたが、私の異動と同時に大幅な体制変更があり、役割も変化しました。その変化からもうすぐ一年が経過し、私たちの役割や取り組みがようやく確立してきました。 来年には、他社の事業開発や営業企画の担当者と積極的に情報交換や意見交換を行いたいと考えています。そのため、今回は自己紹介も兼ねて、営業企画部の全体像や私たちの取り組みについてご紹介します。 ぜひ、最後までご覧いただけると幸いです。 前提:FRM事…
2年前

【Retty新卒エンジニアの成長記録】成長ではなく変化し続ける、そしてみんなで一つのプロダクトを作る
Retty Tech Blog
Retty Advent Calendar 2023 Day17 の記事を担当します。俵積田です。 Rettyに入社して半年以上経ったのでこれまでに自分が体験して感じたこと・考えたことを書いてみました。 これまで技術系のブログは書いたことはあるのですが、自分の抱いた思いを文字に起こしてインターネットに公開するのはこれが初めてなので若干照れ臭く恥ずかしいです。 まず、簡単な自己紹介そして、Rettyに入社した背景から書き起こさせてください。それから"入社して半年以上が経過した自分が共有したい考え方"という項目を通して、自分が身につけた考え方に触れていこうと思います。 自己紹介 23卒のWebエン…
2年前

日本全国で自社のサービスをドッグフーディングしてみて
Retty Tech Blog
この記事はRetty Advent Calendarの10日目の記事です。 私が行っているドッグフーディングの内容 検索 作成した行きたい・オリジナルリストから探す 投稿(のための飲食店観察) 飲食店情報の更新 他サイトとの比較 ドッグフーディングの成果など 2023年の報告件数 見つけた改善点、不具合の例 1. 検索サジェストでエリア入力が考慮されず、常に東京や有名店がサジェストされてしまう 2. 周辺に店舗がない場合の画面 3.投稿対象の店舗を見つけやすくするための修正 4. 実データを使って、新しい行きたいリスト・投稿作成画面を検証 学び 環境を変えて使うと見えなかった事象に気づける 実…
2年前