AI時代の開発スタック
📄 AI時代の開発プロセス考を起点に、📄 AI時代の開発プロセスの枠組みでUPを補助線としながら、AI時代の開発プロセス (Development Process)について考察を進めてきました。
cbd-ai.doxでは、AI時代のCBDを「文芸モデル (Literate Model)+DSL&自動生成+AI」という枠組みの中で再定義しました。
DSLと自動生成に加え、CNCFという実行基盤が組み合わさることで、品質属性 (Quality Attribute)やクラウド対応といった実装上の難所まで構造的に扱える方向性が見えてきました。
本稿では、この流れを統合し、BoKから実行基盤までを貫く「開発スタック」の全体像を整理します。
要素技術を束ねる
これまでの記事では、
という形で個々の要素技術について説明をしてきました。
SimpleModeling (シンプルモデリング)はBoK、文芸モデル、DSL、実行基盤といった層を一つの技術体系として構築したものになります。
この縦方向の連続性が確立されたとき、設計と実装は分断されず、構造が保たれたまま進化可能になります。
そして、この技術体系を束ねる軸となるものがAIです。
AIは各層を横断し、
-
知識を理解し
-
モデル (Model)を整理し
-
構造を展開し
-
実行構成を補助する
ことで、自然言語世界と実装技術世界を接続します。
BoKと文芸モデル
SimpleModelingでは知識開発を軸にその出力としてITシステムが作成されるというアプローチをとっています。
この最上流に位置するのがBoKです。
BoKはSmartDoxによって構築することができます。
ITシステム化可能な構造化・形式化と同時に、概念・関係・制約が文章として記述され、AIが理解可能な形で整理されます。
文芸モデルは、自然言語による知識とITシステム、AIを結びつける要となっています。
DSLと実行基盤(CNCF)
SimpleModelingではCBDをモデリングの軸としており、モデリング要素としてのコンポーネントが実行基盤上でもそのまま動作するという形で連携しています。
また、CNCFは以下の2つの特徴 (Feature)を持ちます。
-
クラウド・ネイティブ・アプリケーション向けの動作基盤
-
品質属性などの関心の分離を行い、ドメイン・モデル (Domain Model)の実現に集中できるコンポーネント開発を実現
これらの特徴はAIに対してもよい影響を持ちます。
AIは文脈が限定され、仕様が明確であるほど高精度の動作が可能になります。
また関心の分離によって品質属性などの複雑なパラメタを取り入れる必要がなく、業務ドメインの仕様理解と実現方式に集中できるのもAIにとって大きな要因です。
各要素技術におけるAIの役割
要素技術を束ねるAIの役割
ここまで見てきたように、AIは各層で個別の役割を持ちます。
しかしAIの役割は、それぞれの層を個別に支援することだけではありません。
AIの重要な役割は、これらの層を横断的に接続することにあります。
この縦方向の連続性を、AIが理解し、維持し、補助します。
つまりAIは、
-
意味の連続性を保ち
-
構造の一貫性を維持し
-
実行との整合性を確認する
縦方向の接続装置です。
自然言語世界と実装技術世界が分断されず、一気通貫で接続される。 AIがこの複雑な接続を担保するための重要な役割を担います。 そして、BoKから実行基盤までを貫く開発スタックが成立します。
参照
サイト内
-
📄 AI時代の開発プロセスの枠組み * * * *
用語集
- UP (Unified Process)
-
UMLを基盤とし、反復型・ユースケース駆動・アーキテクチャ中心のプロセスモデル。Rational Unified Process (RUP) などの派生形を持ち、CBD(コンポーネント指向開発)の実践基盤となる。
- CBD (Component-Based Development)
-
CBD(コンポーネント指向開発)は、ソフトウェアを責務・契約・インターフェースを明確に定義したコンポーネント単位で構築・再利用する開発方式です。 コンポーネントは独立性と交換可能性を備え、システムを疎結合に構成することで保守性と再利用性を高めます。 論理モデルでは機能や契約を定義する抽象構造単位として、物理モデルでは実際の実装・デプロイメント単位として扱われます。
- DSL (Domain Specific Language)
-
DSL(ドメイン固有言語)は、特定の領域(ドメイン)に特化して設計された言語であり、その分野の概念や構造を直接的かつ簡潔に表現することを目的とします。 一般的な汎用プログラミング言語(GPL)に比べ、DSLは特定ドメインの問題解決や自動生成に適した高い抽象度を持ちます。
- Cloud Native Component Framework (CNCF)
-
Cloud Native Component Framework(CNCF)は、クラウド・アプリケーションを構成するコンポーネントを、単一かつ一貫した実行モデルで実行するためのフレームワークです。 Component / Service / Operation という構造を中核とし、command、server(REST / OpenAPI)、client、script といった異なる実行形態から、同一の Operation を再利用できることを特徴とします。 ログ、エラー処理、設定、配備といったクラウド・アプリケーションに必要な品質属性をフレームワーク側に集約することで、コンポーネントはドメイン・ロジックの実装に集中できます。 CNCF は、文芸モデル駆動開発および AI 支援開発を前提に、「何を実行するか」と「どのように呼び出すか」を分離するための実行基盤として設計されています。
- BoK (Body of Knowledge)
-
SimpleModelingでは文脈共有の核となる知識体系をBoK (Body of Knowledge)と呼んでいます。 BoKの構築は、知識の共有、教育、AIによる支援、自動化、意思決定支援を可能にするための基盤です。
- 開発プロセス (Development Process)
-
Undefined
- 文芸モデル (Literate Model)
-
Undefined
- コンポーネント (Component)
-
責務・契約・依存関係を明示的に定義し、再利用可能で交換可能な単位としてカプセル化されたソフトウェア構成要素。論理モデルでは抽象構造単位として、物理モデルでは実装・デプロイメント単位として扱われる。
- 品質属性 (Quality Attribute)
-
Quality Attributeとは、ソフトウェアが機能を実行できることに加えて、どの程度の品質で要求を満たすかを表す特性です。Security、Performance、Availability、Reliability、Resilience、Observability、Maintainabilityなどが含まれます。
- シンプルモデリング (SimpleModeling)
-
SimpleModelingは、KnowledgeからDomain Modelを構成し、CMLで形式化し、CozyとAIによって実行可能ソフトウェアへ実現し、Textus上で動作させる、モデリング中心のソフトウェア開発方法論と技術体系です。
- モデル (Model)
-
Modelとは、対象を特定のPurposeとConcernに基づいて選択し、理解、判断、検証、構築に利用できる形で表した抽象です。対象そのものではなく、目的に必要な要素、関係、意味を保持する表現です。
- Cozy
-
Cozyは、CMLと各種DSLで記述されたModelを解析し、プログラム、設定、文書などの実現成果物へ変換するSimpleModelingのツールチェーンです。
- 操作 (Operation)
-
UMLにおけるOperationは、関連するBehaviorを呼び出すための名前、型、Parameter、Constraintを定めるClassifierのBehavioral Featureです。Operationは呼び出し契約を定め、MethodなどのBehaviorがその実現を担います。
- 状態 (State)
-
UMLにおけるStateは、ある不変条件が成立している状況をモデル化したものです。Objectの現在のStateによって、受け付けられるEventやOperation、成立するConstraint、次に可能なTransitionが変わります。
- 制約 (Constraint)
-
UMLにおけるConstraintは、一つ以上のModel ElementのSemanticsの一部を宣言するため、自然言語または機械可読言語で表した条件または制限です。評価結果はBooleanであり、評価は副作用を持ちません。
- 特徴 (Feature)
-
UMLにおけるFeatureは、ClassifierのInstanceを特徴付ける構造上または振る舞い上の性質です。AttributeなどのStructural Featureと、OperationなどのBehavioral Featureがあります。
- ドメイン・モデル (Domain Model)
-
Undefined
- プラットフォーム (Platform)
-
Platformとは、ソフトウェアを構築、配置、実行、運用するために共通して利用する技術的な基盤とサービスの集合です。
- エラー (error)
-
汎用的な表現として用いられる用語。ソフトウェア工学では多義的に使われ、バグや障害全般を指す。SimpleModeling では広義のラベルとして使用し、個別には Mistake・Defect・Fault・Failure・Deviation に整理する。
- 仕様確認 (verification)
-
Verification(仕様確認)とは、規定された設計仕様や要求仕様に対して、実装が一致しているかを確認する行為である。