狠狠撸
Submit Search
搁耻产辞颁辞辫と齿笔コーディング规约
?
1 like
?
1,898 views
Koichi ITO
Follow
XP祭り 2016のライトニングトークス資料 (http://xpjug.com/xp2016)
Read less
Read more
1 of 66
More Related Content
搁耻产辞颁辞辫と齿笔コーディング规约
1.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 RuboCopとXP コーディング規約 XP祭り?2016 早稲?大学??早稲?キャンパス 2016-09-24?(Sat) 伊藤?浩??(@koic) (株)永和システムマネジメント
2.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 わたし
3.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 わたし (株)永和システムマネジメントで 働くシニアリーダー。Rubyとか メタルなんかが好きです?lml?lml https://github.com/koic? https://twitter.com/koic? https://koic.hatenablog.com?
4.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 ?
5.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 はじ めに
6.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 XPの中?となる活動 XPはコーディングをソフトウ ェアプロジェクトのキーアク ティビティ、つまり「中?と な る活
動」 と し て選ん で い る。 [「エクストリームプログラミング?1st?序?」より 引用]
7.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 今?の話
8.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 今?の話 XPオリジナルプラクティスの ひとつ『コーディング規約』 ? もともと予定していた『スロー テスト刑事?(デカ)?』は先週、 京都で使っちゃいました http://www.slideshare.net/koic/ slow-test-cop ? ? デカシリーズ第2弾(RuboCop)?
9.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 Keywords Coding?standard? RuboCop? XP?and?Community?
10.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 Coding?standard オリジナルXPのプラクティス の1つでもある ?
11.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 Coding?standard 読み?の負担を減らすリーダブ ルなコードに近づける ? PRレビューなどのコードリー ディング時につまらないところ で引っ掛かりたくない ? チームメンバーのコードを似た ようなコードに近づける要素 ?
12.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 ツールによる自動化 RubyではRuboCopという Gemが有名 github.com/bbatsov/rubocop? ?
13.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 RuboCopのチーム活用例 CI?で?RSpec?と?RuboCop?の 実?結果をビルド結果とする ? PR?に対して?RuboCop?でコメ ントを付ける ?
14.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 RuboCop 正直あまり好きではなかったが 次のひと?との出会いで考え? が変わった ?
15.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 @onk?says
16.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 Yep!
17.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 現場のRuboCop デフォルトの設定では取り締ま りが厳しすぎることからカスタ マイズされて使われたりする 有名な?onk/onkcop? esminc/deka?eiwakun? SonicGarden/sgcop? その他非公開cop含め多様? ?
18.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 @onk?says お互いに良いコーディング規 約があれば本家に提案しよう
19.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 原初のXPをふりかえる XPは常識を原理とし、極限ま で実践するからである。 [「エクストリームプログラミング?1st?序?」より 引用]
20.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 eXtreme例?(XPE1stより) コードレビューがよいのであれ ば、いつでもコードレビューを ?う ? テストが良いのであれば、全員 がいつでもテストをして、顧客 もテストを?う ? 設計がよいのであれば、設計を 全員の?常の仕事の?部にする ?
21.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 ツマミをフルボリュームに 良いコーディング規約なのであれ ば、upstreamにそのコーディン グ規約を提案する。
22.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 upstream?への?PR
23.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 PRの概要 Cop/Performance族? コーディング規約の中でも割と 有益性が明確な分野だと思って いる ? sort?{?...?}?から?sort?by?{?...?}? にするよう取り締まる ?
24.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 sortとsort?byおさらい 安定なソートかそうでないか ggr? 警告を出すようにした?が良かった かも?thx?#shibuyarb ? ? パフォーマンスの違い 今回提案したい観点? ? Cop/Performanceへの提案の ためベンチマークを付けたい ?
25.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 Enumerable#sort?ブロッ クなし(参考) ??????????????????? ???????????????????????????????????? ??????????????????????? ???????????????????????????????? ????????????????????????????????????????????? ???
26.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 Produces: ?????????????????????????????????????? ???????????????????????????????????????????????????????? ???????????????????????????????????????????????????????? sort?by?{?|a|?a?}?ブロックありのときは?sort?の?が速い。
27.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 Enumerable#sort?ブロッ クあり?(今回用) ??????????????????? ???????????????????????????????????? ??????????????????????? ????????????????????????????????????????????????????????????? ??????????????????????????????????????????? ???
28.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 Produces: ?????????????????????????????????????? ???????????????????????????????????????????????????????? ???????????????????????????????????????????????????????? sort?{?|a,?b|?a.to?s?<=>?b.to?s?}?ブロックありのときは?sort?by (&:to?s)?の?が速い。
29.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 以上を背景 にcopで指 摘したい事
30.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 指摘を埋め込んだコード ????????????? ????????????????????????????? ????????????????? ???????????????????????????????????????
31.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 こう指摘したい ????????????????? ????????????????? ? ????????? ????????????????????????????????????????????????????????????????????????????????? ??????????????????????????????????????? ??????????????????????????????????????? ????????????????????????????????????
32.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 プログラマーなので 既存のcopにないので新たなcop を作ってみた。
33.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 新たなcop作り?概要 copで取り締まるASTを宣?し、 ASTの?査イベントについて、 Copサブクラスを作って書く ????????????????????????? ???????????????? ???
34.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 PRまでのざっくりした流れ 既存の類似コードを読む1.? テストコード(RSpec)を書く2.? whitequark/parserでAST (抽象構??)を作る 3.? ASTに対するイベントを書く4.? autocorrectを書く5.? .travisを元に全ビルドを実施6.?
35.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 1.類似の コードを 読む
36.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 類似のコードを読む 割りとコードがドキュメント? コードリーディングによる静的 解析とbinding.pryによる動的 解析の2軸が自分の基本 ? 今回はCop/Performance/ RedundantSortByが目的に近 い既存コード 目的に近いコードがあると楽? ?
37.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 2.テスト コードを 書く
38.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 実装をよく分かっていないか らこそレッドバーから始める ???????????????????????????????????????????????????? ??????????????????????????????????????? ????????????????????????????????????????????????????????? ?? ???????????????? ?????????????????????????????????????????????????????????????????????? ??????????????????????????????????????????????????? ????? 三角測量が?りずハードコーディングが残っていたのでテストを ?して直す指摘をPRコメントでもらって直したりした。
39.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 3.parser でASTを 作る
40.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 RuboCopが使うParser github.com/whitequark/parser ???????????????????? gemspecを眺めて良く知らない ライブラリは軽く使ってみる ?
41.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 既存のASTを作って学習 目的に近いredundant?sort?by.rb にあるASTを再現させてみる。 ??????????????????????????????????? ?????? ????????????????????? ??????? ????????????? ????????????
42.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 参考:?S式より馴染む? Generated?by?github.com/koic/ruby?ast?visualizer
43.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 今回作りたいASTを作る ????????????????????????????????????????????????? ?????? ?????????????????? ??????? ???????????? ????????????? ??????? ????????? ?????????????????????????? ????????? ???????????????????????
44.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 今回のcopのASTへの実装 ?????????????????????????????? ???????? ??????????????????? ????????? ??????????????? ???????????????? ????????? ??????????? ??????????????????????????? ??????????? ???????????????????????? ???
45.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 参考:?S式より馴染む? Generated?by?github.com/koic/ruby?ast?visualizer
46.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 RuboCopのNodeについて lib/rubocop/ast?node.rbなど 読んでた ? ??????????????????????????????????????????????????????????????????????????
47.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 4.ASTに対 するイベン トを書く
48.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 on?xxx?メソッド メタプログラミングで実装され ている ? lib/rubocop/ast?node/ traversal.rbなど読んでた ? ????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????????
49.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 取り締まりについて書く 対象のASTに取り締まり対象が? つかったらo?ernseに追加する。 ?????????????????? ???????????????????????????????????????????? ?????????????????????????????????? ???????????????????????????? ??????????????????????????????????????? ??????????????????????????????????????????? ????? ???
50.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 5.?autocorrectを書く RuboCopには自動修正する-- auto-correctというオプショ ンがある ?
51.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 指摘を埋め込んだコード ????????????? ????????????????????????????? ????????????????? ???????????????????????????????????????
52.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 rubocop?--auto-correct? オプションを付けて実?する ???????????????????????????????? ????????????????? ? ????????? ????????????????????????????????????????????????????????????????????????????????????????????? ??????????????????????????????????????? ??????????????????????????????????????? ?????????????????????????????????????????????????????????
53.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 autocorrectの差分結果 自動修正される。 ?????????? ????????????????????????????? ????????????????? ????????????????????????????????????????? ???????????????????????
54.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 RuboCop::Node node.children.last.children.last. children.lastへの苦渋。
55.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 autocorrectの実装 method名をASTから引っ張ってく るところに苦渋の後が?える。 ????????????????????? ??????????????? ??????????? ??????????? ??????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????? ????? ???
56.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 6.travisを 元に全ビル ドを実施
57.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 .travis重要 RuboCop自体がRuboCopで取り 締まられている。 ??????? ????????????????????? ???????????????????????
58.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 PR前に全ビルドを実施 project?spec.rbよく出来てる デフォルトの取り締まりとなる con?g/enabled.ymlへの設定記述 がなくてエラー ? CHANGELOG.mdのリンクが不? していてエラー ? ? Line?is?too?long.の取り締まり が厳しくてつらい ?
59.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 問題点を指 摘してもら ったうえで
60.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 めでたく即?マージされた
61.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 onkcop 作者より
62.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 XPE2nd?24章『コミュニテ ィとXP』
63.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 XPの中?となる活動 XPはコーディングをソフトウ ェアプロジェクトのキーアク ティビティ、つまり「中?と な る活
動」 と し て選ん で い る。 [「エクストリームプログラミング?1st?序?」より 引用]
64.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 Programmingを中?に Aが良いならAをeXtremeに...? Bが良いならBをeXtremeに...? Cが良いならCをeXtremeに...?
65.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 コーディング規約が良いなら お互いに良いコーディング規 約があれば本家に提案しよう
66.
搁耻产辞颁辞辫と齿笔コーディング规约 Powered?by?Rabbit?2.1.9 ?