見出し画像

「枯れた」システムと、計画的陳腐化

「枯れた技術」とか「枯れたシステム」なんて言葉、みなさんは聞いたことがあるでしょうか?ある技術やシステムが長く使われて、バグや課題を出し切った状態、問題が枯渇した状態のことを「枯れる」なんて表現したりします。

「枯れる」というと衰退するとか衰えるといったネガティブなイメージを連想しがちですが、システムでは逆です。IT業界用語だと思いますが、システムや技術が「枯れる」というとき、ポジティブな意味で使われます。

ただ、このところ、あんまりこの「枯れた◯◯」といった言葉が使われなくなったような気がしています。今日はその背景などを考察してみたいと思います。


「枯れた」システムとは

コンピュータって単純化すると、「入力」されたデータを期待されるカタチに「変換」して「出力」する。やっていることは「入力 ー 変換 ー 出力」これだけです。この与えられた各データを関連付け、意味のある情報のまとまりに構造化しているのがシステムです。このように考えると非常に単純ですが、、、単純であるからこそのカオスがあります。

例えば、物理的な機械の場合は、物理的な制約を受けますよね。製造工程において、車の天井にエンジンを取り付けたり、タイヤの下にハンドルを設置したりはできません。また、使用者にできることにも限りがあります。ボタンやレバー、ハンドルなど、決められた以外の操作はできませんし、行動にも制限があります。100Km/hで走行しながらボンネットを開けるようなことも、まずないでしょうw ところが、システムは事情が異なります。物理的な制約はほぼありませんし、設計上の制約も少ない。使用者が何をするかもわかりません。まったく予期せぬ場所でクリックが連打されたり、支払いの途中で突然電源を落としたり、複数の商品をそれぞれ別々のお店や端末から同時購入したり。。。なんでもアリです。構造上の不備を見つけるだけでなく、ユーザの予期せぬ挙動を網羅的に把握するというのは、思っているより困難です。

想定と違ったとか、こんな予想外の使い方をするユーザがいるんだ!とか、実際に運用してみてわかることは少なからずあります。(規模にもよりますが)最初の半年ほどでめぼしい問題がばっと出てやがて収束していきます。そして、3年目くらいにまた年数が経ったからこそ起こる障害というのが出はじめます。保存データの肥大化とか、ハードウェアの故障とか、パフォーマンス遅延によって誘発されるエラーとか、そういった類の障害です。ので、システムが枯れるには更に3年とか5年とかいう単位で、使用者に揉まれ荒波を乗り越える必要があります。

このように長い期間を経て、安定した「=枯れた」システムがやっと生まれます。設計の素晴らしさだったり使い勝手といった機能面での良し悪しだけでなく、経年によって生まれる安定性があります。このように考えると、特にミス漏れがあってはならないような、高度なシステムについては「枯れる」こと自体が非常に大きな価値になるのです。

「枯れた」システムは、もういらない

ところが、近年ではあまり「枯れた」システムの価値は、重視されなくなってきたように思います。

システムって実は5年くらいで寿命を迎えたりします。デジタルだしデータが劣化するわけじゃないのに、なんで?って思うかもしれませんが、技術の進歩が早すぎるんです。コンピューターのハードウェア性能は指数関数的に伸びてますし、これに併せてさまざまな環境がアップデートされ、5年前に作ったシステムはみるみる陳腐化していきます。

これと並行して、ソフトウェアの技術もどんどんアップデートされていきます。世界中のプログラマやハッカーが日々新しい技術を生み出し、世界中のどこかで新しい技術が公開されているのです。プログラミング言語だけをみても、この数十年で主要なものでも、C/C++、Java、VB、C#、Perl、PHP、Pythonなどなど、さまざまな言語が公開され、その度にエンジニアは新しい技術に飛びついてきました。すると、何十年も前にCobolなどという古い言語で書かれたシステムは、今となっては誰も読めないわけです。。。結局、古い技術は淘汰され、メンテナンスができない状態に陥ってしまいます。

