タグ

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

  • Web サービスの完全 HTTPS 化 - クックパッド開発者ブログ

    インフラストラクチャー部長の星 (@kani_b) です。 2017年1月5日をもって、クックパッド における全ページで HTTPS が使われるようになりました。 完全 HTTPS 化をするにあたり、その理由や具体的な進め方について紹介します。 以前 SRE Tech Talks #2 にて一部発表した内容も含みますので、ご興味のある方はあわせてスライドもご覧ください。 完全 HTTPS 化に踏み切った理由 以前のクックパッドは、ログインや登録情報の参照など、いわゆる個人情報や認証情報を扱う箇所のみに HTTPS が使われていました。 このように「必要な箇所にのみ HTTPS を使う」構成は、ある程度歴史のある Web サービスにおいてよく使われている構成です。 この状態から、完全 HTTPS 化に踏み切った理由を説明します。 サービスをよりセキュアにするため HTTPS の利用を考えるに

    Web サービスの完全 HTTPS 化 - クックパッド開発者ブログ
  • MySQL with InnoDB のインデックスの基礎知識とありがちな間違い - クックパッド開発者ブログ

    こんにちは、サービス開発部の荒引 (@a_bicky) です。 突然ですが、RDBMS の既存のテーブルを見てみたら「何でこんなにインデックスだらけなの?」みたいな経験はありませんか?不要なインデックスは容量を圧迫したり、挿入が遅くなったりと良いことがありません。 そんなわけで、今回はレコードを検索するために必要なインデックスの基礎知識と、よく見かける不適切なインデックスについて解説します。クックパッドでは Rails のデータベースとして主に MySQL 5.6、MySQL のストレージエンジンとして主に InnoDB を使っているので、MySQL 5.6 の InnoDB について解説します。 InnoDB のインデックスに関する基礎知識 インデックスの構造 (B+ 木) InnoDB では B+ 木が使われています。B+ 木は次のような特徴を持った木構造です。 次数を b とすると、

    MySQL with InnoDB のインデックスの基礎知識とありがちな間違い - クックパッド開発者ブログ
  • ユーザー基盤を作り直しながらRailsでのサービス層に向き合う - クックパッド開発者ブログ

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

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

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

    オープンソースソフトウェアポリシーをつくろう - クックパッド開発者ブログ
    bouzu_ao
    bouzu_ao 2016/04/18
  • 開発チームと営業チームとのコミュニケーションで気を付けていること - クックパッド開発者ブログ

    こんにちは。クックパッド特売情報ディレクターの田中です。 日は、開発チームと営業チームのつなぎ役として働くディレクターとして、コミュニケーションにおいて意識していることをご紹介したいと思います。 特売情報のビジネスモデル 私が担当しているクックパッド特売情報はいわゆるB2B2Cというビジネスモデルになっています。 こちらの図の様にクライアント(小売店)の方からお金をいただく代わりに情報掲載の場とエンドユーザーの方々の関心をデータ化してお返しし、いただいた情報を私達が見やすい形に整えたり、更に付加価値を付けた上でエンドユーザーにご提供しているという形になっています。 B2B2Cサービスにおけるディレクターの役割 クックパッドで「ディレクター」と呼ばれるスタッフの役割は、以前検索・編成部の五十嵐さんがまとめて下さいました。 これらの役割をベースとして、特売情報のディレクターはクライアントユー

    開発チームと営業チームとのコミュニケーションで気を付けていること - クックパッド開発者ブログ
  • 安心してRailsアップグレードを行うための工夫 - クックパッド開発者ブログ

    こんにちは。技術部の国分 (@k0kubun) です。 3/28にクラウドワークスさんで行なわれたRails Upgrade Casual Talksで、Railsアップグレードの際にクックパッドが行なっている工夫について紹介しました。 影響範囲の予測が難しいRailsのアップグレードを安全に行なうための動作確認のやり方について参考になればということで、記事でも改めて紹介いたします。 CookpadのRailsアップグレードの流れ Rails 4.1から4.2にアップグレードした際の例を紹介します。 CIにRails 4.2用ジョブを用意 まずはRails 4.2にアップグレードするためのrails42ブランチでテストを通します。リリースするまでこのブランチはmasterからrebaseし続けるので、リリースまでテストを通る状態を保つため、CIにrails42ブランチ用のジョブを用意しま

    安心してRailsアップグレードを行うための工夫 - クックパッド開発者ブログ
  • デザイン品質を高めるための仕組みづくり - クックパッド開発者ブログ

    ユーザーファースト推進室 デザイナーの橋(@hashcc)です。 クックパッドでは、安定した品質のモバイルアプリケーションをユーザーさんに届けるために、デザインリリースマネージャ という試みを2015年秋頃から始めました。 今回はこの試みについて発端や成果などをお話しします。 「あれ、なんでこんなデザインになってるの・・?」 クックパッドには日々多くのコード変更が加わっています。そうした中でも品質を安定させる(クラッシュや機能破壊を起こさない)ために、テストエンジニアなどが取り組んでいます。 関連: クックパッドモバイルアプリの開発体制とリリースフロー 安定したリリースを継続するためのテストとテストレベルの話 デザイナーも「デザイン変更が伴う修正は必ずデザイナーがチェックする」というルールを作り、デザイン品質の安定化に努めていました。 にも関わらず、リリース直前/直後になって「あれ、なん

    デザイン品質を高めるための仕組みづくり - クックパッド開発者ブログ
  • CSVからモデルオブジェクトを生成する際に気をつけたこと - クックパッド開発者ブログ

    こんにちは、クックパッド編集室の加々美です。 現在、や暮らしのトレンドを発信するメディアであるクックパッドニュースの開発に携わっています。 クックパッドニュースは、1週間に100以上の記事を配信しています。 このように比較的多くの記事コンテンツを作成する際、記事の基的なパラメータ(例えば配信時間や記事の執筆者)をWebアプリケーション上で一つ一つ設定して記事を作成するのは時に煩雑な作業になりがちで、特に編集スタッフにとっては、スプレッドシート上で記事のパラメータを設定できた方が分かりやすく、作業がより確実になる場合があるかと思います。 (また、スプレッドシートであれば楽に複数人で編集できるというメリットもあります) 今回は、スプレッドシートからエクスポートしたcsvを用いて、モデルオブジェクトを生成する際に気をつけたことを紹介します。 ※ 稿ではGoogle Driveのスプレッド

    CSVからモデルオブジェクトを生成する際に気をつけたこと - クックパッド開発者ブログ
    bouzu_ao
    bouzu_ao 2016/03/10
    ActiveModel
  • gdbを使ったrubyのデバッグ - クックパッド開発者ブログ

    技術部の国分 (@k0kubun) です。 先日byebugの高速化を行っていた最中、変更を加えたbyebugを使っていると一定の確率でrubyがSEGVするバグを発見しました。 私はC言語のコードのデバッグの経験はなかったのですが、デバッガの使い方を調べながらSEGVの原因調査を行いパッチを送ったところ無事取り込まれ、最新の高速なbyebugが安全に使えるようになりました。 その際、ruby自体をデバッグするために必要な情報が分散していて大変だったので、まだrubyのデバッグをしたことがないけれどやってみたいという人を対象に、gdbというデバッガを使ったrubyのデバッグの方法を紹介します。 デバッグ用にrubyをビルドする デバッグ時に変数名やソースコードなどの情報を見るためには、最適化オプションをオフにしてデバッグ用にrubyをビルドしておく必要があります。 rubyのデバッグ用ビル

  • GitベースのコードリーディングTips - クックパッド開発者ブログ

    こんにちは、投稿推進部の森川 (@morishin127) です。 エンジニアが既存のプロダクトの開発に携わる際、他人の書いたソースコードを読み解くところから始まります。過去に書かれたコードの意図を理解することは自分が書いたものでもしばしば難しく、他人が書いたものならなおさらです。この記事では過去に書かれたコードを理解するための工夫についてお話したいと思います。 なお、この記事ではプロダクトのソースコードはgitおよびGitHubのPull Requestを利用して開発が進められていることを前提としています。 特定の行から関連するPull Requestページを開く クックパッドのソースコードには概してコメントがあまり書かれておらず、見ただけでは理解しづらいような特殊な方法をとっている場合のみコメントを書いている印象です。基的に実装に関する説明はソースコード中ではなく、GitHubのPu

    GitベースのコードリーディングTips - クックパッド開発者ブログ
  • クックパッドの新卒研修2015 - クックパッド開発者ブログ

    技術部の牧 (@makimoto) です。 新卒社員研修の企画・運用を担当しています。 このエントリをご覧になっている方の中には、この春から新社会人として働いている方も多いのではないでしょうか。 クックパッドでもこの春に新卒社員が入社し、現在新卒社員研修の真っ最中です。 稿では、クックパッドにおける新卒社員向けの技術・サービス開発領域の研修についてご紹介をします。 みんなが技術を理解すること 今年の新卒研修では、エンジニア職ではない総合職の新卒社員にも技術研修を実施しました。 職種や役割にかかわらず、すべてのメンバーが技術を正しく理解し、活用することが、組織の成長に役立つと考えているからです。 営業やサービス開発のディレクターなどエンジニア以外のメンバーが、技術的な知識にもとづいた意思決定をできるようになることで、もっと事業の精度や速度の改善に貢献できるのではという思いがあります。 と

    クックパッドの新卒研修2015 - クックパッド開発者ブログ
    bouzu_ao
    bouzu_ao 2015/05/23
  • 分散テスト実行システムRRRSpecをリリースしました - クックパッド開発者ブログ

    技術部アルバイトの鈴木(@draftcode)です。 クックパッドが内部向けに開発・運用を行ってきた、分散テスト実行システムRRRSpecをオープンソースとして公開しました。RRRSpecは時間のかかる自動テストを分散処理することで、全体のテスト時間の短縮を狙うアプリケーションです。現在クックパッドでは17000を超えるテスト項目があり、マシン一台でテストを実行すると完了まで数時間かかります。このテストを60並列程度の分散処理で行うことで、平均8分から9分程度で完了できるようになりました。また、Amazon EC2のスポットインスタンスを利用することにより、大幅なコスト削減も同時に達成しました。 https://github.com/cookpad/rrrspec 分散テスト実行とは アプリケーションが大きくなるにつれて、自動テストの数も大きくなっていきます。クックパッドでは、非常に多くの

    分散テスト実行システムRRRSpecをリリースしました - クックパッド開発者ブログ
    bouzu_ao
    bouzu_ao 2015/01/11
    分散テスト
  • モバイルアプリのログ収集ライブラリ「Puree」をリリースしました - クックパッド開発者ブログ

    モバイルファースト室の @rejasupotaro です。 クックパッドでは、サービスをリリースしてログを収集して分析して改善してまたリリースして、というサイクルを素早く回すことでより良いものを作るということをウェブではやってきました。 クックパッドのサービス開発のフレームワークをモバイルアプリでも適用したいのですが、モバイルアプリにはウェブアプリと違ったロギングの難しさがあります。 今回はモバイルアプリのロギングの問題点とPureeというログ収集ライブラリについて話します。 モバイルアプリのロギングの難しさ ウェブアプリでは、基的にはサーバー側でログを収集することができますが、モバイルアプリの場合は画面の制御はアプリ側で行われ、APIを介してデータを受け取るため、クライアント側でログを収集して送信する必要があります。 アプリのログを収集するのに、画面遷移をしたりタップするたびにサーバー

    モバイルアプリのログ収集ライブラリ「Puree」をリリースしました - クックパッド開発者ブログ
    bouzu_ao
    bouzu_ao 2014/11/26
  • レシピ検索を改善する工夫 - クックパッド開発者ブログ

    こんにちは。技術部検索グループの兼山(@PENGUINANA_)です。 クックパッドの中でレシピ検索はレシピをのせる人とさがす人をつなぐ大事な仕組みです。 今回はレシピ検索を運用改善していく上での工夫のうち、他の検索システムでも役立ちそうな内容を紹介させていただきます。 改善ポイントを発見しやすくする 工夫1. 検索語をモニタリングする search monitorという社内ツールを作りました。前日の検索傾向を表示できます。 このツールは以下の作業をサポートします。 検索語をUU(ニーズ)が多かった順に知る キーワードごとに何人に使われたのかを知る ユーザーが実際に目にする検索結果を素早く確認する レシピが1品も見つけられなかったキーワードを知る 他にも「キーワードごとにどのようなキーワードと組み合わされやすいか」、「その検索語のCTRはどの程度か」、「その検索語は何時頃あるいは何曜日によ

    レシピ検索を改善する工夫 - クックパッド開発者ブログ
    bouzu_ao
    bouzu_ao 2014/11/07
    可視化
  • クックパッドの検索の裏側 - クックパッド開発者ブログ

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

    クックパッドの検索の裏側 - クックパッド開発者ブログ
    bouzu_ao
    bouzu_ao 2014/10/21
  • 1