kbits

キュビスト・コーディング: ピカソがAPIに出会うとき

原文: From “As-Seen” to Reconstructed Reality
著者: Akihito Koriyama
公開日: 2025年3月31日
アーカイブ日: 2026年1月27日


概要

20世紀初頭のキュビズム革命が、現代のソフトウェアAPI設計に示唆するもの。ピカソとブラックが単一の視点を超えた多面的な表現を追求したように、我々は手続き的な”as-seen”プログラミングを超えて、アフォーダンス中心の設計へと進化する必要がある。

なぜこの記事が重要か

この記事は、芸術史・哲学・認知科学を横断しながら、ソフトウェア設計の根本的な問題に切り込んでいる:

キュビズムの認識革命

キュビズムは単なる絵画技法ではなく、認識論的な挑戦だった。対象を分解し、複数の視点を同時に提示し、再構成することで、単一視点では捉えられない本質に迫る。

ブラックの「ヴァイオリンとロウソク」を見るとき、我々は楽器の外観だけでなく、その内部構造、音色、演奏者の動き、社会的意味までもが「同時に」一枚のキャンバスに表現されているのを見る。

この「分解と再構成」のプロセスこそ、現代のソフトウェア設計に必要な視点だ。

“As-Seen” プログラミングの魅力と限界

従来のAPI設計は「見たまま」を映す:

# 直線的な"as-seen"フロー
def create_order():
    validate(data)
    order_id = save_to_db(data)
    return {"id": order_id, "status": "CREATED"}

def process_payment(order_id, payment_info):
    order = db.find_order(order_id)
    process(order, payment_info)
    return {"status": "SUCCESS"}

この手続き的アプローチは直感的で、すぐに動く。しかし、システムが成長するにつれ、脆弱性、結合度の高さ、進化の困難さが露呈する。

なぜこのアプローチが支配的なのか? それは開発者の手続き的思考と完全に一致し、既存のツールやフレームワークに最適化されているから。さらにConwayの法則により、組織構造がそのままAPI構造に反映される。

キュビスト的代案: アフォーダンス中心設計

ピカソがAPIを設計するなら、固定された手続きとしてのエンドポイントという概念そのものを問い直すだろう。代わりに、オブジェクトの特性が明示的な指示なしに使い方を伝える「アフォーダンス」に注目する。

従来型:

{
  "id": 42,
  "status": "PLACED",
  "total": 67.99
}

アフォーダンス中心:

{
  "id": 42,
  "status": "PLACED",
  "total": 67.99,
  "_links": {
    "self": {"href": "/orders/42"},
    "payment": {"href": "/orders/42/payments"},
    "cancel": {"href": "/orders/42"}
  }
}

第二のアプローチはキュビズムの原則を体現している: 複数の視点(データと可能なアクション)を同時に提示し、注文という概念を現在の状態と可能な状態遷移に分解し、そして最も重要なことに、これらの要素を再構成して、注文が「何であるか」だけでなく「何になりうるか」を伝える。

物理的なオブジェクトが常にアフォーダンスを提示しているように(ドアノブは回転を誘い、ボタンは押すことを求める)、我々のデジタルインターフェースも、データだけでなく「次に何ができるか」を伝えるべきだ。

なぜ疑似RPC(今のところ)が勝ったのか

アフォーダンス中心設計は理論的に優れているが、例外であって規則ではない。ある意味で、”as-seen”プログラミングの勝利は必然だったかもしれない。

URLを組み立ててリクエストを送るという行為自体が、「見たまま」の体現だ。HTTPクライアントは結局それしかできないという根本的な制約がある。

しかし、キュビズムの視点から見れば、本当の違いはその前段階にある。従来のAPIが「見たまま」の操作を直接エンドポイントにマッピングするのに対し、アフォーダンス中心設計はまず問題領域を要素に分解し、新しい方法で再構成する。

開発速度バイアス、ビジネスメトリクス、ツールエコシステムの未成熟さ、心理的障壁――これらすべてが短期的な”as-seen”アプローチを有利にする。しかし、最終的にHTTPリクエストの形に到達するとしても、そこに至るまでの問題の分解と再構成のプロセスが、本質的な違いを生む。

認知革命のパターン: “As-Seen”から再構成へ

