タグ

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

  • Ruby 2.6 新機能:本番環境での利用を目指したコードカバレッジ計測機能 - クックパッド開発者ブログ

    技術部の遠藤(mame)です。1 ヶ月くらい風邪が直らず、苦しみながらこれを書いています。 昨日は Ruby 2.6 の NEWS を裏話付きで解説する記事を書きました(プロと読み解く Ruby 2.6 NEWS ファイル)。今日と明日は、その中でクックパッドのフルタイムRubyコミッタが主に担当したところを少し詳しく紹介します。 今日は、遠藤が作った "oneshot coverage" と言う 2.6 の新機能を紹介します。 背景:Ruby では不要コードの発見・削除が難しい クックパッドのサービスの多くは、cookpad_all という 1 リポジトリからなる、巨大な Rails アプリケーションとして実現されていました。しかし、このやり方ではメンテナンスが限界になってきたので、「お台場プロジェクト」という大整理プロジェクトが行われてきました。この辺の詳細は次の 2 つの記事が詳しい

    Ruby 2.6 新機能:本番環境での利用を目指したコードカバレッジ計測機能 - クックパッド開発者ブログ
    willnet
    willnet 2018/12/26
  • プロと読み解く Ruby 2.6 NEWS ファイル - クックパッド開発者ブログ

    技術部の笹田(ko1)と遠藤(mame)です。クックパッドRuby (MRI: Matz Ruby Interpreter、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 もうすぐ Ruby 2.6 がリリースされますね! Ruby 2.6 の新機能は何だろう、と調べるためには、ソースコードの diff を見ればいいのですが、膨大な変更があるので、一つ一つ見ていくのは大変です。 $ git diff --compact-summary origin/ruby_2_5 ... 6404 files changed, 228441 insertions(+), 97984 deletions(-) そこで、NEWS ファイルという、主要な変更点をまとめたファイルが用意されています。これを見るだけで、Ruby

    プロと読み解く Ruby 2.6 NEWS ファイル - クックパッド開発者ブログ
  • クックパッドアプリはみんなが寝ている間にサブミットされる - クックパッド開発者ブログ

    こんにちは、技術部モバイル基盤グループの茂呂(@slightair)です。 先日のiOSDCは大盛況でしたね。とても楽しく、実りあるカンファレンスでした。この記事で僕は ididblog! ということにしようと思っています 😋 クックパッドからは @giginet と僕の二人が登壇しました。発表を聞きに来ていただいた方はありがとうございました。 @giginet の 詳解Fastfile という発表中でさらっと話された、”毎週自動的にリリースされる”という言葉が気になった方はいるのではないでしょうか。実はこのリリースフローについての話もプロポーザルに出していたのです(もっともっと細かくリリースをしてユーザーに最速で価値を届けるためのリリースフロー)。 この記事ではこのリリースフローについての話をしたいと思います。 クックパッドアプリの開発体制 クックパッドアプリの開発体制は人数の変動はあ

    クックパッドアプリはみんなが寝ている間にサブミットされる - クックパッド開発者ブログ
    willnet
    willnet 2018/09/14
    いい話
  • データがどのように更新されてきたのか追跡する - クックパッド開発者ブログ

    こんにちは。技術部の吉川です。 みなさんは、異常なデータを見つけたが、どうしてそのような状態になったのか追跡できず困ったという経験はないでしょうか。 今回は、そんなときにクックパッドで利用されているAuditログについてご紹介します。 Auditログとは クックパッドでのAuditログは特定のデータレコードに対して発生したイベントをコンテキストとともに記録するものです。 一般的に監査ログ、証跡ログといったものがありますが、それらとは多少異なっています。 ここでのイベントとは、あるデータレコードが 作成された 更新・変更された 削除された といったものです。またそれ以外にもログインした、ログアウトした、セキュアな情報が閲覧された、といったイベントも含まれています。 コンテキストは以下のようなものを記録します。 いつ どこで 処理が行われたホスト 何が イベント 何を 対象データの情報 スキー

    データがどのように更新されてきたのか追跡する - クックパッド開発者ブログ
    willnet
    willnet 2018/06/10
  • Railsアプリケーションでフォームをオブジェクトにして育てる - クックパッド開発者ブログ

    ユーザーエンゲージメント部の諸橋 id:moro です。 わたしはずっと、ユーザー登録やログイン周りという、サービス的には基盤的なところ、技術スタック的にはアプリケーション寄りのところに取り組んできました。関連する話を何度かこの開発者ブログにも書いています。 ユーザー基盤を作り直しながらRailsでのサービス層に向き合う 巨大なWEBアプリケーションに巨大な変更を取り入れるためにやったこと この記事で触れている「電話番号による登録」について、チームメンバーが別の側面を紹介してくれています。 今日はそのあたりの開発を通じて考えた、Railsアプリケーションでのフォームオブジェクトやサービス層といったものが何であるか、という問いに対する、現在の自分のスタンスを紹介します。 サービス層、サービスオブジェクト、フォームオブジェクト もともと Railsは Web 画面から DB 構造までをあえて密

    Railsアプリケーションでフォームをオブジェクトにして育てる - クックパッド開発者ブログ
    willnet
    willnet 2018/06/06
    めっちゃ良い知見。MVC以外の層を作るときの名前が難しいんですよね…。
  • Webpackerを使ったRailsでのJavaScript開発 - クックパッド開発者ブログ

    こんにちは。マーケティングプロダクト開発部の長田です。 この記事では、私が現在進めているプロジェクトで、Webpackerを使ったJavaScriptのモジュール管理を導入したので、それについて紹介したいと思います。 Webpackerとは Webpackerとは、Webpackを用いてRails上でJavaScript開発をするために必要な一連の流れを提供してくれる、Rails organizationで開発されているgemです。 これまで、Rails上でJavaScriptのパッケージをどのように管理するか、また、モジュール依存をどのように解決するかについて、多くの選択肢があり、それらをどう組み合わせて使うのかについて悩まされてきました。 このブログでも過去に何度か記事が投稿されており、その中でも複数の選択肢が上げられています。 webpackを使った Rails上でのReact開発

    Webpackerを使ったRailsでのJavaScript開発 - クックパッド開発者ブログ
    willnet
    willnet 2017/05/21
    悩ましい
  • ユーザー基盤を作り直しながらRailsでのサービス層に向き合う - クックパッド開発者ブログ

    こんにちは。パートナーアライアンス部の諸橋 (@moro) です。 突然ですが、わたしはいまクックパッドの「ユーザー基盤」を再構築しようとしています。 一口に「ユーザー基盤の再構築」といっても、そのゴールが何を指すかは(わたし自身にとってもまだ)漠然としており、固定されたゴールは見いだせていません。しかし後述するように、いくつかの問題は明確な形を取っています。言い換えると、それら明確な問題と向き合いながら『柔軟でいい感じのユーザー基盤を目指す』というのがこの再構築プロジェクトの目的です。 その第一歩目として、ユーザー登録部分を現状のクックパッド体とは別の小さなRailsアプリケーションとして実装を進め、つい先日、一部の限定された利用者の方に向けて公開することができました。 今後も様子を見ながら公開範囲を拡大していく予定です。 再構築の背景 ではその「明確な問題」とはなんでしょうか。 最大

    ユーザー基盤を作り直しながらRailsでのサービス層に向き合う - クックパッド開発者ブログ
  • オープンソースソフトウェアポリシーをつくろう - クックパッド開発者ブログ

    こんにちは、みんなのウェディング 高井です。 みんなのウェディングやクックパッドといったインターネットサービス企業では、オープンソースソフトウェアは欠かすことのできない存在です。LinuxMySQLRubyRailsといった主要なものをはじめとして、テクノロジースタックのほとんどがオープンソースソフトウェアによって構成されいるといっても過言ではありません。 ですから、企業としてどのようにオープンソースソフトウェアに向きあうかということが、とても重要な問題になります。そして、そのための指針が、オープンソースソフトウェアポリシーです。 今回は、クックパッドがどのようにオープンソースソフトウェアポリシーをつくったか、その背景も含めてをご紹介いたします。 クックパッドとオープンソース 今でこそクックパッドは、多くのオープンソースソフトウェアを公開したり、その開発に貢献したりする会社となってい

    オープンソースソフトウェアポリシーをつくろう - クックパッド開発者ブログ
    willnet
    willnet 2016/12/05
    このエントリで紹介されてる「オープンソースビジネスに取り組むSI企業のための企業ポリシー策定ガイドライン」とても良い資料だった。みんなこれ参考にポリシー作って公開すると良いのでは
  • クックパッドにおける最近のMicroservices事例 - クックパッド開発者ブログ

    こんにちは。技術部の吉川です。 最近ではMicroservicesという言葉もかなり浸透し、そのテクニックも体系化されつつあります。 一方でMicroservicesについての話は概論や抽象的な話が多く、具体像が見えないという方もいらっしゃるのではないでしょうか。 当ブログでは1年半ほど前にMicroservicesへのとりくみについてご紹介しました。 当時社内ライブラリだったGarageはその後オープンソースとして公開され、また社内のシステムも当時と比べ飛躍的な進化を遂げています。 そういったクックパッドにおける最近のMicroservices事例を先日Microservices Casual Talksで紹介しました。 Microservicesの抽象的な話は一切割愛し、具体的な事例に終始した内容となっています。 Microservicesの基となる考え方はわかったものの、実践方法で

    クックパッドにおける最近のMicroservices事例 - クックパッド開発者ブログ
  • 7つのサンプルプログラムで学ぶRxJavaの挙動 - クックパッド開発者ブログ

    会員事業部の山下(@tomorrowkey)です。 RxJavaが流行ってますね。最近AndroidクックパッドでもRxJavaが導入されました。この記事は私がRxJavaを使うにあたって検証用のテストコードを書いたものをベースに、RxJavaの挙動をみなさんに紹介したいと思います。 目次 リスト操作でおさらいする基的なRxJavaの使い方 Observable Operator Observer / Subscribe 実行順序を確認するサンプルプログラム 7つのサンプルプログラム リスト操作でおさらいする基的なRxJavaの使い方 RxJavaAPIアクセスやイベントトリガーやリスト処理などを多岐にわたる処理に使うことができます。このエントリでは初学者に一番分かりやすいリストの処理を例に解説します。 これは1から10までの値を渡し、偶数だけにフィルタリングしたうえ、値を10倍に

    7つのサンプルプログラムで学ぶRxJavaの挙動 - クックパッド開発者ブログ
  • モダンJavaScript開発環境 on Rails - クックパッド開発者ブログ

    投稿推進部の外村(@hokaccha)です。 クックパッドブログの開発でRails上にECMAScript6などのモダンなJavaScript開発環境を導入した経験を元にノウハウを紹介したいと思います。 RailsはSprocketsというgemJavaScriptCSSをコンパイルする仕組みが提供されています。Sprocketsによるasset管理の仕組みは非常によくできており、AltJSのトランスパイルやファイルの結合、minifyなど、assetのコンパイルに必要な機能を一通り備えています。 しかし、JavaScriptにおけるモジュールの依存関係の解決や、ライブラリの管理などについてはモダンなJavaScript開発と乖離してきているのが現状です。そこで、Railsでも以下のようなことを実現できることを目標に環境を作りました。 ECMAScript6のシンタックスを使う モジュ

    モダンJavaScript開発環境 on Rails - クックパッド開発者ブログ
    willnet
    willnet 2015/12/14
    超需要ある記事だ
  • Amazon Cognitoについて - AWSが提案するモバイル時代のアカウント管理 - クックパッド開発者ブログ

    モバイルファースト室の @rejasupotaro です。 AWS Summit 2014 でAWS Mobile Servicesのアップデートがありましたが、その中でも気になったAmazon Cognitoについて調べてみました。 Amazon Cognitoとは 今どきのモバイルアプリでは、単純に認証してAPIを叩くだけではなく、サービスにログインしていない状態でも一意なIDを持たせてデータを管理したり、ゲスト状態から会員登録をしたときにデータを引き継いだり、サービス間でシングルサインオンを提供したり、デバイス間で設定を共有できるようにするなど、ユーザーがどのデバイスからサービスにアクセスしてもストレスなく使えるようにするために様々な工夫を凝らす必要があります。 Introduction to Amazon Cognito これらの実装は複雑になりがちで、アプリを作っていると思ったら

    willnet
    willnet 2015/11/19
    まだ便利なのかどうなのかいまいちよくわかってない
  • 機械学習によるレシピの自動分類、その裏側 - クックパッド開発者ブログ

    こんにちは。検索編成部&研究開発チームの原島です。 クックパッドレシピには、内部で、様々な情報が付与されています。例えば、こちらの「母直伝♪うちの茹でない塩豚」というレシピには「肉料理」という情報が付与されています。これらの情報は、クックパッドの様々なプロダクトで利用されています。 レシピに情報を付与する方法は沢山ありますが、その一つに機械学習があります。クックパッドでは、レシピが肉料理か否か、魚料理か否か、...という分類を行うことで、「肉料理」や「魚料理」などの情報をレシピに付与しています。 今日は、分類をどのように実現しているか、その裏側を紹介します。 ■ 実装フェーズ まず、分類器を実装する際に気をつけたことを紹介します。 モデルを決定する 分類を行うには、そのための機械学習のモデルを決定する必要があります。クックパッドでは、十分な精度が出るだけでなく、リファレンスが多いという点

    機械学習によるレシピの自動分類、その裏側 - クックパッド開発者ブログ
  • CI で稀に失敗してしまうテストへの対処方法 - クックパッド開発者ブログ

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

    willnet
    willnet 2015/06/02
    さんこうになる
  • 雑な発想を活かすチーム作り - クックパッド開発者ブログ

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

    雑な発想を活かすチーム作り - クックパッド開発者ブログ
    willnet
    willnet 2015/03/25
    よい
  • クックパッドにおける最近のActiveRecord運用事情 - クックパッド開発者ブログ

    インフラストラクチャー部の成田(@mirakui)です。 Rails の OR マッパーである ActiveRecord ですが、みなさんどのように運用していますか? ActiveRecord を使うと、 SQL を直接扱うことなく、抽象化された表現で RDB にアクセスできるので、アプリケーションの開発効率という観点ではメリットが大きいです。 一方で、 ActiveRecord が駆使されているアプリケーションをサーバに配置してプロダクションとして運用する立場からすると、いくつかの問題に突き当たります。 まずはクックパッド体アプリケーションにおける、最新の rake stats をご覧ください。 +----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines | LOC

    クックパッドにおける最近のActiveRecord運用事情 - クックパッド開発者ブログ
    willnet
    willnet 2014/08/29
    ci で alter table の時間測るの、とてもよいですね
  • どんどん使う - Extension Frameworkの紹介 - クックパッド開発者ブログ

    技術部開発基盤グループの森田です 昨日の2011年7月14日、「Ruby Recipes and Japanese Cooking At Cookpad」におきまして、「どんどん使う」と題し、弊社で開発/運用しているExtension Frameworkの紹介をさせて頂きました。その際に利用したスライドを公開致します。 スライドの主な内容は以下の2点です。 「プロトタイプで作成中のコードを機能単位で実装し、メインのコードと区別することで、低品質と高品質のコードを使い分ける」 「障害が発生した場合も影響を最小限に抑える」 スライドが、少しでも皆様のサービス開発の助けになれば幸いです。 Createanduse [slideshare id=8601603&w=425&h=355&sc=no] View more presentations from eudoxa

    どんどん使う - Extension Frameworkの紹介 - クックパッド開発者ブログ
    willnet
    willnet 2011/07/20
    ustとかあったら見たいな
  • 『TFJ CodeCamp #1』のお知らせ - クックパッド開発者ブログ

    クックパッドオフィスでプチ開発合宿『TFJ CodeCamp #1』へのお誘い さて、先日開催したTech Founders Japanの一環で、 弊社オフィスをプチ開発合宿用に開放していくことにしました。 ものづくりができる方で、起業を視野に入れている方でしたら どなたでもご参加いただくことができます。 「まとまった時間で開発やデザインを進めたい」 「自分が作っているものについて他の人の意見を聞きたい」 「ものづくりが出来る他の人と交流したい」という方に是非 ご利用いただきたいと思います。 第一回は7月19日(月・祝)となります。今後、月2回程度の頻度で 開催していく予定です。 以下、開催概要となります。ご希望の方はふるってお申込みください。 ■ 開催概要 日時:2010年7月19日(月・祝) 10時~18時 場所:クックパッド白金オフィス 費用:無料 参加者:ものづくりができて(エンジ

    『TFJ CodeCamp #1』のお知らせ - クックパッド開発者ブログ
    willnet
    willnet 2010/07/07
    今後、月2回程度の頻度で開催していく予定らしい
  • Hadoopを業務で使ってみた話 - クックパッド開発者ブログ

    8月に入社した佐々木です。こんにちわ! 入社してからはHadoopを使うことが多く、日々、大規模データと格闘しています。大変ではありますが、個人ではなかなか触ることが出来ないような大規模データを触れるのは楽しいです。 さて、Hadoopは最近色々なところで使われ始めてきていると思うんですが、実際に利用してみて困った事やtipsなど、実践的な情報はまだあまり公開されていません。その辺の情報をみんな求めているはず…!! そこで、僕が実際に触ってみて困った事やHadoopを使う上でポイントだと思ったことなどを社内勉強会で発表したので公開してみます。Hadoopを使っている(使いたいと思っている)方の参考になれば幸いです。 [slideshare id=2711363&doc=20091214techblog-091213183529-phpapp02] Hadoopの利用はまだまだ試行錯誤の連続

    Hadoopを業務で使ってみた話 - クックパッド開発者ブログ
  • AWKのススメ - クックパッド開発者ブログ

    はじめまして。インフラチームの菅原といいます。 今年の7月に入社してから、コンソールとにらめっこする毎日を過ごしています。クックパッドのようにアクセスの多いサイトのサーバを扱うことが今まで無かったので、いろいろと勉強になることが多いです。 さて、インフラチームではサーバの状況をモニタリングして、サーバに問題がないかを常に把握するようにしています。そのため日常的にtailでログを追いかけているのですが、そんなときはAWKが非常に便利なことに気付き、最近はかなりAWKにハマっています。 今回は絶賛マイブーム中のAWKの活用例をご紹介したいと思います。 なぜAWKなのか? 残念ながらAWKの知名度はあまり高くないようで、社内でも「なぜRubyでやらないのか?」と聞かれることがありました。僕も入社するまではcutの代わりぐらいにしか使っていなかったのですが、あるときログ出力の整形に使って以来、AW

    AWKのススメ - クックパッド開発者ブログ
    willnet
    willnet 2009/10/24
    awkでログ管理
  • 1