タグ

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

  • AWS Lambda@Edge で画像をリアルタイムにリサイズ&WebP形式へ変換する - クックパッド開発者ブログ

    技術部の久須 (@hkusu_) です。クックパッドではモバイル基盤グループにて Androidクックパッドアプリの開発・メンテナンスに携わっています。 普段の業務とは少し異なるのですが、画像リクエストに応じリアルタイムに画像を変換してレスポンスするという仕組みを AWSLambda@Edge を用いて実現してみたので、構築した環境の内容やコードを紹介したいと思います。画像変換の内容はコードの実装次第で大概のことは実現できそうですが、今回のコードの内容はスマホ向け WEB サイトやモバイルアプリ向けの画像配信を想定し、通信容量の削減および表示速度の向上を目的とした画像のリサイズ(主に縮小)と WebP 形式への変換です。 注意:実運用している段階ではないので参考にされる場合はご注意ください。ちなみにクックパッドには番環境とは切り離された調査・検証用の AWS 環境があり、今回の

    AWS Lambda@Edge で画像をリアルタイムにリサイズ&WebP形式へ変換する - クックパッド開発者ブログ
    yosshi
    yosshi 2018/05/25
  • 【開催レポ】Cookpad Tech Kitchen #13 〜クックパッドにおける研究開発のサービス活用事例〜 - クックパッド開発者ブログ

    こんにちは!人事部の冨永です。 2017年11月15日に「Cookpad Tech Kitchen #13 〜クックパッドにおける研究開発のサービス活用事例〜」を開催しました。クックパッドではこのイベントを通して、技術的やサービス開発に関する知見を定期的に発信しています。 第13回のテーマはずばり「研究開発」です。クックパッド 研究開発部では、既存技術ではなかなか難しかった事を新しい研究などをもとに解決して、ユーザにより高水準な価値を届けることを目標としています。研究成果としても、既にいくつかの技術がプロダクトに組み込まれているものがあります。そこで今回は発足から1年*1が経った研究開発部の、研究成果のサービス活用事例に焦点をあてました。 それでは各登壇についてご紹介します。 Encoder-Decoder にもとづく材料名の正規化(原島) 最初は研究開発部長 原島(jun-harashi

    【開催レポ】Cookpad Tech Kitchen #13 〜クックパッドにおける研究開発のサービス活用事例〜 - クックパッド開発者ブログ
    yosshi
    yosshi 2017/11/29
  • 開発環境のデータをできるだけ本番に近づける - クックパッド開発者ブログ

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

    開発環境のデータをできるだけ本番に近づける - クックパッド開発者ブログ
    yosshi
    yosshi 2017/10/30
  • Synthetic Monitoring を活用したグローバルサービスのネットワークレイテンシの測定と改善 - クックパッド開発者ブログ

    インフラ部 SRE グループの渡辺(@takanabe)です。普段はクックパッドのグローバルサービス (https://cookpad.com/us) のインフラの開発や運用をしています。 クックパッドは、21 言語・67 カ国以上を対象にサービスを展開しています ( 2017 年 6 月末時点)。今後もその数を増やしていく予定です。 世界中で使われるサービスのインフラを開発していく上で、乗り越える必要がある課題は沢山ありますが、その中でも、ユーザが利用するクライアントとクックパッドのインフラをむすぶネットワークのレイテンシは特に大きい課題です。 稿ではなぜグローバルに利用されるサービスにおいて、ネットワークレイテンシが問題になるのか、また、クックパッドではネットワークレイテンシをどう計測し改善しようとしているかについて解説します。 ネットワークレイテンシとは ユーザがサービスにリクエス

    Synthetic Monitoring を活用したグローバルサービスのネットワークレイテンシの測定と改善 - クックパッド開発者ブログ
    yosshi
    yosshi 2017/09/21
  • クックパッドと分散トレーシング - クックパッド開発者ブログ

    こんにちは、技術部の Taiki (@taiki45) です。 近年の Web サービスの開発ではマイクロサービスに代表されるように分散アーキテクチャが採用されるようになってきました。大規模でも素早いプロダクト開発をするために、クックパッドでもマイクロサービスを採用し分散アーキテクチャへの移行を進めています*1。今回は、そのような分散アーキテクチャを利用したシステム構築において必須のコンポーネントになりつつある分散トレーシングについて、クックパッドでの事例を紹介したいと思います。 分散トレーシングとは マイクロサービスのような分散アーキテクチャでは、個々のサービス同士の通信が複雑になるため、モノリシックアーキテクチャと比較して、システム全体としての振る舞いを把握することが難しくなります。これはプロダクト開発においては、障害発生時の原因究明が難しくなったり、あるいはシステム全体でのパフォーマ

    クックパッドと分散トレーシング - クックパッド開発者ブログ
    yosshi
    yosshi 2017/09/06
  • 非SPAなサービスにReactを導入する - クックパッド開発者ブログ

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

    非SPAなサービスにReactを導入する - クックパッド開発者ブログ
    yosshi
    yosshi 2016/11/08
  • ディレクションの役割を持つスタッフの活躍を広げる取り組みについて - クックパッド開発者ブログ

    クックパッド検索・編成部の五十嵐啓人です。業はレシピなどの料理検索を中心とした、主に「さがすユーザー」のサービス責任と、ユーザー数の拡大に責任を負っています。日は部門を超えて取り組んでいる、ディレクションの役割を持つスタッフの活躍を広げるための取り組みについて紹介します。 ディレクションの役割を取り巻く当社の状況 日のインターネットサービス界隈で「プロダクトマネージャ」の話題が盛り上がりを見せつつありますが、当社でもプロダクト開発を牽引・補佐する役割を担当しているスタッフを(名前の議論はありますが)慣習的に「ディレクター」と分類しています。 当社では、以前からエンジニアリングで活躍するスタッフについては、エンジニアマニフェストやエンジニア専用の評価制度作りなどに注力し、組織として期待するエンジニア像の言語化による職種の価値向上、およびキャリア支援を充実させてきました。しかし、エンジニ

    ディレクションの役割を持つスタッフの活躍を広げる取り組みについて - クックパッド開発者ブログ
    yosshi
    yosshi 2015/12/13
  • より良い組織を作るために - クックパッド開発者ブログ

    はじめに こんにちは、投稿推進部部長の勝間です。 突然ですが、皆さんは「組織における課題」について考えたこと、意識したことはあるでしょうか。 「組織における課題」なんて言葉を使うと、たとえば 事業戦略の方向性 人事評価制度 マネジメント層の育成 など、少し高いレイヤーの話が思いつくでしょうか。 ともすれば自分とは無関係な話のように思えるものかもしれません。 一方で、このようなものはどうでしょうか。 なんとなく、最近社内の空気変わった気がする なんとなく、隣の部署が何やってるかよくわからない このような、もやっとした感覚、は普段働いている中で感じたことがある人も少なくないかもしれません。 こういった「具体的な何か」というより「抽象的な違和感」を私たちが抱くことも組織における課題といってもいいかと思います。 このような組織における課題、違和感を認識したとき、私たちはどのように向かい合うべきでし

    より良い組織を作るために - クックパッド開発者ブログ
    yosshi
    yosshi 2015/06/09
  • チーム開発の進め方 - クックパッド開発者ブログ

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

    チーム開発の進め方 - クックパッド開発者ブログ
    yosshi
    yosshi 2015/06/04
  • クックパッドの課金を支える技術 - クックパッド開発者ブログ

    こんにちは、技術部の大石です。開発基盤グループで課金システムの担当をしています。 インターネットサービスの決済・課金システムの開発や運用は、サービスの根幹を支えるために正確性と機能性を満たさなくてはなりません。また同時に、価格や料金体系、決済手段のバリエーションでユーザーに利便性を提供する必要もあります。「堅牢性」「信頼性」と「柔軟性」「開発スピード」という相反する要素の両立が求められます。 その結果、決済・課金システムは適切な設計や運用を意識しないと複雑になってしまいがちです。 課金システムの開発、運用でよくある問題 複数の決済方法を同じサービスの上で共存させる難しさ 例えば、最初にクレジットカード決済を導入して、その後にコンビニ決済、キャリア決済やアプリ内決済と決済方法が増えていくことはよくあることです。 最初の導入の際にクレジットカード決済への設計だけでなく、その後に増えていく決済を

    クックパッドの課金を支える技術 - クックパッド開発者ブログ
    yosshi
    yosshi 2015/04/10
  • RESTful Web API 開発をささえる Garage (client 編) - クックパッド開発者ブログ

    料理動画事業室の @yoshiori です。前に「RESTful Web API 開発をささえる Garage」で紹介した RESTful Web API を開発する Garage のクライアント側のライブラリを公開しました。この記事ではその使い方を紹介したいと思います。Garage の設計思想やサーバ側の実装については上記記事を御覧ください。 今回は簡単にクライアント側の挙動を知っていただくために pry を使って説明したいと思います。 アクセスするサーバは先程の記事で作成したアプリケーションを使用してみます。 サーバの準備 https://github.com/taiki45/garage-example の README にも書いてありますので簡単に進めたいと思います。 まずは下準備としてコードを github から clone してきて、ライブラリのインストールと DB のマイグレ

    RESTful Web API 開発をささえる Garage (client 編) - クックパッド開発者ブログ
    yosshi
    yosshi 2014/12/27
  • MacからiPhoneに遷移させよう - クックパッド開発者ブログ

    こんにちは。モバイルファースト室の中村(@_nkmrh)です。 突然ですが、Mac上で探したレシピをすぐiPhoneで見られると便利だと思いませんか? 先日リリースしたiOSクックパッドアプリではそれが出来るようになりました。 とても便利なのでぜひ活用してください。 ※ 実はこの便利機能、次のバージョンで一旦取り下げ、問題を解決したあとで再度導入することになりました。以降の記事で事情を説明します。 Mac OS X YosemiteがインストールされたMac、iOS 8がインストールされたiPhone 5以降、iPad 第4世代、iPad Air、iPad mini、iPad mini Retinaディスプレイモデル、iPod touch 第5世代でご利用いただけます。 MaciPhoneに同じiCloudアカウントを設定して下さい。 これがその様子...。 Mac上のSafariでクッ

    MacからiPhoneに遷移させよう - クックパッド開発者ブログ
    yosshi
    yosshi 2014/12/11
  • サービス開発エンジニアからマネージャになった話 - クックパッド開発者ブログ

    はじめに こんにちは、レシピ投稿推進室の勝間(@ryo_katsuma)です。 techlifeでの執筆は5年ぶり(!)になります。 さて、そんな私も今年2014年の5月にエンジニアからサービス開発の部署のマネージャに転身しました。 そこで今回のtechlifeブログは、いつもの技術ネタとは少し異なるテーマとして、「クックパッドにおいて、エンジニアからマネージャに転身する」ことが、どういうことなのかを自分自身で振り返り、まとめたいと思います。 エンジニアが自身のキャリアを考える上で、少しでも参考になれば幸いです。 現状 私は、2009年5月に中途入社し、今年で6年目になります。この年数は、エンジニア全体はもちろん、社内全体で見ても古い方になります。 これまで、技術部、HappyAuthor部(現在、私が所属している前身になった部)、新規事業部、プレミアム会員事業部...など、いろんな部署で

    サービス開発エンジニアからマネージャになった話 - クックパッド開発者ブログ
    yosshi
    yosshi 2014/11/28
  • Swiftで遊んでますか? - クックパッド開発者ブログ

    モバイルファースト室の三浦です。 みなさんはplayground使っていますか? Swiftにはplaygroundが用意されていて手軽にかつライブレンダリングでコーディングをすることができます。 CoreGraphicsの描画などを確認しながらコードを書くこともできてとても便利です。 早速Swiftで簡単なスケッチをしてみましょう! Xcodeでplaygoundファイルを新規作成します。次にUIKitをimportします。 import UIKit 次に表示のためのUIViewを生成します。 // ビューのサイズ let size = CGSize(width: 200, height: 200) // UIViewを生成 let view:UIView = UIView(frame: CGRect(origin: CGPointZero, size: size)) view.back

    Swiftで遊んでますか? - クックパッド開発者ブログ
    yosshi
    yosshi 2014/11/12
  • クックパッドの検索の裏側 - クックパッド開発者ブログ

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

    クックパッドの検索の裏側 - クックパッド開発者ブログ
    yosshi
    yosshi 2014/10/21
  • Rails 4 へのアップグレード時に遭遇した問題 - クックパッド開発者ブログ

    技術部の鈴木 (@eagletmt) です。 クックパッドでは8月に体アプリケーションや API サーバ等で使われている Rails のバージョンを 3.2 から 4.1 へ順次アップグレードを行いました。 アップグレードは主に松田さん (@amatsuda) と私で進めました。 この記事ではアップレードの際に遭遇した問題の一部を紹介します。 MySQL strict mode の有効化 MySQL を使っている場合、Rails 4.0 からデフォルトで @@SESSION.sql_mode = 'STRICT_ALL_TABLES' が最初に実行されるようになりました (Ruby on Rails 4.0 Release Notes) 。 これを無効化するために database.yml で strict: false という設定が用意されています。 しかし、同じく Rails 4.0

    Rails 4 へのアップグレード時に遭遇した問題 - クックパッド開発者ブログ
    yosshi
    yosshi 2014/09/30
  • 「関連する○○」機能を手軽に実現できる。そう、Elasticsearch ならね。 - クックパッド開発者ブログ

    セコン (id:secondlife, @hotchpotch) です。ウェブサービスにはよく「このエントリーに関連するブログ記事」や「このレシピに関連するレシピ」という機能が実現されてますよね。さて、この機能はどのように実現すれば良いでしょうか。例えば tf-idf で単語の類似度を求め…といった実装が必要になり、いささか面倒です。 しかしながら Elasticsearch や Solr *1を使うと手軽に実現できます。例えば、クックパッドニュースの記事では Solr を使い「この記事を読んだ人におすすめ」の機能に、最近クックパッドにジョインしたインドネシアの会社の DapurMasak では Elasticsearch を使い「Resep serupa(関連レシピ)」の機能で利用しています。 クックパッドニュースでのこの記事を読んだ人におすすめ DapurMasak での関連レシピ 使

    「関連する○○」機能を手軽に実現できる。そう、Elasticsearch ならね。 - クックパッド開発者ブログ
    yosshi
    yosshi 2014/09/24
  • クックパッドとマイクロサービス - クックパッド開発者ブログ

    技術部の高井です。 最近、日でもマイクロサービスという言葉が流行しつつあります。 今回は、なぜクックパッドがマイクロサービスを選択したのか、また実際にどのようなやり方をしているのかということを紹介します。 Conwayの法則 ここ数年の間、クックパッドレシピの投稿・検索サービスから「を中心とした生活のインフラ」として事業領域を拡大しつつあります。海外レシピサービスの買収による海外展開は、単なる金銭的な関係にとどまらず、人的・技術的な交流も含めて格化しつつあります。また、「モバイルファースト」を標語とするモバイルアプリケーションへの取り組みも加速してきました。 事業領域の拡大やグローバル展開、モバイルファーストといったビジネス要求の変化に応じて、会社の組織構造も変化しています。そして、Conwayの法則 として知られているように、組織構造とソフトウェアアーキテクチャには密接な関係があ

    クックパッドとマイクロサービス - クックパッド開発者ブログ
    yosshi
    yosshi 2014/09/19
  • クックパッドの新しいロゴに込めた思い - クックパッド開発者ブログ

    ユーザーファースト推進部デザインチームの上ノ郷谷 (かみのごうや) です。 9月1日よりクックパッドサイトのロゴが新しくなりました。もうみなさまご覧になっていただけたでしょうか。 ロゴを新しくしたのは、2014年から格的にはじまった世界展開に合わせて「毎日の料理を楽しみに」を世界へ。という思いをもっと知ってもらうため。そして世界中のみなさんに親しみを持ってもらいたいという思いからです。 ロゴの基的な構成、使われている色には変更はありませんが、さまざまな思いを込めた大きなマイナーチェンジになったと思います。ロゴデザインを担当したものとして、どのようなことを考えながら作ったのかを書いてみます。 これまでのロゴと新しいロゴ まずはクックパッドのシンボルでもあるコック帽のロゴマーク。このロゴマークをもっと強調させ、認知を高めるために茶色い枠を外しました。枠を外すことでキーカラーのオレンジの印象

    クックパッドの新しいロゴに込めた思い - クックパッド開発者ブログ
    yosshi
    yosshi 2014/09/08
  • iOSアプリデザインリニューアルの舞台裏 - クックパッド開発者ブログ

    モバイルファースト室の @slightair です。 先ほど、デザインをリニューアルしたクックパッドiOSアプリ 6.0.0 をリリースしました。 https://itunes.apple.com/jp/app/kukkupaddo-no.1reshipi-jian/id340368403?mt=8 この記事では、どのようにして新しいデザインをiOSアプリに適用していったのかを紹介したいと思います。 新しいアプリの画面 スクリーンショットを見ていただければわかるように、全体的にフラットな印象を与える画面に変わりました。 トップ レシピ詳細画面 サイドメニュー この記事で全ての画面を紹介することはできませんが、ぜひダウンロードしてお手持ちのiOS端末で触ってみてください。 新デザインの適用 基的には、画面デザイン案をもらい、既存のアプリを修正して少しずつ適用していく形で進めていきました。

    iOSアプリデザインリニューアルの舞台裏 - クックパッド開発者ブログ
    yosshi
    yosshi 2014/09/04