プログラムはただ動けばいいというのは間違いです

こんにちは、cosmobloom の小野です。

プログラムに限った話ではないのですが,モノ作りは開発者が自由に設計できます.そのため,なんのルールもなく作ってしまうと非常に多くの問題を抱えたプロダクトが出来上がります.プログラムを例に見てみると以下のような問題があげられます.

・可読性が悪くなる
なんのルールもなく,好き放題にプログラムを書かいてしまうと,何が行われているか見通しが立たなくなります.プログラムは名前を自由に決めることができるので,名前と実行する処理が一致しないということも起こってしまいます.意図が明確でないプログラムコードはそれだけで開発者に多大な時間と労力を要します.

・保守性が悪くなる
プログラムの保守という観点でも,適当に書かれたコードは大きなデメリットを生んでしまいます.マイナーな不具合や要望による小規模な変更を加えるだけでも影響範囲の特定に要する時間が多大になります.また,プログラムの依存関係を完全に理解することが非常に難しいため,改修による新たな不具合を埋め込んでしまう可能性が高くなります.

・拡張性が悪くなる
保守性の部分とも重なりますが,依存関係が複雑になりすぎて手を加えられない,作り直さないといけない,という状況に陥りやすいです.設計されたプログラムでも10年以上の運用保守改修を行っていくと,当初の設計思想に依存した限界などが見えてきます.ですので,適当に書かれてしまうと長期の運用に耐えられないプログラムになってしまいます.

・テスト可用性が悪くなる
適当に書かれたプログラムは当然テストのことは全く考慮されていないでしょう.しっかりとテストを考慮しているのであれば,プログラムを適当に書くことは不可能です.テスト可用性が悪いということは,そのプログラムがどのように動作するのか事前に確かめることができないということです.動かしてみないとわからないので,品質の担保をすることができません.

・予期せぬエラーが発生する
前述の通り,プログラムの依存関係が酷く見通しの悪いコードはテストができません.そのため,開発者が動作を細部まで把握できないので,入力の変化に対する挙動がわからないため,ちょっとした変化で例外が発生し,プログラムが動作せず再起動するといったことが発生しやすくなります.

・パフォーマンスが悪くなる
適当に書かれたプログラムはたいてい,冗長な処理が書かれています.さらには,データの持たせ方に工夫がないため,常に大量のコンピューターリソースを使い続けるといった書かれ方をします.そのようなコードはアプリケーションやシステム全体のボトルネックとなってしまいます.

・セキュリティリスクが高くなる
保守性や見通しといったことに無頓着な開発者は,セキュリティについても無頓着になってしまいます.適当に書くこと自体,データの整合性や完全性が失われやすくなるため,ある種のセキュリティリスクと言えるでしょう. さらに,意図しないところで誰でもアクセス可能な作りになっている可能性も出てくるため,非常に危険な状態と言えるでしょう.

このように,単に動けばいいという考えでは様々な問題を抱えることになります.そうならないためには,品質を意識して作りこまなければなりません.趣味で個人的に作っている分であれば,なんの問題もありませんが,企業は最も注意しなければならないポイントです.

では,品質を担保するためにはどのような意識が必要なのか考えてみたいと思います.プログラムの設計手法などは市販の技術本に譲ることとしますが,開発者として持つべき考え方を挙げてみたいと思います.

・コード規約を作る(ルール)
・プログラムの責務を明確にする(設計)
・結合度と凝集度を考慮する(設計)
・適切なパッケージ構成を考慮(設計)
・最小単位で作りこむ(製造)
・何かを作ったら必ずテストをする(試験)

上記の中で最も大事なのはテストです.どれだけ素晴らしい設計ができても,テストでそれを確かめていなければ,その設計が正しいのか,想定通りに動くのかはわかりません.なので,テストを必ず行って,安定した動作を担保する必要があるのです.

これまで述べてきたことは,当たり前のことのはずですが,世の中はそうでないことも多々あります.予算なのか,納期なのか,どのような理由かは推察しかできませんが,テストコードが十分でないプログラムというのは多いもので,やはりそういうプログラムを抱えたプロジェクトほど,重大な問題が発生し炎上する,といったことが起こってしまう印象です.

限られた予算,期限でこれらを実行するのが優秀な技術者であると思っていますし,技術力のある企業だと思っているので,cosmobloomも当たり前を当たり前にできる会社として取り組んでまいります.

それではまた来週お会いしましょう.

小野弘幸