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

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

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

    最新のログもすぐクエリできる速くて容量無限の最強ログ基盤をRedshift Spectrumで作る - クックパッド開発者ブログ
    konishika
    konishika 2019/03/15
  • 非SPAなサービスにReactを導入する - クックパッド開発者ブログ

    投稿開発部の外村(@hokaccha)です。今回はReactについてのお話です。 ReactとSPA 最近JavaScriptやそれを取り巻くフレームワークなどの話題では、サーバ側はAPIのみを提供し、View(HTML)は全てJavaScriptで描画するような、いわゆるシングルページアプリケーション(以下SPA)についてよく語られます。 一方で、SPAを構築するにはコストがかかることも事実で、特にフロントエンドエンジニアが多くない環境では、従来通りサーバーサイドでViewを書きつつ動的な部分だけJavaScriptで処理するというアーキテクチャのほうが現実的な場合も往々にしてあります。 今回はこのような、サーバー側でHTMLを生成し、一部の動的な部分だけをReactで書くためのTipsを紹介します。 なお、基的にサーバーサイドはRails前提ですが、RailsにおけるReactの開発

    非SPAなサービスにReactを導入する - クックパッド開発者ブログ
    konishika
    konishika 2016/10/27
  • MySQLを1〜2時間でスケールアウトする - クックパッド開発者ブログ

    最近、Elastic BeanstalkやECSと戦っているSREチームの菅原です。 P5をやりたいのにPS3もPS4も持っていないので指をくわえて羨ましがっている毎日です。 この記事では、突然のアクセス増に備えるために、MySQLのスレーブを1〜2時間でスケールアウトできるようにした話を書きます。 MySQL on EC2 クックパッドは周知の通りAWSを利用していますが、主要なデーターベースについてはAmazon RDSではなくMySQL on EC2を使っています。 これは以下のような理由によるものです。 歴史的な経緯: AWS移行当時、RDSが無かった。また、移行後もしばらくはTritonnを使っていたため、RDSを使うことができなかった オンラインメンテナンスの実現: VPCルートテーブルを使った仮想IPとMHA for MySQLを使ってダウンタイムゼロのマスタDBの切り替えを

    MySQLを1〜2時間でスケールアウトする - クックパッド開発者ブログ
    konishika
    konishika 2016/10/06
  • アプリのアップデートに依存せずにアプリの画面を改善し続ける仕組み - クックパッド開発者ブログ

    検索事業部の日高(@kaa)です。 検索事業部では作りたいレシピが見つかることをひとつの目標に、レシピを探す行動を助けることに挑戦しています。 その中で、レシピ検索した際の結果画面でのコンテンツを改善していくための仕組みについて紹介します。 作りたいレシピが見つかるためへの色々なアイデア レシピ検索結果画面でレシピを一覧で見せるだけでなく、作りたいレシピがより見つかるために考えられることはたくさんあります。 例えば もし、入力ミスと思われる検索ワードだったら 正しいと思われる検索ワードを提案、または正しいと思われるワードで検索し、元のワードも表示(Google検索のように) あいまいな検索ワードだったら より具体的に検索できるよう検索ワードを提案。「さっぱり」だったら「冷しゃぶ」「さっぱり 麺」など。 (具体的なワードで検索するとレシピが決まりやすい傾向があります) さらに小分類をもつワー

    アプリのアップデートに依存せずにアプリの画面を改善し続ける仕組み - クックパッド開発者ブログ
    konishika
    konishika 2016/08/01
  • nginx で omniauth を利用してアクセス制御を行う - クックパッド開発者ブログ

    インフラストラクチャー部 id:sora_h です。クックパッドでは、社内向けの Web アプリ (以降 “社内ツール”) を社外のネットワークから利用する際、アプリケーションレベルでのアクセス制御とは別に、リバースプロキシでもアクセス制御を実施しています。*1 これまで BASIC 認証あるいは VPN による社内ネットワークを経由した接続という形で許可していました。しかし、iOS の Safari などでは BASIC 認証時のパスワードを保存できない上、頻繁に入力を求められてしまいますし、VPN はリンクを開く前に接続をしておく必要があります。これにより、社内ツールを社外で開く時に手間がかかってしまう問題がありました。 これに対し、一部では typester/gate などを導入し Google Apps での認証を行なっていました。しかしいくつか問題があり、非アドホックな対応では

    nginx で omniauth を利用してアクセス制御を行う - クックパッド開発者ブログ
    konishika
    konishika 2015/10/16
  • インフラエンジニアの責任範囲と評価 - クックパッド開発者ブログ

    インフラストラクチャー部の成田です。2015年10月現在、インフラストラクチャー部には私を含め7人のインフラエンジニアが所属しており、このメンバーでクックパッド体サービスをはじめ様々な新規事業やいくつかの子会社のサーバを運用しています。私自身もエンジニアではありますが部のマネージャも兼ねているため、立場上、社外の方からインフラエンジニアのマネジメントについて質問されることがよくあります。今回は、私自身の考え方とクックパッド社における事例を紹介したいと思います。 「インフラエンジニア」とは 「インフラエンジニア」という言葉の定義はあいまいで、しばしば議論の的になります。傍目からは明らかにインフラエンジニアであるように見えるにも関わらず「私はインフラエンジニアでは無い」と主張する人たちもいます。このような状況になっているのは、サーバ運用に関する業務分掌が会社ごとに異なるからであると私は考えて

    インフラエンジニアの責任範囲と評価 - クックパッド開発者ブログ
    konishika
    konishika 2015/10/07
  • 機械学習によるレシピの自動分類、その裏側 - クックパッド開発者ブログ

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

    機械学習によるレシピの自動分類、その裏側 - クックパッド開発者ブログ
    konishika
    konishika 2015/10/01
  • 調整の心得 - クックパッド開発者ブログ

    会員事業部の森田です。 対象と内容 この記事は、クックパッドと同じような200~300名規模の組織で働く、「最近調整が多くてコードを書く時間がないなぁ」と思い始めた30代エンジニアを対象として、日々の調整の負担を減らすための「考え」と「行動」を整理し、まとめたものです。 組織における分業と調整 組織に所属する人たちは協力して組織目標の達成を目指します。みんなで同じことをしてもしょうがないので、必然的に役割を分担(分業)をします。分担した仕事はなんらかのタイミングで統合する必要があります。その統合が調整です。つまり分業と調整はセットです。じゃどういう分業があるのかといえばそれは組織構造によります。今回は私達が採用している事業部別組織下*1 での調整の話をします。 分業の種類 事業部別組織では垂直と水平の2つの分業が存在します。それぞれに少し毛色の違う調整が発生するわけですが、いくつかのことを

    調整の心得 - クックパッド開発者ブログ
    konishika
    konishika 2015/09/14
  • よく言われる「施策を数字で」というやつについて - クックパッド開発者ブログ

    新規広告開発部の大野です。今回は、「目標を達成するための施策を数字で考える」ということについて、普段やっていることを書きます。 施策の評価に関しては Rを使う などいろいろなノウハウがありますし、Web上の行動改善などはそれはそれで、世にノウハウがたくさんあります 。 今回は、例えば、期初に事業目標を決めた次のステップとして、全体の優先度を決めるあたりの段階の話をしましょう。 分解: 数字から取り組む施策を決める まず、どの施策をするかを決めるわけですが、必ず、最初に目標を因数分解しています。 広告なら「収益 = 単価 × 在庫 × 販売率」といういつもの式があるので、これが元です。例えば 単価がCPCなら在庫はクリック回数。つまり、imp(表示回数) × CTR 単価が表示なら、在庫は単純に imp となります。で、販売方法によって、どの項をあげるのが有効か、つまり、現実的に伸びるか、ど

    よく言われる「施策を数字で」というやつについて - クックパッド開発者ブログ
    konishika
    konishika 2015/09/09
  • 検索ログから「じわじわ検索頻度が上昇しているキーワード」を見つける - クックパッド開発者ブログ

    こんにちは。トレンド調査ラボの井上寛之(@inohiro)です。 普段は法人向けサービス「たべみる」の開発を担当しています。 たべみるはクックパッドの検索ログを基にしたサービスで、任意のキーワードの検索頻度、キーワード同士の組み合わせ検索頻度、 およびそれらを地域や年代・性別で絞り込んで分析することができます。 トレンド調査ラボでは「たべみる」の開発のほか、 クックパッド上のトレンドを見つけるために日々調査を行っています。 ここでのトレンドとは、「流行っている」もしくは「流行りそう」といったものを指します。 消費者が気になっているキーワードが何かを知ることで、消費者が求めている情報を適切に提供できると考えています。 今回は、膨大な検索ログの中から「じわじわ検索頻度が上昇しているキーワード」を見つけるために 行ったことについて紹介したいと思います。 じわじわ検出 「じわじわ検索頻度が上昇して

    検索ログから「じわじわ検索頻度が上昇しているキーワード」を見つける - クックパッド開発者ブログ
    konishika
    konishika 2015/06/29
  • クーポンコードの打ち間違えを防ぐために工夫した話 - クックパッド開発者ブログ

    こんにちは。会員事業部ビジネス開発グループの高田です。 クックパッドは今年、株主優待制度として、プレミアムサービス一年間無料クーポンを贈呈しました。エントリではクーポンコードを打ち間違えて、意図せず他の人のクーポンコードを使用するのを防ぐために工夫した話をご紹介します。 はじめに クーポンコードは入力のしやすさを優先して数字だけの文字列にしました。はじめは rand 関数を使って生成しようとしていたのですが、数字の打ち間違えや順序間違いで、意図せず誤使用してしまうのを防ぐためにチェックサムを加えるのがいい、と同僚から助言をもらいました。 いくつか調べて見たところ、Luhn アルゴリズムが上記を満たしていたので利用することにしました。 Luhn アルゴリズムの利用 Luhn アルゴリズムとは、誤り検出のためのチェックサム符号で、1 桁の間違いや隣接する数字の順序間違いを検出できるという特徴

    クーポンコードの打ち間違えを防ぐために工夫した話 - クックパッド開発者ブログ
    konishika
    konishika 2015/06/25
  • Cookpad Apple Watch App 誕生の舞台裏 - クックパッド開発者ブログ

    買物情報事業部の三浦です。 クックパッドではApple Watchの発売に合わせて、iOSアプリをApple Watch対応にアップデートしました。 クックパッドのWatchアプリは、レシピを閲覧するという機能だけをもったとてもシンプルなアプリです。 実はそんな王道なアプリでも、いくつかの紆余曲折を経て完成させました。今回はその開発の経緯を通して、改めて実感したシンプルさやユーザー視点の大切さをお伝えできればと思います。 アプリの機能紹介 クックパッドのWatchアプリでできることは以下の2点のみです。 とてもシンプル。 一番最後に見たレシピの閲覧(材料と手順のみ) 調理時間から起動できるタイマー機能 レシピ閲覧機能にした経緯 クックパッドでWatchアプリをつくるとなれば、「レシピを見る以外他にはないでしょう」と思われるかもしれません。 でも開発当初は「Watchでレシピを読まなくない?

    Cookpad Apple Watch App 誕生の舞台裏 - クックパッド開発者ブログ
    konishika
    konishika 2015/06/04
  • モバイルファースト時代のネットワークレイヤデバッグ手法 - クックパッド開発者ブログ

    こんにちは。インフラストラクチャー部 セキュリティグループの星 (@kani_b) です。 クックパッドでは主に "セキュリティ" か "AWS" というタグのつきそうな業務全般を担当しています。 ここ数年、クックパッドではいわゆるネイティブアプリの開発が非常に盛んです。 私達インフラストラクチャー部はネイティブアプリの直接の開発者ではありませんが、開発が円滑に進むように色々なレイヤでそのお手伝いをしています。 PC 向けサービス開発と比較して、スマートフォン向け、特にネイティブアプリにおいては、何かトラブルがあった際に どこで何が起きているか、そのデバッグを行うことが若干難しいと感じています。 今回はいわゆる jailbreak や root 化をせず、ネットワークのレイヤからデバッグを行う方法についていくつかご紹介します。 HTTP プロキシによるキャプチャ まずは HTTP プロキシ

    モバイルファースト時代のネットワークレイヤデバッグ手法 - クックパッド開発者ブログ
    konishika
    konishika 2015/05/29
  • コードで行うMySQLのアカウント管理 - クックパッド開発者ブログ

    インフラストラクチャー部の菅原(@sgwr_dts)です。 インフラストラクチャー部のメンバーはオペレーションのため強力な権限のMySQLアカウントを使用していますが、サービス開発をするエンジニアも業務のためにサービスのDBの参照・更新権限を持ったアカウントが必要になることがあります。 セキュリティやオペレーションミスのことを考えると、すべてのエンジニアのアカウントをスーパーユーザーにするわけにはいかないため、都度適切な権限を付与していますが、手動での作業は地味に手間がかかります。 そこでクックパッドではMySQLのアカウント情報をコード化し、リポジトリで管理するようにしています。 gratanによるコード化 MySQLのアカウント管理はgratanという自作のツールを使って行っています。 gratanを使うとMySQLのアカウントをRubyのDSLで記述することができるようになります。

    コードで行うMySQLのアカウント管理 - クックパッド開発者ブログ
    konishika
    konishika 2015/04/10
  • PCサイトのデザインをスマートフォンサイトに移植しようとして苦労した話 - クックパッド開発者ブログ

    クックパッド検索・編成部の須藤耕平です。 昨年の夏に担当した、PCサイトのトップページリニューアルに引き続き、今年の2月にスマートフォンサイトのトップページをリニューアルしました。 前バージョンのスマートフォンサイトは、設計時から約1年半が経過していたため、コンテンツが増えた現在では全体的にかなり煩雑になっていたこと、また、PCサイトでの成功事例をスマートフォンサイトにも取り込むことを主眼として取り組んだリニューアルでした。 エントリーでは、今回のリニューアルにあたって、主にデザイン的な面で工夫した点、及び、それにまつわる苦労話を、具体的な事例と合わせて紹介したいと思います。 PC版をそのまま移植したらものスゴイ長いページになった 今回のケースでは前述のPCの事例が先行してあり、結果も概ね良好であったため、当初は特にコンテンツを絞らず、PC版とほぼ同内容を移植する形で進めていたのですが、

    PCサイトのデザインをスマートフォンサイトに移植しようとして苦労した話 - クックパッド開発者ブログ
    konishika
    konishika 2015/04/01
  • 新卒ソフトウェアエンジニアのための技術書100冊 - クックパッド開発者ブログ

    こんにちは、技術部 高井です。 春といえば、フレッシュマンの季節ですね。このブログを読む方の中には、明日からエンジニアとして新社会人になるという方もいらっしゃるのではないでしょうか。クックパッドでも新しい仲間を迎えるための準備をしていたところで、その準備の一環として「新卒ソフトウェアエンジニアのための技術書100冊」というものを作成しました。 この100冊は、職業ソフトウェアエンジニアとしてキャリアを積むにあたって、読むべき技術書に悩んだら、まずはこのリストから選ぶとよいのではないでしょうかという提案です。 リストに多少の趣味や主張がはいっているのは、まあご愛嬌ということでお許しいただければとおもいますが、職業プログラマとして知っておくべき知識を網羅できるように心がけました。古典と呼ばれる名著についてはできるだけ取りいれ、独習が難しい難解なコンピュータサイエンスの教科書は避けています。これ

    新卒ソフトウェアエンジニアのための技術書100冊 - クックパッド開発者ブログ
    konishika
    konishika 2015/03/31
  • フェーズと目的に応じたプロトタイピングの手法と意味 - クックパッド開発者ブログ

    こんにちは。ユーザーファースト推進室の元山です。 みなさんはスマートフォンアプリケーションやWebサービスの開発・改善をするときにどのようなプロセスで行っているでしょうか?アジャイルやリーンなどの最近では一般的なよくある開発プロセスの中で、今やプロトタイピングは当たり前に行うものとなっていると思います。プロトタイピングを支援するアプリやWebサービスも数多くありますが、ただ闇雲にプロトタイプを作ればいいわけではありませんし、プロトタイプモックを作ること自体が目的化されては意味がありません。 クックパッドでもプロトタイピングを取り入れた開発プロセスを行っていますが、開発のフェーズであったり、または目的によってどのようなアウトプットとしてプロトタイピングするのかは変わってくると思います。今回はクックパッドで実際に行っているプロトタイピングについてフェーズや目的ごとにご紹介しようと思います。 コ

    フェーズと目的に応じたプロトタイピングの手法と意味 - クックパッド開発者ブログ
    konishika
    konishika 2015/03/26
  • グダグダな文字処理の話 - クックパッド開発者ブログ

    技術部のヴァンサンです。 前回の記事ではiPhone 6対応の話を主に書きましたが、今となって殆どのアプリがiPhone 6対応を終えているので、今回は違った面白い話をしようと思います。ただ、書き加えたいことが1つだけあります。昔からあるSprings & StrutsがAuto Layoutより楽な時もあれば、コードで位置を決めることが一番ふさわしいこともありますね。 では、文字の話をしましょう。 「文字」って子供でも分かるものですよね。 でもパソコンにとって文字や文字の処理って複雑ですね。 パソコンが世界の殆どの言語を対応したいなら、複雑なところがたくさんありますね、例えば: アラビア語(العَرَبِيةُ)やヘブライ語(עברית)は右から左へ書く言語です。その中に英字を入れると右から左への中に左から右への部分が混ざっています。 アラビア語は文字がつながっていて、1つの文字が単語

    グダグダな文字処理の話 - クックパッド開発者ブログ
    konishika
    konishika 2015/03/17
  • Elasticsearch を使った位置情報検索 - クックパッド開発者ブログ

    ホリデー事業室の内藤です。 ホリデー事業室は昨年の4月に発足した部署で、Holiday(https://haveagood.holiday)という新規サービスの開発を行っています。 Holiday とは、クックパッドが長年取り組んでいる「毎日の料理を楽しみにする」分野からは少しだけ離れ、「いつもの休日を楽しくすることで人生を豊かにする」ことを目指したサービスです。 例えばこちらのおでかけプランのように、「〇〇に行くならここも行ったほうがいいよ」や「〇〇を散策するならこのコースだよね」など、おでかけのレシピを投稿したり探すことができるようになっています。 今回は、全文検索エンジン Elasticsearch を使って、全文検索と位置情報を絡めた検索についてお話したいと思います。 稿で説明する内容は、実際に Holiday の中でも応用を加えた形で使われています。 Holiday では、複数

    Elasticsearch を使った位置情報検索 - クックパッド開発者ブログ
    konishika
    konishika 2015/03/12
  • 義理といえば?クックパッドのレシピをword2vecで料理してみた - クックパッド開発者ブログ

    会員事業部の有賀 (@chezou) です。 クックパッドは、先日学術機関向けにレシピと献立のデータを公開しました。 研究者の方々にクックパッドレシピ・献立を使っていただくことで、料理に関する研究の発展に貢献できればと思いデータ公開に至りました。 今回は、その中でもクックパッドレシピデータを使った分析事例として、word2vec を使ったテキスト分析を行ったのでご紹介します。 なお、 3 / 7 (土) に日経新聞電子版さんと共催で、このデータを含む各種データを使った学生向けデータハッカソンを開催します。締め切りは 2 / 27 (金) と間近ですが、興味がある方はぜひご参加ください。 word2vec とは word2vec は単語を意味を含んだベクトルで表現できるようにするツールです。Tomas Mikolov らが提案し、その実装を公開しています。 CBOW (Continuou

    義理といえば?クックパッドのレシピをword2vecで料理してみた - クックパッド開発者ブログ
    konishika
    konishika 2015/02/27