タグ

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

  • Rubyの開発を支える技術 - クックパッド開発者ブログ

    こんにちは、遠藤(@mametter)です。RubyKaigi Takeout 2020お疲れさまでした。 現在クックパッドには、フルタイムでRubyの開発をしている人が2人います(笹田と遠藤)。 それぞれ、Ruby 3の目標である並列性と静的解析の実現をメインミッションに据えて活動していますが、実はそれ以外にもRubyの開発を支えるための活動をいろいろやっています。 今回は、遠藤が関わっている範囲で、「Ruby開発者会議を支える技術」「Ruby開発のリモート議論を支える技術」「Rubyの品質を支える技術」についてざっと紹介してみます。 1. Ruby開発者会議を支える技術 Rubyに対する機能提案などの議論は、原則として、バグトラッカ上で行われます。 しかし、設計者であり最終決定権を持つmatzの多忙などの理由で、それだけでは議論が停滞してしまうのも事実です。 そこでRubyでは、開発促

    Rubyの開発を支える技術 - クックパッド開発者ブログ
    hirocueki
    hirocueki 2020/09/08
  • RubyKaigi 2019 Cookpad Daily Ruby Puzzles の正解と解説 - クックパッド開発者ブログ

    Ruby 開発チームの遠藤です。RubyKaigi 2019 が無事に終わりました。すばらしい会議に関わったすべてのみなさんに感謝します。 開催前に記事を書いたとおり、クックパッドからはのべ 7 件くらいの発表を行い、一部メンバは会議運営にもオーガナイザとして貢献しました。クックパッドブースでは、様々な展示に加え、エンジニアリングマネージャとトークをする権利の配布やクックパッドからの発表者と質疑をする "Ask the speaker" など、いろいろな企画をやりました。 クックパッドブースの企画の 1 つとして、今年は、"Cookpad Daily Ruby Puzzles" というのをやってみました。Ruby で書かれた不完全な Hello world プログラムを 1 日 3 つ(合計 9 問)配布するので、なるべく少ない文字を追加して完成させてください、というものでした。作問担当は

    hirocueki
    hirocueki 2019/05/21
    おもしろい! #ruby puts.class=>NilClassだけど、NilClass.class=>Classなのね。という気づきが多くてタメになる
  • iOS 開発で storyboard と xib をうまく使い分けるプラクティス - クックパッド開発者ブログ

    Web エンジニアだったはずがひょんなことから iOS アプリを書き始めてはや3ヶ月。ヘルスケア事業部の濱田です。 iOS アプリで画面遷移を実現するためには様々な方法があります。 コードのみを使う方法 xib を使う方法 storyboardを使う方法 etc. 初めはかなり混乱しましたが、最終的には storyboard と xib の合わせ技に落ち着きました。 今回はこの方法についてご紹介します。 storyboard を使うか、xib を使うか、それが問題だ アプリの UI 部品の配置は結構たいへんな作業です。とくに Autolayout の制約の設定などは、コードのみで設定するのは困難でしょう。Interface Builder の支援をなるべく活用したいところです。 そこで、storyboard もしくは xib ファイルを利用して ViewController(以下 VC)

    iOS 開発で storyboard と xib をうまく使い分けるプラクティス - クックパッド開発者ブログ
    hirocueki
    hirocueki 2018/11/30
    Autolayout 制約、全部コードで書いてて確かに差分で変更点追いやすいけど「この道が本当に正解?」というフェーズに来てこの記事見てる “アプリの UI 部品の配置は結構たいへんな作業です。とくに Autolayout の制約の設定
  • Ruby の NODE を GC から卒業させた - クックパッド開発者ブログ

    こんにちは、技術部のフルタイム Ruby コミッタの遠藤(@mametter)です。メリークリスマス。 Ruby 2.5.0 がリリース予定です。いろいろな改善が含まれています。クックパッドからの主な貢献としては、「trace 命令の削除による高速化」や「分岐・メソッドカバレッジの測定のサポート」などがあります。 ユーザから見える改善はいろいろと記事が出てくると思うので、この記事では、「抽象構文木のメモリ管理のリファクタリング」というあまりユーザから見えない改善を紹介してみます。 概要 Ruby のパーサは、NODE という内部的なオブジェクトで構成された抽象構文木を生成します。2.4 までの NODE は GC に管理される普通のオブジェクトでしたが、2.5 からは GC の外で管理するようになりました。これにより、3 つ嬉しいことがあります。 大きなコードのパースが速くなりました

    Ruby の NODE を GC から卒業させた - クックパッド開発者ブログ
    hirocueki
    hirocueki 2017/12/26
  • iOSアプリケーションでコードベースのレイアウトを積極利用する - クックパッド開発者ブログ

    海外事業向けのiOSアプリケーション開発を担当している西山(@yuseinishiyama)です。クックパッドは現在、海外複数カ国に向けてサービスを展開しています。 XcodeにはInterface Builderと呼ばれる、リッチなGUIを持ったデザインツールが付属しており、これを用いて画面のレイアウトを構成することが主流となっています。弊社ブログでも、iOS開発でstoryboardとxibをうまく使い分けるプラクティス等の記事で、GUIベースのレイアウトについて触れています。しかし、現在私が担当しているプロジェクトでは、Interface Builderを用いずに、レイアウトの大半をコードで記述しています。 今回は、コードベースのレイアウトを実装していく中で得た知見を、以下の3つの部分に分けて共有したいと思います。 Interface Builderを用いたレイアウトとコードベースの

    iOSアプリケーションでコードベースのレイアウトを積極利用する - クックパッド開発者ブログ
    hirocueki
    hirocueki 2017/02/03
  • 分析SQLのコーディングスタイル - クックパッド開発者ブログ

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

    分析SQLのコーディングスタイル - クックパッド開発者ブログ
    hirocueki
    hirocueki 2016/11/09
  • エンジニア全体ミーティング Tech MTGのすゝめ - クックパッド開発者ブログ

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

    エンジニア全体ミーティング Tech MTGのすゝめ - クックパッド開発者ブログ
    hirocueki
    hirocueki 2016/09/20
  • 「プログラミングElixir」から分散系の世界へ踏み込もう - クックパッド開発者ブログ

    テストエンジニアしてます、技術部の松尾(@Kazu_cocoa)です。 今回は、2016年8月19日に発売されますプログラミング言語であるElixirの入門書、プログラミングElixir(以下、書)に関して少し書こうと思います。 プログラミングElixir 作者: Dave Thomas,笹田耕一,鳥井雪出版社/メーカー: オーム社発売日: 2016/08/19メディア: 単行(ソフトカバー)この商品を含むブログを見る 私はここ1年以上、Erlang/Elixirを学びながら業務/私事で使っていました。 業務では主にAndroid(Java)/iOS(Objectvie-C/Swift)/Rubyを使っています。その傍、 社内向けWebアプリケーションをElixir x Phoenixフレームワーク を使い構築したり、HTTPリクエストをrecord/play/proxyするテストツー

    「プログラミングElixir」から分散系の世界へ踏み込もう - クックパッド開発者ブログ
    hirocueki
    hirocueki 2016/08/22
  • 開発速度を上げるための Pull-Request のつくり方 - クックパッド開発者ブログ

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

    開発速度を上げるための Pull-Request のつくり方 - クックパッド開発者ブログ
    hirocueki
    hirocueki 2016/08/18
  • Try! Swiftで感じた将来 - クックパッド開発者ブログ

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

    Try! Swiftで感じた将来 - クックパッド開発者ブログ
    hirocueki
    hirocueki 2016/04/11
  • テストを使いサービス開発を駆動していくために取り組んでいること - クックパッド開発者ブログ

    技術部の松尾(@Kazu_cocoa)です。 最近、 @moroや私を中心に、テストから開発を駆動するという方向で、とある活動を始めました。その活動の中では、 @t_wadaさん を 技術顧問 として巻き込んで活動を進めています。そんな取り組みを少しここにまとめます。 取り組みの前段階 先日、私はテストエンジニアというロールに焦点を当ててテストという言葉に対する2種類の話をいたしました。TDDのようにテストによって開発を駆動していく側面の話と、人の認知・感じ方に寄った仕様自体含めてテストしていく側面の話です。 クックパッドエンジニアトークナイト 〜クックパッドテストエンジニアのあり方〜 を開催しました! クックパッドエンジニアトークナイト 〜クックパッドテストエンジニアvol.2 Testing編〜 を開催しました! その際、会の傍でt_wadaさんらと私たちが開発するWebアプリケーショ

    テストを使いサービス開発を駆動していくために取り組んでいること - クックパッド開発者ブログ
    hirocueki
    hirocueki 2016/03/04
    t_wada駆動開発
  • エンジニアが人事部に入ってやったこと - クックパッド開発者ブログ

    人事部 エンジニア人事企画リーダー*1の小川(@conceal_rs)です。 前回はサービス開発に関するお話をしたのですが、今回はエンジニアが人事に入ってやったことについてお話したいと思います。 人事部との兼務のきっかけ そもそも去年から中途エンジニア採用には関わってきていました。主に書類選考や面接官をしてきたのですが、去年の終わりごろからはさらに、新卒を含めたエンジニア採用全般に関わるようになっていました。また同じような時期から社内のエンジニア評価に関しても関わりが強くなってきていて、業務のほとんどが「人事系の仕事では?」と思う時があるほど比重は大きくなりました。 そんななか、当然のように人事の方と一緒に仕事をすることが増えたのですが、なぜか一歩引いた状態で会話されているなと感じることが増えてきました。言葉では説明しづらいのですが、「手伝っていただいて恐縮です」という雰囲気で接してこられ

    エンジニアが人事部に入ってやったこと - クックパッド開発者ブログ
    hirocueki
    hirocueki 2015/12/25
  • たかがレシピサイトに何故こんな技術力が必要なのか - クックパッド開発者ブログ

    こんにちは!クックパッド編集室メディア開発グループ長の @yoshiori です。 たまにネットやイベントなどで「たかがレシピサイトになんでこんな技術力が必要なのか」と言われることがあるので今日はそれに真正面から答えてみようと思います。 例えばどういうところで技術使ってるか 他の人の話はこのブログの他のエントリを見てもらえればわかると思うので、僕の所属しているクックパッド編集室での取り組みの中から今回は料理動画を例に説明します。 Adaptive bitrate streaming での配信 クックパッドで配信している動画は基的に「料理動画を支える技術」でも触れられている配信プラットフォームを利用しています。 ここでは裏で動画を「低画質」「普通」「高画質」の 3 パターンでエンコードして、回線状況に応じて最適な画質の動画を HTTP Live Streaming (HLS) で配信してい

    たかがレシピサイトに何故こんな技術力が必要なのか - クックパッド開発者ブログ
    hirocueki
    hirocueki 2015/11/30
  • チーム開発の進め方 - クックパッド開発者ブログ

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

    チーム開発の進め方 - クックパッド開発者ブログ
    hirocueki
    hirocueki 2015/06/05
  • 既存のObjective-CアプリケーションをSwiftで書き換えた話 - クックパッド開発者ブログ

    海外事業向けのiOSアプリケーション開発を担当している西山(@yuseinishiyama)です。クックパッドは現在、海外複数カ国に向けてサービスを展開しています。 主にObjective-Cで記述されたアプリケーションを全面的にSwiftに書き換える機会があったので、その際に得た知見や書き換えるに至った動機を共有します。 書き換えに至るまでの経緯 この項では、書き換えに至るまでの経緯について説明します。 Objective-C期 アプリケーションの開発は2014年7月頃にスタートしました。Swiftの発表直後でしたが、時期尚早ということもあり、Objective-Cで実装することになりました。 Objective-C、Swift混在期 2014年10月頃から、Swiftへの段階的な移行のために、新規のコードをSwiftで書くようになりました。Swiftの記述力や、ヘッダと実装を行き来しな

    既存のObjective-CアプリケーションをSwiftで書き換えた話 - クックパッド開発者ブログ
    hirocueki
    hirocueki 2015/04/28
  • 雑な発想を活かすチーム作り - クックパッド開発者ブログ

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

    雑な発想を活かすチーム作り - クックパッド開発者ブログ
    hirocueki
    hirocueki 2015/03/26
    雑 right
  • iOS アプリの UI でこれだけはおさえたい細部のインタラクション3つ - クックパッド開発者ブログ

    Holiday 事業室の多田です。先日 Elasticsearch の記事を書いた内藤と共に Holiday ( https://haveagood.holiday ) の開発を行っています。 Holiday は、去年9月に Web 版をリリースしましたが、よりおでかけを楽しくするために今年3月に iPhone アプリをリリースしました(ダウンロードはこちら)。 アプリの開発過程ではコンセプトや仮説を立て、その検証や実現のために作っては壊すことを何度も繰り返し行いますが、実現したい価値を提供するためには、出来上がったプロダクトの細部のインタラクションも重要になってきます。細かい部分に気を配り使い心地を良くしてこそ、当に提供したい価値をまっすぐに届けることができるためです。逆に言えば、最後の最後で細かい部分がちゃんとしていないばかりにそれまでの過程が無駄になったらもったいないですよね。 今

    iOS アプリの UI でこれだけはおさえたい細部のインタラクション3つ - クックパッド開発者ブログ
    hirocueki
    hirocueki 2015/03/19
  • サービスをエコシステムで改善した(してる)はなし - クックパッド開発者ブログ

    投稿推進部の大前です。 普段はレシピを投稿するユーザーさんに向けたサービス開発・改善を担当しています。 一般に「サービス開発」というとどれくらい質的なユーザーの課題解決をできているかや、価値提供ができているるか、ということが重要な観点として取り上げられますが(もちろんそういうった点が大事なのは大前提として)、今回はクックパッドという一つの大きなサービスの中で日々起こっているユーザーアクションを、クックパッドをひとつの大きなエコシステムとして捉えることでより多くの副次的な価値に還元できたらないいのになーというような話をしたいとおもいます。 クックパッドという大きなエコシステム ご存知のとおりクックパッドは一般のユーザーの方が投稿してくださっているレシピを中心とした(すこし古い表現ですが)CGMサービスです。 すごく簡単に言ってしまうと、クックパッドに投稿されたレシピがそれを必要としている人

    サービスをエコシステムで改善した(してる)はなし - クックパッド開発者ブログ
    hirocueki
    hirocueki 2015/03/04
  • 初めての新規サービス開発を通して学んでいること - クックパッド開発者ブログ

    こんにちは。投稿推進部の清水(@pachirel)です。 2009年にクックパッドに入社してから、インフラ周り、クックパッドの人事周り(採用・評価)や広告周りのシステム開発を担当していました。 2014年4月頃から、2〜3名の小さなチームで新規サービスのプロトタイピングをいくつか行っています。 企画の詳細は省きますが、私がこの10ヶ月ほどで学んだことをまとめました。アジャイル開発やLean startupの考えに共感しているので、そこから得た内容に私の体験を付け加えたものになっています。 今回はプログラミングに関する技術的な内容は含まれていません。 なぜ作るか スタートアップが失敗する原因で一番多いのは「人が必要としていないものを作ってしまった」というものです。 The Top 20 Reasons Startups Fail 社内の新規サービス開発でも同じ傾向があるのではないでしょうか。

    初めての新規サービス開発を通して学んでいること - クックパッド開発者ブログ
    hirocueki
    hirocueki 2015/02/05
    自分が最良で最悪のユーザーになって、それをプロダクトに落とし込めたらいいんだろうなあ。使わないものにリソースを割かないためにはそれが一番だとおもうわけです
  • 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 編) - クックパッド開発者ブログ
    hirocueki
    hirocueki 2015/01/05