00:00:05 サプライチェーンソフトウェアの保守性のトピックの紹介。
00:01:22 マイクロソフトを例に挙げ、ソフトウェアが時間とともに劣化する仕組みの説明。
00:03:01 マイクロソフト製品と他のソフトウェアの保守性の違いについての議論。
00:04:16 コンピューティングハードウェアの変化やセキュリティ上の懸念により、ソフトウェアが時間とともに変化する理由の説明。
00:07:50 ベンダーの生存を基準とする視点で保守性を考えることの問題点についての議論。
00:09:08 ミリオン台以上のプリンターとの互換性を持つマイクロソフトの例を挙げ、その課題の大きさを説明。
00:10:07 ソフトウェアの設計が保守性に与える影響と、エンジニアリングソフトウェアが高い保守性を持つ必要性について。
00:11:07 ベンダーのインセンティブを分析することがソフトウェアの保守性を確保する上で重要であること。
00:13:03 保守性は設計の問題であり、技術的な質量の保存が保守性のある製品を持つための鍵であること。
00:16:00 ソフトウェアの保守性の重要性についての議論。
00:17:00 ベンダーがソフトウェアの保守性を確保するためのインセンティブ。
00:19:00 保守性のあるソフトウェアの特定方法。
00:21:02 保守性のないソフトウェアの症状。
00:23:13 ソフトウェアの保守性の重要性に関する最終的な考え。

概要

キーラン・チャンドラとジョアネス・ヴェルモレルは、サプライチェーンソフトウェアの保守性の重要性についてのインタビューで、特にサプライチェーンソフトウェアにおいて保守性がどれほど重要かについて議論しています。ヴェルモレルは、保守性は主に設計の問題であり、ベンダーの生存にだけ焦点を当てる企業によってしばしば見落とされると指摘しています。彼は、ソフトウェアは時間とともに劣化するわけではないが、エントロピーとテクノロジーランドスケープの変化により、保守性が低下すると述べ、互換性、セキュリティ、シンプリシティがソフトウェア設計において重要であると強調しています。ヴェルモレルはまた、派手なユーザーインターフェースに惑わされることなく、開発者の保守性に対する計画を徹底的に問い詰めることを提案し、長期的な持続性を確保するための手段としています。

詳細な概要

このインタビューでは、キーラン・チャンドラとジョアネス・ヴェルモレルがサプライチェーンソフトウェアの保守に関する課題と、良い設計がその寿命に与える影響について議論しています。ヴェルモレルは、ソフトウェアは物理的なオブジェクトのように劣化するわけではないが、エントロピーと技術的な環境の変化により、時間とともに崩壊すると説明しています。マイクロソフトのような企業は、製品の長期的な生存に強いコミットメントを示しており、古いドキュメントを今日でも開いて使用することが可能になっています。

ヴェルモレルは、マイクロソフトがソフトウェアの長寿命を維持する能力は、保守に対する莫大な投資と互換性への注力によるものだと指摘しています。これに対して、よりスリムで合理的な組織のLinuxは同じレベルの後方互換性を提供していないと対比しています。ヴェルモレルは、サプライチェーンソフトウェアは分散型であり、多くの要素が関与しているため、さらに複雑であると認識しています。

コンピューティングハードウェアの進化により、サプライチェーンソフトウェアの保守はより困難になっています。仮想化は一部の問題を緩和することができますが、完璧な解決策ではありません。さらに、ユーザーがソフトウェアとのやり取りをする方法は常に変化しており、タッチスクリーンや高解像度ディスプレイの普及などが増えています。古いソフトウェアはこれらの現代のシステムに対応していない場合があり、直感的でなく、潜在的に安全ではありません。

ヴェルモレルは、ソフトウェアの保守性はしばしば見落とされ、誤解されていると主張しています。典型的な懸念は、ベンダーが将来も存在するかどうかですが、彼はこれが問題に取り組むための弱い視点だと考えています。生き残るベンダーを持つことはボーナスですが、保守性の保証ではありません。実際、一部のベンダーは新しいバージョンを販売するために保守性のない製品を作成するという逆説的なインセンティブを持っています。

