タケモ塾

  • 2023.01.17
  • VBA

【ExcelVBA】可読性の低いコードの怖さ!(QA品質保証)

B1010_QA品質保証_可読性

私はセルネッツでQA(Quality Assurance)エンジニアとして、品質保証のためのテストを実施しております。

QAの業務内容は会社によって違いますが、製品が仕様に沿って動作するかを確認したり、
不具合によるシステム障害を回避するためにどんなテストをすべきかを考えたり、開発エンジニアでは気付きにくい不具合を検出して品質を保つための試行錯誤をしています。

そのような業務の中で今回は、ソースコードをレビューしていて見つけた可読性の低いコードを掲載およびそれらをセルネッツ的にどのように改善すべきかの指針を示したいと思います。

可読性をあげることは大切!

可読性が低いコードって良くないとなんとなくわかっているけれど…
「動けばとりあえずいいんじゃないの?」と思っている方って意外と多いのではないでしょうか。

よく周りから「可読性が高いコードを!」と耳にすることがあると思います。

もし他人が書いたソースコードに対して修正や追記する場合、チラっとコードを見ただけで「見やすい!」「きっとこんなことがしたいんだろうなー」と分かるとミスも少なく修正や追記をしやすくなります。

これはメンテナンス性が高いということに繋がります。

逆に可読性が低いコードの場合メンテナンス性が低いということになります。これは誰もそのソースコードに対してメンテナンスができなくなってしまうということです。

そもそも可読性とは?

では、そもそも「可読性」とはどういうことなのでしょうか?
「可読性」とは読みやすさのことです。コードが頭に入ってくる時のスムーズさとも言えるのではないかと思います。

コードをぱっと見ただけで、「読みやすい」、「きっとこういうことがしたいんだ!」と理解できる書き方がされているかどうかということです。

どうして可読性が低いコードが生まれるの?

開発者は初めから「可読性が低いコードを書こう!」と思ってコードを書いているでしょうか?

きっとそんなことはないはずです。ではどうして可読性が低いが生まれてしまうのでしょうか? いくつか原因はあると思いますが以下が原因の上位になるものではないでしょうか。

【可読性が低いコードが生まれる原因】
①可読性が低くてもシステムは動くという考え方
②「可読性の高いソース」が「品質が良い」という認識がない
③プログラマーの技量不足

なぜ可読性をあげることが大切なのか

可読性をあげることは大切とよく言われますが、それはいったいなぜなのでしょうか。
大きな理由は以下の点です。

理由 詳細
メンテナンスのしやすさ ソースコードは一度書いたら終わりではありません。
改修や機能追加など様々な理由で追記や書き換えが当たり前のように発生します。
また、自分だけが見るものではなく多くの人が見ます。
可読性の低いコードの場合、自分が書いたコードであっても時間が経つと何をしているか理解できないことが発生します。
であれば、当たり前ですが他人はもっと理解できません。もしその開発者がいなくなってしまっていたら…
可読性が低いコードはメンテナンスできないことに繋がります。
コードの間違いに気付きやすくなる コードの間違いに気付きやすくなるのです。
可読性が低いコードは読みにくいため書いてある処理を理解するのが難しくなります。
そのため間違えに気付きにくくなります。そうするとバグの温床になってしまいます。
さらに怖いのはバグを見つけられないまま開発したシステムが世の中に出回ってしまう可能性があります。

可読性が低いコードの例

ではここで実際に可読性が低いコードの例をお見せします。※一部抜粋しております

①ソート処理(クイックソート)

ソート処理の一部です。

②罫線を描く(マクロ記録)

罫線を描く動作をマクロ記録したものです。

 1つの処理をするだけで長い長いコードが書かれており、見やすいとはコードとは言えません。

セルネッツ流ルール(可読性を上げる改善案)

セルネッツは、VBA開発の前にExcelを使用しているということを前提としています。プログラムですべて解決しようとせずにExcelの機能もうまく活用します。

自分で一から考えてシステムを動かすことは素晴らしいですが可読性を意識し、どうしたら見やすいコードでやりたいことができるのかを考えましょう。

上記コードの例のそれぞれ改善案をご紹介します。

①改善案:ソート処理(クイックソート)

ソートをしたい場合VBAならこれだけで済みます。

ExcelVBA

VBAのライブラリを使えば可読性も高く、バグが潜むリスクがかなり減ります。

②改善案:罫線を描く(マクロ記録)

罫線を描きたい場合は別シートに「書式シート」を用意し、コピーする一行だけで済みます。

ExcelVBA書式シート
ExcelVBA

このようにすることで罫線を変更したい場合でもソースコードを書き換えることなく対応可能です。

まとめ

可読性が高いコードと聞くとハードルが高く感じてしまう方も多いと思います。しかし、第三者に見せることを前提に開発するようにしたらどうでしょうか。

まずは「どうしたら見やすいコードでやりたいことができるか」を意識しながら開発を行っていくと可読性の高いコードになっていくと思います。それがメンテナンス性の向上に繋がっていくのです。

メンテナンス性が向上することにより開発の工数を減らすことができます。よって、低コストで品質の良いシステム開発ができるのです。