プログラミングで避けられないバグや不具合・エラー

システム開発やアプリケーション開発、ゲーム開発などで欠かせない作業が「プログラミング」です。

ソースコードを実際に記述する作業は「コーディング」とも呼ばれますが、どんなITシステムやサービスも、基本的にプログラミングよって実現しています。

しかし、たとえ優秀なプログラマーであったとしても避けて通れないのがバグや不具合です。

一見問題がないと判断しても、特定の条件下では意図しない挙動をしたり、想定外の処理が行われてしまうことがあります。

容易に解決できる不具合であればさほど問題になりませんが、システムの根幹を脅かすような深刻なバグであるケースも少なくありません。


コードのチェックを行う「コードレビュー」に注目

今回の記事では、主にそういったバグや不具合などを発見するために行われる「コードレビュー」という工程に注目

実際のコードレビューのやり方や、取り組むときに気を付けたいポイント・注意点を解説いたします。

また効率化に繋がる便利なサービスも存在しているため、そちらも併せて紹介していきます。

コードレビューについて正しい認識を持ち、バグや不具合・不要な記述を見つけられるようなエンジニアになっていきましょう。


コードレビューは怖いものではない

コードレビューについてやり方などに注目する前段階で頭に入れておきたいのが「コードレビューは怖いものではない」ということ。

ある意味「コードレビューされる側の注意点」ともいえるかもしれません。


若手エンジニアはコードレビューを「怖い」と感じがち

というのも、特に新人や若手のエンジニア(プログラマー)の場合、コードレビューを「怖い」と感じる人が多いという現実があります。

確かに自分が書いたソースコードを他人にじっくりと観察され、間違いを指摘されることになるのがコードレビュー。

時には厳しい批評・注意をされることがあるかもしれません。


コードレビューは「より良いコードにするためのもの」ということを頭に留めておく

しかし、コードレビューは「現状のソースコードをより良いものにするため」に行われる作業(工程)です。

ソースコードに対して注意などをされると怒られているように感じてしまうかもしれませんが、むしろ「親切なアドバイス」として捉えてください


本などを読んで勉強する

コードレビューをされて怖いと感じてしまうのは、自分の書くコードに自信がないからともいえます。

O’Reilly社が出版している「リーダブルコード」などを読んで勉強することも大切です。

読みやすく理解しやすいコードについてや、命名のコツなどを学ぶことができます。

勉強をし、本で読んだことを意識しながらコーディングすれば自信が持てるでしょう。

また「もっと上手くコーディングしたい」と感じている方にも最適な本です。

もちろん自信が大きくなりすぎて高慢な態度になるのも避けるべきなので、そういった面では注意が必要かもしれません。


コードレビューのやり方

それでは実際にコードレビューの「やり方」を解説していきます。


コードレビューのルールや目的を明確なものにする

最初に必要となるのが「コードレビューのルールや目的」を定めること。

プログラミングにおけるソースコードは、人それぞれで書き方が大きく異なります。

そのため、コードレビューを実際に行う前にルールや目的を明確なものにしなければ、コードの「個人差」まで指摘してしまいかねません。

もちろん個々人の癖による不具合などはうまく修正していくことが必要ですが、指摘しなくても大きな影響はないケースも発生し得ます。

予めルールや目的を定めておくことで、そういったケースを未然に防げるでしょう。

先ほどお伝えした「コードレビューが怖い」と感じる若手エンジニアを少しでも減らせることに繋がるかもしれません。


仕様を把握して、ソースコードを読み指摘する

さて、実際にコードレビューを行うことになった際にまずやるべきなのは「仕様を把握すること」です。

自分がレビューを行うコードがどういった機能を持っているのかという部分をしっかりと把握しましょう。

仕様を把握した上でコードを読むのと、把握せずに読むのでは指摘するポイントが明らかに変わってきます。

そうすれば「仕様通りに動くソースコードなのかどうか」という重要な要素までチェックが行えるでしょう。

また、実際にソースコードを読む際には全て読むようにしてください。

最終的におかしなポイントを、対象のエンジニアへ指摘します。


コードレビューの際に気を付けたいポイント

コードレビューを行う際には気を付けてチェックするべきポイントなどがあります。

例えば、意味が違うのに同じ変数名として使われている場合は気を付けましょう。

エラーやバグの元となります。

一般的でない書き方がないかというポイントも要チェックです。

必ずしもそうとは言い切れませんが、コードレビューを行う目的として「メンテナンスをしやすくする」というものが挙げられます。

一般的でない書き方の部分があれば、その部分のメンテナンスは当然しづらくなってしまうでしょう。

そのため、読んでいる際に「何かおかしい」といった違和感などを感じた場合にはそこを逃さないようにするべきです。

また、関数などを読んで結果が返されていないかどうかといった部分にも気を付けるといいでしょう。


コードレビューの注意点

コードレビューは、他のエンジニアのコードに「指摘」を行う作業です。

そのため、幾つかの注意点を頭に入れておかなければ本来の目的とは逸れた指摘をしてしまいかねません。


否定をしないよう意識する

最も初歩的、かつやってしまいがちなのが「否定」してしまうということ。

「〇〇だからやめてください」など、否定的なコメントは不要です。

何かを指摘する際には相手に「否定的な指摘だ」と捉えられないよう、言い回しをうまく変えましょう

結果的に円滑なコミュニケーション・コード修正へと繋がる重要なステップです。


根拠として具体的に本などを用いる

実際にコードレビューを行い、何か指摘をするという際には「根拠」として本などが利用できます。

