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