rails の検索結果:

RubyKaigi 2025 のクックパッドブースで出来ること

…るようになりました。Rails を使って多地域・多言語に向けたサービス開発をしている今のクックパッドについて、ご紹介ができたらと考えています。 techlife.cookpad.com また今年は、Rails Foundation の方々にご協力いただき、9 月にヨーロッパにて開かれる Rails World 2025 というカンファレンスの招待券を少数ご用意できることになりました。クックパッドは Rails Foundation のコアメンバーであり、そのご縁で生まれた企画…

東京Ruby会議12のスポンサーブースでサービス統合の展示をします / 料理を食べながらRubyの話ができる非公式関連イベントを開催します

…であり、往年の巨大 Rails モノリスである cookpad_all がついに退役に向かうなど Ruby / Rails やアーキテクチャの観点でこれまでのブログでは語り切れないような様々な変化がありました。ブースには One Experience プロジェクトの中心となった社員もおりますので、気になることはなんでもお話しできると思います。メンバー一同、当日ブースでお待ちしております! 更に、東京Ruby会議の非公式関連イベントとして、「Tech Kitchen #30 A…

ちょっと複雑なサイドバーをHotwireで簡単に作りたい

… どちらのシステムもRailsで実装されているという点は同じですが、統合先となったグローバル版ではHotwireが使われていました*1。そのため、One Experience関連の開発ではHotwireが積極的に活用されています。本記事ではそんなHotwireの多くの機能が使われたデスクトップ版のサイドバーについてご紹介します。 デスクトップ版で表示されるサイドバー ちょっと複雑なサイドバー One Experienceに伴い、グローバル版にもともと存在したUIのまま移行する…

日本とアメリカの太平洋を超えたパフォーマンス改善の取り組み: CloudWatch RUM を中心としたパフォーマンス測定とデータ活用方法

…、 グローバル版の Rails アプリケーションの実装を改善してパフォーマンスを上げる MySQL クエリの改善や適切なキャッシュの利用などでパフォーマンスを上げる フロントエンドの実装を改善して見かけのパフォーマンスを上げる マルチリージョンデプロイ: 日本ユーザから近い場所にサーバを置く などなど、移行について動き始めた段階でいろいろと改善する余地・手段があることは漠然と分かっていました。ただし取り組みによっては実装・運用コストが大きいため、まずは現状をしっかりと把握して…

DMS を利用した継続的なデータ変更検知

…ライブラリを用意し Rails アプリから Amazon SNS にイベントを発行するようにしていました。Ping については過去の記事 https://techlife.cookpad.com/entry/2017/05/10/130000 でも少し触れられています。 しかし、この Ping を長年運用しているうちに出てきた課題の1つとして信頼性があまり高くないという点がありました。Rails のレイヤでイベントを発行するため、たとえばデータを更新したのにイベントを発行する…

日本とグローバルのクックパッドを統合しました

…bアプリケーションがRailsで実装されているという点では同じですが、インフラやWebフロントエンドで採用している技術スタックや、非同期ジョブやバッチ実行のための仕組みなど様々な点が異なっています。同様にモバイルアプリケーションも採用しているアーキテクチャなど日本版とグローバル版とで異なっていました。 このように日本版とグローバル版には様々な違いがあり、どちらに統合するにしてもなんらかのメリット・デメリットが存在します。そのうえで、最終的に「グローバル版をベースに日本のサービ…

Cookpad Summer Internship 2024に参加しました

…とができました。私はRailsを触るのは初めてだったのですが、各タスクで少しずつ触る領域が違ったので、徐々にRailsのことがわかってきて楽しかったです。また、DWHに対してSQLクエリを叩いて対象レコードの数を調査したり、作成したバッチ処理の実行時間を計測したりは、実際に運用されている大規模なプロダクトならではという感じで楽しかったです。 どのようなタスクがやりたいかをヒアリングして尊重してくれたので、やりたいことがあればどんどん挑戦できる環境だと思います! スクラム 私は…

クローズしたサービスの管理画面を静的サイトにする

