こんにちは。
i3DESIGNでソフトウェアエンジニアをやっている植田です。
今回はソフトウェアの品質ということをテーマでお話したいと思います。
目次
エンジニアにとっての品質とは
自分がお客さんだと思って想像してみて下さい。
一般的にWebアプリケーションを発注した時に品質というと、どのような事を想像しますでしょうか?
- 機能要件を満たしている。
- 納期を守る。
- 表示崩れがない。
- バグがない。
- サイトがダウンしにくい。
- テストカバレッジが高い。
等が挙げられると思います。
エンジニアの目線からすると、これらの事はソフトウェアの品質の中でも表面的な部分に過ぎないです。確かに今挙げたようなことは大事な事ですし、これらが最低限満たせていないと、パートナーとしてやっていく事は難しいと思います。
しかしながら、我々ソフトウェアエンジニアからするとこれらの条件を満たしているだけでは、不十分です。エンジニアにとって要件通りに動くプログラムを作ることは当たり前の事です。それに加えて、自社開発をしているエンジニアが強く共通認識として、大事にしている事があります。
それは、「変更に強いソフトウェアを作る」という事です。
変更に強いという事はどういうことでしょうか?
- 修正を簡単にすることができる
- 機能追加を簡単に行える
- 誰がみてもわかりやすいコードを書いている
こんなの当たり前の事じゃないかと思われるかもしれませんが、現実ではそうはいかない事が多いです。
品質の高いソフトウェアのお客様目線でのメリット
では、お客様目線でこれらが出来ていると良い事はあるのでしょうか?
プログラムを使い捨てで1度作ってしまったらおしまい。
↓
それをずっと使い続ける。
といった事であれば、残念ながらメリットはないですが、通常はそうではないはずです。
アプリケーションソフトウェアは、お客様のビジネスのスケールと共に成長していくものです。ビジネスが成長していくにつれて、新しい機能を追加したり、ビジネスの要件が変わるごとに、改修を加えなければなりません。そのような時に変更しにくいソフトウェアでしたら、バグを生じさせる原因にもなりますし、修正にかかる期間も長くなります。修正漏れもあるかもしれません。
例えば、ECサイトなどで、消費税の増税対応を例で説明します。この時ただ税金の金額を上げるだけで、他の事は変えないとします。
消費税が表示される場所は、商品一覧画面・商品詳細画面・カート画面・決済画面等沢山あると思います。
品質が低いソフトウェアでは、それぞれ画面ごとに消費税を別々で管理しているので、値を変える為に、それぞれいじらなければなりません。修正箇所が多ければ多いほど、ミスに繋がります。それらが多いと言うことは、テストをする範囲も広がり時間が掛かると言うことです。
一方、品質が高いソフトウェアでは、消費税を一元管理しているので、消費税のデータを1つ変えれば、消費税すべてに反映されるので一瞬で対応可能です。納期も短く、バグも少なく、予算も少なく済むと言うメリットがあります。
逆にデメリットは
品質が高いソフトウェアを開発するデメリットは、個人的には特にはないと思います。
ただ1つ強いてあげられるとすれば、そのような品質が高いコードを書けるチームはあまり多くないと言うことです。
一定以上の品質を守れるエンジニアになる為には、設計・開発・メンテナンスまですべて経験して、エンジニア間の決まり事に精通し、それ相応の技術力を身に着けることが必要だからです。
品質の高さをどうやって見極めるか
これはあくまで一般的な話なので、全てがそうとは言い切れないのですが、自社でコードを書かず、手を動かす部分を全て他社に委ねてしまうと品質の低下が起こりがちです。
その理由としては、要件定義や工程管理はしていたとしても、細かい品質管理が難しくなるからです。コーディング前にいくら詳細な設計をしていたとしても、変更がしやすいように細かい工夫をして、プログラムを書くことは現場の仕事です。その細かい工夫ができるかどうかでソフトウェアの品質はかなり変わります。
逆に、自社プロダクトの開発経験があり、自社で開発を完結できる会社は圧倒的に品質が高く仕上がります。他社のプロダクトでも自社プロダクトの製品を生かし、同等以上のクオリティで開発できるという強みがあるからです。
そのようなチームでは、米AmazonのCEOジェフ・ベゾスが提唱する「2枚のピザ」ルールを守り、少数精鋭で設計から開発、メンテナンスまで同じ人がやっているのも特徴です。
品質をあげるための弊社での取り組み
この記事では品質に関してソフトウェアエンジニアの目線でお話し致しました。自分達はただバグが少なく、機能要件を満たした製品を開発しているだけではなく、会社の将来の成長まで見越して、綺麗で変更のしやすいプロダクト開発を念頭に入れて開発しています。
これらを実現するために、弊社ではアジャイル開発やTDDなどの開発手法を取り入れて、高品質な製品開発を行っております。
今後も、この様な機会があります時に色々と発信をさせて頂ければと思います。
もし高品質なアプリケーションに興味がありましたら、是非弊社までご相談頂けたらと思います。
▶︎in-Pocket編集部より
アイスリーデザインで実施しているフロントエンド開発におけるサービスの特徴、手法や関連事例などについては、こちらをご覧ください。