uncategorized

人がやると悪いことだらけ?!のコードレビューを自動化して開発現場から手間とストレスをなくす―「SideCI」インタビュー

SideCI   綺麗なコードと文化を作るコードレビューのためのCI

開発の現場ではほぼ確実に行われているコードレビュー。これを自動化してしてしまおうというクラウドサービスが、「SideCI(サイド・シーアイ)」です。コードレビューの自動化が開発現場にもたらすメリットとは?同サービスを運営する株式会社アクトキャットの代表角幸一郎氏に、開発会社に身をおきながら開発現場のことはあまりよくわかっていない私にもわかるように!お話しいただきました。

コードレビューの時間を20%削減

——Webサイトには、「あなたのチームに綺麗なコードと文化を」とのキャッチコピーがありますが、具体的にはどういうことをしてくれるサービスなのでしょうか?

角氏:プログラミングの初歩的なミスを指摘し、「ここを見て直してね」という正しい記述方法のリンクとともにGitHub上にコメントをします。初歩的なミスというのは、「動くといえば動くけど、本来やってはいけないこと」などです。

——プログラミングには「正しいやり方」が存在しているということなんですか?

角氏:はい。それぞれの言語毎に、「これがベスト」というのが決まっているんです。SideCIもそれをベースにしています。

——そもそもどういった経緯でこのサービスを始められたのでしょうか?

角氏:私はSideCIをやる前は、オンラインのプログラミングスクールをやっていたんです。そこで、プログラミングの基礎などはもちろんやるものの、初級者を実務レベルにちゃんと育てていくことが難しいと感じていました。そういう経緯で、初級者〜中級者の成長にフォーカスしたサービスをやりたいと考えていた中でSideCIは生まれました。

それから、自分たち自身も社内でコードレビューのためにすごく時間を割いていたんですよね。

——実際コードレビューの時間は減りましたか?

角氏:減った実感がありますね。ユーザーさんからも、20%ほどコードレビューの時間が減ったという声をいただいています。

100点満点のプログラミングを目指さなくてもいい

——類似のサービスなどあるのでしょうか?

角氏:また少し違った形のコードレビューツールというのはあります。「あなたのコードは◯点です。こうすると100点に近づきますよ」というサービスがあったんですね。
SideCIは、100点を目指すためのものではなくて、あくまでコードレビューを楽にしようというものです。

——100点を目指す場合とそうでない場合では指摘の内容が変わるんですか?

角氏:変わります。100点を目指す場合だと、今までのコードを全てみて、より全体として綺麗にするためにといった指摘が入ってくるので、全部で1万個くらいの指摘が出てきてしまうこともざらで・・・「どうしよう」とお手上げになってしまいますよね。

SideCIでは、新たにあがってきたコードの範囲に対してだけ問題を指摘していきます。

コードレビューを人がやると、教える側と教えてもらう側の関係が悪くなることも・・・

―—自動化をしていないところは目視でやっているということなんですよね?やはり大きなメリットは工数削減というところですか?

角氏:そうですね。目視でやります。
SideCIは1分で解析するので、プログラマーから先輩に対して「レビューお願いします」と言って先輩が画面を立ち上げるまでの間に完了してしまうようなイメージですね。なのでその時間が減りますというのが一つ。

それから、人だと言ったり言わなかったりする場合があります。「これは前にも指摘したしまぁいっか」とか。機械だと、とりあえず全部指摘します。そしてそこをちゃんと直すと指摘が消えます。何度も指摘されればさすがに覚えますよね。そういう意味で抜け漏れがなくなります。

あとは、人的にやっていることで、教える側と教えてもらう側の関係がわるくなったり・・・ということもありますよね。先輩だっていつもいつも指摘するのは嫌だし、教えてもらう側も「いつもうるさいなぁ」と思うかもしれません(笑)。

——たしかに(笑)。

角氏:コードレビューの時間が削減できるという、レビューする側へのメリットが大きいのは事実なのですが、私たちとしては「エンジニアの成長を促進する」ことを大命題に掲げています。私自身もエンジニアですし、スタートは「プログラミングって楽しいよね!」というところからなので。だから楽しいと思い始めたひとの成長意欲を促進してあげたいですね。

——エンジニアは失敗して学んで成長していくものなのでしょうか。

角氏:そうですね。経験で身についていきます。汚いコードを書いたせいで痛い目を見るとか・・・。
スタートアップなどで「教えてくれる人がいない!」という方が自分でSideCIを入れて勉強している例もあります。

——SideCIはどんなプロジェクトに向いていますか?

角氏:一度開発して終わりというケースではなく、自社プロダクトを長期的に運用していくようなケースですね。継続的に機能を追加したりして、サービスとして伸ばしていこうというときにメリットが大きいです。オフショアのラボ型開発などで、海外の開発メンバーによる実装に対するコードレビューでもよく使われていますよ。

取材担当から一言

CI(:継続的インテグレーション。狭義には、開発時のビルド→テストを継続的に行うことによって開発の効率化をはかること)の流れからも、テストやコードレビューを自動化していく動きはどんどんと増えていくでしょう。(以前、セキュリティテストの自動化についても記事で取り上げました:「脆弱性もバグの一種」だからテストをしよう―セキュリティテスト自動化ツール『VAddy』開発者インタビュー)これも、今となってはあらゆる業務で検討すべき、人間とコンピューターの役割の棲み分けではないでしょうか。コードレビューについても、人間が時間と精神をすり減らしてやるよりは、コンピューターに任せてしまい、同じく初心者プログラマーの教育というなかでも人間がより付加価値を出せる部分に時間を割いていきましょうということだと思います。

SideCI Webサイト

sekai-labSEKAI LAB TIMES(セカイラボタイムス)は、アプリ・Webサービス開発を世界中のエンジニアチームに依頼・発注できるグローバルソーシングプラットフォーム「セカイラボ」が運営しています。詳しくはこちら


YUKA NUNOI /
ぬのちゃんと呼んでください。よく、人間ではない様々な生き物(あるいは生き物じゃないもの)に似ていると言われる。世界の行く先と、そこでどう行動すればいいかについて、皆さんと考えていきたいです。好きな国はウガンダ。