…とが分かりました。 Rails が動いている。サーバー側では graphql-ruby を利用した GraphQL API が動いていて、ウェブフロントエンド側では素の React が API にリクエストを行いながらページを作っている。データベースは PostgreSQL (Amazon RDS for PostgreSQL)。 データ量はそこまで多くないが、目で全件確認できるほど少なくもない。 ページの種別は、Rails の app/javascript/pages 下に…

Project Googrename: Google Workspace で 14 年運用されたドメインエイリアスをプライマリドメインに変更 & 全ユーザーを安全にリネームする

…ある Hako + Rails + omniauth-google_oauth2 について対応を検討しました。 まず、omniauth-google_oauth2 gem では hd オプションに Google Workspace のドメインを指定することで omniauth strategy レベルでログイン可能なドメインを制限できます (hosted domain, hd claim の検証)。omniauth-google_oauth2 の hd オプション自体は複数の…

RubyKaigi 2023 Wi-Fi: 足回り徹底解説

…byists on Rails 企画と Wi-Fi スポンサーに加えて実は冷蔵庫を提供していました。RubyKaigi 運営で松本ブルワリーさんにお願いしたビールを冷やすのどうしよう? と社内で相談したら Cookpad から冷蔵庫も提供することになりました。 実はこの冷蔵庫で動いている Linux box のネットワークや OS イメージのビルド・OTA まわりも id:sora_h が本業で製作したものです。バックエンドからエッジまで Ruby が動いている冷蔵庫になって…

モブプログラミングを1年以上継続するコツ

…しますし、Ruby/Rails、ReactなどだけではなくSQLを眺めてみんなでウンウン唸りながら改善をすることもありますしコードをほぼ書かずに業務分析をすることもあります。 おすすめのツールや設定、スニペットがあれば自慢してみたり、最近の技術的な話題で盛り上がることもあります。 モブプログラミングはとてもハードなプラクティスです。一日4時間もやるととてもヘトヘトになります。それでもチームのモチベーションを維持のためにも緩急をつけて、たまには雑談を挟むことで機械的な開催になる…

ポリモーフィック関連を活用し、森羅万象の「いいね」を実現する手法

…、Kaigi on Rails 2022 森羅万象に「いいね」するためのデータ構造 というタイトルで発表をした、Rails を用いたデータ構造のリファクタリングについて紹介します。ポリモーフィック関連を用いたリファクタリングにより、テーブルやコードの重複を排除し、メンテナンス性や拡張性を向上させることができました。データ構造をリファクタリングする背景や、具体的な手法、そしてなぜその変更を行うことができたのかについてを詳しく説明します。 目次 データ構造の初期設計 新機能の「い…

【RubyKaigi 2023】ゲストハウスのオーナーに聞いた松本グルメ! 松本を256倍楽しむためのお店

…松本散策マップをご紹介いたします。ぜひこちらもRubyKaigi 2023でのお店選びに役立てていただければと思います。 また、クックパッドはRubyKaigi 2023にWi-Fi & Rubyists on Rails Sponsorとして、新宿松本間の交通支援を実施させていただいています。Rubyists on Railsは4月6日まで参加者を募集中ですので、よろしければこちらもご確認ください。 cookpad.connpass.com それでは松本でお会いしましょう!

クックパッドは RubyKaigi 2023 にWi-Fi & Rubyists on Rails Sponsorとして協賛しています

…byists on Rails Sponsorとして協賛します。聞きなれないスポンサー名だと思いますので、登壇者情報と合わせてこちらのエントリーでお知らせします。 スポンサーする背景 クックパッドはレシピサービスcookpadや、生鮮食品ECプラットフォームのクックパッドマートの開発にRubyを使用しています。また、Webサービスだけでなく、クックパッドマートで使用しているステーション(冷蔵庫)で稼働するソフトウェアやハードウェア開発にもRubyを使用しており、Rubyはクッ…

【後編】企業所属のRubyコミッター対談! 〜Ruby開発の裏話と今後の取り組み〜

…いているかとか、またRailsをメインに開発されている人とかRailsを使ってアプリケーションを開発している人とかが「Rubyでこういうことができるといいんだけどな」みたいな部分とあとRubyを開発しているRubyのコミッターの人たちが「こういうRubyのコードは書かないでしょ」って言った矢先に「書きますよ」みたいな話とか、逆にこう書けたら便利じゃないって「誰も書きませんよ、そういうこと」みたいな話は結構イベントとかSlackとかそういったところでよく散見されたりするのはある…

【前編】企業所属のRubyコミッター対談! 〜企業に所属するOSS開発者って何?〜

…んが新しいRubyでRailsアプリケーションを走らせてみたり、結構テストしていてくれていて動かないところを報告するという活動を継続していてくれていたのを見ていて、その時にRubyの開発者であるまつもとゆきひろさんに「柴田さんへコミット権限を差し上げたらどうでしょう?」という話をして「いいね、いいね」という話になって、それがきっかけで柴田さんがRubyのコミッターになったという話があります。 櫻井:なるほど、その頃から柴田さんも遠藤さんのことはご存じだったのですか? 柴田:ち…

Next.js アプリケーションの共通コンポーネント開発

…ジの / であれば Rails、レシピ詳細ページの /recipe/:id であれば Next.js アプリにルーティングされるようになっています。現在ではレシピ詳細ページだけではなく検索結果ページやつくれぽ詳細ページ、MYフォルダページなどもNext.jsアプリケーションに置き換わっています。今回はその移行により生じた課題と取り組み方、それから併せて実施したモノレポ環境整備について紹介します。 共通コンポーネントの導入背景 実装方法 Reactによる共通コンポーネント作成 …

施策を "Own it" するエンジニア 〜オーナーエンジニア制度の紹介〜

…/10/150709 *6:極端な例として挙げているものの多くの場合はよくない *7:この辺りの話は Kaigi on Rails 2022 で弊チーム Techlead の akamatsu が話していたので、興味のある方は併せてどうぞ → https://kaigionrails.org/2022/talks/ukstudio/ *8:こちらも前述した akamatsu の発表で触れられています *9:弊社エンジニアリングマニフェストにある "境界を越える" の精神です。

プロと読み解く Ruby 3.2 NEWS

…す*1。といっても、Railsがrequire "set"をするらしいので、今更これの恩恵を受ける人はほとんどいないかもしれません。 残念ながらいまのところ、「Cで書き直されて高速」みたいな話はありません。{ 1, 2, 3 }みたいな専用の記法が導入されたわけでもありません。今後に期待ですね。 (mame) Unicode 15.0.0 になった Update Unicode to Version 15.0.0 and Emoji Version 15.0. [Featur…

Kaigi on Rails 2022 にて『森羅万象に「いいね」するためのデータ構造』の発表をしました

…プロダクト開発部で Rails を書いているなどやま ( @pndcat ) です。業務では、広告基盤の開発、運用から新規サービス開発など、マーケティングソリューション領域に関する開発をしています。趣味は、スプラトゥーンと推し活動をがんばっています。 Kaigi on Rails 2022 にて、森羅万象に「いいね」するためのデータ構造 というタイトルで発表をしました。この記事では、Twitter などで寄せられた質問に回答したいと思います。発表中にあった「いいね」のリファク…

クックパッドは RubyKaigi 2022 に参加&スポンサーしてきました!イベントレポート

…ず、Ruby on Rails 等にも改善を取り込んで Ruby のエコシステム全体に価値を波及させようとしているのもとても印象的でした Towards Ruby 4 JIT Making *MaNy* threads on Ruby 印象的なできごと 低レイヤーの話になると「全くわからん...」になってしまったのですが、その「分からん」にも前向きな気持ちで向き合えるのがオフラインイベントならではだったかもなと思いました。 オンラインだったらきっと途中で気持ちが切れてしまった…

【RubyKaigi発表予告】error_highlight: user-friendly error diagnostics

…+ nil ^^^ Railsのエラーページでも下線が出るようになる Railsのエラー画面のerror_highlight これだけなんですが、これらを実現するためにRubyインタプリタのエラー処理まわりをいろいろと整理する必要がありました。 何がむずかしかったか 一言で言えば、「エラーメッセージの変更は非互換である」ということでした。 Ruby 3.1のerror_messageはException#messageをオーバーロードしてerror_highlightのメッセ…

クックパッドマートにおけるアカウント統合

…サーバー処理は主に Rails で書かれており、当然データモデルも ActiveRecord で記述されています。 # ユーザー class User < ApplicationRecord has_many :orders has_one :user_location, dependent: :destroy end # 注文履歴 class Order < ApplicationRecord belongs_to :user end # ユーザーの受け取り場所 class…

オフラインイベント「Cookpad Tech Kitchen #27 Rails/Next.js/IoTによる食品流通」を開催しました!

…tchen #27 Rails/Next.js/IoTによる食品流通」をWeWork リンクスクエア新宿で開催しました。 イベントではクックパッドの新規事業「クックパッドマート」の流通を開発するエンジニアをはじめ、ECアプリケーションエンジニアやCTOも参加し、クックパッドマートの流通を中心とした最新の状況や組織についていろいろお話させていただきました。今回は当日の様子を発表資料も交えて紹介させていただきます。 クックパッドマートの失敗したデータ設計 Before / Aft…

モダンウェブフロントエンド勉強会を開催しました

…間 Ruby on Rails で開発されてきましたが、2020年から一部のページは Next.js のアプリケーションがホストするようになりました。具体的な構成については次の記事をご覧ください。 techlife.cookpad.com Next.js を使うようになると全てのビューは React コンポーネントで記述し、スタイルも JavaScript で記述するようになり、これまでの Rails での開発とは大きく異なるものになりました。それに加えてパフォーマンスを意識…

3/12 (土) 開催!「6社合同SRE勉強会」のクックパッドのセッションを紹介します

…り、モノリシックな Rails アプリケーションが Amazon EC2 上にデプロイされてレシピサービスが実現されていました。SRE *1 の仕事もレシピサービスに関することが中心でした。一方でみんなのカフェや料理教室といったサービスをレシピサービスとは独立したアプリケーションで提供しており、API での連携の基礎ができてきたりマイクロサービス化が始まりつつありました https://techlife.cookpad.com/entry/2014/09/08/093000 …

AWS CodeBuildでのRailsアプリのdocker buildを早くしたい

…odeBuildでのRailsアプリのDocker buildを早くするための工夫を紹介します。 docker buildを早くしたい理由 クックパッドでは多くのアプリケーションを運用していますが、その多くはAWS ECS上で動いています(ref. ECS インフラの変遷)。 デプロイにかかる時間の大部分を占めるのはCIおよびDocker imageのビルド時間なのでコード修正→ステージング環境へのデプロイ→動作確認→デプロイのデベロップルーティンを日に何度もくり返すような生…

クックパッドの基盤をフル活用して新卒が新規アプリケーションを作った話

…盤パワーは恐ろしく、rails new すらまともにしたことが無かった新卒が学習を進めながら2ヶ月足らずでアプリケーションの作成を完遂できました。 アプリケーション作成の経緯 今回作成したアプリケーションはクックパッドのアプリにおける「買い物機能」のドメインにまつわるロジックやリソースを置くサーバーです。 買い物機能は、クックパッドアプリ上で Cookpad Mart のプラットフォームを利用して食材などを購入できる機能です。Cookpad Mart というのは、クックパッド…

Ruby 3.1 の debug.gem を自慢したい

…dbg -c -- rails # rails コマンドを起動 $ rdbg -c -- rake # rake コマンドを起動 $ rdbg -c -- bundle exec rspec # bundle exec rspec を起動 byebug コマンドだと、これがやりづらかったんですよねえ。 起動方法 その3:リモートデバッグを行う 別プロセスをデバッグできます。 $ rdbg -O app.rb DEBUGGER: Debugger can attach via …

プロと読み解く Ruby 3.1 NEWS

…s #=> [B] Railsの中でしばしば必要になっているということで導入されました。 Class#inherited を定義して子クラスの一覧を自力で把握するコードを書いたことがある人はそこそこいるのではないでしょうか。 これは一見かんたんに見える機能でしたが、実装を安定させるのが意外と大変でした。 というのも、子クラスへの参照は弱参照(weak reference)なんですよね。 Rubyではクラスはオブジェクトなので、定数などに代入されていない無名クラスはGCに回収さ…