いらにか 2024/07/05 23:22

【雑記】ソフトウェアの進化論【遺伝子】

長くソフトウェアの開発をしていると、ある壁にぶつかります。


それは 刷新 とか リプレース など色々な呼ばれ方をしているのですが、より抽象的に言うならば 進化 とか 世代交代 が表現として一番しっくりきます。


アップデートや機能拡張も類似するものですが、それらは 成長 という枠の中にいて、進化とは少し異なります。
皆さんにわかりやすく説明するなら、Windowsの遍歴を思い浮かべてもらうのが簡単かもしれません。
Windows10は月次アップデートで段々と成長していきますが、Windows10からWindows11に変わるようなアップグレードではUIや操作系、機能など様々なものが変わって、明らかにWindows10とは異なるものに進化しています。


一般の方は、なぜこのような進化をするのか疑問に思うかもしれません。
Windows10のままWindows11のように機能拡張することはできないのか。
特に、Windows7からWindows8系への移行では散々な言われ方をされてました。


これらの前提として、そもそもソフトウェア開発は生み出した後が本当のスタート地点であるという特殊さがあります。
現代のソフトウェアはリリースされた後も修正パッチやアップデートなどで、バグを修正したり機能追加したり、成長させることが当然になっています。
逆に不具合などが修正されず、メンテナンスがされていないソフトウェアは忌避される傾向すらあります。


「ソフトウェアはリリース後も継続的にメンテナンス(保守)される」という文化は、ソフトウェアの発展に大きく寄与してきましたが、同時に開発者の負担にもなっていました。
開発者が保守しなくなったことで、使われなくなっていったソフトウェアも沢山みてきました。
(その度に代替になるような派生ソフトウェアが台頭してきたりしました)


たぶん、この記事を読んでいる人も使わなくなったアプリやサービスがあるんじゃないでしょうか。


ソフトウェアの死というのは、誰にも使われなくなることだと思っています。
そして開発者は「自分」と「その他ユーザ」のことを考えてソフトウェアを成長させていきます。
ですが、大きくなりすぎたソフトウェアは次第に成長が遅くなり始めます。

自己を作り上げているソースコードが膨大になり複雑化し、不具合が増え、動作が遅くなり、過去のコードが足を引っ張って思ったように機能が実装できなくなり、Etc...といった感じで、膨大に積み上げてきた積木の上にさらにブロックを積むのが困難になるのはソフトウェアの宿命とも言える問題です。
もちろんこの問題と向き合うための学問や哲学などのエトセトラが多く存在しますが、少し脱線するので割愛します。気になる人はソフトウェア工学で調べてみてください。


こうなってくると、開発者は現状を整理して、より理想的に積み上げたソフトウェアが欲しくなります。開発者の多くは理想状態を好みます。
大抵はリファクタリングと呼ばれる整理・修正作業によって改善を試みますが、手が付けられないような致命的な欠陥があると、最早イチから作り直したほうが一番早いという結論にたどり着くことがあります。
そして、古いソフトウェアから良いものを受け継ぎつつ悪いものを排除した、新しいソフトウェアが生まれます。


これらに生命の進化論に通じる部分があると感じているので、冒頭の表現として進化がしっくりきているわけです。


ここまでの説明で、感の良い人は「ソフトウェアの退化」や「モダナイゼーション(近代化)」が起こることの必然性を受け入れられるかもしれません。
端的に言えば生命ですら現在の環境に最適化しようとして退化のような進化をしてしまうのだから、ソフトウェアでも同様の事が起こりえるということです。


Windows8で不評だったModernUI(MetroUI)は、当時の世界を席巻しつつあったモバイルデバイス(スマホやタブレット)を念頭に開発された経緯があり、WindowsがモバイルデバイスのOSに進出するための試行錯誤でもありました。
マルチデバイスでの統一を図るためにモバイルデバイスにおける当たり前(強○フル画面、横スクロール、タッチ操作など)をPCの世界にも持ち込もうとしたことで混乱が大きかった印象が個人的に強いですが、Windowsにおけるウィンドウの利便性が損なわれていたことが一番の失敗だったと思います。あとWindowsボタンのスタートメニュー。
まぁ話が脱線するので戻しますが、ここで重要なのはWindows8.1以後では操作系やUIをWindows7っぽく戻しつつもアイコンのデザイン面ではWindows8のフラットデザインの要素がモダナイズがされて残った点です。


Windows7からWindows10へ移行する人の中で、当時はよくアイコンのデザインの好き嫌いの話がされていました。
Windows7時代は立体感や質感の強いデザインのアイコンで、iPhoneも初めの頃は同様に立体感や質感の強いアイコンでした。
立体感を出すことで押せるものと認識させる意図があったりしたそうです[要出典]。


フラットデザインへの転換期にあたる2012~2014年頃、PCやスマホなどデバイスによって画面解像度やサイズが多種多様すぎることで、アイコンのデザインは苦しめられていました。
例えばリアルな写真のような128x128サイズのドット絵を16x16サイズにしようとすると、情報の欠如が多すぎて元の絵と印象がだいぶ変わってきます(そもそも同じように表現できないかも)
この問題を解消するため当時はフラットデザインやマテリアルデザインなど、マルチデバイスを意識したデザインがいくつか生まれました。
フラットデザインでは、元がシンプルであるためにサイズを変えても印象があまり変わりません。
ですが以前のアイコンの立体感・物体感が持っていた「押せる印象」がフラットデザインで失われたことで、ユーザの違和感に繋がり、前述の好き嫌い論争の一因になりました。
(一応フラットデザインでは薄いシャドウなどの浮遊感によって押せる印象をもたせていたりします)


このようにアイコンの進化があったおかげで、多種多様な解像度への耐性値があがりました。
もしかすると、この転換が無ければ近年のスマホの超高解像・巨大化は無かったかもしれません。


ユーザは以前のままで良かったと思っていても、開発者側に以前のままではいられなかった理由があったりします。
このギャップが(ユーザー視点での)ソフトウェアの退化につながる一因なのかなと思います。
X(旧Twitter)とか、まさにその例かなと。


Windows8はサポート終了しているので(おそらく)滅びを迎えました。
ソフトウェアとして死んだと思いますが、その遺伝子は残り続けています。


そう考えると、死にゆくソフトウェアたちもどこかに遺伝子を残しているのだろうなと思いました。



了。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事を検索