開発者はAIを使ってソフトウェアのTCOを削減できるのか?
AIを活用してソフトウェアのTCOを削減できるのか?開発者の視点から探る
昔は任天堂のカセットを買ってもソフトウェアは更新されることはなかった日々は過ぎ去りました。世界は変わりましたし、ソフトウェアも同様です。
以前のように自分自身で(素晴らしい)灰色と黒の箱に閉じ込められるのではなく、ソフトウェアはインターネットにつながった機械の中にいます。ソフトウェアは変化に対応しなければなりません。セキュリティの脅威に対する更新や、この変化する生態系に追いつくための機能の更新などの理由で、ソフトウェアは更新され、メンテナンスされなければなりません。コードは書き直され、依存関係は更新され、アプリケーションは再展開される必要があります。
これにはコストがかかります。価値を提供し続けるために導入しておくためには継続的なコストが必要です。そして、メンテナンスするために管理するコードが多ければ多いほど、コストは高くなります。だからこそ、コードは削除されることがよくあります。では、価値を提供しているコードをなぜ削除するのでしょうか?コードの価値はどこにあるのでしょうか?
コードと開発エコシステムの進化
コードの価値を理解するために、抽象化について話す必要があります。ほとんどの開発者は0と1でコーディングしたり、0からfまでコーディングしたりすることはありません(一部の人はまだそうしています)。代わりに、プログラミング言語は0と1の代わりに実際の言葉を使えるように進化してきました。ハードウェアも進化し、開発者が書かなければならなかった部分をシリコン上で抽象化しました。プログラミング言語は時間の経過とともに進化し、開発者の生活をより簡単にするためにさらに高い抽象化のレベルに進化しています。私たちは、低レベルの機械語(第一世代言語または1GL)、アセンブリ(第二世代または2GL)、より抽象化された高水準言語(3GL)(CやJavaなど)から、よりドメイン固有の言語(4GL)(R、SQL、PL/SQLなど)へと進化し、制約/ロジックベースの言語(5GL)(Lisp、OPS5、Mercuryなど)へと進化してきました。ポイントは、各世代が開発者に対してより多くの複雑さを抽象化していることです。5GLは、指定された問題や条件に基づいてソルバーを作成するためにAIに依存しています。
- You take care of a rich beauty and fashion expertise, often composing vibrant and lively articles on the subjects.
- 新しいAIチューターに会ってください!
- 注文事項:AIが逆順に苦戦する理由
開発エコシステムは、プログラミング言語とともに進化してきました。開発者は新しいプロジェクトを始める際にゼロから始めることはありません。彼らはライブラリ、依存関係、データベース、データプラットフォーム、ノーコード/ローコードを使用します。彼らは既存のソフトウェアを使用し、相互作用します。コードを抽象化するもの、つまり書かれたコードが少ないままでも同じレベルの機能を提供し続けるもの、何であっても使用されます。
総所有コスト(TCO)の削減とメンテナンスの改善
ゼロから始めることは非常に高価です。私はいつもこのトースターの話を思い出します。トーマス・スウェイツは、既存の抽象化は使わずにトースターを作ろうと決めました。鉱石を採掘し、それを精錬し、トースターを作るために必要なすべての作業を自分自身で行いました。結果、トースターは動かず、莫大な時間とお金を費やしました。トースターを作るには文明全体が必要です。ソフトウェアも同じです(まだその段階には至っていないかもしれませんが)。価値を提供するためには、抽象化を使用します。書かれるコードが少なければ、メンテナンスするコードも少なくなり、それによりメンテナンスにかかる費用も減少します。つまり、TCOが低下するのです。
開発者の仕事は「レガシー」コードを書くことです。もしまだどこかでレガシーコードが動いているなら、おめでとうございます。あなたは価値を提供していますし、引き続き価値を提供しています。それを実現するためには、ツールや依存関係、抽象化などエコシステムを賢く選択することが重要です。複数のワークロードをサポートし、新しいワークロードを提案し続けるモダンなクラウドデータプラットフォームを使用することは良い選択です。データベースを途中で変更することはコストがかかりますが、そのためにはデータの移動だけでなく、コードの書き直しや新しい要素のメンテナンスが必要です。そして、コードを書く量が増えれば増えるほど、メンテナンスコストも高くなることが私たち全員に知られています。
AIのソフトウェア開発への影響
AIとは何の関係があるのでしょうか?大規模な言語モデル(LLM)に対して多くの興奮があり、コードを自動生成する新しいツールが登場し、そのツールがコードを書くことを約束しています。これにより、ソフトウェア開発の初期コストが削減されるかもしれませんが、これは本当に開発者/組織/チームが望んでいることでしょうか?チーム内の誰も書かなかった、正確に要求されたかどうかわからないコードが増えることのコストはどれくらいですか?それが適切なツールやライブラリによって抽象化された場合、それをメンテナンスするのはどれくらい困難になるのでしょうか?それがいかに高価になるでしょうか?
考慮してください、現時点ではコード生成AIは3GL向けの技術的負債生成装置です。将来的にはより正確になり、既存の抽象化と周囲のエコシステムをより効果的に活用するようになるかもしれませんが、現時点では付加価値を生成していません。Scalaのコードを書く方法はScalaの開発者の数だけあります(3GLでは、多くの「接着剤」やボイラープレートコードが生成されるでしょう。接着剤やボイラープレートコードは使用している抽象化のインターフェースを助けるためのコードであり、別の抽象化や依存関係になるべきものを置き換えることもあります)。
現時点では、既存の5GLを見るか、特にドメイン制約などの4GLでコード生成AIを使用することがより興味深いです。SQLのような言語はコード生成AIに非常に適しています。SQLはSQLです。3GLと比べてSQLコードをメンテナンスする必要はほとんどありません。SQLコードを生成するとき、値は直接ドメインの価値、ビジネスの価値になります。それが最も重要な点です。SQLは3GLと5GLの間のベストな選択肢です。それはまだ3GLのようなプログラミング言語です。5GLでのようにプロブレムや制約ではなく、必要とするものをまだ表現することができます。すべてのデータストアがSQLを取り戻す理由があります。そして、なぜCouchbaseで行っているようにSQLが新しい機能とともにアップデートされ続けるのかも理由があります。
結論
TCOを削減することを考えている場合は、適切な抽象化を選択してください。そして、コードを書くためにコード生成AIを使用してTCOを削減しようとしている場合は、よく考えて4GLで使用することを確認してください。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles