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

Mais conteúdo relacionado

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

ENECHANGE社での Scout APM 利用事例
ENECHANGE社での Scout APM 利用事例ENECHANGE社での Scout APM 利用事例
ENECHANGE社での Scout APM 利用事例Tomoya Kawanishi
 
アジャイル開発のためのDatadog
アジャイル開発のためのDatadogアジャイル開発のためのDatadog
アジャイル開発のためのDatadogNobuyasu Seki
 
Thread の利用事例紹介
Thread の利用事例紹介Thread の利用事例紹介
Thread の利用事例紹介Tomoya Kawanishi
 
オープンデータのAPI利用と開発
オープンデータのAPI利用と開発オープンデータのAPI利用と開発
オープンデータのAPI利用と開発Hiroyuki Ichikawa
 
Web開発の 今までとこれから
Web開発の 今までとこれからWeb開発の 今までとこれから
Web開発の 今までとこれからShinichi Takahashi
 
AWS Summit 2016 「新規事業 "auでんき”をクラウドスピードでサービスイン」
AWS Summit 2016 「新規事業 "auでんき”をクラウドスピードでサービスイン」AWS Summit 2016 「新規事業 "auでんき”をクラウドスピードでサービスイン」
AWS Summit 2016 「新規事業 "auでんき”をクラウドスピードでサービスイン」KDDI
 
kintone dev camp vol.11 kintoneの基本説明
kintone dev camp vol.11 kintoneの基本説明kintone dev camp vol.11 kintoneの基本説明
kintone dev camp vol.11 kintoneの基本説明kintone papers
 
H23年度シンポジウムチラシ120123体験講習会用 1
H23年度シンポジウムチラシ120123体験講習会用 1H23年度シンポジウムチラシ120123体験講習会用 1
H23年度シンポジウムチラシ120123体験講習会用 1Yasuko Tanaka
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」Shuji Morisaki
 
2015/06/27 Remixing つらくないメディア間連携
2015/06/27 Remixing つらくないメディア間連携2015/06/27 Remixing つらくないメディア間連携
2015/06/27 Remixing つらくないメディア間連携Takumi Yoshida
 
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringVisual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringIssei Hiraoka
 
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話和也 大木
 
20150425 iiba日本支部講演 日米比較 一色浩一郎
20150425 iiba日本支部講演 日米比較 一色浩一郎20150425 iiba日本支部講演 日米比較 一色浩一郎
20150425 iiba日本支部講演 日米比較 一色浩一郎啓明 新冨
 
Kansumi2013 tamagawa
Kansumi2013 tamagawaKansumi2013 tamagawa
Kansumi2013 tamagawaSORACOM, INC
 
LightSwitch 結局何ができるの
LightSwitch 結局何ができるのLightSwitch 結局何ができるの
LightSwitch 結局何ができるのYoshitaka Seo
 
kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験アシアル株式会社
 
CO2センサー×SORACOMサービスの活用事例
CO2センサー×SORACOMサービスの活用事例CO2センサー×SORACOMサービスの活用事例
CO2センサー×SORACOMサービスの活用事例佳孝 中田
 
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-JOYZO
 
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-Ryu Yamashita
 

Semelhante a エネチェンジでの Side ci 利用事例について (20)

ENECHANGE社での Scout APM 利用事例
ENECHANGE社での Scout APM 利用事例ENECHANGE社での Scout APM 利用事例
ENECHANGE社での Scout APM 利用事例
 
アジャイル開発のためのDatadog
アジャイル開発のためのDatadogアジャイル開発のためのDatadog
アジャイル開発のためのDatadog
 
Thread の利用事例紹介
Thread の利用事例紹介Thread の利用事例紹介
Thread の利用事例紹介
 
オープンデータのAPI利用と開発
オープンデータのAPI利用と開発オープンデータのAPI利用と開発
オープンデータのAPI利用と開発
 
Web開発の 今までとこれから
Web開発の 今までとこれからWeb開発の 今までとこれから
Web開発の 今までとこれから
 
