ソフトウェアが見かけ上正しく動き、期待した動作をしていればソースコードの品質にこだわる必要があるのか疑問に思う方がいるかもしれない。
しかし、ソースコード品質は運用開始後の保守費用やビジネス上のリスクに大きく影響する。
ここでは、ソースコード品質に疑問を持っている方向けに、品質の高いソースコードの特性や具体策について解説していこう。
ソースコード品質とは
そもそもソースコードの品質とは何なのか。一般的には下記の要素を備えているものが品質の高いソースコードとされている。
ソースコード品質をはかる9つの特性
1.可読性
インデントを整え、空行もうまく使いながら規律や一貫性のあるコードであること。
プログラマーはコードを読む時間が殆どであるため、見にくいコードは余計な労力と時間を浪費する。
2.信頼性
エラーが発生してもユーザに致命的な影響を与えることがないよう、クラッシュや停止などが発生しないよう、フェイルセーフの措置やエラーハンドリングが行われていること。
3.保守性
複雑なコードは修正や拡張がしにくくバグも発生させやすいため、最適化され、シンプルな構造で作られていること。
解析のしやすさ、変更のしやすさ、テストのしやすさがポイントとなる。
4.効率性
メモリやCPUを大量消費することなく、効率を考えたロジックであること。
5.移植性
OSの違いやハードウェアの違いがあっても動作すること。
限られた環境でしか動かないようなコードの場合、環境が変わるたびにコストを投じる必要があり非効率である。
6.一貫性
コードが何をしているのか理解しやすいよう、変数名や関数名に意味をもたせ一貫性を保っていること。
7.再利用性
ひとつの処理のために複雑・巨大な関数を用意するのではなく、シンプルな構造で再利用性の高い構造であること。
8.ドキュメント
意味があり、価値のあるコメントやドキュメントが用意されていること。
多すぎるコメントやドキュメントはエンジニアの時間を浪費するが、少なすぎても解析や理解に時間がかかってしまう。
9.セキュリティ
サイバー攻撃につながるような欠陥、脆弱性がないよう意識して作られていること。
また、発見された脆弱性に対しパッチをあてるなど継続的にメンテナンスが行われていること。
なぜソースコードの品質が大事なのか?
ソースコード品質の重要性を図る上で大事なポイントは、主にコストとリスクの2点である。
1.ソースコード品質は「コスト」に影響する
品質の悪いソースコードは、バグも発生させやすく修正にも時間がかかる。
また、運用開始後は保守や新機能の追加などが必要になることが殆どであるが、ソースコードの品質が悪い場合、既存の機能に影響なく保守・開発を行なうには時間も費用もかかってしまう。
2.ソースコード品質は「リスク」に影響する
あらゆるモノにコンピュータが搭載されている昨今、品質の悪いソフトウェアの欠陥や脆弱性を狙い攻撃されたり、動作不良を起こし自主回収に至ったりなど、品質の悪いソースコードはビジネス上のリスクが高い。
コードの品質を上げるには
品質の良いコードがどのようなものか、品質が悪い場合にどのようなリスクがあるかは理解いただけただろう。
では、実際にコードの品質を上げるには何をすればよいか。
上記にあげた9つの特性を守れば良いわけだが、何からどのように着手したらよいのか進めるには難しい部分もあるため、具体的な方法をあげていこう。
1.品質保証(Quality Assurance)を取り入れる
テスト工程で品質保証の観点を取り入れ、全体の品質をあげる。
- ユーザビリティテスト
エンドユーザの観点で操作に迷うことなく使用でき、ソフトウェアが意図通りに動作するかをテストすることでユーザビリティの問題を特定し、品質を向上させることができる。
- 互換性テスト
クロスデバイスや様々なOS、ブラウザ、通信速度など多種多様な条件でテストを行なう。
- 機能テスト
ソフトウェアが機能仕様やビジネス要件に従って機能しているかどうかをテストする。
- パフォーマンステスト
負荷テストおよびストレステストとも呼ばれる。悪条件の中でも正しく動作するか、堅牢性と安定性のテストを行なう。
- セキュリティテスト
開発したソフトウェアの脆弱性や堅牢性をテストする。
セキュリティテストには、脆弱性を発見する「セキュリティ診断」と、実際に攻撃や侵入を行わせネットワークやソフトウェアの堅牢性をテストする「ペネトレーションテスト」がある。
2.コードレビューを行なう
ひとりでプログラミングをしていても気づかないことがあるが、チームでコードレビューすることで「9つの特性」に沿うようにするものである。
コードレビューは、コード品質を上げるだけでなくエンジニアのスキルアップにも貢献する手法といえる。
3.コード解析ツールを使う
コード解析ツールを使い、機械的にコードの良し悪しを解析させる。
解析ツールは様々な観点で指摘のレベルを設定できるため、状況に応じてどこまでの指摘に対応するかなどを決めると良い。
その時修正できなくても「既知」であることも大事なことである。
以上、ソースコード品質について解説してきたが、ソースコードの品質の大切さが十分に理解いただけたのではないだろうか。
ソースコード品質を上げる作業は地道で、時間と費用を要するため理解されにくいこともあるが、のちのち必ず報われる重要な先行投資であるため積極的に対応していきたいものである。