インタビュー対象者は、保守性の問題は異なる視点から見るべきだと強調しています。彼は、エンタープライズサプライチェーンシステムのような複雑なソフトウェアは、何百万もの動く部品と同時に取り組んでいる多くの企業が関与していると説明しています。これらのシステムは、さまざまなハードウェアやオペレーティングシステムとの互換性を保つために常にアップグレードや変更が必要です。互換性を確保することは、ヴェルモレルがマイクロソフトの100万台以上のプリンターとの互換性で示しているように、非常に大きな作業です。

彼は、ソフトウェアは特に保守可能に設計されていない限り、デフォルトでは保守不能であると主張しています。また、サプライチェーンに関与する企業のエコシステム全体に焦点を当てるべきであり、単一のベンダーの生存だけに焦点を当てるべきではないとも強調しています。ヴェルモレルは、保守性は主に技術的な質量の保存に関わる設計の問題であると考えています。

企業はデモを通じてクライアントを獲得するために、データの可視化、ユーザーエクスペリエンス、リアルタイム分析など、最新かつ最先端の技術を使用することがよくあります。これにより「ワウ効果」が生まれ、セールスポイントになることがあります。しかし、ヴェルモレルはこのアプローチに疑問を呈し、80年代初頭のテキスト端末に似た見た目の古めかしいERP画面の例を引用しています。これらの画面は見た目に反して非常に高速で応答性があり、依存関係が最小限であり、保守性と効率性が高いです。

ヴェルモレルは、すべてのソフトウェアのレイヤーが革新を必要とするわけではなく、カレンダー管理やパスワード保存などの特定の領域での安定性が重要であると強調しています。また、ソフトウェアエンジニアリングには豊かな歴史があり、保守性が優先されるべきだと述べています。しかし、クライアントや見込み客はしばしばこの側面を見落とし、ソフトウェアの保守性よりも将来の会社の存在に重点を置いています。

ヴェルモレルは、ソフトウェアが保守可能かどうかを判断するために、ベンダーが提供するインセンティブを見ることを提案しています。たとえば、プロジェクトの開始時に高額な実装料金を請求し、収益を集中させるベンダーは、その料金をできるだけ頻繁に繰り返すインセンティブを持つかもしれません。一方、Lokadは月額料金を請求し、コンパニオンの関与を確保することで、保守性を優先しています。

ヴェルモレルは、ソフトウェアをサービスとして提供することの重要性も強調しており、ベンダーが自身のソフトウェアの保守を責任を持つことを保証しています。彼は、企業が数多くの最先端のコンポーネントを誇示することで技術的な複雑さに陥ることを警告しており、それぞれのライフサイクルによって保守が困難になる可能性があります。代わりに、サプライチェーンの実践者にとっては、シンプルで保守性の高い解決策が優先されるべきだと提案しています。

ヴェルモレルは、企業がサプライチェーンシステムに投資しても、さまざまな不具合や問題が発生するために時間の経過とともに使用できなくなることがよくあると説明しています。不具合の数が増えるにつれて、ソフトウェアの保守と操作が困難になります。その結果、ユーザーはシステムの機能を放棄し、Microsoft Excel スプレッドシートを回避策として使用するようになります。

彼は、このような状況は業界でよく起こることであり、完全に保守不能になった解決策の症状を反映していると述べています。ヴェルモレルは、派手なユーザーインターフェースが必ずしも正常に機能する製品を保証するわけではなく、保守性の問題を隠す可能性さえあると警告しています。一方、時代遅れのユーザーインターフェースも注意が必要であり、ベンダーからの保守と更新の欠如を示している可能性があります。

保守不能なソフトウェアの罠に陥ることを避けるために、ヴェルモレルは企業に対して、保守性に関する開発者の計画を徹底的に問い詰め、ソフトウェアの長期的な持続性に貢献する主要な設計上の決定を理解するよう助言しています。彼は、保守性を慎重に考慮しない限り、業界のソフトウェアはデフォルトで保守不能になる傾向があると強調しています。

ヴェルモレルは、サプライチェーンソフトウェアと金融の高頻度取引システムの類似点を強調し、両者がしばしばテキストベースのユーザーインターフェースを利用していると指摘しています。これらのインターフェースは時代遅れに見えるかもしれませんが、最小限の依存関係と効率的な設計により、保守性が高くなっています。

フルトランスクリプト

キーラン・チャンドラー: こんにちは、サプライチェーンソフトウェアへの投資では、その会社が数十年ではなく数年間続くことが期待されています。しかし、ベンダーの視点からは、急速に変化するテクノロジーランドスケープの中で、これを維持すること自体が容易なことではありません。そのため、今日は保守性となぜそれが課題となるのか、また良い設計がどのように影響を与えるかについて話し合います。興味深いトピックですし、通常ソフトウェアに関連付けられないと思われる保守性です。ソフトウェアは実際には劣化しません。では、アイデアは何でしょうか?

ジョアネス・ヴェルモレル: 実際には、ソフトウェアは劣化します。はい、それは使用後に機械的な劣化のようなものではなく、物理的に壊れるほど物事が脆弱になるわけではありません。ソフトウェアは同じものではありませんが、時間の経過とともに崩壊していきます。これは非常に驚くべきことかもしれません。なぜなら、最も大きく成功したソフトウェア企業のいくつか、たとえばマイクロソフトは、製品の長期的な生存に対する狂気じみたコミットメントを持っていたために非常に成功してきたからです。現在でも、1995年に編集されたマイクロソフトのWord文書を開いて印刷することができます。それは信じられないことですが、多くの人が気づかないことでもあります。マイクロソフトはこの点で非常にユニークであり、彼らの競合他社を試してみると、現在ではマイクロソフトのWordやExcelには多くの競合他社が存在していないことさえあります。

では、ソフトウェアが劣化するという道を進んでみましょう。それは主にエントロピー、つまり永遠に変化し続ける環境のために劣化します。ハードウェアは変化しており、ソフトウェアは非常に複合的な製品です。基本的には、何かを実行するためには、通常、数十の部品が数十の企業から提供されており、これらの部品は時間の経過とともに自然に非常によくメンテナンスされているわけではありません。何かが変わると、他のすべての部品が完全に互換性があり、正しく統合されたままである理由は明確ではありません。

キーラン・チャンドラー: そうですね、テクノロジーランドスケープは非常に変化し、非常に急速に変化しています。では、マイクロソフトは何をうまくやったのでしょうか?なぜ彼らはソフトウェアの寿命に影響を与えることができたのでしょうか?

ジョアネス・ヴェルモレル: 本質的には、彼らは本当に気にかけ、狂気じみた投資を行いました。多くの人々は、マイクロソフトのWindowsが非常に膨大であり、多くのものがあるため、Linuxオペレーティングシステムに移行すると、はるかにスリムでより良く組織化され、全体的により理にかなっていると不満を言っています。それは真実であり、完全に正しいです。しかし、25年前にLinux向けに書かれたプログラムを実行しようとしてみてください。実行されません。私が10代の頃にWindows 95用に購入したゲームは今でも動作します。だから、これが示していると思います。

キーラン・チャンドラー: 狂気じみたレベルのコミットメントで正しいことができます。そして、マイクロソフトが保守性を確保するために行っていることを読むと、文字通り狂気じみた長さに行っていると言えます。さて、サプライチェーンソフトウェアについては、同じ程度のコミットメントを期待することはできません。市場が大きくないため、それほど広範な長さで取り組んでいる企業は存在しないからです。さらに、サプライチェーンソフトウェアは非常に複雑であり、通常、分散されており、多くの動く部分があります。そのため、保守性はますます複雑になります。そして、今度は、なぜ変更が必要なのか、なぜソフトウェアの一部を凍結して永遠に使用しないのかという問題が生じます。

ジョアネス・ヴェルモレル: 答えは、まず、コンピューティングハードウェア自体が変化しているため、このものは永遠に実行されるとは言えません。つまり、はい、仮想化を使用してこれらの問題のほとんどを緩和することができますが、仮想化は以前のハードウェアの完全なエミュレーションではないことがよくありますので、それは助けになります。しかし、計算を行うためのハードウェアだけでなく、例えば、画面の消費方法も変わっています。画面は今でははるかに多くのピクセルを持ち、タッチスクリーンを持つことができ、古いシステムとは異なる動作をするものがたくさんあります。時には、キーボードのキーがなくなっているような奇妙なシステムさえあります。したがって、ソフトウェアが特定のキーに設計されていた場合、当時は明らかであったかもしれませんが、今ではそのキーがなくなったり、キーボードの設定が異なるため、はるかに直感的ではなくなります。

そして、それは比較的ゆっくりと進化している問題の一部にすぎませんが、セキュリティの問題もあります。これまでに作成されたほとんどのソフトウェアは、現代の脅威に対応するために設計されていませんでした。そのため、多くのソフトウェアコンポーネントを変更する必要があります。

キーラン・チャンドラー: 人々は常に職場で最新のテクノロジーを使用したいと思っています。それは主要な問題ですか、それともセキュリティの問題で、これらの人々を使用することは安全ではないという事実ですか?

ジョアネス・ヴェルモレル: まず、保守性は、サプライチェーンマネージャーがほとんど気づいていない問題です。そして、気づいたとしても、私は非常に弱い視点から問題を見ていると考えています。それはベンダーがまだ存在しているかどうかです。そして、私の提案は、保守性はベンダーの生存とは何の関係もありません。はい、まだ生きているベンダーを持つことは一種のプラスですが、それほど大きなプラスではありません。なぜなら、正直に言って、多くのベンダーは保守性が全くないものを持つことに対して巨大な逆誘因を持っているからです。さもなければ、次のバージョンをどのように販売するのでしょうか?この問題が通常存在しないと言う理由に戻ると、問題を正しい方法で見ていないからです。

キーラン・チャンドラー: 企業のサプライチェーンシステムのような複雑なソフトウェアを想像してみてください。数百万もの動く部品があるシステムを想像してください。そして、何十もの企業が、さまざまな理由でその部品のいくつかをいつでも微調整しているとします。新しいハードウェアと互換性を持たせたい場合もありますので、それを行うと、古いハードウェアとの互換性のないものを作る可能性があります。新しいオペレーティングシステムと互換性を持たせたい場合もあります。たとえば、Linuxは変わり続けており、Windowsも変わり続けているため、最新のものと互換性を持たせたいと思うでしょう。しかし、最新のシステムとの互換性を導入することで、古いシステムとの非互換性を誤って導入する可能性があります。

キーラン・チャンドラー: そして、このタスクの規模をご理解いただくために、マイクロソフトの出版物で読んだことがありますが、ある時点で、マイクロソフトは100万以上のプリンタとの互換性を確保していました。考えてみてください、異なるドライバ、命令セット、異なるハードウェアなどを持つ100万のプリンタとの互換性を確保するためには、どれだけのエンジニアリングの努力が必要でしょうか。これはほとんど狂気です。そして、いつも人々は言います。「ああ、Windowsは最悪だ。私は17年前のEpson 7.1.6ポイントB、スロバキア版のプリンタを接続したのですが、Microsoftはこのデバイスと100%互換性がないのです。これは明らかにフラッグシップの参照です。」

ジョアネス・ヴェルモレル: しかし、冗談はさておき、供給チェーンには多くの動く部分があります。依存しているデータベースは常にアップグレードされ、使用しているネットワークレイヤーも常にアップグレードされています。使用しているWebサーバーも常にアップグレードされています。動く部分がたくさんあります。そして、デフォルトでは、ソフトウェアを保守しやすくするために特にエンジニアリングを行わない限り、保守しやすくなりません。供給チェーンについて考えるべきは、ベンダーだけではありません。ベンダーが将来どのようにして存続するかだけではありません。ベンダーが関わる他の企業についても考えるべきです。したがって、これらの他の企業が将来も存在し続けることにどれだけの自信が持てるでしょうか?ですから、企業が存続するかどうかは、私にとってはほとんど関係ありません。これは正しい考え方ではありません。まだ存在しているベンダーでも、売り上げを増やすために保守性を損なう強いインセンティブを持っている場合、保守性に向けて逆方向に進んでいるのではないでしょうか?人々が持つインセンティブを分析する必要があります。もう一つのことは、保守性はほとんどデザインの問題だと私は考えています。しかし、具体的にどのようなデザインを話しているのでしょうか?ここで、私は技術的な質量の保存について話していると思います。

キーラン・チャンドラー: ですから、非常にクールなデモを行う製品を持ちたい場合、何が必要ですか?最新かつ最もクールなデータ可視化ライブラリ、最新かつ最もクールなUXライブラリが必要です。ファンシーなリアルタイム分析を行いたい場合、最新かつ最もクールなサブシステムが必要です。あなたがクライアントをデモで魅了するためのインセンティブは、ワウ効果を持つことです。例えば、私の多くのクライアントは、彼らのERP画面がテキスト端末のように見えると言っていました。ただの白黒の純粋なテキストです。彼らは「何かしなければならない」と言っていました。

ジョアネス・ヴェルモレル: 私はそれに異議を唱えます。80年代初頭か80年代後半に戻ったような端末を見ると、それを使用している人々がいて、彼らは超高速で、信じられないほど反応が速いです。画面は超ミニマリストで、覚えておかなければならないわずかなコマンドだけです。何の邪魔もありません。純粋に実用的です。人々はそれを使って非常に生産性が高いです。はい、それは最悪に見えますが、保守性が非常に高いです。なぜなら、文字通り何の依存関係もなく、常に変わるWebブラウザとの依存関係もありませんから。

ですから、供給チェーンの最も古い部分と金融の高頻度取引の最も先進的な部分を見ると、ユーザーインターフェースは似ています。超高度なシステムを使用している量的トレーダーを見ると、彼らのUIは再びテキスト端末のように見えます。これは少し奇妙です。これらの人々はまさに最先端であり、彼らのUIは完全に時代遅れです。それはハリウッド映画のユーザーインターフェースの逆です。

キーラン・チャンドラー: それは少しもどかしいようです。なぜなら、みんな最新の技術を使いたがるからです。ですから、非常に保守性の高い製品を持つことは、結局、最先端にはなれないと言っているのですか?

ジョアネス・ヴェルモレル: 保守性の観点で最先端であるなら、なぜダメなのでしょうか?私は、この分野でも進歩を遂げたことを否定しているわけではありません。ただし、それには何のワウ効果もありません。非常にクリーンなバージョン管理戦略があり、選んだコンポーネントには柔軟性があるか、保守性に関する非常に興味深い哲学がある場合、それは素晴らしいことです。

私たちが使用するいくつかのコンポーネントは、まさにこの哲学を持つオープンソースのコンポーネントです。彼らはマニフェストがあると言います。この問題は過去20年間研究され、設計の観点で最良のトレードオフに収束したと考えています。今後、このコンポーネントで行うことは、セキュリティの観点で重大な問題がないことを確認するための適切なメンテナンスだけです。

キーラン・チャンドラー: 互換性の観点では、偶発的な問題はありませんし、自分自身を再発明する必要もありません。ですから、それは失望ですし、イノベーションの反対です。ただし、ソフトウェアのすべてのレイヤーでイノベーションが必要なのでしょうか?カレンダーの取り扱い方法やパスワードの保存方法を再発明する必要があるでしょうか?たとえば、アップグレードが必要な暗号攻撃がない限り。したがって、既に安定性があるものを選ぶ必要があります。

ジョアネス・ヴェルモレル: ソフトウェアエンジニアリングは新しい学問ではありません。私たちは50年以上の歴史を持っています。ただし、問題は、クライアントや見込み客がそれに注意を払わないため、彼らが「まだ存在しているのか?」というような素朴な質問をすることです。「あなたのソフトウェアが保守可能であることを確実にするためのインセンティブは何ですか?次のライセンスを購入するために逆のことをするインセンティブは何ですか?」という質問ではありません。

キーラン・チャンドラー: では、サプライチェーンの実践者は何に注意を払うべきでしょうか?非常に保守性の高いソフトウェアと、少し古風で怠惰なソフトウェアの違いを示す手がかりは何ですか?

ジョアネス・ヴェルモレル: まず、技術的なことではないので、インセンティブを見てみましょう。たとえば、ベンダーが実装料金を高額に請求しているライセンスなどを購入する場合、それは彼らの収益がプロジェクトの初めに集中していることを意味します。その後は同じことの繰り返しであり、文字通り下降傾向です。ベンダーは、高額な実装料金をできるだけ頻繁に繰り返すことに構造的なインセンティブを持っています。

では、Lokadを見てみましょう。私たちは月額料金を請求し、通常は2年後に収支が合うようになります。保守性は基本的に一定の料金ですので、保守性のコストはLokadの利益に影響を与えます。私はLokadを位置付ける際に、私たちはソフトウェアの保守性の価格を支払っていると決めました。それが私たちに保守性の高いものを作るための大きなインセンティブを与えています。それが保守性がない場合、私たちベンダーにとって利益を得ることはできず、逆に損失を被ることになります。

ですから、ベンダーが最初にお金を失うようにする月額サブスクリプションは、非常に良い、健全なスタートです。そして、ベンダーが自分自身のソフトウェアのメンテナンスに取り組んでいることを確認する必要があります。それが、Software as a Service(SaaS)の本質です。それが保守性がない場合、それはまずベンダーの問題であり、運営する企業としてはあなたの問題ではありません。

キーラン・チャンドラー: では、サプライチェーンソフトウェアについて話しましょう。私は競合他社のスライドやパワーポイントで、彼らのソリューションのすべての部分を示すのをよく見ます。TensorFlow、Apache Spark、Kafka、MongoDB、React、Reduxなど、20個の超高度で複雑なサブコンポーネントがあるように見えます。彼らは最先端であると主張していますが、私がこれを見ると、保守性が悪いと思います。各コンポーネントには独自のライフサイクルがあり、長期的にうまく動作する保証はありません。保守性のないソフトウェアに出くわした例や、それにつながる問題を共有できますか?

ジョアネス・ヴェルモレル: 症状のレベルでは、人々がソフトウェアを諦めてMicrosoft Excelとスプレッドシートを使用し始めることがわかります。大企業がサプライチェーンシステムを購入していないわけではありません。数十年にわたって3つのシステムを購入したかもしれません。これらのシステムには、複雑な予測、補充、アソート最適化、プロモーション管理モジュールがあります。しかし、最初の実装後、ベンダーのサポートを受けた実装後、人々は問題に遭遇し始めます。時間の経過とともに、これらの問題が積み重なり、システムの保守が困難になります。

キーラン・チャンドラー: では、ソフトウェアを諦めた場合はどうなりますか?

ジョアネス・ヴェルモレル: ソフトウェアを諦めると、機能を完全に放棄し、Excelスプレッドシートを使用することになります。彼らは戦いを選び、データをExcelスプレッドシートにエクスポートすることに焦点を当てることにします。彼らは、Excelへのエクスポート機能以外は機能させることを諦めます。

キーラン・チャンドラー: スプレッドシート、それは私が数十の企業で見たストーリーです。それは完全に保守不能になったソリューションの症状そのものです。

ジョアネス・ヴェルモレル: では、今日の結論を出すと、輝いて見えるものが本当に金であるわけではないということです。将来の保守性に問題があるかもしれない、派手なUIインターフェースを持つ企業には少し警戒心を持つべきかもしれません。つまり、ゴミのようなユーザーインターフェースを持つベンダーと取引している場合、既に保守不能な状態である可能性が高いです。つまり、厳密なルールはありませんが、私のアドバイスは、社内開発、社内ソフトウェアにさえ疑問を投げかける必要があるということです。保守性のためのあなたの計画は何ですか?ソフトウェアの将来の保守性を形作るために今行っている主要な設計上の決定は何ですか?そして、もし人々が自分たちが行っている設計上の決定がソフトウェアの将来の保守性をどのように形作っているのか非常に具体的なビジョンを持っていない場合、規則として、ソフトウェアは保守不能であると評価できます。なぜなら、この業界で慎重に保守性に注意を払って設計された製品のデフォルトの状態が保守不能だからです。

キーラン・チャンドラー: では、ここまでにします。今週は以上です。ご視聴いただきありがとうございました。次のエピソードでお会いしましょう。ご視聴ありがとうございました。