WSO2, Inc.のCTOとして、テクノロジーを人間中心に設計し変革を構築。著者兼基調講演者であり、分散型エージェントシステムを提唱。
現代の企業はツール、プラットフォーム、フレームワークの洪水に溺れている。毎年、新たなレイヤー—新しいクラウドサービス、データスタック、あるいはすべてを単純化すると約束するプラットフォーム—を追加しているにもかかわらず、システム全体はなぜかより管理が難しくなっている。
これらすべてを静かに支えているのは、次のツールではない。それはアブストラクション(抽象化)だ。
アブストラクションは不要な詳細を隠し、本質的な部分だけを露出させることで複雑さを単純化する。それにより、ビジネス、アーキテクチャ、エンジニアリングチーム全体の人々が、実装の詳細に迷うことなく同じことについて話し合うための共有ビルディングブロックを提供する。アブストラクションが弱かったり欠けていたりすると、デリバリーは遅くなり、組織は既存の人材を十分に活用できなくなる。
もちろん、アブストラクションはコードの行に限定されるものではない。例えば、音符はアブストラクションだ。ページ上のいくつかの記号が音の仕組みを隠し、世界中の音楽家が同じ楽器ではなく同じ表記法を共有しているため、同じ曲を演奏することができる。優れたアブストラクションはそのようなものだ:意図的に不完全だが非常に有用。意味を保持するために詳細を取り除く。
コンピュータサイエンスにおけるアブストラクション
コンピュータサイエンスにおけるアブストラクションも同じ考え方に基づいている。以下の技術的進歩を考えてみよう。
抽象データ型
バーバラ・リスコフの抽象データ型に関する研究は、データ構造が何をするかをその実装方法から分離できることを示した。スタックが要素をどのように格納するかは気にしない;プッシュとポップが予測可能に動作することが重要だ。
リレーショナルデータベースとSQL
エドガー・F・コッドのリレーショナルモデルは、データの物理的なレイアウトをテーブルとリレーションに抽象化した。構造化クエリ言語(SQL)は、ディスクからデータを取得する方法を心配することなく、欲しいデータを記述する方法を提供した。
API
アプリケーションプログラミングインターフェース(API)は内部システムを抽象化するために使用される。CreateOrderやCheckInGuestなどのAPIは、多くの内部呼び出しやルールを安定した契約の背後に隠す。
Kubernetes
Kubernetesプラットフォームは個々のマシンを抽象化する。そのため、「このサービスのレプリカを3つ実行する」などの望ましい状態を宣言すると、システムがノード間でのスケジューリングと修復の複雑さを引き受ける。
どの場合も、アブストラクションは重要な境界を作り出す:一方に明確なインターフェース、もう一方に何も壊すことなく独立して進化できる実装の詳細がある。
マインドセットとしてのアブストラクション
アブストラクションは単なる機能ではなく、リーダーやチームが考える方法における基本的な転換だ。
考えてみよう:
第一原理思考
他者の行動をコピーする代わりに、問題を基本に分解する:顧客、価値、制約、不変項。これは問題レベルでのアブストラクションだ。
プロダクトマインドセット
孤立したプロジェクトやチケットではなく、プロダクトや機能—オンボーディング、決済、アイデンティティ—の観点で考える。それぞれがビジネス価値の一部を表す人間が読める抽象化だ。
サイロではなくシステム
組織を孤立した部門ではなく、相互作用するアブストラクション—ドメイン、サービス、チーム—のネットワークとして見る。
アブストラクションのマインドセットを達成するには、この考え方を組織の文化に組み込む必要がある。あらゆるレベルの人々が、共有されたアブストラクションの小さなセット—コアプロダクト、主要なジャーニー、重要な機能—の観点から企業を説明できるべきだ。それらのメンタルモデルが共有されていなければ、下流のすべてが断片化する。
アーキテクチャ:構造とガバナンスにおけるアブストラクション
情報技術アーキテクチャは、アブストラクションが現実になる場所だ。現代の企業は、連合型ガバナンスを持つ分散アーキテクチャへと移行している。ポリシー、標準、可視性を管理するコントロールプレーンは、ランタイム動作を処理するデータまたはトラフィックプレーンとは別に存在する。
この分離自体がアブストラクションだ:一つのレイヤーがどのように動作すべきかを決定し、別のレイヤーが何が起こるかを実行する。うまく行われると、これは3つの特性をもたらす:モジュール性(システムの部分が独立して進化できる)、構成可能性(機能をビルディングブロックのように組み立てられる)、適応性(アーキテクチャが変化に対応できる)。その結果、アーキテクチャはビジネスに抵抗するのではなく、ビジネスとともに進化できる。
アーキテクチャを抽象化する実用的な方法の一つは、セルベースアーキテクチャのようなスタイルを採用することだ—システムをセルに編成し、各セルが明確に定義されたインターフェースを持つエンドツーエンドの動作の一部を所有する。どのようなスタイルを選択するにしても、単なるデプロイメントアーティファクトではなく、意味のある一貫性のあるアブストラクションとしてユニットを作ることが重要だ。
実行:構築と運用におけるアブストラクション
実行は、アブストラクションが現実と出会う場所だ。現代の実行モデルは設計上構成可能であり、外部から内部へと向かう。すべてのイニシアチブにカスタム配線を行うのではなく、柔軟で明確に定義されたビルディングブロックを使用して、機能をプロダクトやサービスに組み立てる。チームは既存のアブストラクションを再結合できるため、ゼロから始めるよりも構築が速く、変更がさらに速くなる。各アブストラクション—プロダクト、セル、プラットフォーム機能—には明確な契約とフォールバックがあるため、より回復力がある。
実行を抽象化するには、モノリスとしてではなく、コミュニティの効果を高めるサポート構造としてのプラットフォームが必要だ。優れたプラットフォームは正しいレベルのアブストラクションを公開するため、プロダクトチームはサポートメカニズムではなく動作に集中できる。
プラットフォーム自体を抽象化するには、最終的にプラットフォームレスになる必要がある:プラットフォームをヒーローとして焦点を当てるのではなく、その上にあるビジネスアブストラクションに焦点を移す。プラットフォームは背景に消え、可視言語は顧客にとって重要なドメイン、ジャーニー、機能になる。
エージェント型の未来におけるアブストラクションの重要性の高まり
企業が人工知能(AI)とエージェント機能を採用するにつれて、アブストラクションはさらに重要になる。AIエージェント—ワークフローを自動化するか、推奨を行うか、サービスをオーケストレーションするかにかかわらず—は明確で信頼性の高いインターフェースを必要とする。どのような機能が存在し、それらを安全に呼び出す方法、そして期待できる保証を知る必要がある。
明確に定義されたツール、ポリシー、ドメインなどのアブストラクションは、エージェントが効果的に理解し推論するために必要なものを提供する。強力なアブストラクションがなければ、AIは既存の混沌を増幅するだけだ。それらがあれば、セキュリティ、コンプライアンス、動作を制御しながら、エージェントにより多くの責任を負わせることができる。
アブストラクション:他に何も重要ではない
ツールは変わり続ける。新しいプラットフォームが登場し、今日のベストプラクティスは時間とともに時代遅れになるだろう。
持続するのは、選択するアブストラクションだ:ビジネスをどのように記述し、境界をどのように描き、機能をどのように公開し、人々とシステムがどのように協力できるようにするか。
マインドセット、アーキテクチャ、実行においてそれらのアブストラクションを正しく設定すれば、一貫性を失うことなく繰り返し近代化することができる。アブストラクションを正しく設定すれば、他に何も重要ではない。