“As-seen”プログラミングは単なる技術的偶然ではなく、人間認知の自然な現れだ。我々は常に「見たまま」から始める――それが認知の初期段階として自然だからだ。

天文学の発展を考えてみよう。古代の天文学者は、太陽・月・星が地球の周りを回るという「見たまま」の観測から始めた――天動説(プトレマイオス体系)。しかし、コペルニクスとガリレオは、同じ観測データを根本的に異なる方法で分解・再構成した。彼らは「見たまま」の現象を、地球が太陽の周りを回るという革命的な視点から再解釈した。これは「天文学のキュビズム」の典型例だ。

もしアフォーダンス中心設計がそれほど強力なら、なぜそこから始めないのか? 答えは人間の認知と学習の自然な進化にある。Piagetの発達心理学研究が示唆するように、我々は自然に具体的な手続きから抽象的なモデルへと進化する――その逆ではない。

このAPI設計の進化は:

  1. まず、RPCスタイルのAPIで直接観察される現実を鏡のように反映――”as-seen”段階
  2. 次に、分散システムの制約を発見し、問題領域をより基本的な要素に分解する必要性を認識
  3. 最後に、リソース指向とハイパーメディアを通じて要素を再構成し、より適応可能で進化可能なシステムを構築――「キュビスト」段階

この進行は失敗ではなく、必要な認知発展の旅だ。課題は段階をスキップすることではなく、次の段階に進む準備ができたときを認識することだ。キュビズムの先駆者たちも、それを破壊する前に、伝統的な遠近法を完全に理解していた。

なぜ今アフォーダンスが重要なのか

我々は技術的な変曲点に立っている。アフォーダンス中心設計が理論的に優れているだけでなく、実践的に不可欠になりつつある。三つの収束するトレンドがこのアプローチの価値を高めている:

第一に、AI駆動インターフェースが我々のシステムとの対話方法を変革している。大規模言語モデルは自然にハイパーメディアをナビゲートし、リンクを辿り、人間が書いた脆弱なクライアントサイドロジックなしに可能なアクションを理解する。

第二に、イベントリッチなエコシステム(KafkaやKinesisなど)が現代アーキテクチャのバックボーンインフラになった。これらのシステムはアフォーダンス中心設計を支える状態遷移モデルを自然にサポートし、実装をこれまで以上に実現可能にしている。

第三に、分散チームが並行開発する現実が、疎結合な進化を要求している。タイムゾーンと大陸を越えたチームが、絶え間ない同期なしに一貫したシステムを構築する必要があるとき、アフォーダンスに富んだインターフェースは必要な柔軟性を提供する。

これらのシステムの特性――発見可能な機能を通じた自己文書化、コンポーネントが非同期に進化する際の優雅な劣化、組み合わせによる創発的振る舞い――は、現代ソフトウェア開発のニーズと完璧に一致している。

キャンバスからコードへ

キュビズムが芸術家を単一視点の制約から解放したように、アフォーダンス中心設計は開発者を手続き指向思考の限界から解放する。それは我々に、システムを単なるエンドポイントの集まりとしてではなく、可能性の風景として見ることを促す。

ピカソはかつて言った:「私は物を見たままには描かない。考えたままに描くのだ。」

おそらく我々も、システムを単に使うようにではなく、理解するように構築するときが来ている――時間とともに進化し変容する能力を持つ、動的で多面的な実体として。

APIを構築するだけではなく、可能性の風景を創造しよう。


訳者コメント

この記事を書いたのは私自身だが、KBitsの文脈で改めて読み返すと、認知発展のパターンとしての視点が興味深い。「最初から正しい設計をすべき」という理想論ではなく、「具体から抽象へ」という自然な学習プロセスを肯定している点が重要だ。

AI時代において、このアフォーダンス中心設計がLLMエージェントと相性が良いという指摘は、今後さらに重要性を増すだろう。人間のクライアント開発者だけでなく、AIエージェントにとっても「次に何ができるか」を自己記述するAPIは、より効果的なインタラクションを可能にする。

これは単なる技術的パターンの話ではなく、認識と設計の哲学的な転換を促す試みだ。


タグ: #API設計 #キュビズム #認知科学 #アフォーダンス #HATEOAS #REST

関連トピック: #ソフトウェア哲学 #ユーザー体験 #設計思想 #表現主義