「枯れた」システム自体は確かに安定しているけれど、旧式のシステムなんて誰が管理できるの?若いエンジニアはもうとっくに「最新技術」に乗り換えてしまっている。メンテナンスができないし、最新の技術で作り直したほうが早くない?といって、サポート期限が設けられ、使っているシステムはどんどんサポート対象外になるのです。ユーザにとってみれば、古いシステムを使い続けたところで、問題が起こったときのリスクばかりが募っていくように感じるでしょう。このようにして計画的にシステムは新しいものに刷新されます。

すると、「枯れたシステムは良い」という考えそのものがもう古臭くみえてきます。枯れていようがいまいが、古いシステムを運用すること自体がリスクと化してしまうからです。実際に「枯れた」システムは本当に正義か?みたいな記事を技術系のブログなどでも、よく見かけるようになりました。

生産性の向上の裏にある弊害

確かに、最新の技術の動向だったりをみていると、10年前どころか5年前と比べても生産性は劇的に向上しています。以前は、何週間もかけて作っていたシステム構成をいまや数分でしかもWebからポチポチと数クリックするだけで構築されてしまうような進歩があります。

ただ、その反面、それは本当に業界全体、あるいは社会全体を見た時に果たして好ましい環境と言えるのか、不安になる一面もある。。。上述した通り、IT業界もビジネスですから、どうしても生産性の向上と、利益の向上が第一目的になってしまっています。ぶっちゃけ、ITとして「できること」は本質的に10年前とさして変わってません。変わったのは主にパフォーマンス(ハードウェアの性能向上)と生産性(ソフトウェアの製造フローの向上)です。

若いエンジニアは目先5年の開発くらいしか見えないので、仕方ないかもしれませんが、おそらく5年後、10年後に同じようなことを繰り返していることに気づくでしょう。自分のキャリアの中でいったいいくつの言語や技術を学んできただろう?それをスキルアップと呼んできたけれど、手掛けた「サービス」はどのように変化しただろうか?5年後にはまた新しい技術ができたと営業し、古いシステムはメンテナンスが困難になるからといって、計画的に刷新されることでしょう。

IT業界のめまぐるしい変化こそが、ビジネス界の「計画的陳腐化」のロードマップの中にあるということに、そろそろ気づかなければいけないようにわたしは思うのです。

計画的陳腐化の波はIT産業へ

計画的陳腐化Planned Obsolescence」とは、製品の寿命を人為的に短くする手法のことです。例えば、電化製品などが数年で計画的に壊れるように製造段階でそのようなしくみを仕込んでおくのです。スマホのバッテリーは、わかりやすく2、3年でヘタるように作られてますよね。iPhoneはバッテリー交換すら簡単にはできません。でも、それで良かったのです。新しいものが欲しくなってきたころに旧製品に(計画的に)不備が生じる。同時に毎年発表される新製品が目に止まり、そろそろ買い換え時かな、なんて購買意欲がそそられる。そういうマーケティング手法なのです。

20世紀の前半から行われている手法ですが、近年では持続可能性だとか地球環境問題などの背景から、製造業では徐々に時代遅れとされつつあります。

ただ、IT業界、特にソフトウェアの世界では、まだあまり耳慣れないかもしれません。むしろ、IT業界ではこのような新技術を立て続けに更新し、入れ替えを助長する流れは、今だに好意的に受け入れられているように感じます。新しい技術の習得は生産性の向上であり、エンジニアにとってはスキルアップという文脈でしか語られないからでしょう。でも、技術セミナーに参加していると、毎年刷新され続ける「最新」技術に心酔したプレゼンターにうんざりする経験はありませんか?

わたしはその習慣こそITにおける「計画的陳腐化」ではないかと思うのです。20世紀前半に取り入れられた、むしろ「古き」マーケティング手法なのだということを今こそ強く意識する必要があるように思います。新しい技術を習得することは必ずしも全てが悪いことではありません。でも、一度立ち止まって振り返ってみてほしい。技術者として、一人の職人として、、、その「技」は後世にどういう影響をもたらすのか。10年後や50年後の未来を見据える視点を持つことこそ、次世代を担うエンジニアに、いま最も必要な視点ではないかと思うのです。

りなる



この記事が気に入ったらサポートをしてみませんか?