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

  • プロと読み解く Ruby 2.6 NEWS ファイル - クックパッド開発者ブログ

    技術部の笹田(ko1)と遠藤(mame)です。クックパッドRuby (MRI: Matz Ruby Interpreter、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 もうすぐ Ruby 2.6 がリリースされますね! Ruby 2.6 の新機能は何だろう、と調べるためには、ソースコードの diff を見ればいいのですが、膨大な変更があるので、一つ一つ見ていくのは大変です。 $ git diff --compact-summary origin/ruby_2_5 ... 6404 files changed, 228441 insertions(+), 97984 deletions(-) そこで、NEWS ファイルという、主要な変更点をまとめたファイルが用意されています。これを見るだけで、Ruby

    プロと読み解く Ruby 2.6 NEWS ファイル - クックパッド開発者ブログ
    tsub511
    tsub511 2018/12/25
  • Chaos Engineering やっていく宣言 - クックパッド開発者ブログ

    技術部のヨシオリです。 Netflix が Chaos Engineering の論文を公開して 2 年ほど経ちました。 クックパッドは最近、 Chaos Engineering を導入する事を決めました。 この記事ではその背景を紹介したいと思います。 そもそも Chaos Engineering とは Netflix では Failure Injection Testing として、営業時間中に意図的に障害を起す事をやっていました。Chaos Monkey というインスタンスとサービスを落すものから Chaos Gorilla、Kong という availability zone や region 単位で障害を発生させるものなどです。 その経験から Chaos Engineering というものが提唱されました。 Principles of Chaos Engineeringによれば C

    Chaos Engineering やっていく宣言 - クックパッド開発者ブログ
    tsub511
    tsub511 2018/08/02
    今後の動向気になる
  • Service Mesh and Cookpad - クックパッド開発者ブログ

    こんにちは、開発基盤の Taiki です。今回は、マイクロサービスで必須のコンポーネントとなりつつあるサービスメッシュについて、クックパッドで構築・運用して得られた知見についてご紹介できればと思います。 サービスメッシュそのものについては以下の記事や発表、チュートリアルで全体感をつかめると思います: https://speakerdeck.com/taiki45/observability-service-mesh-and-microservices https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/ https://blog.envoyproxy.io/service-mesh-data-plane-vs-control-plane-2774e720f7fc https://istio.io/

    Service Mesh and Cookpad - クックパッド開発者ブログ
    tsub511
    tsub511 2018/05/08
  • Cookpad TechConf 2018 開催報告 - クックパッド開発者ブログ

    こんにちは、技術広報を担当している外村です。 2018年2月10日にエンジニア向けのカンファレンス、Cookpad TechConf 2018を開催しました。当日はたくさんの方に参加いただき、活気あるカンファレンスになりました。ご来場の皆様当にありがとうざいました。 新しい試みとして、当日の司会をAmazon Pollyの音声合成で行なったのですが、こちらもみなさんにお楽しみいただけたようでした。 講演資料・動画 当日の講演資料および動画を公開いたしましたので是非ご覧になってください。 基調講演: 毎日の料理を楽しみにする挑戦をし続けた20年 by 橋 健太 コーポレート戦略部部長の橋による基調講演でイベントはスタートしました。クックパッドはテックカンパニーとしてどのように成長してきたか、グローバル展開をどのように行ってきたか、現在取り組んでいる新プロジェクトについての話などがあり

    Cookpad TechConf 2018 開催報告 - クックパッド開発者ブログ
    tsub511
    tsub511 2018/02/20
  • クックパッドと分散トレーシング - クックパッド開発者ブログ

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

    クックパッドと分散トレーシング - クックパッド開発者ブログ
    tsub511
    tsub511 2017/09/06
  • Cookpad Ruby Hack Challenge - クックパッド開発者ブログ

    技術部の笹田です。Ruby インタープリタの開発をしています。最近は Fiber まわりを10年ぶりにいじってます。 2017/08/30, 31 に、Cookpad Ruby Hack Challenge というイベントを行いますので、その宣伝をさせてください。 Cookpad Ruby Hack Challenge とは クックパッドRuby インタプリタを Hack しよう! クックパッドをはじめ、多くのウェブアプリケーション開発でプログラミング言語 Ruby が利用されています。Ruby で書かれたプログラムを動かすときは Ruby インタプリタで実行します。 Cookpad Ruby Hack Challenge は、この Ruby インタプリタに対して機能を追加したり、改良したり、性能向上させたりする方法、つまり Ruby インタプリタを Hack する方法を、二日間かけて

    Cookpad Ruby Hack Challenge - クックパッド開発者ブログ
    tsub511
    tsub511 2017/06/30
  • Android開発のコードレビューbotを乗り換えた話 - クックパッド開発者ブログ

    モバイル開発で利用しているコードレビューbotを最近乗り換えた話をします。 コードレビューbotとは コードレビューbotはPull Request(以下PR)に対して、静的解析した結果などをコメントする機能を持つプログラムの事を指します。 コードレビューbotを導入すると、些末な内容はbotが勝手に指摘してくれるため、レビューワーがより重要な内容のレビューに時間を使うことが期待できます。 有名なサービスにHoundやSideCIなどがあります。 Android開発でのレビューbotの役割 CookpadのAndroid開発では、下記の項目をPR毎に実行しています。 PRのマイルストーンチェック FindBugsを利用した静的解析 AndroidLintを利用した静的解析 license-tools-pluginを利用したOSSライセンス情報のチェック アプリのビルド deploygate

    Android開発のコードレビューbotを乗り換えた話 - クックパッド開発者ブログ
    tsub511
    tsub511 2017/06/29
  • クックパッドの開発基盤、インフラ環境での開発で心がけているラストワンマイル - クックパッド開発者ブログ

    初めましてインフラや基盤周りの技術が好きなエンジニアの渡辺です。 今回は私がサービス開発を行う上で心がけていることをお話させて頂きます。 (画像は私の好きな言葉で、ここの過去ブログで使われていた物を再掲させて頂いています) 前提 クックパッドのサービスはクックパッドで整備、運用されている全社共通の開発基盤、インフラ環境上に構築されています。 別に強要されているわけではないのですが、そのレールに乗ることで様々な恩恵を受けることが出来ます。 サービス開発では価値を届ける、検証することにフォーカスしたいのでサービス毎に環境を 1 から構築していては手間が勿体無いです。 そして、セキュリティやバグ等の対応も全社的になるべく共通の環境にすることで環境依存で発生する問題のリスクを分散することが出来ます。 近年は Microservices 化ということで、新しいサービスを立ち上げる環境整備が進んでいま

    クックパッドの開発基盤、インフラ環境での開発で心がけているラストワンマイル - クックパッド開発者ブログ
    tsub511
    tsub511 2017/05/17
  • この gem を使っているアプリケーションを探す - クックパッド開発者ブログ

    技術部開発基盤グループの鈴木 (id:eagletmt) です。 Ruby アプリケーションが使っている gem を一覧できる GemCollector というツールを作りました。 今回はその GemCollector の機能と、GemCollector の利用シーンの拡大について紹介したいと思います なお GemCollector は Rails Engine の形で gem として公開しています。 https://github.com/cookpad/gem_collector GemCollector 作成の動機 GemCollector を作った元々の動機は我々開発基盤でメンテナンスしている gem を更新したいとき、とくに非互換を含む変更を行いたいときに、変更の影響を受けるアプリケーションを把握することでした。 社内でよく使われている gem であれば、事前に社内での使われ方を調

    この gem を使っているアプリケーションを探す - クックパッド開発者ブログ
    tsub511
    tsub511 2017/03/23
  • ストレスフリーなGitHubのIssue生活 - クックパッド開発者ブログ

    こんにちは。サービス開発部の丸山@h13i32maruです。 今日はGitHub/GHE(GitHub Enterprise)で快適なIssue生活をおくるために作ったJasperというツールと、それを実際にどうやって使っているかを紹介させていただきます。 ストレス GitHub/GHEを日々の業務の中心として使っていると、すごくたくさんのIssueやPull Request(以下PR)が流れてきます。 これらのIssueを処理する方法としては主に「メール」と「通知ページ(github.com/notifications)」の2つだと思います。 僕もこれらの方法を使っていたのですが、以下の点ですごく困っていました。 多すぎてメンションされたものやコメントしたものを見逃してしまう あとで見ようと思って、忘れる ブラウザのタブを大量に開いた状態になる 知らないところのIssueで議論が進んでい

    ストレスフリーなGitHubのIssue生活 - クックパッド開発者ブログ
    tsub511
    tsub511 2017/03/14
  • Cookpad TechConf 2017 開催報告 - クックパッド開発者ブログ

    こんにちは! @yoshiori です。 先週の土曜日の 2017/01/21、技術系カンファレンスCookpad TechConf 2017を開催しました。 第二回となる今年は、ライブ配信・Wi-Fi 設置などの新しい取り組みやサプライズ発表など盛りだくさんでお届けしました。 この記事では色々なリンクをまとめたいと思います。 発表資料と動画 Cookpad under a microscope by 成田 一生 Go Global by 滝口 健太郎 Building infrastructure for our global service by sorah サービス開発におけるデザインの取り組み方 by 若月 啓聡 モバイルアプリのABテスト by 加藤 龍 チームでプロダクト開発をするための取り組み by 丸山 亮 よりよい検索体験の為の情報設計とプロトタイピング by 須藤 耕平

    Cookpad TechConf 2017 開催報告 - クックパッド開発者ブログ
    tsub511
    tsub511 2017/01/26
  • Cookpad TechConf 2017 提供 Wi-Fi の裏側 - クックパッド開発者ブログ

    インフラ部 id:sora_h です。 先週開催された Cookpad TechConf 2017 如何でしたでしょうか。わたしは TechConf において Wi-Fi を担当していて、こちらも好評いただいたようでなによりでした。 というわけで、この記事では TechConf 2017 における Wi-Fi についての詳細を紹介します。 ネットワーク機器設定・サーバー mitamae レシピ等の公開 https://github.com/cookpad/techconf2017-network 今回の紹介する構成のうち、ネットワーク機器およびサーバ側の設定等、ほとんどを GitHub で公開しています。参考までにどうぞ。 TechConf 2017 NOC メンバー 実は外注などはしておらず、社内 IT と SRE グループのメンバーで構成されていました。 メイン (設計・運用・設営)

    Cookpad TechConf 2017 提供 Wi-Fi の裏側 - クックパッド開発者ブログ
    tsub511
    tsub511 2017/01/26
  • 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時間でスケールアウトする - クックパッド開発者ブログ
    tsub511
    tsub511 2016/10/06
  • ユーザーをムフムフさせるための「お料理アルバム」デザインリニューアル - クックパッド開発者ブログ

    こんにちは、投稿開発部のデザイナー、木村です。主に、iOS/Androidクックパッド App、また昨年から「お料理アルバム」というAppのデザインを担当しております。 今回は、お料理アルバムのデザインリニューアルを例に、既存サービスが持ってた課題をどのように解決していったかについて、デザインの観点を交えてお話したいと思います。 リニューアルの経緯 お料理アルバムは、毎日の料理写真をプライベートに記録する iPhone/Android Appです。多くのユーザーから「こんなアプリを待っていました!」「自動で写真をキレイに並べてくれて助かっています!」といった声を頂き、投稿された写真数は400万枚を超えるサービスに成長しました。 そんなお料理アルバムもリリースから1年半ほど経過し、さらにより多くのユーザーに喜んでいただくために、デザインのリニューアルを計画しました。 ゴールはユーザーの「ム

    ユーザーをムフムフさせるための「お料理アルバム」デザインリニューアル - クックパッド開発者ブログ
    tsub511
    tsub511 2016/09/21
  • エンジニア全体ミーティング Tech MTGのすゝめ - クックパッド開発者ブログ

    こんにちは。投稿開発部エンジニアの土谷(@taihaku0415)です。 Androidアプリとcookpad.comの開発を中心に担当しています。 現在、クックパッドには100人弱のエンジニアが在籍しています。普段エンジニアはそれぞれの事業部に所属して、業務を行っています。スマートフォンアプリを専門に書くエンジニア、広告領域を担当するエンジニア、インフラや開発の基盤を構築しているエンジニアなど、多岐に渡ります。 そのため、クックパッドでは、業務をする上で必須なものから、他のチームの開発の知見や生産性を上げるためのtips(ツールの紹介や使い方など)まで、様々な情報を共有して、開発力や技術力の向上に役立てるための取り組みを行っています。 例えば、技術領域課題共有会では各部署・チームの課題を話し合う場が設けてあります。また、Groupadという社内ブログサービス上で、全社員(エンジニアにかぎ

    エンジニア全体ミーティング Tech MTGのすゝめ - クックパッド開発者ブログ
    tsub511
    tsub511 2016/09/16
  • ECS を利用したオフラインジョブの実行環境 - クックパッド開発者ブログ

    技術部の鈴木 (id:eagletmt) です。 クックパッドでは以前からアプリケーションの実行環境として Docker を利用していましたが、最近は徐々に Amazon EC2 Container Service (ECS) を利用し始めています。 去年の時点での Web アプリケーションのデプロイ手法 *1 や、最近 ECS を利用してどう Web アプリケーションをデプロイしているか *2 については紹介したことがあるので、今回は定期的なバッチ処理やジョブキューを介して非同期に実行されるようなオフラインの処理について、どのような環境を構築しているか紹介したいと思います。 Docker を使う前 Docker を利用し始めるより前から社内では kuroko2 *3 というジョブ管理システムが稼動しており、複数のアプリケーションから利用されていました。 kuroko2 は定期的にジョブを

    ECS を利用したオフラインジョブの実行環境 - クックパッド開発者ブログ
    tsub511
    tsub511 2016/09/10
  • 分散テスト実行システムRRRSpecをリリースしました - クックパッド開発者ブログ

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

    分散テスト実行システムRRRSpecをリリースしました - クックパッド開発者ブログ
    tsub511
    tsub511 2016/09/01
  • Ruby on Rails アプリケーションにおけるモンキーパッチの当て方 - クックパッド開発者ブログ

    技術部の牧です。 今日はモンキーパッチの話をします。 モンキーパッチとは何か そもそもモンキーパッチ (monkey patch) とは何でしょうか? 端的に言えば、言語の組み込みクラスやライブラリ、その他外部ライブラリの挙動を、動的に拡張する仕組みをモンキーパッチと呼びます。 *1 例えば、Ruby のモンキーパッチのすごく単純な例として以下のようなものがあります。 module NilClassExtension def empty? true end end NilClass.prepend(NilClassExtension) インスタンスが空であるかどうかを判定するメソッドとしての #empty? は String や Array など様々なクラスに存在しますが、 nil を唯一のインスタンスとする NilClass には来は存在しません。 このモンキーパッチを導入することで

    Ruby on Rails アプリケーションにおけるモンキーパッチの当て方 - クックパッド開発者ブログ
    tsub511
    tsub511 2016/08/31
  • 新サービス立ち上げ時の重要指標のデザイン - クックパッド開発者ブログ

    こんにちは、株式会社ビットジャーニーに出向中の出口 (@dex1t) です。ビットジャーニーでは、社内情報共有ツール Kibela*1のサービス設計やプロダクトマネジメントに責任を持ちつつ、エンジニアとして開発全般に携わっています。 今回は、新サービスの立ち上げ時にどのような考えで重要指標*2を設計し、それを実際の開発のなかでどう使っていくかという話をします。 なぜ検証をするのか そもそもなぜ新サービス立ち上げ時に、重要指標や検証といった考えが必要になるのでしょうか。それを考えるにあたって、クックパッド的なサービス開発の流れを改めて整理してみます。 企画と検証は表裏一体 サービス開発といえば、企画・開発・検証をぐるぐる回すというのが一般的だと思います。指標は検証段階で活用する道具です。企画で考えたことを確かめるのが検証段階であり、企画と検証は表裏一体です。 したがって、指標の設計をするにあ

    新サービス立ち上げ時の重要指標のデザイン - クックパッド開発者ブログ
    tsub511
    tsub511 2016/08/30
  • 実践 Pact:マイクロサービス時代のテストツール - クックパッド開発者ブログ

    技術部の taiki45 です。 以前「サービス分割時の複雑性に対処する: テスト戦略の話」という記事で、サービス間のインテグレーションテストにおける問題について紹介しました。現在のクックパッドではこの問題の解決のために Pact というツールを導入して運用しています。この記事では、その運用の知見を紹介できればと思います。 Pact Pact は Consumer-Driven Contract testing (CDC testing) を実現するためのツールです。"Consumer"、"Provider" という見慣れない単語が出てきますが、この記事ではだいたい「Consumer = Web API クライアント」、「Provider = Web API サーバー」と対応ができます。この記事では具体的な Pact の利用例を通じて CDC testing がどういうものなのかについても

    実践 Pact:マイクロサービス時代のテストツール - クックパッド開発者ブログ
    tsub511
    tsub511 2016/07/05