タグ

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

  • Cookpad の新規事業と Firebase - クックパッド開発者ブログ

    国内事業開発部 iOS エンジニアの三浦です。私は17年新卒で入社したのですが、それ以来複数の新規事業の開発に携わってきました。 現在開発中のアプリでは、バックエンドに Firebase を用いた開発を進めています。 この記事ではなぜ Firebase を使っているのかと、そこで得られた知見についてまとめようと思います。 なぜ Firebase みなさんご存知かと思いますが、Cookpad のレシピサービスでは主にバックエンドに AWSRuby on Rails が使われています。 なぜ新規事業ではその構成ではなく Firebase を使うのかということですが、以下のような理由があります。 基盤サービスが豊富 Firebase には RealtimeDatabaseFireStore といった Database を始めとして、CloudMessaging(Push通知基盤)、Aut

    Cookpad の新規事業と Firebase - クックパッド開発者ブログ
    en30
    en30 2018/02/12
  • Ruby 2.5 の改善を自慢したい - クックパッド開発者ブログ

    技術部でフルタイム Ruby コミッタをしている笹田です。最近ひさびさに Ruby のライブラリに pull request をしました(show valid break point lines #393)。 12/25 のクリスマスに、Ruby 2.5 が無事にリリースされました(Ruby 2.5.0 リリース)。関係各位の努力に感謝します。いろいろなバグ修正、いろいろな新機能、いろいろな性能改善があります(詳細は、上記リリースノート、もしくは Ruby のソースコードにある NEWS ファイルをご参照ください)ので、試して頂けると良いと思います。そういえば、私がクックパッドに入社して初めての Ruby リリースでした。 前回の techlife ブログ( Ruby の NODE を GC から卒業させた )で遠藤さんが クックパッドからの主な貢献としては、「trace 命令の削除による

    Ruby 2.5 の改善を自慢したい - クックパッド開発者ブログ
    en30
    en30 2017/12/28
  • nginx で omniauth を利用してアクセス制御を行う - クックパッド開発者ブログ

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

    nginx で omniauth を利用してアクセス制御を行う - クックパッド開発者ブログ
    en30
    en30 2017/07/03
  • Hackarade: MRI Internal Challenge - クックパッド開発者ブログ

    今年1月に入社した技術部の笹田です。Ruby インタプリタの開発をしています。 少し旧聞になりますが、今年3月の終わりに Hackarade: MRI Internal Challenge という、Ruby インタプリタ(MRI, Matz Ruby Interpreter)をハックするという社内ハッカソン企画を行いましたので、その様子をご紹介します。ハッカソンでは、弊社エンジニアが原則全員参加で Ruby インタプリタをいじりました。今回のハッカソンでは、特別ゲストとして 世界ナンバーワンの Ruby コミッタ(コミット数が世界一)である 中田さん(nobu) に参加していただき、様々な助言をいただきました。 Hackarade って? クックパッド社内で、技術力の底上げを目的に、エンジニア全員が1日参加するハッカソンを年に3回程度行っていくことになりました。このハッカソンの名前を、Ha

    Hackarade: MRI Internal Challenge - クックパッド開発者ブログ
    en30
    en30 2017/05/18
  • 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時間でスケールアウトする - クックパッド開発者ブログ
    en30
    en30 2016/10/06
  • モバイルアプリのスレッドプールサイズの最適化(画像読み込み編) - クックパッド開発者ブログ

    クックパッド海外向けのAndroidアプリを開発している @rejasupotaro です。海外チームでは英語圏だけでなく、スペイン語圏やアラビア語圏や、その他いろいろな地域・ユーザーの環境に合わせてサービスをローカライズしながら展開しています。 東南アジアや南米では日に比べるとネットワークは不安定で遅く、現地に行って自分たちのサービスを使うと読み込みの遅さに愕然とすることがあります。レシピサービスにとって画像の読み込みの速度は重要なので、これまでもレイテンシ、フォーマット、圧縮率、キャッシュ、画像サイズ、リクエストの優先度、プリロードなどさまざまな最適化を試みてきました。今回はスレッドプールのサイズについて考察しました。 非同期処理とスレッドプール Androidには、UIを操作することができる唯一のメインスレッドと、APIや画像のリクエスト、DBの読み書きなどの時間のかかる処理でメ

    モバイルアプリのスレッドプールサイズの最適化(画像読み込み編) - クックパッド開発者ブログ
    en30
    en30 2016/01/04
  • OS X キーチェーンから環境変数をセットするツールを作りました - クックパッド開発者ブログ

    こんにちは、技術部の福森 (@sora_h) です。 最近は環境変数に API トークンや credential といった認証情報を入れる事が増えてきています。 たとえば、AWS を利用するツールでは AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY といった環境変数にだいたいの場合で対応しています。 そのため、~/.bashrc や ~/.zshrc などシェルの設定に export を書いておき常に使える状態にしている方も多いと思いますが、 それって実は危険ではないでしょうか? 例えば、下記のようなリスクが考えられます: 意図せず情報が利用されて意図しない副作用が発生してしまう危険性 番に変更を与えるつもりはなかったけれど事故を起こしてしまう等 悪意のあるスクリプトを実行した際に環境変数を送信などされてしまう危険性 事故や漏洩を防ぐためにも、筆者はかな

    OS X キーチェーンから環境変数をセットするツールを作りました - クックパッド開発者ブログ
    en30
    en30 2015/07/09
  • データドリブンでユーザー体験を改善する試み - クックパッド開発者ブログ

    こんにちは。サービス開発エンジニアの出口貴也 (@dex1t) です。 私は4月までユーザーファースト推進室にて、ユーザー体験の数値化や、その下地作りに取り組んでいました。まだ模索段階ではありますが、エントリにてこの試みの現状をご紹介します。 点だけでなく線も検証する リーンスタートアップのBMLループに代表されるように、サービス開発において、検証のフェーズは非常に重要です。 クックパッドでも、開発と検証はセットで考えられており、施策の良し悪しを指標から判断することは日常的に行われています。 ただ同時に、施策単体の検証だけでなく、施策を実施した結果、サービスを通してユーザーが得る体験がどうなったかを検証することも重要です。 クックパッドで言えば、「レシピを探す」機能 (点) だけを改善するのはもちろん、その前後関係を含め「レシピを探し、レシピを決め、作ってよかった!と思えた」という一連の

    データドリブンでユーザー体験を改善する試み - クックパッド開発者ブログ
    en30
    en30 2015/06/13
  • Docker を利用した Web アプリケーションのデプロイ - クックパッド開発者ブログ

    技術部の鈴木 (id:eagletmt) です。 クックパッドでは一部の Web アプリケーションサーバで Docker が使われており、今回はそのデプロイ方法について紹介します。 Docker で Web アプリケーションをデプロイするときには、まだまだベストプラクティスがある状況ではありません。 たとえば、どのように無停止でデプロイするか、どのようにコンテナと通信するかといった問題があります。 最初に Apache Mesos と Marathon などのツールを検証しましたが、クックパッドの環境において使いやすそうなものはなく、最終的に自前でデプロイのしくみを作ることにしました。 しかし Docker 周辺のツールは様々な新しいものが出てきている最中です。 今はまだベストなものが無いけれども、近いうちによりよいものが出てくるかもしれません。 そのため、できるだけ単純なしくみにしておく

    Docker を利用した Web アプリケーションのデプロイ - クックパッド開発者ブログ
    en30
    en30 2015/05/30
  • クックパッドのサーバプロビジョニング事情 - クックパッド開発者ブログ

    インフラ部の荒井(@ryot_a_rai)です。この記事ではクックパッドで利用しているプロビジョニングツール "Itamae" の紹介と細々した Tips を紹介します。 式年遷宮とプロビジョニングツール 現在、弊社ではインフラの式年遷宮*1を進めています。式年遷宮以前、弊社では Puppet を利用してサーバをセットアップしていましたが、式年遷宮に際して既存のプロビジョニングに関するコードは捨てることになるため、プロビジョニングツールの再検討を行うことになりました。 Puppet, Chef, Ansible, SaltStack を検討した結果、 言語特性の観点では、Ruby DSL な Chef が良い アーキテクチャ・エコシステムの観点では、シンプルな Ansible が良い といった点から、どれも決め手に欠ける状況で、Ruby DSL で記述できるシンプルなプロビジョニングツール

    en30
    en30 2015/05/15
  • コードレビューに費やす時間を短くする - クックパッド開発者ブログ

    はじめに こんにちは、広告事業部の芳賀(@func09)です。普段はクックパッドの広告配信周りや純広告・タイアップ広告などの商品開発を行っています。 私が広告事業領域の仕事をするようになって、そろそろ1年になるのですが、初めはエンジニア以外の人(営業、編集、広告入稿、レポート、メール配信、などなど様々な担当者がいます)と業務をすることが多くてコミュニケーションが上手くいかず業務がスムーズに進まないことがありました。 当たり前のことではありますが、エンジニアにしかわからない言葉は使わないとか、できるだけ相手の業務を理解し相手の考え方や視点に立って話すなど、ちょっと工夫することで、長引きがちなMTG相談がすんなり終わったり、お互い良い気分で終わることが多くなって、費用対効果が高いなと感じています。 一方でエンジニア同士のコミュニケーションでも時間がかかってコストが高いと感じることがあります。

    コードレビューに費やす時間を短くする - クックパッド開発者ブログ
    en30
    en30 2015/03/30
  • 雑な発想を活かすチーム作り - クックパッド開発者ブログ

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

    雑な発想を活かすチーム作り - クックパッド開発者ブログ
    en30
    en30 2015/03/27
    "許されている"という感覚が大事なんだろうなと思う
  • フェーズと目的に応じたプロトタイピングの手法と意味 - クックパッド開発者ブログ

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

    フェーズと目的に応じたプロトタイピングの手法と意味 - クックパッド開発者ブログ
    en30
    en30 2015/03/20
  • 義理といえば?クックパッドのレシピをword2vecで料理してみた - クックパッド開発者ブログ

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

    義理といえば?クックパッドのレシピをword2vecで料理してみた - クックパッド開発者ブログ
    en30
    en30 2015/02/27
  • チームメンバーとの信頼関係を築く:定期個人面談の薦め - クックパッド開発者ブログ

    こんにちは。新規広告開発部所属エンジニアのレオ(@lchin)です。 ここ2年ほどは、大きな事業部のなかの小規模なエンジニアチームのリーダーを務めてきました。エンジニアリーダーとしては、1人のエンジニアとしてソフトウェア開発をしつつ、チームのメンバーの力をまとめて、事業部のゴールを推進しました。事業部のマネージャほど、マネジメント業務が中心になるわけではありませんが、多くのエンジニアが苦手な人間関係スキルはエンジニアリーダーにも必要です。 メンバーは何か大きな不安を抱えていないのか?ポテンシャルを発揮できていないメンバーにどうフィードバックするのか?メンバー間に何かトラブルはないのか?見えないところで仕事の妨げはないか?チームでソフトウェア開発を行う上のよくある悩みだと思いますが、皆さんはどう解決していますか?私は、個人面談はこういった悩みを解消するための大変有効な手段だと思います。 なぜ

    チームメンバーとの信頼関係を築く:定期個人面談の薦め - クックパッド開発者ブログ
    en30
    en30 2015/02/06
  • 多腕バンディットによる表示コンテンツの最適化 - クックパッド開発者ブログ

    こんにちは。技術部検索グループの原島です。 上の画像は、スマートフォン(ブラウザ版)で見たクックパッドの検索結果ページです。レシピだけでなく、ニュースも表示されていますね。献立や掲示板のスレッドなどが表示されることもあります。 クックパッドでは、検索結果ページに表示するコンテンツをクエリなどに応じて最適化しています。最適化は、膨大なログデータと最新の機械学習を用いることで、実現しています。このエントリでは、クックパッドにおけるコンテンツ最適化の裏側を紹介します。 最適化の背景 スマートフォンの普及に伴って、ユーザが利用するプラットフォームは PC からモバイルにシフトしつつあります。クックパッドにおけるモバイル利用者の割合も、ここ 2 年で 10% 以上増加しました。最近では、60% 以上のユーザがモバイルからアクセスしています。 ユーザの利用形態が変化すれば、検索結果ページもその変化に対

    多腕バンディットによる表示コンテンツの最適化 - クックパッド開発者ブログ
    en30
    en30 2014/10/29
  • 開発環境のデータをできるだけ本番に近づける - クックパッド開発者ブログ

    こんにちは。技術部の吉川です。 今回はクックパッドの開発環境構成、特に開発用データベースの構成についてご紹介します。 開発環境の構成 クックパッドのシステム環境は以下のようなフェイズに分かれています。 ※ これはcookpad.comの構成で、サブシステムや個別のサービスはその規模や特性に応じて構成が異なります。 development 開発者が実際に開発を行う環境です。クックパッドでは仮想環境は用いず、手元のマシンでRailsアプリケーションを動かして開発を行っています。 データベースはローカルではなく、開発者全体で共通の開発用データベースに接続しています。 test 手元でテストを実行する場合は、ローカルマシンのデータベースを利用します。CI(rrrspec)などの場合も同様で、テスト実行サーバーのデータベースが利用されます。 staging stagingといえば準番環境として、

    開発環境のデータをできるだけ本番に近づける - クックパッド開発者ブログ
    en30
    en30 2014/10/14
  • クックパッドにおける最近のActiveRecord運用事情 - クックパッド開発者ブログ

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

    クックパッドにおける最近のActiveRecord運用事情 - クックパッド開発者ブログ
  • 1