「○○(本の名前)の14ページには△△とあるので、ここは××だと良いですね」などのように指摘できるかもしれません。

この方法は特に「有名な本」だと効果的です。

エンジニアであれば誰もが一度は目にしたことのある本、耳にしたことのあるような有名な技術書などを根拠として用いましょう。

自分が勉強しているということのアピールにも繋がるかもしれません。


効率よくコードレビューを行うために

コードレビューはソースコードを読んでおかしなポイントなどを発見・指摘する作業です。

地味な仕事であり、労力も使う工程ともいえます。

しかし、実はコードレビューを効率化するサービスというものも存在しているのはご存知でしょうか。

続いては効率的にコードレビューを行うのに役立つサービスを紹介いたします。


自動コードレビューサービス

インターネット上には、コードレビューを自動で行ってくれるというクラウドサービスが存在しています。


GitHubと連携する

基本的に、クラウド上で行う自動コードレビューサービスはGitHubと連携することで実現します。

そのため、そもそも「GitHubを利用している」という前提条件が関わってくるということに注意してください。


3つのクラウドサービスを紹介

今回は以下の3つのクラウドサービスを簡単に紹介していきます。

  • Sider
  • Codacy
  • Hound

1つずつ注目していきましょう。


Sider

日本初のコードレビュー自動化サービスが「Sider」です。

GitHubと連携でき、コードレビューを自動で行ってくれます。

自動的にプログラム(ソースコード)の問題を指摘し、日本語でコメントを行ってくれるという便利なサービスです。

ルールをカスタマイズできるため、プロジェクトにおいて非推奨となったAPIをルールとして追加しておけばそれに沿ってSiderがレビューを行ってくれます。

また、コード解析が完了するとSlackへ通知してくれるのも嬉しいサービスです。

数々の有名企業への採用実績があるのも信頼できる要素の1つかもしれません。

カスタマイズができるため、プロジェクトごとに適切なコードレビューを自動で行えるでしょう。


Codacy

こちらもSider同様GitHubと連携し、コードレビューを自動で行ってくれるサービスです。

初期のままだと拡張子が認識してもらえないこともあるようなので、そういった場合は設定を行う必要があります。

「Settings」の「File Extensions」から拡張子を関連付けられるので、上手く活用してください。

また、無視するファイルやバッジ付けなども設定できるので適宜設定しましょう。

レビューが完了するとメールを送信してくれるので、こちらもSider同様チェック完了に気が付かなかった、という事態は防げるでしょう。

ただ、Slackに通知してくれる利便性を考えると若干劣っているともいえるかもしれません。


Hound

最後に紹介するのは「Hound」です。

自動コードレビューに特化しているサービスで、オープンソースという特徴を持っています。

こちらもGihHub連携を行い、解析するプロジェクトを選ぶことが可能です。

特徴的なのが、解析結果をGitHubのコメント上に出力してくれるというポイントでしょう。

実行が完了してHoundのサイトを覗きにいく必要がなく、GitHubだけで完結させれられるというのは案外便利です。

ただし、警告などが多ければ多いほどコメントの量も多くなるため、分かりにくい可能性もあります。

コメント確認に時間がかかる点に注意が必要かもしれません。


コードレビューをする人にも、される人にもなる

今回は「コードレビュー」に注目してきました。

コードレビューはレビューする側であるレビューアーと、レビューされる側であるレビューイーの双方でコミュニケーションを行う機会ともいえます。

普段コードレビューをされてばかりでは、レビューアーの気持ちは分かりません。

レビューをされたことがあって、嫌だった指摘のされ方などがあれば、自分がレビューアーとなって上手い言い回しなどで他の人に指摘することができます。

自分の嫌だと感じた指摘の仕方などをしないよう意識すれば、レビューイーから感謝してもらえるかもしれません

本来コードレビューは「ソースコードをより良くするため」に行うもの。

レビューの仕方、指摘の仕方さえ注意すれば、本来はお互いに嫌な思いをしてしまうような事態には陥りにくいはずです。

ぜひレビューをされるばかりではなく、その経験をレビューをする立場として活かしてみてください。


コードレビューでより良いコードを作り出す

記事中で何度か触れた通り、コードレビューはより良いコードにするための工程です。


コードレビューをするのに大事な考え方になる

ぜひ、このことを意識しながらコードレビューに取り組みましょう。

ソースコードをチェックしていて、そのことを意識している・理解しているか否かで指摘するべきポイントを新しく発見できるかもしれません。

そして、指摘する際の言葉遣いや言い回しも自然と「相手のことを思いやった」言い方にできる可能性もあります。

ぜひ、コードレビューをする際には「コードをより良いものにする」というポイントを意識・理解することを忘れないようにしてください。


コードレビューをされる側も同じ

そして、コードレビューをされた側も同様です。

少し嫌な指摘のされ方であったとしても「コードがより良くなる」ということ、行う目的を頭に入れておくようにしましょう。

そうすれば、マイナス面への感情の傾きを少しでも和らげることができます


お互いを思いやる

最終的には、お互いの感情を思いながら指摘をする・受け入れることで「本当に良いコード」を作り出すことに繋がるでしょう。

ぜひコードレビューを適切に賢く行って、メンテナンスがしやすく、バグや不具合の生じないソースコードを完成させましょう。

もちろん、今回紹介した自動でソースコード解析・レビューしてくれるようなクラウドサービスを利用することも選択肢の1つです。

人力で行うよりも間違いなくコードレビューを効率化させることができるでしょう。

より良いソースコードを生み出せるよう、コードレビューの際には今回の記事で触れてきたことなどを意識してみてください。