タグ

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

  • Chaos Engineering に向けてレシピサービスの Steady State を追求する - クックパッド開発者ブログ

    こんにちは、今年ソフトウェアエンジニアとして新卒入社した @itkq です。社会人になってから 1 クールで見るアニメの数がガクッと減っていることに気づいて最近は無力を感じています。さて、この開発者ブログで「Chaos Engineering やっていく宣言*1」が公開されたことは記憶に新しいと思います。私はインフラストラクチャー部 SRE グループに配属され、最近は Chaos Engineering に関わる取り組みも行っています。その中から今回は「レシピサービスの Steady State を追求する」取り組みについて、背景や現状も含めて紹介します。 Steady State とはなにか、なぜ必要か 一昔前の Web サービスといえば、様々な機能が 1 つのアプリケーション上に実装されたモノリシックアーキテクチャが一般的でした。その後サービスという単位で機能を切り出して別アプリケー

    Chaos Engineering に向けてレシピサービスの Steady State を追求する - クックパッド開発者ブログ
  • Web アプリケーションを把握するためのコンソール - クックパッド開発者ブログ

    技術部開発基盤グループの鈴木 (id:eagletmt) です。 クックパッドではほとんどの Web アプリケーションが Amazon ECS 上で動く状態となり、またマイクロサービス化や新規サービスのリリースにより Web アプリケーションの数も増えていきました。 個々のアプリケーションでは Docker イメージを Jenkins でビルドして Amazon ECR にプッシュし、Rundeck から hako を用いて ECS にデプロイし、またその Web アプリケーションからは Amazon RDS、Amazon ElastiCache 等のマネージドサービスを活用しています。 このように多くの Web アプリケーションが存在し、また各アプリが別のアプリや AWS の様々なマネージドサービスを利用している状況では、どのアプリが何を使っているのかを把握することが困難になっていきます

    Web アプリケーションを把握するためのコンソール - クックパッド開発者ブログ
  • 最小限にこだわるサービス開発の試み - クックパッド開発者ブログ

    こんにちは、検索事業部の原田です。クックパッドでプロダクトマネージャーとして検索領域を中心にサービス開発に携わっています。 サービス開発を成功に近づけるためのフレームワークやプロセスについては、書籍等で多くの知見が紹介されています。こちらのブログでもクックパッドの例についてご紹介をしてきました。 クックパッドで大事にしているサービス開発の取り組みのひとつに「仮説をスピーディーに最小限の形で確かめる」というものがあります。言うは易しなのですが、そもそも取り組むべき最小限の形とは? それをどうやって見つけるのか? やっとの思いで何かを見つけられたとして、その後最小限にこだわり判断し続けるには? と、大変な困難が伴うと感じています。 今回は、サービス開発プロセスの中でも特に、どのように取り組むべき最小限の形を見つけ、最小限にこだわり続けながら開発を進めるのかについて、私が気をつけていること(気を

    最小限にこだわるサービス開発の試み - クックパッド開発者ブログ
  • 分析SQLのコーディングスタイル - クックパッド開発者ブログ

    SQL、書いてますか? こと大規模データ処理の分野においてはSQLはもはや標準インターフェイスであり、 分析やらバッチやらに関わっている皆様は日々大量のSQLクエリーを生産していることと思います。 そこでちょっと気になるのが、 SQLのコーディングスタイルってどうするのが一般的なんだっけ……? という点です。 イマドキはSQLなんてO/R mapperに吐かせることが多いからなのか、 それともコードを広い範囲で共有することがそもそもないからか、 SQLのコーディングスタイルについて見聞きすることは他のプログラミング言語に比べるとだいぶ少なく、 いまいち決定版と言えるスタイルがないなと感じています。 そんなわけで日は、SQLのコーディングスタイルについての意識を活発化させるべく、 クックパッドでわたし(青木)が使っているコーディングスタイルから特徴的な点を紹介したいと思います。 特に、分析

    分析SQLのコーディングスタイル - クックパッド開発者ブログ
  • iOSアプリの継続的デリバリーへの取り組みについての勉強会を開催しました - クックパッド開発者ブログ

    技術部モバイル基盤グループの三木(@giginet)です。 去る9月13日、「Cookpad Tech Kitchen iOSアプリの継続的デリバリーへの取り組み」と題して、iOSエンジニア向けの技術交流イベントを行いました。 このイベントでは、iOS開発の中でも特に大規模アプリの開発フローや、品質改善を支えるための技術をテーマに、弊社のエンジニアから3つの発表をしました。 この記事では、その様子についてお伝えします。 クックパッドiOSアプリの品質管理のための取り組み まず、技術部品質向上グループの松尾(@Kazu_cocoa)から、クックパッドiOSアプリ開発体制について紹介しました。 20160913 cookpad ios_jp from Kazuaki MATSUO この発表では どのような組織構造を元にアプリ開発が行われているか 月1のリリースサイクルを実現するためのリリースフ

    iOSアプリの継続的デリバリーへの取り組みについての勉強会を開催しました - クックパッド開発者ブログ
  • 開発速度を上げるための Pull-Request のつくり方 - クックパッド開発者ブログ

    こんにちは、投稿開発部の森川 (@morishin127) です。クックパッド、お料理アルバム、みんなのお弁当の iOS アプリの開発等に携わっています。 クックパッドでの開発は GitHub Enterprise 上で行われており、書いたコードをプロダクトに取り込む前には基的に第三者のコードレビューが必須です。コードレビューはプロダクトの品質向上に貢献していますが、往々にして結構な時間と労力がかかるものです。Pull-Request を出してレビューをしてもらい指摘の修正を繰り返していると、場合によってはマージに数日〜1週間ほどかかってしまうこともあります。自分の開発速度を速めるため、また周りのエンジニアの開発速度を下げないためにレビューしやすい Pull-Request を出すことは重要です。この記事ではレビューしやすい Pull-Request のために心がけていることを紹介したい

    開発速度を上げるための Pull-Request のつくり方 - クックパッド開発者ブログ
  • Android/iOSアプリのテストの区分戦略 - クックパッド開発者ブログ

    技術部の松尾(@Kazu_cocoa)です。 クックパッドのモバイルアプリ開発では、どのようなテストを書き、どのようなタイミングで、どのようなテストを実施するか?に関してエンジニア各位が意識を合わせるためにテストサイズを定義し運用してきました。ここでは、そんなテストサイズに関して簡単ですがまとめておこうと思います。 テストサイズとは ソフトウェアテストに関わったことがある方なら テストレベル という言葉には出会ったことがあるかと思います。JSTQBでは、このテストレベルは"管理していくテストの活動のグループ"と定義しています*1。 そうでない方も、俗に言う単体テスト/統合テストなど聞いたことがあるかと思いますが、その区分がここで示しているテストレベルとなります。 一方、このテストレベルはV字型と言われる開発工程と合わせて世の中で広く使われているため、社内における共通認識を構築するにあたり個

    Android/iOSアプリのテストの区分戦略 - クックパッド開発者ブログ
  • データベースドキュメント管理システム dmemo のご案内 - クックパッド開発者ブログ

    こんにちは、みんなのウェディングに出向中の小室 (id:hogelog) です。 今回はクックパッドとみんなのウェディングで利用しているデータベースドキュメント管理システム dmemo を紹介します。 https://github.com/hogelog/dmemo dmemo を作成し導入した経緯 私は2016年3月頃からみんなのウェディングで Redshift, bricolage, embulk, re:dash 等を利用したデータ分析基盤の構築を進めています。 (みんなのウェディングのデータ分析基盤の現状 - みんなのウェディングエンジニアリングブログ) 社内の誰でも扱えるデータベース、データの集約・計算・加工、ダッシュボードの作成、クエリの共有などは上記ブログ記事でも書いたように Redshift, bricolage, embulk, re:dash 等を組み合わせることで実現

    データベースドキュメント管理システム dmemo のご案内 - クックパッド開発者ブログ
  • デザイナー横断組織の変遷 - クックパッド開発者ブログ

    こんにちは。デザイナーの池田(id:tikeda)です。6月末までユーザーファースト推進室というデザイナーを中心としたユーザー体験について横断的に責任をもっている室の室長を勤めていました。7月からこのユーザーファースト推進室をなくし役割を各部室に分散させる体制変更を行いました。 ユーザーファースト推進室については、過去のインタビューやブログのエントリーをご覧ください。 はじめに サービス開発では、デザイナー・エンジニアといった職種毎に部を構成し各プロジェクトに派遣するようなスタイル(A)、ディレクター・デザイナー・エンジニアといった役割の異なる職種で部を構成するスタイル(B)、またこの2つを組み合わせたハイブリットのような組織が存在しており、弊社だけでなく開発の現場ではよりよい開発が行われるよう試行錯誤が行われていると感じています。 クックパッドではここ数年、アプリケーションエンジニアは各

    デザイナー横断組織の変遷 - クックパッド開発者ブログ
  • そのメールアドレス、現在も使っていますか? - クックパッド開発者ブログ

    こんにちは。ユーザーファースト推進室ディレクターの大黒です。 ありがたいことにクックパッドは今年で20年目をむかえ、数多くのユーザーに利用されるまでに成長しました。それ故に発生する課題もあり、今回はその中でもユーザー登録に使われているメールアドレスの課題と対策をご紹介したいと思います。 ユーザー登録の仕組み クックパッドのユーザー登録では、下記の項目が必要となります。 メールアドレス パスワード 郵便番号 生年月日 ※iOSアプリでは郵便番号と生年月日は任意入力となります SNSアカウント認証や認証コードでのアクティベートを採用するサービスが今では主流ですが、20年続くサービスであれば一般的なユーザー登録フローではないでしょうか。しかしながら最近のスマートフォンユーザーの多くはメールを使わないという実態も分かっているため、ユーザー登録にメールアドレスを使い続けるかどうかは、別途議論を進めて

    そのメールアドレス、現在も使っていますか? - クックパッド開発者ブログ
  • iOSアプリケーションの国際化と地域化 - クックパッド開発者ブログ

    海外事業向けのiOSアプリケーション開発を担当している西山(@yuseinishiyama)です。クックパッドは現在、海外複数カ国に向けてサービスを展開しています。 海外事業向けのiOSアプリケーションは、英語スペイン語、インドネシア語、タイ語、ベトナム語、アラビア語をサポートしています。今後、サポートする言語は更に増えていく予定です。 これまで、複数の言語に対応するための国際化(internationalization)と地域化(localization)を行ってきました。ここでは、その中で得た知見を以下の4つのパートに分けて共有したいと思います。 コンテンツとUIの言語の決定 RTL対応 翻訳フロー 翻訳に関するTips ちなみに、当該プロジェクトがサポートしているiOSバージョンはiOS8以上です。そのため、iOS9以降でしかサポートされない機能については触れません。 また、我々の

    iOSアプリケーションの国際化と地域化 - クックパッド開発者ブログ
  • オープンソースライセンスの管理を楽にする -Android アプリ編 - クックパッド開発者ブログ

    2020年01月現在の近況については下記のエントリを参照してください techlife.cookpad.com こんにちは、投稿推進部の吉田です。 オープンソースライセンスの管理はアプリ開発における悩み事の一つですよね。今回はこの煩雑な作業をgradleプラグインを使って自動化する話をします。 稿におけるライセンスの管理とは、OSSライブラリの著作権者とライセンス文の管理に限定されることを予めご了承下さい。 紹介するgradleプラグイン cookpad/license-tools-plugin license-tools-pluginが提供する機能 yamlを使ったオープンソースライセンスの管理 ライセンス追記漏れのチェック ライセンス一覧のhtmlの作成 license-tools-pluginの利用方法 複雑な設定は必要なく、3ステップでライセンス一覧を管理することが出来ます。 プ

    オープンソースライセンスの管理を楽にする -Android アプリ編 - クックパッド開発者ブログ
  • オープンソースソフトウェアポリシーをつくろう - クックパッド開発者ブログ

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

    オープンソースソフトウェアポリシーをつくろう - クックパッド開発者ブログ
  • Try! Swiftで感じた将来 - クックパッド開発者ブログ

    こんにちは。広告事業部のモバイルエンジニアパヴェウ @RusinPaw です。 先日、3月に東京で開催されたtry! Swiftカンファレンスに行ってきました。開催者のおかげで世界中の様々な優秀なスピーカーが発表してくれました。発表内容はSwiftに留まらずiOSフレームワーク(CoreData、CoreAnimationHomeKit)やテスティング、ユーザビリティ、コードリーダビリティなど、様々でした。 Swiftとは Swiftとは2014年のWWDCでAppleが公開し、プログラマーコミュニティを驚かせたプログラミング言語です。モダン、安全、書きやすくて読みやすい、既存のObjective-Cのコードベースに同時と使える言語と言われました。 実は「そんなにすごいのか」の議論はまだまだ続いています(SwiftとObjective-Cをミックスする時に困っている場合がある)が、Swi

    Try! Swiftで感じた将来 - クックパッド開発者ブログ
  • 社内共用カメラのすゝめ - クックパッド開発者ブログ

    舘野 (id:secondlife / @hotchpotch) です。 クックパッドでは会社の中心にキッチンがあり、社員同士でランチやお菓子を作ったり、イベントを開いたりと社内のコミュニケーション用途で広く使われています。そんなキッチンで作られている様々な料理や、楽しそうなコミニュケーションをその場に居ない人にも伝えたいなー、どうにか伝える方法は無いのかな〜と思っていました。 そんな中、より良い組織を作るために の中でも触れられているコミニュケーション改善の話をしている最中、社内に共用のカメラが置いてあって、撮った写真が何もせずとも自動で社員が見れる場にアップロードするだけの仕組みを提供するだけでうまく行くかも、と思ったので2014年末に作ってみました。 サービスのコンセプト 作るときに盛り込んだコンセプトは以下の二点です。 運用コストがゼロ アップロードコストがゼロ 運用コストがゼロ

    社内共用カメラのすゝめ - クックパッド開発者ブログ
  • もう失敗しない!プロジェクト書きなおして、最高の開発環境を手に入れる - クックパッド開発者ブログ

    ちくしょう、プロジェクトまるごと書き直したい 自分で作り始めたプロジェクトであっても、途中から相乗りしたプロジェクトであっても、誰もが一度は体験する気持ちではないでしょうか。 私が携わっている「おいしい健康」も例外ではありません。 プロジェクトを全て書き直したいと思う一方で、全てのコードを書き換えようとするアプローチは、これまで作ってきた見た目や機能、ビジネスロジックを再現しきれずに潰えてしまう。という話しも良く聞きます。 実は全て書き直したいのではなく、その大きな目的としては以下のようなモノがあるのではないでしょうか。 シンプルな作りに変えたい 不要なコードが重なり、動作が遅くなっているところを解消したい 新しいライブラリ、新しい技術を取り込めるようにしたい 今回は、このような目的を達成しつつ、プロジェクトの書き換えを行った私達の話をしたいと思います。 cookpad体からのプロジェク

    もう失敗しない!プロジェクト書きなおして、最高の開発環境を手に入れる - クックパッド開発者ブログ
  • サービス分割時の複雑性に対処する: テスト戦略の話 - クックパッド開発者ブログ

    技術部の taiki45 です。 現在のクックパッドでは、cookpad.com 内のデータを利用するようなプロダクトでも、cookpad.com を提供しているアプリケーション(体アプリケーション)とは別に新規のアプリケーションとして設計・実装しています。また、すでに体アプリケーションの一部として実装されているプロダクトについても、トレードオフを考慮しながら場合によっては、体アプリケーションから独立した別のアプリケーションとして設計・実装することが増えてきています。これらの体アプリケーションや、新規にあるいは体アプリケーションから独立させて設計・実装したアプリケーションのことを「サービス」と呼んでいます。また、この体アプリケーションから独立させることを「サービス分割」と呼んでいます。 制御できないほどの巨大な複雑なまとまりを制御するために、その巨大なまとまりと単純なまとまりに

    サービス分割時の複雑性に対処する: テスト戦略の話 - クックパッド開発者ブログ
  • 部署横断な施策の考え方 - クックパッド開発者ブログ

    検索・編成部の日高(@kaa)です。 クックパッドでは事業部制の組織になっており広告事業部、会員事業部など分かれることで 目標を明確にしそれぞれの数字に集中、スピードを上げる体制になっておりますが、私の 動き方としては各事業部の取り組みにくい部分、アプリ全体としての改善といった部署横断 的な仕事になっております。 そのため、通期での目標もありますが基的には施策ごとに目標を定めて実行していきます。 特定の目標に対してどう取り組むかという動き方と違い、なにが必要になりそうか考えてそれを どのような結果を目指してやるかを考える必要があります。 何に対して、どう取り組むかも自由に考えると、やるべきに見えることはいくらでもあります。 (結果は出さないといけません) ある機能の使い勝手をよくするだったり、ある数字に貢献するだったり、環境を整えたり 事例を作ることで他部署が動きやすくするだったり。 ま

    部署横断な施策の考え方 - クックパッド開発者ブログ
  • ディレクションの役割を持つスタッフの活躍を広げる取り組みについて - クックパッド開発者ブログ

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

    ディレクションの役割を持つスタッフの活躍を広げる取り組みについて - クックパッド開発者ブログ
  • 現代のエンジニアのための強力なメモ帳 Jupyter notebookのすゝめ - クックパッド開発者ブログ

    会員事業部の有賀(id:chezou)です。 今年一年、社内では勝手に"Jupyterの伝道師"を標榜してJupyter notebookの普及活動を展開してきました。 先日、社内でハンズオンも行ったおかげもあり、かなり社内のマシンにPython環境が構築されてきました :) Jupyter notebookとは? ひとことで言うとブラウザで動くすごい便利なREPL*1です。 百聞は一見にしかず、見てみましょう。 このように、Rubyの対話環境であるpryを触っているようにインタラクティブにコードを書くことができます。 以降で説明をしますが、Jupyter notebookは記録・共有・再現がとても得意です。特に図表があるときにその効果を発揮します。 Jupyter notebookの良い所 過去のコードを改変、再実行できる セルと呼ばれる入力部分にはMarkdownやコードが記述できます

    現代のエンジニアのための強力なメモ帳 Jupyter notebookのすゝめ - クックパッド開発者ブログ