ブログ2018-04-05いつまでもメンテナンス出来るシステムを作るにはカテゴリー:ソフト開発ツイートEY-Officeでは現在、旧システムのメンテナンス的な開発も行っています。あるメディア企業に納入されている広告システムの広告管理ソフト。お客様はこのシステムを使っているので独立してメンテナンしています。両方のシステムは初期開発からかなり時間が経っていて、2.は初期開発者とは全く連絡がとれません。両システム共に現在も大きな問題はなく新機能の開発が行われています。長期間使えるシステムを作るにはなぜこれらのシステムはメンテナンス出来ているのでしょうか、両システムは最初からメンテナンス可能なシステムではありませんでした。Endテストを書くこれが一番重要だと思います。新機能の追加や既存の機能の変更などのメンテナンス的な開発が出来なくなる最大の原因は、既存の機能が動かなくなることへの恐怖だと思います。既存の機能が動かなくなる事はサービスや業務に大きな障害をもたらしれま、開発者としてはどうしても消極的になってしまいます。Endテストは人間がアプリやサービスを使うのと同等の操作を自動的に行い、画面に表示される結果や内部データを確認する自動テストです。Endテストの作成は、ユニットテストに比べかなりコストが高くなります。長期間メンテ出来るシステムが出来る事を考えるとコストに見合うものだと思います。Endテストを書く際に重要な点は、全ての操作に対してのテスト、完璧なテストは目指さない事です。そのシステムにとって重要な機能の正常系に付いてのみ書くことをお勧めします。Endテストではなく開発コストの低いユニットテストを組み合わせます。実行環境構築やデプロイ等を自動化する現在ほとんどのサーバーはクラウドで運用されていると思います。本番システムのサーバーは頻繁に変更する事はないかもしれませんが、開発用やテスト用にサーバーが必要になるとこは良くありますし、大幅な変更の際には既存のサーバーを無理矢理やりくりするよりは新たにサーバーを追加してしまった方が楽です。サーバーの追加はクラウドのコンソールから簡単に出来ますが必要なソフトのインストールや設定が自動化されてないとサーバーの追加を思いとどまってしまうと思います。ポータル環境を作れるツールもあり、環境構築の自動化はかなり行いやすくなっていますので是非行うべきです。特殊な環境や非OSSを使わない現在は特殊なハードやOSを使う事はあまり無いと思いますが、マイナーなプログラミング言語を使うと時間が経つとサポートが止まったり、使えるプログラマーが見つからないなど苦労するかもしれません。オープンソースでは無いミドルウエアやツールを使うと全く手を出せなくなります、オープンソースであれば苦労するかもしれませんが最悪の場合でも自分たちで直せる可能性があります。EY-Officeでは、このようなメンテナンス的な開発も行っていますので、利用しているシステムがメンテナンス不全なっている方は是非ご相談くさい。