タグ

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

  • 最新のログもすぐクエリできる速くて容量無限の最強ログ基盤をRedshift Spectrumで作る - クックパッド開発者ブログ

    こんにちは。去年の今頃は Rust を書いていました。 インフラストラクチャー部データ基盤グループの id:koba789 です。 背景 クックパッドではデータ基盤の DBMS として Amazon Redshift を利用しています。 既存のデータ基盤について詳しいことは クックパッドのデータ活用基盤 - クックパッド開発者ブログ を参照してください。 今まで、ログは数時間に1度、定期実行ジョブで Redshift 内のテーブルにロードしていました。 ロードジョブの実行間隔が "数時間" と長めなのは、Redshift のトランザクションのコミットが遅いためです。 クックパッドでは数百ものログテーブルがあるため、仮に1分おきにすべてを取り込もうとすると秒間数回以上のコミットを行わなければなりません。 このような頻繁なコミットは Redshift 全体のパフォーマンスを悪化させてしまいます

    最新のログもすぐクエリできる速くて容量無限の最強ログ基盤をRedshift Spectrumで作る - クックパッド開発者ブログ
  • デザインとエンジニアリングをつなげる取り組み - クックパッド開発者ブログ

    こんにちは、Komerco事業部デザイナーの藤井(@kenshir0f)です。 主にKomercoのサービスデザイン全般とView周りの開発を担当しております。 今回はKomercoの開発チームで実践している「デザインとエンジニアリングをつなげる取り組み」についてお話します。 なぜデザイナーが実装に入るのか Komercoではユーザーさんへスピーディーに価値を届けるための取り組みを積極的に採用しています。 素早くリリースすることによって、早い段階でフィードバックをもらうことができるほか、 手戻りなどの失敗リスクを最小限に抑えることもできます。 デザイナーがデザインして、エンジニアが実装する、という流れの中で、 実機でのデザイン確認や細かい調整などで想定以上に工数がかかることがあるため、 見た目に関する部分はデザイナーが実装に入ることで、デザイン確認や調整の時間を巻き取とっています。 実践し

    デザインとエンジニアリングをつなげる取り組み - クックパッド開発者ブログ
  • デザインとは「問題解決」だけじゃない? - クックパッド開発者ブログ

    事業開発部のデザイナー平井です。Cookpad Do!というサービスの運営をしているチームに所属しています。 cookpad.do Cookpad Do!は、前身サービス「Cookpad料理教室」のブランド再開発として2018年8月8日に生まれた新サービスで、料理をコンテンツとした体験型イベントを開催するオーナーがイベントを掲載し、参加する人がイベントの予約・決済を行えるプラットフォームサービスです。 今回はグロース期に入ったサービスの開発・運営していく中で、何を考え、どのように企画し、何を気をつけながら価値創出をしようとしているかの話をしようと思います。 料理を「楽しみ」にする 世に存在するサービスデザインは、よく「顧客の問題の解決」という言葉で説明されることがありますが、クックパッドが目指す「毎日の料理を“楽しみ”に」というビジョンを目指す上では、痛みや不満などの問題の解決という文

    デザインとは「問題解決」だけじゃない? - クックパッド開発者ブログ
  • Chaos Engineering に向けてレシピサービスの Steady State を追求する - クックパッド開発者ブログ

    こんにちは、今年ソフトウェアエンジニアとして新卒入社した @itkq です。社会人になってから 1 クールで見るアニメの数がガクッと減っていることに気づいて最近は無力を感じています。さて、この開発者ブログで「Chaos Engineering やっていく宣言*1」が公開されたことは記憶に新しいと思います。私はインフラストラクチャー部 SRE グループに配属され、最近は Chaos Engineering に関わる取り組みも行っています。その中から今回は「レシピサービスの Steady State を追求する」取り組みについて、背景や現状も含めて紹介します。 Steady State とはなにか、なぜ必要か 一昔前の Web サービスといえば、様々な機能が 1 つのアプリケーション上に実装されたモノリシックアーキテクチャが一般的でした。その後サービスという単位で機能を切り出して別アプリケー

    Chaos Engineering に向けてレシピサービスの Steady State を追求する - クックパッド開発者ブログ
  • インタプリタ開発者によるRubyの挙動解析への道 - クックパッド開発者ブログ

    Ruby インタプリタを開発している笹田です。今年のクリスマスにリリース予定の Ruby 2.6、楽しみですね(無事、出るといいな)。 この記事では、私がRubyの挙動を調べるために頑張った記録を書いておきます。 基的に、単純作業の積み重ねなので、難しい内容はありません。お気楽にお読みいただければ幸いです。 大雑把にまとめると、こんな内容が書いてあります。 デバッグカウンタの導入によるRubyの詳細な挙動調査の紹介 (私には)簡単な話で、Rubyをいろいろいじって、Rubyの細かい挙動、しかもほとんどの人が気にしない挙動を調べられるようにした話です。 多くの人が興味ないだろう、Rubyに仕込まれている統計情報をとる仕組みを紹介します。 クックパッドアプリを手元で調査できるようにした話 (私には)難しい話で、Ruby 開発版で弊社アプリを手元で動かすために四苦八苦した記録です。 Ruby

    インタプリタ開発者によるRubyの挙動解析への道 - クックパッド開発者ブログ
  • レシピの画像検索に必要な技術 - クックパッド開発者ブログ

    研究開発部の @ayemos です。ダイエット中です。 画像検索とは 検索という言葉からは、いくつかの単語を入力してそれを含む文章を検索するという体験を自然と連想できるかと思います。このような検索の体験の第一歩は、ユーザーが欲しい情報に対して単語の列としてクエリを構築するということから始まります。例えば、「支払うべき住民税の額」という情報を得たい時には「目黒区 住民税」というクエリを自ら考えて入力するといったようにです。 単語列を利用した文章検索を行う際、検索クエリが来るたびに検索対象となる文章を上から下まで全探索するのでは時間がかかってしまいます。そのためしばしば全探索の代わりに転置インデックスを用いて高速化された探索手法を用います。転置インデックスは端的に単語からそれを含む文章(とその位置)をマップする情報であり、これを用いることで、単語の列をクエリとして、それらのすべてあるいは一部を

    レシピの画像検索に必要な技術 - クックパッド開発者ブログ
  • 機械学習を用いてユーザーのご意見分類業務を効率化した話 - クックパッド開発者ブログ

    こんにちは。研究開発部の @vanhuyz です。機械学習・自然言語処理を中心に研究開発しています。 今回は機械学習を活用してユーザーからのご意見を 81 のカテゴリーに自動分類し、ユーザーサポートスタッフによる手動分類の工数を半分にできた話を紹介したいと思います。 背景 クックパッドは現在約 5,500 万人の国内月間ユーザーがあり、日々ユーザーからたくさんのご意見やご要望を頂いています。創業してからユーザーの声を大事に扱う文化があり、どのご意見も一度目を通すようにユーザーサポートスタッフが努力しています。ご意見はスタッフによってさらに分類され、必要に応じてディレクターやエンジニアに振り分けられています。 例えば、こんな感じのご意見が来ています。「このレシピは簡単なので、子供とやってみました。楽しかったです」や「機種変更して、ログイン出来ません」や「もっと具体的な内容でも検索できるように

    機械学習を用いてユーザーのご意見分類業務を効率化した話 - クックパッド開発者ブログ
  • Chaos Engineering やっていく宣言 - クックパッド開発者ブログ

    技術部のヨシオリです。 Netflix が Chaos Engineering の論文を公開して 2 年ほど経ちました。 クックパッドは最近、 Chaos Engineering を導入する事を決めました。 この記事ではその背景を紹介したいと思います。 そもそも Chaos Engineering とは Netflix では Failure Injection Testing として、営業時間中に意図的に障害を起す事をやっていました。Chaos Monkey というインスタンスとサービスを落すものから Chaos Gorilla、Kong という availability zone や region 単位で障害を発生させるものなどです。 その経験から Chaos Engineering というものが提唱されました。 Principles of Chaos Engineeringによれば C

    Chaos Engineering やっていく宣言 - クックパッド開発者ブログ
  • 新規決済手段導入に際し、なるべく丁寧にテストケースを作成した話 - クックパッド開発者ブログ

    会員事業部の日高尚美(@natan3)です。 半年前になりますが、クックパッドでは Android ユーザ向けにプレミアムサービスの決済手段の一つとして Google Play 決済を導入しました。 ユーザに新たな機能を提供する前には、何らかの形で開発者側での検証が必要です。 Google Play 決済導入バージョンのリリースは、ユーザのお金を扱うこともあり、不具合が起きた際にサービス全体の信用に関わる、非常にリスクの高いリリースでした。 それに伴い、検証もできる限り万全に行わなければなりません。 そのため、なるべく丁寧にテストケースを作成し、それをもとに検証を実施することで新機能が期待通りに実装されていることを担保しました。 丁寧にテストケースを作成したから、というだけではもちろんありませんが、リリースから半年経った今でも Google Play 決済周りの目立った不具合はまだ見つかっ

    新規決済手段導入に際し、なるべく丁寧にテストケースを作成した話 - クックパッド開発者ブログ
  • 無理をしないコードレビュー - クックパッド開発者ブログ

    会員事業部の三吉(@sankichi92)です。 クックパッドでは、GitHub Enterprise の Pull Request を使ったコードレビューを広く実施しています。 この記事では、私がコードレビューすることに対する苦手意識をなくすために意識したことを紹介します。 クックパッドでは、テックリードや新卒、インターン、バイトといった肩書きに関係なく、誰もがレビュワー・レビュイーになります。 チームやプロダクトによって開発ルールは少しずつ異なりますが、私の所属する会員事業部では、PR を出したときに GHE やチャットで部内のエンジニアにメンションして、その時にレビューできる人がレビューするという形を取っています。 私は、昨年2017年に新卒入社したのですが、それまでは個人開発や研究用のコードしか書いたことがなく、短期インターンシップを除くチーム開発の経験がありませんでした。 配属当

    無理をしないコードレビュー - クックパッド開発者ブログ
  • Web アプリケーションを把握するためのコンソール - クックパッド開発者ブログ

    技術部開発基盤グループの鈴木 (id:eagletmt) です。 クックパッドではほとんどの Web アプリケーションが Amazon ECS 上で動く状態となり、またマイクロサービス化や新規サービスのリリースにより Web アプリケーションの数も増えていきました。 個々のアプリケーションでは Docker イメージを Jenkins でビルドして Amazon ECR にプッシュし、Rundeck から hako を用いて ECS にデプロイし、またその Web アプリケーションからは Amazon RDS、Amazon ElastiCache 等のマネージドサービスを活用しています。 このように多くの Web アプリケーションが存在し、また各アプリが別のアプリや AWS の様々なマネージドサービスを利用している状況では、どのアプリが何を使っているのかを把握することが困難になっていきます

    Web アプリケーションを把握するためのコンソール - クックパッド開発者ブログ
  • 良い感じにログを収集するライブラリ、Puree-Swiftをリリースしました - クックパッド開発者ブログ

    こんにちは。技術部モバイル基盤グループの三木(@giginet)です。 クックパッドでは、Pureeと呼ばれるiOS/Android/ReactNative向けのログ収集ライブラリを公開しています。 モバイルアプリのログ収集ライブラリ「Puree」をリリースしました - クックパッド開発者ブログ ログ収集ライブラリ Puree の iOS 版をリリースしました - クックパッド開発者ブログ 最近、以前開発されていたPureeをpure Swiftで書き換え、OSSとして公開しました。 この記事では、新しくなったPureeをご紹介します。 概要 クックパッドでは全社的にAmazon Redshiftを中心としたデータ活用基盤を構築しています。 クックパッドのデータ活用基盤 - クックパッド開発者ブログ この仕組みを使い、公開している多くのモバイルアプリからも、1つのログ基盤にさまざまなログを

    良い感じにログを収集するライブラリ、Puree-Swiftをリリースしました - クックパッド開発者ブログ
  • 仮説検証とサンプルサイズの基礎 - クックパッド開発者ブログ

    パートナーアライアンス部 森田です。有料会員の獲得施策や、それに関わるサービス内動線の最適化を担当しています。 記事の対象 仮説検証を通じて何かを改善をしたいと思っている人 仮説検証の際に「どれくらいのデータを集めたら良いか」分からない人 はじめに 仮説検証とは「仮説を立て、それを証明するためのデータを集め、真偽を確かめること」です。今回は仮説検証を行う際の手順と、その検証に必要なサンプルサイズの考え方を説明します。サンプルサイズの話のみ関心があるかたは、前半を飛ばし「サンプルサイズの決め方」を読んでください。 目次 記事の対象 はじめに 目次 仮説検証のつくりかた 1. 仮説をたてる 2. 施策/KPIを考える 3. 仮説検証後のアクションを決める 4. 対象を決める 5. サンプルサイズを計算する サンプルサイズの決め方 答えを先に サンプルサイズを決める二つの要素 「二つの平均値」と

  • クックパッド サマーインターンシップ2016の資料を公開します - クックパッド開発者ブログ

    技術部開発基盤グループの @moro です。 クックパッドでは、昨年に引き続き今年も、夏の技術職インターンシップを実施しました。 クックパッドのインターンシップは前後半に分けた構成になっていました。まず前半はWebサービス開発に必要な技術の中から6つの分野に関する講義や実習を行いました。さらに後半は、前半の座学に合格した方を対象に、メンターとなる社員と一緒に実際の開発現場に入り、具体的な問題解決に取り組んでもらいました。 その中で、前半の講義に使った資料を公開します。 1日目 Git (@moro) 昨年に引き続き、講義初日はGit, TDD, Railsを1営業日で一巡りするという、忙しい構成でした。 Git編では、すでにGitを使っているエンジニアも多いだろうと想定して各コマンドの紹介などは最小限に済ませました。代わりに、Gitの内部構造を説明し「コミットを覚えておけばなんとかなる」感

    クックパッド サマーインターンシップ2016の資料を公開します - クックパッド開発者ブログ
  • 開発速度を上げるための Pull-Request のつくり方 - クックパッド開発者ブログ

    こんにちは、投稿開発部の森川 (@morishin127) です。クックパッド、お料理アルバム、みんなのお弁当の iOS アプリの開発等に携わっています。 クックパッドでの開発は GitHub Enterprise 上で行われており、書いたコードをプロダクトに取り込む前には基的に第三者のコードレビューが必須です。コードレビューはプロダクトの品質向上に貢献していますが、往々にして結構な時間と労力がかかるものです。Pull-Request を出してレビューをしてもらい指摘の修正を繰り返していると、場合によってはマージに数日〜1週間ほどかかってしまうこともあります。自分の開発速度を速めるため、また周りのエンジニアの開発速度を下げないためにレビューしやすい Pull-Request を出すことは重要です。この記事ではレビューしやすい Pull-Request のために心がけていることを紹介したい

    開発速度を上げるための Pull-Request のつくり方 - クックパッド開発者ブログ
  • Android/iOSアプリのテストの区分戦略 - クックパッド開発者ブログ

    技術部の松尾(@Kazu_cocoa)です。 クックパッドのモバイルアプリ開発では、どのようなテストを書き、どのようなタイミングで、どのようなテストを実施するか?に関してエンジニア各位が意識を合わせるためにテストサイズを定義し運用してきました。ここでは、そんなテストサイズに関して簡単ですがまとめておこうと思います。 テストサイズとは ソフトウェアテストに関わったことがある方なら テストレベル という言葉には出会ったことがあるかと思います。JSTQBでは、このテストレベルは"管理していくテストの活動のグループ"と定義しています*1。 そうでない方も、俗に言う単体テスト/統合テストなど聞いたことがあるかと思いますが、その区分がここで示しているテストレベルとなります。 一方、このテストレベルはV字型と言われる開発工程と合わせて世の中で広く使われているため、社内における共通認識を構築するにあたり個

    Android/iOSアプリのテストの区分戦略 - クックパッド開発者ブログ
  • 海外のユーザーを向いたプロダクト開発の工夫 - クックパッド開発者ブログ

    こんにちは、検索事業部の岡根谷です。クックパッドは日だけでなく海外でもレシピサービスを展開しています。今回は自分がプロダクトオーナーとして行った「関連レシピ」の複数言語同時リリースの話をしたいと思います。 関連レシピとは? レシピページの下にあり、ユーザーの行動から関心を汲んで自分にぴったりなレシピを見つけるのを助ける機能です。 「パスタ」で検索してジェノベーゼパスタに興味を持ってレシピを開いた人が、より自分にあったジェノベーゼパスタを見つけることができる、というようなシナリオを想定しており、たくさんのレシピを闇雲に探索するのではなく絞り込む方向に導くことで「作る」という行動に繋げたいという思いがあります。 チームメンバーは世界中に散らばっており、各国のエンジニアやコミュニティマネージャーと連携して、スペイン語、アラビア語、インドネシア語、英語、ベトナム語など複数の言語のAndroid

    海外のユーザーを向いたプロダクト開発の工夫 - クックパッド開発者ブログ
  • ユーザーの気持ちを考えてデザインをするために大切なこと - クックパッド開発者ブログ

    こんにちは。クックパッド ダイエットのデザイナーの新です。 クックパッド ダイエットでは、「正しくべてやせる」をコンセプトに銀座と代々木にある店舗でのダイエット指導と、ダイエット情報を毎日配信するメディアサイトの運営を管理栄養士と一緒に行っており、私はデザインやコーディングを担当しています。 今回は新規コンテンツを作る中で、ユーザーの声をどのようにデザインに反映していくかというお話をさせていただきます。 どんな気持ちでダイエットラボを利用している? クックパッド ダイエットは、ユーザーの約85%が女性で、年齢でいうとメディアの方は20代〜40代と幅広く、店舗の方は40代の方を中心にご利用いただいています。 サイトや店舗ユーザーの目的の多くは“ダイエット”ですが、店舗にいる管理栄養士を通して「歳を重ねるごとに痩せにくくなって困っている」「体調が良くないので改善したい」という、より具体的な

    ユーザーの気持ちを考えてデザインをするために大切なこと - クックパッド開発者ブログ
  • 「現在時刻」を外部入力とする設計と、その実装のこと - クックパッド開発者ブログ

    こんにちは。技術部 開発基盤グループの諸橋です。 クックパッドでは昨今の多くのWeb企業と同じように、GitHub EnterpriseのPull Requestを使ったコードレビューを広範に実施しています。わたしたちのコードレビューでは、ソースコードの字面にとどまらず、サービスの機能として魅力的かどうかや、保守性を含めた設計が適切かといった議論に発展することも良くあります。 きょうはそんななかで話題に上がった「現在時刻」の扱いかたに関する設計の話を書きます。 背景 サービスを開発・運営している我々には、時間帯によって出し分けたり、特定の期間のみに表示したいコンテンツがたくさんあります。 そのたびにデプロイし直すというのはつらいので(特に24:00に出なくなるコンテンツなど)なんとかしたくなりますが、一方で時限式のコンテンツはその時になるまでちゃんと動いているか確証が取れないので怖いです。

    「現在時刻」を外部入力とする設計と、その実装のこと - クックパッド開発者ブログ
  • 開発の見積もりとスケジュール管理 - クックパッド開発者ブログ

    こんにちは。会員事業部の丸山です。 エンジニアが開発を開始する時にはタスクの見積もりとスケジュールを作成行って、実装を進めていくと思います。 しかし1ヶ月を超えるような規模の開発をする場合、なかなか予定通りの期日に終わらなかったりすると思います。 そして大抵の場合、増える方向になりますよね。 今回はそういうことにならないために、私が気をつけていること・実践していることをいくつか紹介したいと思います。 見積もりとは まずは「見積もり」とは何なのかを正しく理解したいと思います。 一般的には「見積もり」=「全タスクとその工数を洗い出す」というものだと思います。 しかしここで以下のことに気をつける必要があります。 見積もりとスケジュールとコミットメントは違う 見積もりとはあるタスクがどれだけの工数(規模)なのかを算出することです。 対して、スケジュールとはあるタスクがどれだけの工期(期間)なのかを

    開発の見積もりとスケジュール管理 - クックパッド開発者ブログ