AWS Summit 2016 「新規事業 "auでんき”をクラウドスピードでサービスイン」
AWS Summit 2016 「新規事業 "auでんき”をクラウドスピードでサービスイン」AWS Summit 2016 「新規事業 "auでんき”をクラウドスピードでサービスイン」
AWS Summit 2016 「新規事業 "auでんき”をクラウドスピードでサービスイン」
 
kintone dev camp vol.11 kintoneの基本説明
kintone dev camp vol.11 kintoneの基本説明kintone dev camp vol.11 kintoneの基本説明
kintone dev camp vol.11 kintoneの基本説明
 
H23年度シンポジウムチラシ120123体験講習会用 1
H23年度シンポジウムチラシ120123体験講習会用 1H23年度シンポジウムチラシ120123体験講習会用 1
H23年度シンポジウムチラシ120123体験講習会用 1
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
 
2015/06/27 Remixing つらくないメディア間連携
2015/06/27 Remixing つらくないメディア間連携2015/06/27 Remixing つらくないメディア間連携
2015/06/27 Remixing つらくないメディア間連携
 
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringVisual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
 
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
 
20150425 iiba日本支部講演 日米比較 一色浩一郎
20150425 iiba日本支部講演 日米比較 一色浩一郎20150425 iiba日本支部講演 日米比較 一色浩一郎
20150425 iiba日本支部講演 日米比較 一色浩一郎
 
Kansumi2013 tamagawa
Kansumi2013 tamagawaKansumi2013 tamagawa
Kansumi2013 tamagawa
 
LightSwitch 結局何ができるの
LightSwitch 結局何ができるのLightSwitch 結局何ができるの
LightSwitch 結局何ができるの
 
kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験
 
CO2センサー×SORACOMサービスの活用事例
CO2センサー×SORACOMサービスの活用事例CO2センサー×SORACOMサービスの活用事例
CO2センサー×SORACOMサービスの活用事例
 
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
 
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
 
Bee Style:vol028
Bee Style:vol028Bee Style:vol028
Bee Style:vol028
 

Mais de Tomoya Kawanishi

エンジニア転職のノウハウ
エンジニア転職のノウハウエンジニア転職のノウハウ
エンジニア転職のノウハウTomoya Kawanishi
 
Ruby の文字列について
Ruby の文字列についてRuby の文字列について
Ruby の文字列についてTomoya Kawanishi
 
Ruby on Rails のキャッシュ機構について
Ruby on Rails のキャッシュ機構についてRuby on Rails のキャッシュ機構について
Ruby on Rails のキャッシュ機構についてTomoya Kawanishi
 
Ruby初心者からよく質問されること
Ruby初心者からよく質問されることRuby初心者からよく質問されること
Ruby初心者からよく質問されることTomoya Kawanishi
 
RubyGems と Bundler について
RubyGems と Bundler についてRubyGems と Bundler について
RubyGems と Bundler についてTomoya Kawanishi
 
Ruby の正規表現について
Ruby の正規表現についてRuby の正規表現について
Ruby の正規表現についてTomoya Kawanishi
 
Ruby での外部コマンドの実行について
Ruby での外部コマンドの実行についてRuby での外部コマンドの実行について
Ruby での外部コマンドの実行についてTomoya Kawanishi
 
Ruby のワンライナーについて
Ruby のワンライナーについてRuby のワンライナーについて
Ruby のワンライナーについてTomoya Kawanishi
 
AWS のコスト管理をちゃんとしたくてやったこと
AWS のコスト管理をちゃんとしたくてやったことAWS のコスト管理をちゃんとしたくてやったこと
AWS のコスト管理をちゃんとしたくてやったことTomoya Kawanishi
 
PostgreSQL のイケてるテクニック7選
PostgreSQL のイケてるテクニック7選PostgreSQL のイケてるテクニック7選
PostgreSQL のイケてるテクニック7選Tomoya Kawanishi
 
HTTPと Webクローリングについて
HTTPと WebクローリングについてHTTPと Webクローリングについて
HTTPと WebクローリングについてTomoya Kawanishi
 
Active record query interface
Active record query interfaceActive record query interface
Active record query interfaceTomoya Kawanishi
 
