2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
ソニックガーデンジムに参加してコードに対する向き合い方が変わった話(全1記事)
リンクをコピー
記事をブックマーク
登川仁至氏:じゃあ始めていきたいと思います。「ソニックガーデンジムに参加してコードに対する向き合い方が変わった話」という長めなタイトルなんですが、そのまんまの感じになります。
まず自己紹介から言っていきます。ソニックガーデンジム7期生。前期ですね。プログラマー歴も2、3年ぐらいですね。今はWebアプリケーション開発をしています。沖縄に住んでいて今日はすごく暑くて半袖でもぜんぜんいけました。すごく暖かいです。「白くま」が横なのは、あんまり気にしないでください(笑)。ちなみに名前は「ノボ」です。よろしくお願いします。
今回何を話すのかです。タイトルどおり、「ソニックガーデンジムに参加してコードに対する向き合い方が変わった話」について話します。「コードレビューが怖いな」「ソニックガーデンジム、気になるな」と思っている人の参考になるかなと思っています。わりと体験ベースで話していくので、細かいコードの説明とかはやらない感じです。
参加した経緯ですが、仕事でコードを書いて2、3年目になって、「コードを書くのに慣れてきたな、だいたい実装できるな」というところだったんですが、もっと良いコードの書き方が知りたいということで、「なにかいい方法がないかな?」といろいろ探していました。そうしたら、知り合いが「ソニックガーデンジムというのがあるぞ」ということで、「何だそれは?」と。
(スライドを示して)これがサイトなんですが、「レビューを受けることで自分の実力を知ると共に、目指すべき目標地点を知ることができます」と書いてあったので、「これだ、これは行くしかない」となり、参加を申し込みました。
応募して、参加できるようになりました。そこから3ヶ月間、課題に沿ったアプリケーションの開発をすることになったというかたちです。
そこから何を学んだかを大きく分けてだいたい3つ話せるかなと思っています。「レビューしやすいように工夫する」と「気になることは質問しよう」と「他人のレビューを見てみる」というところです。
「レビューしやすいように工夫する」というところですが、意外と意識していなかったところで、ソニックガーデンジムに入って、「プルリクエストのサイズが大きくならないようにまず気をつけよう」ということで、わりと意識していました。
最近もやってしまったんですが、「機能ごとに区切って出すのがすごくわかりやすいよね」と。負担も少なくて、レビューの本質を割きたいところにレビューの時間を使うことができるというところですね。
また、コメントにはアノテーションとかTODOとかFIXMEとかをつけて……。(スライドを示して)「言い訳」と書いているんですが、コードの説明というよりは、なんでこのコードにしたのかの説明。「こうやったけど、こうできなくて、こうしました」みたいな。
(コメントを見て)「大きい、小さいの具体例の基準は?」。認証機能と登録機能のプルリクエストをまとめて送っちゃったようなところがあって。「認証だったら認証とかでレビューしてよね」みたいなところがあると思っています。
あと、UIの変更があれば変更箇所の動画や写真を添付したりすることで、レビュワーからしたらやりやすいのかなと思っています。ここは、たぶんチームによると思っています。
あと、「Linter」を使用したり「RuboCop」とかを入れたりして、細かいところを自分で修正する。また、セルフレビューを行って、レビューの本質ではない箇所をレビューさせないようにするというところですね。ここはけっこう大事なところかと思っています。
コードレビュー初期にやりがちだったコメントというか。私の例では、レビュワーの方が「この実装AはAがいいんじゃないんですか?」と言ったら、「Aがいいと思います、Aで実装します」「さっきのは修正します」みたいな感じでした。
「絶対わかっていないだろ」みたいな匂いがぷんぷんするような感じで(笑)。「なぜ実装Aがいいのかを理解していないまま実装してしまっているんじゃないか」と、後々自分で振り返ったときに感じました。「応用が利かなさそうだよね」と。
コードレビューに慣れてきた頃は、レビュワーが先ほどと同じような質問をした時に、「私としては、Bの理由があるのでこの実装にしています」「レビュワーの方が言った、Aの実装に対する理由はCでしょうか?」みたいな、自分で考えたことを質問するというところで。
レビュワーの方から「Aの実装に対する理由は、Cではなく別の理由だからです」と質問が返ってきて、「なるほど。それは確かに、そのほうがAの実装がいいと思うな」という(かたちで)、理由が自分の中で落とし込めるようになりました。完全に理解できているため応用が利くんですね。
次に「他人のレビューを見てみる」というところです。ソニックガーデンジムでは、一緒に3ヶ月走る方が他にいたので、その方のプルリクの中のレビューを見ました。
自分と同じ指摘をされていたところとか、違うレビューの仕方がされていたり、そのコメントに対して別のレビュワーがコメントするみたいな、流派の概念を垣間見ることができたりして、すごく勉強になりました。自分のレビューだけでなくても、学べることはすごくあると思っています。
詳しくは『コードレビューで学ぶRuby on Rails』にメッチャ書いてあるので、読んだほうが良いと思います。
心境の変化です。ソニックガーデンジムに参加するまでの心境は、「この実装がベストかどうかわからない」とか「理解できないコメントが来たらどうしよう」とか「コメントが多すぎたらへこみそう」とか。「コードレビューは必要だけど、最低限あればいいんじゃないかな」というところで、正直コードレビューが怖いと思っていました。
参加中の心境というところで、コメントがいっぱい来たなと思って(笑)。ちょっとへこんだんですが、レビューコメントが89ぐらい来て、けっこう多めだなと思って。そのわりにはコメントが優しくて「わっ、優しい」となったりして。
あと、レビューしているところで、「こういうふうな流派がある」と(感じたりと)か、おもしろい(と思ったり)とか。
(コメントを見て)あっ、89は少ないほうなんですね。じゃあぜんぜん大丈夫です(笑)。きれいなコードの書き方を知れたので、そこからだんだん楽しくなってきて、コードレビューはやはり絶対必要なんじゃないかなと思ってきました。
参加終了後の心境としては、コードレビューを受けて成長を実感しました。レビュワーとの仲が深まった気がします。コードレビューが怖くなくなって、むしろコードレビューがないと怖いという状況になっていきました。
心境の変化をまとめると、コードレビューが怖かったのが怖くなくなって、むしろないと怖いみたいな状況です。
次に、今回の(発表の)題材が「自分なりの妥協しないコードレビュー」だったので、そこを考えていきたいと思います。
「妥協しないコードレビューとは」はちょっとわからなかったので、妥協をしたコードレビューを考えてみました。思い当たるものが、命名規則がバラバラ、シンプルでない実装、よくわからないコメント、使用しているのかわからないメソッドやファイル、メンテナンスコストだけが増える効果の低いテスト。
それが、妥協しなかったコードレビューに書き換えたら逆になるのかなと思いました。命名規則が統一されている、シンプルで見やすい実装、意味のあるコメント、使用しているのかわからないメソッドやファイルが存在しない、効果のあるテストみたいなところで。
その差分を見てみると、妥協をしなかったコードレビューのほうが、絶対に良いプロダクトになるよなというのが単純な感想としてありました。
妥協しないコードレビューというのは、良いプロダクトを作るために必要な、チームの共通の認識になるのかなと思っていました。ここのところは、もう少し深堀っていきたいです。
というところで、まとめに入ります。ソニックガーデンジムを通して、レビューしやすいように工夫したり、「気になることは質問しよう」とか、他人のレビューを見てみることを実際にやっていって、コードレビューがほぼ怖くなくなって、むしろレビューがないと怖いとなってきました。
妥協しないコードレビューというのがあって、良いプロダクトを作ることができると思ったので、これからも実践できればなと思っています。
ご清聴ありがとうございました。
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05