ブックマーク / techlife.cookpad.com (12)

  • Ruby 3.0 の Ractor を自慢したい - クックパッド開発者ブログ

    Ruby の開発をしている技術部の笹田です。娘が自転車に乗り始め、まだ不安なためずっとついていなければならず、少し追っかけまわしただけで息切れがヤバい感じになっています。運動しないと。 ここ数年、Ruby で並列処理を気軽に書くための仕組みである Ractor を Ruby 3.0 で導入するという仕事を、クックパッドでの主務として行ってきました(クックパッドから、これ、と言われていたわけではなく、Ruby を前進させるというミッションの上で行ってきました)。 Ractor は、もともと Guild という名前で開発をはじめ、2020年の春頃、Ractor という名前に変更することにしました。いくつかの機会で発表しています。下記は、RubyKaigi での発表の記録です。 A proposal of new concurrency model for Ruby 3 - RubyKaigi

    Ruby 3.0 の Ractor を自慢したい - クックパッド開発者ブログ
    zu2
    zu2 2020/12/29
  • レシピサービスのフロントエンドを Next.js と GraphQL のシステムに置き換えている話 - クックパッド開発者ブログ

    技術部の外村(@hokaccha)です。今回はクックパッドのウェブサイトのフロントエンドNext.js などを使って作り直している話を書きます。 この記事で紹介する新システムは、スマートフォン向けのレシピページで確認することができます。もし興味があるかたはレシピページをスマートフォンのユーザーエージェントで開いて DevTools などで確認してみてください。 Next.jsGraphQL で動いているのがわかると思います。 ご存じの方も多いかもしれませんが、クックパッドのウェブサイトはモノリシックな Rails で作られていて、10年以上 Rails で開発を続けてきました。10 年以上同じシステムで開発を重ねれば当然レガシーな部分が大量に生まれてきますが、特にフロントエンドはその影響が顕著でした。 どこから使われているかわからない CSS が大量にある、JS のコードは昔なが

    レシピサービスのフロントエンドを Next.js と GraphQL のシステムに置き換えている話 - クックパッド開発者ブログ
    zu2
    zu2 2020/12/14
  • 検索インフラを安全に切り替えた話 - クックパッド開発者ブログ

    こんにちはこんにちは。技術クックパッドサービス基盤グループの id:riseshia です。 記事では直前の記事で提案された新しい検索システム(以下、 solr-hako と呼びます)を利用し、レシピサービスの検索インフラの切り替えた話をします。 solr-hako の設計を直接参照する内容はありませんが、それを前提においた移行作業ですのでそちらの記事を先に読むことをおすすめします。 インフラ構成の変化 まずインフラ構成の変化ををみておきましょう。 検索インフラ(変更前) 今まではこのようなインフラ構成でした。特徴としては、 search-cache というキャッシュサーバ(Varnish)が手前にあることくらいでしょうか。今回、 solr-hako を利用することで以下のような感じになりました。 検索インフラ(変更後) しれっとキャッシュレイヤーである Varnish がなくなったこ

    検索インフラを安全に切り替えた話 - クックパッド開発者ブログ
    zu2
    zu2 2020/11/26
  • クエリログを使ったAurora MySQLの負荷テスト - クックパッド開発者ブログ

    最近はZX-25Rが気になっている菅原です。4気筒250ccといえば、以前バリオス2に乗っていたんですが、あれもよく回るよいバイクでした。足つきの良さが懐かしいです。 この記事では、クエリログを使ったAurora MySQL負荷テストの話を書きます。 MySQL負荷テスト サービスに使われているデータベースは、Webサーバと比べて自動的なスケールアップ・スケールアウトが簡単ではないためキャパシティプランニングは非常に重要です。サービスへのアクセス増による負荷増大の結果、急激に性能が低下するためなるべく事前にキャパシティを把握しておきたいところです。 クックパッドではサービスのデータベースとして主にAurora MySQLを利用しているのですが、キャパシティを把握するための負荷テストには以前から苦労してきました。 1. シナリオを書くのが大変 サービスで使われているデータベースの負荷テス

    クエリログを使ったAurora MySQLの負荷テスト - クックパッド開発者ブログ
    zu2
    zu2 2020/11/24
  • 在宅勤務環境の継続的改善 - クックパッド開発者ブログ

    コーポレートエンジニアリング担当 VP の @kani_b です。 新型コロナウイルス感染症の拡大リスクを鑑みて、従業員や関係者の皆さまの安全確保を目的に、クックパッドでは 2/18 (火) から、国内拠点の全従業員(正社員、契約社員、パート・アルバイト、派遣社員、通常在席の業務委託)を対象に在宅勤務の原則化を実施しています。現在は5月末まで継続する予定としています。 クックパッド、新型コロナウイルス感染症の拡大に伴う在宅勤務(Work from Home)を5月末まで継続のお知らせ | クックパッド株式会社 また、クックパッドでは、今の状況にあわせた、料理に関する様々な取り組みを進めています。そうした取り組みを集めたページをオープンしていますので、こちらもぜひご覧ください。 私たちは、料理でつながろう | クックパッド株式会社 さて、在宅勤務が開始された 2 月に、在宅勤務に対する取り組

    在宅勤務環境の継続的改善 - クックパッド開発者ブログ
    zu2
    zu2 2020/04/22
  • クックパッドの在宅勤務環境 - クックパッド開発者ブログ

    コーポレートエンジニアリング担当 VP の @kani_b です。 昨今急速に拡大している新型コロナウイルス感染症の感染拡大リスクを鑑みて、従業員や関係者の皆さまの安全確保を目的に、クックパッドでは 2/18 (火) からまずは2週間ほど、国内拠点の全従業員(正社員、契約社員、パート・アルバイト、派遣社員、通常在席の業務委託)を対象に在宅勤務の原則化を実施することになりました。 クックパッド、新型コロナウイルスの拡大防止対策で、全従業員を対象に在宅勤務(Work from Home)を実施 | クックパッド株式会社 ‌ この記事では、現在クックパッドでどのような環境づくりのもと、在宅勤務が行われているかをご紹介します。 どの会社の方も同じような状況にあるかと思いますが、「他社ではどうやっているか」の一例として参考にしていただけると嬉しいです。 仕事に利用するシステム クックパッドでは、業務

    クックパッドの在宅勤務環境 - クックパッド開発者ブログ
    zu2
    zu2 2020/02/21
  • BERT with SentencePiece で日本語専用の pre-trained モデルを学習し、それを基にタスクを解く - クックパッド開発者ブログ

    研究開発部の菊田(@yohei_kikuta)です。機械学習を活用した新規サービスの研究開発(主として画像分析系)に取り組んでいます。 最近は、社内の業務サポートを目的として、レシピ機械学習モデルで分類して Redshift に書き込む日次バッチを開発・デプロイしたりしてました。 ここ数ヶ月で読んだ論文で面白かったものを3つ挙げろと言われたら以下を挙げます。 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding Focal Loss for Dense Object Detection Exponential expressivity in deep neural networks through transient chaos 記事では、BERT というモデルをクックパッドのレ

    BERT with SentencePiece で日本語専用の pre-trained モデルを学習し、それを基にタスクを解く - クックパッド開発者ブログ
    zu2
    zu2 2018/12/04
  • 簡潔ビットベクトルでRubyをlog N倍速くした - クックパッド開発者ブログ

    技術部のフルタイムRubyコミッタの遠藤(@mametter)です。昨日の Hackarade #04 の開催報告に続き、2日連続で記事を投稿します。 今回は、ある条件下でのRubyの実行速度を高速化した話を紹介します。この改善はすでにMRIの先端にコミットされていて*1、年末リリース予定のRuby 2.6に含まれる予定です。 ひとことで言うと、「簡潔ビットベクトルを索引に使うことで、プログラムカウンタから行番号を計算するアルゴリズムをO(log N)からO(1)に改善した。これにより、TracePoint有効時やコードカバレッジ測定下で、長さ N のメソッドの実行が O(N log N) から O(N) に高速化される」ということです。順に説明します。 背景:Rubyのバイトコードの構造 この最適化を理解するにはまず、Rubyのバイトコードのある特徴を知る必要があります。 たとえば x

    簡潔ビットベクトルでRubyをlog N倍速くした - クックパッド開発者ブログ
    zu2
    zu2 2018/11/30
    “簡潔データ構造”
  • 雑な発想を活かすチーム作り - クックパッド開発者ブログ

    インフラストラクチャー部の成田(@mirakui)です。インフラストラクチャー部は、クックパッドで扱っている全サービスのサーバを設計・構築し、運用しているチームです。2015年3月現在、6人のメンバーで運用をしています。 さて、この運用というのは外から見ていると保守的な仕事に思えるかもしれませんが、その実、とてもクリエイティブな仕事です。クックパッドのサービスは一日平均で10回以上デプロイされており、アクセスも日々増え続け、状況は刻一刻と変化しています。今日動いているサーバ構成が、一年後に通用するとは限らないわけです。そんな変化に追従するためには、サーバを常に改善していかなければなりませんし、チームにも柔軟な発想が求められます。 「さあブレストしよう」→アイデア出ない問題 さあ業務を改善しよう、と意気込んでブレインストーミングを開いても、なかなか十分なアイデアが出きらないのはよくある話です

    雑な発想を活かすチーム作り - クックパッド開発者ブログ
    zu2
    zu2 2017/02/21
  • ブラウザ拡張を用いた業務改善手法 - クックパッド開発者ブログ

    買物情報事業部の根岸(@negipo)です。今回はブラウザ拡張を日常業務でどう使っているかについて紹介します。 ブラウザ拡張とは ブラウザ拡張は、ブラウザによるウェブとのインターフェースをJavaScriptCSSを用いて自分好みにカスタマイズする機能です。Google Chromeを利用していればChromeウェブストアなどで公開されている拡張をインストールできるでしょう。一方で、開発したブラウザ拡張を自分で使うために、Chromeウェブストアによる公開と言うプロセスを踏むのは面倒です。日常的にウェブのインターフェースを改変する道具としてブラウザ拡張を使うためにはいくつかの手法がありますが、僕はGithubのdefunktさんが作ったdotjsを使っています。詳細は省きますが、今開いているページでalertを出すぐらいの機能であれば10秒で開発作業を終えることができると思います。 また

    ブラウザ拡張を用いた業務改善手法 - クックパッド開発者ブログ
    zu2
    zu2 2015/05/01
  • 多腕バンディットによる表示コンテンツの最適化 - クックパッド開発者ブログ

    こんにちは。技術部検索グループの原島です。 上の画像は、スマートフォン(ブラウザ版)で見たクックパッドの検索結果ページです。レシピだけでなく、ニュースも表示されていますね。献立や掲示板のスレッドなどが表示されることもあります。 クックパッドでは、検索結果ページに表示するコンテンツをクエリなどに応じて最適化しています。最適化は、膨大なログデータと最新の機械学習を用いることで、実現しています。このエントリでは、クックパッドにおけるコンテンツ最適化の裏側を紹介します。 最適化の背景 スマートフォンの普及に伴って、ユーザが利用するプラットフォームは PC からモバイルにシフトしつつあります。クックパッドにおけるモバイル利用者の割合も、ここ 2 年で 10% 以上増加しました。最近では、60% 以上のユーザがモバイルからアクセスしています。 ユーザの利用形態が変化すれば、検索結果ページもその変化に対

    多腕バンディットによる表示コンテンツの最適化 - クックパッド開発者ブログ
    zu2
    zu2 2014/10/29
  • CI で稀に失敗してしまうテストへの対処方法 - クックパッド開発者ブログ

    技術部の福森です。 クックパッドでは RSpec と Jenkins を利用して CI による自動テストを行なっています。 テストの数は 12000 examples を越えていて、テストによっては稀に失敗する物が出てきています: 時間帯依存で失敗してしまうもの 他に同時に実行されるテストに依存しているもの (並列実行で組合せが変わり再現する) インテグレーションテストでの ajax リクエストの微妙なタイムアウト etc また、番環境を壊さないよう、 CI で成功したリビジョンのみデプロイ可能となっており、開発者が push しデプロイしたいと思っている時に無関係な原因で失敗する事を避けたいという欲求があります。 なぜなら、再度ビルドを実行する時間 (およそ 10 分) の間待たされる事になるからです。 そこで、そのようなテスト起因での失敗を減らし、かつ開発者にそれらを修正してもらうた

    zu2
    zu2 2013/06/13
  • 1