Active Support のコア拡張機能について
Active Support のコア拡張機能についてActive Support のコア拡張機能について
Active Support のコア拡張機能についてTomoya Kawanishi
 
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナーRuby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナーTomoya Kawanishi
 
RubyのDir、File、IO について
RubyのDir、File、IO についてRubyのDir、File、IO について
RubyのDir、File、IO についてTomoya Kawanishi
 
Ruby の制御構造とリテラルについて
Ruby の制御構造とリテラルについてRuby の制御構造とリテラルについて
Ruby の制御構造とリテラルについてTomoya Kawanishi
 
Ruby の String のメソッドについて
Ruby の String のメソッドについてRuby の String のメソッドについて
Ruby の String のメソッドについてTomoya Kawanishi
 
RubyGems と Bundler について
RubyGems と Bundler についてRubyGems と Bundler について
RubyGems と Bundler についてTomoya Kawanishi
 

Mais de Tomoya Kawanishi (20)

英単語の覚え方
英単語の覚え方英単語の覚え方
英単語の覚え方
 
エンジニア転職のノウハウ
エンジニア転職のノウハウエンジニア転職のノウハウ
エンジニア転職のノウハウ
 
Ruby の文字列について
Ruby の文字列についてRuby の文字列について
Ruby の文字列について
 
Ruby on Rails のキャッシュ機構について
Ruby on Rails のキャッシュ機構についてRuby on Rails のキャッシュ機構について
Ruby on Rails のキャッシュ機構について
 
Ruby初心者からよく質問されること
Ruby初心者からよく質問されることRuby初心者からよく質問されること
Ruby初心者からよく質問されること
 
RubyGems と Bundler について
RubyGems と Bundler についてRubyGems と Bundler について
RubyGems と Bundler について
 
Ruby の正規表現について
Ruby の正規表現についてRuby の正規表現について
Ruby の正規表現について
 
Ruby での外部コマンドの実行について
Ruby での外部コマンドの実行についてRuby での外部コマンドの実行について
Ruby での外部コマンドの実行について
 
Ruby のワンライナーについて
Ruby のワンライナーについてRuby のワンライナーについて
Ruby のワンライナーについて
 
AWS のコスト管理をちゃんとしたくてやったこと
AWS のコスト管理をちゃんとしたくてやったことAWS のコスト管理をちゃんとしたくてやったこと
AWS のコスト管理をちゃんとしたくてやったこと
 
PostgreSQL のイケてるテクニック7選
PostgreSQL のイケてるテクニック7選PostgreSQL のイケてるテクニック7選
PostgreSQL のイケてるテクニック7選
 
HTTPと Webクローリングについて
HTTPと WebクローリングについてHTTPと Webクローリングについて
HTTPと Webクローリングについて
 
Rake
RakeRake
Rake
 
Active record query interface
Active record query interfaceActive record query interface
Active record query interface
 
Active Support のコア拡張機能について
Active Support のコア拡張機能についてActive Support のコア拡張機能について
Active Support のコア拡張機能について
 
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナーRuby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
 
RubyのDir、File、IO について
RubyのDir、File、IO についてRubyのDir、File、IO について
RubyのDir、File、IO について
 
Ruby の制御構造とリテラルについて
Ruby の制御構造とリテラルについてRuby の制御構造とリテラルについて
Ruby の制御構造とリテラルについて
 
Ruby の String のメソッドについて
Ruby の String のメソッドについてRuby の String のメソッドについて
Ruby の String のメソッドについて
 
RubyGems と Bundler について
RubyGems と Bundler についてRubyGems と Bundler について
RubyGems と Bundler について
 

Último

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Último (9)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

エネチェンジでの 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 品質向上には複数の手法の組合せが重要
  • 8. Code Review Meetup #1 「エネチェンジでの SideCI 利用事例について 」 手動でコメントするのは、大変 7
  • 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

Notas do Editor

  1. より、高速ニユーザニーズに対応するために週7回のリリース作業を行っています。 もっと魅力あるサイトになるように、日々継続的改善を進めているわけです。 その改善効率を高めるために、様々な外部サービス、ツールを活用しています。