いろいろな仕事を渡り歩き、今はインフラ系エンジニアをやっている。いろんな業種からの視点も交えてコラムを綴らせていただきます。

システムの寿命

»

作ったものを永遠に使いたがる人たち

 最近考えているのだが、ITのシステムの適正価格ってなんだろうか。納品したシステムを、永久に使うか、メンテナンスが必要な前提で使うか、継続的改良が必要なものととらえるか、考え方次第で大きく変わる。

 使う側としてはお金は払いたくない。なので、永久に使えるという前提を持ち出したくなる。営業としては、アップグレードして欲しいので、メンテナンスが必要な前提で売り出す。実際どうなのかというより、どうすれば自分に有利になるかで基準は考えられる傾向が強い。

 理屈としては、一回作ったソフトは永遠に使用し続けることは可能だ。しかし、OSがアップグレードしたり、求められる機能が変わったり、ハードウェアが陳腐化したりと、状況は変わっていく。なので、ソフトウェアには寿命というのが生じてしまう。

 永遠に使えるという理論は押し通せる。しかし、それを押し通しても、逆に膨大な手間が生じて、永遠に使い続ける最大のメリット「お金を浮かせる」という目的が実現できなくなる。下手に理屈が通るだけに、説明が難しい「現実の厳しさ」というやつだと思う。

スクラップ アンド ビルド

 個人的な考え方だが、システムというのは積極的に書き直していくべきだと思う。たぶん、そう思っている開発系のエンジニアの方も多いと思う。時間やコストという制約があるので簡単に実行に移せないが、やれればやりたいというのが本音ではないだろうか。

 自分が成長すれば、過去の自分が書いたコードを振り返る。こうした方が良かったとか、もっと良い解決方法があったとか。また、コードに限らず、機能性を追求していれば、同じように改善点の一つや二つ、目に付くはずだ。こういう、直したい欲求というのを抱えてるエンジニアは多いと思う。

 効率化とか、ITはスピードだとか言われると、こういう地道に対応すべき課題はガン無視されがちだ。とにかく高速で開発して、リリースすることが重視される。成果が求められるのは仕方ないが、考える時間を与えられずに作られたものがポーンと実運用に入るのも怖くはないだろうか。

 システム自体、ある程度のスクラップ アンド ビルド を繰り返すことを前提で取り組めば、それはそれで違う流れを生み出せるんじゃないだろうか。どこぞの現場のクソフレームワークを見てそう思う。それ使うより、世の中もっと良いフレームワークが出回ってるぞ。

システムの新陳代謝を高める意味

 例えば、ここに素人がVBAで書いたExcelベースのシステムがあったとする。だいたいの場合、「これで仕事できるから」、「使えているから問題ない」と、いう理由で使い続けられる。そして、Excelのバージョンが上がった時に使えなくなったと騒ぎ出す。

 実は、ITに限らず工場の機械でも同じ現象が起きたりする。。機械のメンテナンス部品が品切れしたり、もっと効率の良い機械が普及していたりと、機械が壊れてから途方に暮れるのだ。熟練工がいつまでも同じ機械を使うことに拘ったため、不利益を受けることがある

 自分が変わりたいと思うが思うまいが、世の中は変わる。変化する前提でメンテナンスや改修できる仕組みがないと、思わぬところで詰む。また、入れ替えのタイミングというのは、現在抱えている問題を解消するための最大のチャンスでもある。このチャンスをことごとく逃していないだろうか。

 また、いつまでも同じものを使っていると、技術が属人化しやすい。見直されることがないからだ。これは、ITに限らず、全ての業界に対して言えることだ。時代を追うごとに、「こうすればいいんだよ」というやり方しか引き継がれないので、考える人がいなくなる。日本の大企業なんて最たるものだ。

システムを新陳代謝させるための技術

 システムを新陳代謝させるためには、メンテナンス性が必要だ。簡単に言ってみたが、メンテナンス性ってなんだろうか。一般的に考えると、仕様書とかドキュメントの質、きちんとテストされているかどうかという事が問われるだろう。だが、これらはほとんど意味が無い。

 実際、どこのプロジェクトでもドキュメントはそれ相応に書く。テストもExcel方眼紙にいっぱいスクリーンショットを貼り付けて証跡まで取っている。しかし、これらが役に立った事は無い。なぜなら、これらはシステムが完成されていて、変更が加わらない前提で作られているからだ。

 新陳代謝の利くシステムを作るには、現状の設定を簡単に確認できる仕組みやテストコードを書く事が重要だと考えている。過去に書いたものでなく、今あるものから情報を抜き出したり、状態を確認するための技術だ。サーバの設定ファイルの書き方や、管理の仕方もこれに含まれる。

 今エンジニアに求められるのは、新しい物を作るより、既存のものを分析する力じゃないだろうか。これができないと、既存のものをリプレイスできない。現在、ここらへんの技術は、広大なブルー・オーシャンというやつが広がっている。これからの時代は、ITシステムのリファクタリングだと考えている。

Comment(3)

コメント

非現実性AR

某windowsが改悪の道をひたすら爆進しているのを眺めている身としては、この手の「変われば良くなる」論は眉唾もんであります。

ずっと良くなり続けるシステムなんてのは寡聞にして知りませんな。

大抵は一部の声のデカい連中におもねって、その他大多数には「改悪」となるのがオチなのです。

最大公約数を超えて最適化しようとすれば、こうなるのが摂理ってもんじゃありませんかね?

Anubis

> 非現実性AR さん
イメージはMacのOSXですかね。
Windowsは変わっていない。ひたすら付け足してるという認識です。
.
作り直すことで、良くなるというより、気付くと思ってます。
良くなるかどうかは取り組み方次第ですが、時代には取り残されにくくなるんじゃなかろうか。

非現実性AR

結局のところ作り直そうが屋上屋を架そうが、適正な「ゴール」を逸脱してしまえば迷走まっしぐらではないでしょうか。

大事なのは「今我々がいるところはゴールなのか」と検証することであり、そしてそれは否定から入ってはならないものだと思います。

無理矢理ゴールではないと結論づけてしまうと、後はもうカイゼンのためのカイゼンに堕して利用者不在のエンジニア自慰行為にしかならない。

「変わること=善」と定義している人はまずこの罠に陥ります。

必要なのは作り直す勇気なんかじゃなく、正しくゴールを設定し、検証できる力。

あえて勇気という言葉を使うならば、ゴールに達したと判断したら誰がなんと言おうと手を加えない勇気ではないでしょうか。

コメントを投稿する