タグ

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

  • 冪等なデータ処理ジョブを書く - クックパッド開発者ブログ

    こんにちは、マーケティングサポート事業部データインテリジェンスグループの井上寛之(@inohiro)です。普段はマーケティングに使われるプライベートDMP(データマネジメントプラットフォーム)の開発を行っています。稿では、その過程で得られた冪等なデータ処理ジョブの書き方に関する工夫を紹介したいと思います。今回は、RDBMS上で SQL によるデータ処理を前提に紹介しますが、この考え方は他の言語や環境におけるデータ処理についても応用できるはずです。 まずクックパッドのDMPと、冪等なジョブについて簡単に説明し、ジョブを冪等にするポイントを挙げます。また、SQL バッチジョブフレームワークである bricolage を使った、冪等なジョブの実装例を示します。 クックパッドのDMPと冪等なジョブ クックパッドのプライベートDMPは、データウェアハウス(社内の巨大な分析用データベースで、クックパ

    冪等なデータ処理ジョブを書く - クックパッド開発者ブログ
  • クックパッド基幹システムのmicroservices化戦略 〜お台場プロジェクト1年半の軌跡〜 - クックパッド開発者ブログ

    インフラストラクチャー部の青木峰郎です。 最近はDWH運用の傍ら、所属とまったく関係のないサービス開発のためのデザインスプリントをしつつ、 Java 10でgRPCサーバーを書きつつ、 リアクティブプログラミングを使った非同期オーケストレーション層を勢いだけで導入したりしています。 ですが今日はそれとはあまり関係なく、クックパッドの中核サービスであるレシピサービスの アーキテクチャ改善プロジェクト、「お台場プロジェクト」の戦略について話します。 これまで、お台場プロジェクトで行った施策について対外的に発表したことはあっても、 全体戦略について話したことはありませんでした。 その一番の理由は、正直に言って、プロジェクトオーナーであるわたしにもプロジェクト全体の姿が見えていなかったからです。 しかし現在プロジェクト開始から1年半が経過してようやく全貌が見えてきたので、すべてをお話ししようと思い

    クックパッド基幹システムのmicroservices化戦略 〜お台場プロジェクト1年半の軌跡〜 - クックパッド開発者ブログ
  • ESDoc - The Good Documentation For JavaScript - クックパッド開発者ブログ

    こんにちは。会員事業部の丸山@h13i32maruです*1。 ソフトウェアのドキュメント(マニュアル)を書くには色々なツールや方法があります。 JavaScriptの場合はJSDocというドキュメンテーションツールがデファクトスタンダードです。 ですが、JavaScriptの最新仕様であるECMAScript2015(ES2015)がリリースされたことにより、 JSDocの競合として新しいツールが登場したり、JSDoc自体もバージョンアップしたりしています。 記事ではそうした新しいツールの一つであるESDocを紹介します。 ESDocとは? ESDocとは私が2015年4月から開発を行っている、JavaScript(ES2015)向けの良いドキュメントを作るためのドキュメンテーションツールです。 https://esdoc.org/ https://github.com/esdoc/es

    ESDoc - The Good Documentation For JavaScript - クックパッド開発者ブログ
  • クックパッドのAmazon Echo向けサービスをリリースしました 〜開発で得られた音声操作の知見〜 - クックパッド開発者ブログ

    こんにちは。研究開発部エンジニアの山田(@y_am_a_da)です。ついに日でも Amazon Echo の発売が始まりましたね。 今回は Amazon Echo 向けにリリースをしたクックパッドのスキル( Amazon Echoではアプリと呼ばずにスキルと呼びます)についての紹介と、開発をしてみてわかった音声操作の強みと弱みについて紹介をしていきたいと思います。 Amazon Echoとは Amazon Echo は、Amazon 社の販売するスマートスピーカーです。声で命令をすることで、端末に内蔵されている Alexa と呼ばれる音声アシスタントが処理を行ってくれます。 特徴として、基的に操作は全て音声で行い、レスポンスも音声で返ってくる点が挙げられます(海外では液晶が搭載されており、そこへレスポンスを返すモデルも存在します)。 すなわち、スキルの開発者は、 PC やスマートフォン

    クックパッドのAmazon Echo向けサービスをリリースしました 〜開発で得られた音声操作の知見〜 - クックパッド開発者ブログ
  • 複数サービス間の整合性の取り組みについて - クックパッド開発者ブログ

    こんにちは。技術部 開発基盤グループの大石です。 日は開発基盤グループが社内の各サービスに提供している共通基盤サービスの1つである共通決済基盤を例にサービス間の整合性を維持するための取り組みを紹介したいと思います。(共通決済基盤については以前紹介した クックパッドの課金を支える技術 を参照ください) 決済における整合性を考える サービス間連携は決済に限らず発生するものですが、共通決済基盤の場合、組織外にあるサービスと通信する必要があり、コントロールができない外的要因に影響を受けやすい点と、決済という確実性が求められる処理を含んでいるということの間で整合性について考える必要があります。 まずは、共通決済基盤上で行われるサービス間通信の種類とそれぞれで通信を行っている際にエラーが起きた場合にどのようにハンドリングすれば整合性を維持できるかを考えてみます。 サービス間通信の種類と流れ 共通決済

    複数サービス間の整合性の取り組みについて - クックパッド開発者ブログ
  • 管理下にないウェブサイトを適切に改修するために - クックパッド開発者ブログ

    株式会社トクバイの根岸です。みなさん、SSSランキングの調子はどうでしょうか。僕は今朝家を出たときには766位でした。一睡もしてません。 さて、今回もブラウザ拡張を作ったよという話です。"外部サイト向けバナー・リンク"という、我々の管理下にないウェブサイトに設置するウィジェットなどの管理・改修をどのように行っているのかについて書きました。 外部サイト向けバナー・リンクについて トクバイが運営しているクックパッド特売情報は、今日のチラシが見られる、お買い物をするひとたちのためのサイトです。閲覧できるチラシ情報自体は、基的にはスーパーの店員さんによって管理がされています。 では店員さんがなぜチラシをアップロードするのかというと、単純な観点でものを言えば、販促のためです。 それでは、なぜ、販促ができるのかというと、様々な認知・再訪チャネルがクックパッド特売情報には存在し、お買い物をするひとたち

    管理下にないウェブサイトを適切に改修するために - クックパッド開発者ブログ
    JHashimoto
    JHashimoto 2016/09/28
    知らなかった!“また、業務にChrome拡張を利用する上で結構重要なtipsとしてChrome拡張は限定公開可能という点があります。”
  • 「現在時刻」を外部入力とする設計と、その実装のこと - クックパッド開発者ブログ

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

    「現在時刻」を外部入力とする設計と、その実装のこと - クックパッド開発者ブログ
  • 複数のエンジニアと開発を円滑に進めるためのissueの立て方 - クックパッド開発者ブログ

    こんにちは。クックパッド特売情報ディレクターの田中です。 前回ヘルスケア事業部の濱田くんのエントリーでエンジニア以外のGitHubの利用について紹介されていましたが、今回は私がチーム開発で実践しているissueの立て方についてご紹介したいと思います。 チームが大きくなってきてヒズミが生じてきた 来、ディレクターが開発を伴わない価値検証を十分に行った上で仕様を考え、デザイナー・エンジニアに引き継ぐのが理想的だと思います。 私自身も当初はその開発の進め方を採用していましたが、チームが大きくなり、ディレクター1人で関わるエンジニアが増えてくると、状況は変わってきました。 マルチタスク的に仕様を考えていたために詰めが甘い部分が多く、手戻りが発生してしまったり、仕様の準備が追いつかず、エンジニアの手が空いてしまうことが増えてしまったのです。 当初は自分自身の頑張りが足りないからだと、徒に気合いと根

  • いまさら聞けない「コードの英語」超入門 - クックパッド開発者ブログ

    広告事業部の鈴木達矢です。コーディングをしてると変数やメソッド名の付け方に悩むことって多々ありますよね。逆にコードを読んでいると単語の選択がこれでいいのかなという時や、動詞の活用形が間違っていてよく意味がわからない、時に潔く日語の変数名になっていることも見かけます。でもプログラミング言語の単語が英語をベースにしていますし、Railsを使っている場合は日語が規約(Convention)に合わなかったりします(複数形が無いなど)。それから動詞の活用形が違っていると主語(動作の主体)が変わってしまい、意味が変わってしまいます。その結果コードの可読性が落ち混乱を招きやすくなります。 いくつかの基的な法則だけおさえておけばコーディング中に可読性の高い単語の選択ができるようになります。今回はそれを目的に、英語の扱いに都度時間を費やしてしまうような方に向けていくつかの法則をご紹介します。*1 変数

    いまさら聞けない「コードの英語」超入門 - クックパッド開発者ブログ
  • チーム開発の進め方 - クックパッド開発者ブログ

    こんにちは!クックパッド編集室メディア開発グループ長の @yoshiori です。 今回はウチのチームの開発の進め方や見積もりの仕方を説明しようと思います。 実はコレ系の話は 5 年前にもデブサミで発表 したのですがこの時はリリースまで 1 年とかのレベルのプロジェクトの進め方の話でした。今回は 1,2 ヶ月でリリースまで持っていく開発の進め方を説明します。 動画サービス部分を microservices 化するときに実際に行った事を元に説明します。開発者は 3 人で 1.5 ヶ月位の開発です。 何故このようなことを行うのか 誰だって楽しく仕事がしたいし、なるべく不安などは無い方が良いはずです。 例えば自分がやっている作業がどうなったら終わりなのかわかっていなければ不安でしょうし、いつまでに作ればいいのかわかっていなければ不安でしょう。 そういった不安をなるべく無くすためにうちのチームでは

    チーム開発の進め方 - クックパッド開発者ブログ
  • クックパッドの検索の裏側 - クックパッド開発者ブログ

    初めまして、インフラストラクチャー部の加藤 (@EugeneK) です。 クックパッドでは現在178万ものレシピが公開されていますが、目的のレシピを探すために検索機能を提供しています。 今回は検索機能の裏側の仕組みについて、インフラストラクチャーの観点からお話ししようと思います。 全ての検索機能を支えるSolrと周辺のアーキテクチャ クックパッドにはレシピの検索だけでなく様々な検索機能がありますが、その全てはSolrを活用して実装されています。 以前はMySQL Tritonnによる全文検索機能を使用していましたが、2011年頃からSolrに切り替わりました。 クックパッドではSolrをマスタ - スレーブ構成にすることで冗長性と負荷分散を実現しています。以下の構成図をご覧ください。 マスタとスレーブの間には、リピータと呼ばれる検索インデックスを中継するためだけの役割のサーバがいます。この

    クックパッドの検索の裏側 - クックパッド開発者ブログ
  • 2009 12月 01 « クックパッド開発者ブログ

    はじめまして、技術部の西岡です。 普段の業務では社内システムやサービス開発をメインに行っています。 今年の6月に入社して以来、ひたすら何かを作っているのですが、クックパッドでは自分のやりたいことをベースに業務を決めることができるので、日々、楽しい開発ライフを送れています。 さて、クックパッドには様々な社内システムがあるのですが、その内の1つに全社員の目標を管理できるシステムがあります。このシステムでは、目標と共に顔写真や得意なことを設定する仕組みになっているため、普段あまり関わりのない人が、どのような業務を行っているのかをざっくり知ることが出来ます。 このシステムは私が開発したのですが、開発する際に少し余裕があったことと、個人的に興味があったことから、iPhoneのSafariからも閲覧できるようにしてみました。 残念ながら肝心のシステム内部の話はあまり紹介できないのですが、対応する際に調

    JHashimoto
    JHashimoto 2009/12/02
    "iPhoneのSafariからも閲覧できるようにしてみました。対応する際に調査したSafariの仕様などについての資料をアップしました。"
  • 1