Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

エネチェンジでの Side ci 利用事例について

2,429 views

Published on

エネチェンジでの Side CI利用事例の紹介

Published in: Technology
  • Be the first to comment

  • Be the first to like this

エネチェンジでの Side ci 利用事例について

  1. 1. エネチェンジでの SideCI 利用事例について 2018/01/19 Tomoya Kawanishi エネチェンジ チーフエンジニア
  2. 2. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 1自己紹介 Tomoya Kawanishi a.k.a. @cuzic エネチェンジ株式会社 チーフエンジニア 電力会社、ガス会社を切り替えるなら、エネチェンジ経由で! 一般家庭も!法人も! Enechange Meetup for Engnieer #02 を予定(2月1日(木)) エネチェンジのエンジニアと交流できます https://enechange-meetup.connpass.com/event/76528/ Ruby関西の中の人 発表者として登壇くださる方、あとで声かけください。 関西Ruby会議の開催時はスポンサーも募集! 大手町.rb の中の人 次回、1月30日(火)大手町.rb#3 の開催を予定 東京駅、各線大手町駅から直結! テーマは「マークアップで役立つ!Ruby」 Ruby の初級者がメインターゲット
  3. 3. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 エネチェンジ事業概要 エネチェンジの事業戦略マップ 1. 家庭向け・電力・ガス比較サイト「エネチェンジ」の運営 2. 法人向け・電力切り替えサービス「エネチェンジBiz」 3. 電力・ガス会社向けクラウドサービス「エネチェンジプラットフォーム」の提供 4. 格安SIM比較サイト「SIMチェンジ」の運営 5. スマートメーターデータ解析サービス「SMAP事業」の提供
  4. 4. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 調査 職種:エンジニア?、マネージャ?、経営者? 言語: Ruby、Java(とJVM言語)、JavaScript、PHP、 C(C++とC# 含む)、その他 GitHub、 Pull Request を使った開発文化の会社の人? マージにはレビュー必須の開発文化の人? Side CI 使っている人、使っていない人 3
  5. 5. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 開発あるある 4 時間がない やっつけ仕事 不具合発生 技術的負債 対応に追われる
  6. 6. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 不具合の早期発見は生産性に直結する 不具合を検知したときに対応するコストを比較すると 設計時を 1 として 単体テスト時: 5倍 システムテスト時: 10倍 ベータテスト時: 15倍 リリース後: 30倍 ※ NIST 2002 The Economic Impacts of Inadequate Infrastructure for Software Testing 5 不具合の早期発見が大切!
  7. 7. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 コード品質向上の手段 設計レビュー 大きな開発のとき不定期に実施 コードレビュー 必ずエンジニアが相互にチェック チェック観点 要件の適合性 パフォーマンス セキュリティ メンテナンス性 テスト 要件の適合性の確認 デグレの発生の予防 6 品質向上には複数の手法の組合せが重要
  8. 8. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 手動でコメントするのは、大変 7
  9. 9. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 自動化のための社外サービス活用 やればできる、じゃ誰もやらない たとえば RuboCop をローカルで動かすのは簡単。 けど、newbie に毎度教育・強制するのは大変 結局、だれもやらない 仕組み化・自動的な見える化が大切! エネチェンジでは様々なサービスを利用 自社内で構築すればできるが、 積極的にサービスを活用し、自動化 8 社外ツールを活用し、仕組み化・見える化
  10. 10. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 多数のサービスを利用し、生産性を向上 9 SideCI を含む多数の Web サービスを活用! CircleCIGithub 継続的インテグ レーション Git リポジトリ。 相互レビュー hotjar ユーザ行動の記録、 蓄積、解析 New Relic トランザクション 監視 Slack チャット BrowserStack 複数の実ブラウザ での自動テスト Bugsnag 本番環境でのバ グ・エラー検知 SideCI 自動コードレビュー SendGrid メール送信 Google Analytics アクセス解析 CodeCov コードカバレッジ レポート Pingdom 死活監視
  11. 11. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 SideCI 導入前にトライアルしたツール カバレッジ取得を主目的として、複数のツールを検証 CodeClimate を導入(2015年10月) 理由は不明だが GitHub 連携がうまく動作せず。 Codacy に移行(2015年11月) 解析にやたら時間がかかり、不評 コスト削減等を目的に Codecov に移行(2016年2月) GitHub にカバレッジの計測結果とか表示され、便利 10
  12. 12. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 SideCI 導入 私自身、前職で静的コード解析の調査経験アリ Synopsys (Coverity) などの製品を調査 静的コード解析が有用であることを確信 SideCI がイケてるとの情報を入手(2015年11月) Code Climate と違って導入が簡単! Codacy と違って、スピーディ! Side CI を試験的に導入(2016年2月) エンジニアからも好評 特に MeowCop (SideCI 謹製の RuboCop設定)が良い Side CI の指摘内容は納得感がある 従来の RuboCop: うるさすぎ。納得感ない。一貫性がない。 MeowCop だと納得感がある指摘だけになる 11 従来の RuboCop の問題が SideCI 導入により解消
  13. 13. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 SideCI 活用のメリット 意義あるレビューに集中できる! 当たり前なこと、基本的なことをイチイチ指摘したくない 自動レビューだと波風が立たない レビュアーの時間は貴重。開発スループットを増やせる。 改善サイクルが高速化! 自動レビューだと、push 後すぐに自分で気づける 経験の浅いメンバーのスキルの底上げ、成長促進の効果がある 開発、レビュータイミングでの不具合の自動検知 コスト対効果が高い! 邪魔しない SideCI 自動レビューが生産性を下げないよう配慮されている 詳細は次のスライドで 12 SideCI で開発を「アクセラレーションブースト!!」
  14. 14. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 きめ細かい配慮のある SideCI 13 テストフライトモード!issue があっても successful。 導入時のハードルが下がる。
  15. 15. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 エネチェンジの開発の進め方 必須要件 Pull Request ピアレビュー コードの動作確認 コードレビュー rspec の結果: OK Circle CI で自動実行 推奨 Code Coverage の向上 CodeCov で自動測定 PR 上で表示 SideCI: No issues PR 上で表示 14 SideCI で No Issues の結果表示となることを推奨
  16. 16. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 SideCI からの指摘の具体例 MeowCop (SideCI 謹製の RuboCop 設定) 不具合、パフォーマンス に関する課題を指摘 指摘に納得感がある スタイルチェックはしない(⇒ ウザくない) Brakeman セキュリティに関する issue を自動検出 15 不具合個所を具体的に SideCI が自動検出・指摘
  17. 17. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 Future Work Querly 社内ローカルのルールを自動で検知、指摘できる 例1: 〇〇を取得するときは、キャッシュを活用できる△△メソ ッドを使って取得する 例2: 〇〇クラスを使うときは、published な△△メソッド以外 を外から使わない Ruby 以外の言語への適用 ESLint、stylelint など 最近はフロントエンドの比重が高まっている やりたい 16
  18. 18. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 まとめ CodeClimate と Codacy をトライアルしたが、不採用 SideCI(静的コード解析)とCodeCov(カバレッジ) を採用 SideCI で開発をアクセラレーションブースト 波風立てず、当たり前のことを指摘できる 早期の不具合検出・修正で時間を節約 貴重なレビュアーの時間を節約して、開発スループットを増大 エネチェンジでは、まだ Ruby にしか適用できていない が、ほかの言語にも拡大していきたい JavaScript とか。CSS とか。 17
  19. 19. 18 ご清聴ありがとう ございました
  20. 20. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 SideCI への要望、質問 リファクタリングで issue 大量発生問題 本来するべきリファクタリングも躊躇してしまう そういう指摘を他と区別したい・・・。 定例運用業務での指摘の自動化 かならずセットで修正するような運用業務がある エネチェンジでいうと、引越し時の申込受付対応とか。 特定のクラスのメソッド群と View への修正作業の繰り返し 修正モレがあれば指摘してくれる機能とか。 ローカルルールを指摘させたい 例: JavaScript を HTML 中に記述するときは、 content_for :localscript の中に書く。 もっと褒めて欲しい! イケてる PR を褒めてくれたら嬉しい 改善があれば、褒められるとか。バッジもらえるとか。 19

×