これまでのバージョンと互換性を保ちながら、主に実行速度やコードの可読性について改善が加えられています。http://cookpad.github.io/chanko/ChankoとはChankoは、素早く安全に新機能のプロトタイプを行うためのフレームワークです。クックパッドでは今現在でも、Chankoを使って多くの機能を独立して開発し、対象範囲を限定して公開することで新機能の検証サイクルを回しています。Chankoを利用して拡張した機能でエラーが起きた場合、拡張前の機能に自動的に切り替えられるため、プロトタイプでの検証段階から安全に機能を提供することが出来ています。2012で発表したChankoについてのプレゼン資料がありますので、併せてこちらもご覧ください。https://speakerdeck.com/mrkn/chanko改善の経緯クックパッドでは、サーバからのレスポンスタイムについて200ms以下という目標を置いています。そこでサイトのパフォーマンス向上のための取り組みとして、開発者全員で速度改善を競い合うパフォーマンス・チューニンガソンというイベントを行いました。今回のChankoの改善は、その一環で速度と保守性の向上を狙いとして取り組んだものです。開発の進め方コードの速度改善や品質向上を目的として行う場合、皆さんどのような手法で取り組まれているでしょうか。今回の改善にあたっては、計測すること・検証することの二点を守りながら開発を進めました。開発にあたって利用したツールやサービスを幾つか紹介します。ruby-prof速度低下の原因になっている部分を調べるため、Ruby用のプロファイラを利用して調査を行いました。ruby-profを利用しました。これを利用してメソッド呼出回数と単位実行時間を計測することで、速度低下の原因になっていそうな箇所に大まかな予測が付けました。場合、全体の中で実行時間を多く占めている箇所というのは一部に偏っているため、これで大体の当たりをつけることができます。CIを利用して継続的にテストを行いながら開発を進めました。CIはオープンソースコミュニティのための継続的インテグレーションサービスです。1.8、1.9、そして2.0で継続的にテストを回すことで、常にテストやバージョン間の互換性を意識した開発を行うことが出来ました。CIを便利に使うことが出来ます。Coveralls今回の改善にあたり、保守性の高いコードにするということも目的の1つとしていました。そこで、まずはテストのC0カバレッジを100%にした後、この状態からカバレッジを落とさないように開発を進めました。これを支援するためのサービスとして、Coverallsがあります。CIと連携してテスト完了時にカバレッジを記録・通知してくれるため、常にテストカバレッジの値を意識して開発を進められます。Climateコードの品質についても、やはり何らかの指標を持って改善していきたいところです。Climateの値を指標として参考にしました。Climateでは、コードの重複や複雑度、メソッドごとの行数などを元に、コードに点数をつけてくれます。Chankoの評価結果を見ると、今回の改善の前後で点数が向上していることが分かります。Climateのサービスでは、それぞれ常に最新のCIの結果を表示しておくための画像が提供されています。最近ではGitHub上で見かけることも多くなってきました。これらの画像をREADME等に表示しておくことで、より改善意識を高めておくことが出来ると思います。JMeterを利用して本番に近い形でのリクエストのテストを行いました。テストに使うリクエスト内容も実際のユーザからのものを想定し、本番環境で吐かれたサーバログを元に生成したものを利用し。速度検証の結果、クックパッドのPCトップページの平均応答時間が約94.5%に向上するという結果になりました。少ない値のように見えますが、例えば改善前に200msかかっていた応答時間が、改善後では189msになります。1つ、今回の開発では改善前後で実行結果が変わってしまわないように特に気を付ける必要がありました。そこで本番環境のリクエストをkageを使って複製し、新旧Chankoを利用した同等のサーバをそれぞれ用意してリクエストを受け取り、レスポンス結果を比較するといった検証を行いました。テスト実行時に生成されるHTMLを新旧Chankoで保存し、両者の差分を比較するということも検証の材料として利用しました。specsで生成されるレスポンスの中身をファイルに書き出しておき、diffを利用して差分を調べました。endendまとめこのように、計測と検証を徹底して行いながら改善していくことで、Chankoは安全かつ着実に開発を進めることが出来ました。結果として、サイト全体のレスポンスタイム向上に繋がり、コードの品質向上にも貢献できました。クックパッドは、オープンソースコミュニティに対して積極的に貢献していきたいと考えています。社内で開発されたライブラリやツールを切り出してオープンソース化し、またオープンソースプロジェクトにコミットすると言った取り組みを、今後もより活発に続けていきたいと思います。インタプリタを開発している笹田です。~A/Bテスト実践~会員事業部エンジニアの佐藤です。クックパッドでは日々データ...2016-10-17"使える"プロトタイプ主導の開発プロセス検索事業部の須藤です。サービス開発を加速する会員事業部サービス開発グループ長の村田です。使ったセキュリティログ検索基盤の構築サービス特性にあった検索システムの設計戦略クックパッド採用説明会「クックパッドはサービスの作り手を採用したいんです。/*}*/スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。