AUTOSARは、Classic Platformは、EnterPriseArchitect(ソフト名)のファイルを配付している。
なぜか、より公開側に振ったはずのAdaptive Platrformでは、UML図を配布していない。
AUTOSAR APの図をChatGPTにPlantUMLで書いてもらう企画を考案。
今回は第4回目。
Explanation of ara::com API AUTOSAR 846, R23-11, AP
https://qiita.com/kaizen_nagoya/items/5c2bbd029f8d9bed641b
で参照している
Explanation of ara::com API
https://www.autosar.org/fileadmin/standards/R23-11/AP/AUTOSAR_AP_EXP_ARAComAPI.pdf
Figure 6.3: Service Instance ToMachineMapping
AUTOSAR Adaptive Platfrom PlantUML with ChatGPT
https://qiita.com/kaizen_nagoya/items/4fef7700b57419ddf2c2
Si desea leer el código fuente de PlantUML, puede hacerlo seleccionando la solicitud de edición.
If you would like to read the source code of PlantUML, you can do by selecting the edit request.
PlantUMLのソースコードを読みたい方は、編集リクエストを選択するとソースコードが読めます。
ChatGPT
https://www.autosar.org/fileadmin/standards/R23-11/AP/AUTOSAR_AP_EXP_ARAComAPI.pdf のFigure 6.3: Service InstanceToMachineMapping をPlantUMLで書き直そうと思います。どう書くといいでしょうか。
ChatGPT:
AUTOSAR ARAComAPI 仕様書の Figure 6.3「Service Instance to Machine Mapping」 は、
サービスインスタンスがどの ECU(またはマシン)上に配置されるかを示す 配置図(Deployment Diagram / Component Diagram) です。
PlantUML では「ノード(node)」や「コンポーネント(component)」を使って表現すると読みやすくなります。
書き方のポイント
マシン(ECU)を node で表現
node ECU1 { … }
node ECU2 { … }
など。
Service Instance を component で表現
component "ServiceInstanceA"
マシンとインスタンスの対応
それぞれの node 内に component をネストするか
node と component を <> の矢印で結ぶ
サンプル PlantUML
以下は典型的な構成例(図面内容は公開資料からの推定サンプル)です。
実際のサービス名・マシン名はご自身のシステムに合わせて置き換えてください。
実装ヒント
図に 通信プロトコル(SOME/IPなど)が明記されていれば、矢印ラベルに「SOME/IP」などを付けると分かりやすいです。
Machine(ECU)名や ServiceInstance 名を、仕様書の実名に差し替えてください。
1つの Machine に複数の ServiceInstance をまとめて配置する場合は、最初の例のように node { component … } とネストする方が視覚的に整理しやすいです。
これらのスタイルをベースに、Figure 6.3 の実際のラベルや接続関係を読み取りながら書き換えると、オリジナル図の PlantUML 化がスムーズにできます。
この図からC++とRustのコードを生成してください。
ChatGPT:
Figure 6.3 Service Instance to Machine Mapping は「どの ECU(マシン)にどのサービスインスタンスを配置するか」を示す配置図なので、
コード化する場合は「デプロイ構成をデータで表現する」形になります。
ここでは先ほどの PlantUML 例をもとに、同等の情報を C++ と Rust で表現するサンプルを示します。
実際のサービス名や ECU 名は、AUTOSAR の設計に合わせて置き換えてください。
1️⃣ C++ 例
#include <iostream>
#include <string>
#include <vector>
struct ServiceInstance {
std::string name;
};
struct Machine {
std::string name;
std::vector<ServiceInstance> services;
};
int main() {
// 構成定義
Machine ecu1{"Machine1 (ECU1)", {
{"ServiceInstanceA"},
{"ServiceInstanceB"}
}};
Machine ecu2{"Machine2 (ECU2)", {
{"ServiceInstanceC"}
}};
// 出力
std::vector<Machine> machines{ecu1, ecu2};
for (const auto& m : machines) {
std::cout << m.name << " hosts:\n";
for (const auto& s : m.services) {
std::cout << " - " << s.name << "\n";
}
}
return 0;
}
実行結果例
Machine1 (ECU1) hosts:
- ServiceInstanceA
- ServiceInstanceB
Machine2 (ECU2) hosts:- ServiceInstanceC
2️⃣ Rust 例
#[derive(Debug)]
struct ServiceInstance {
name: &'static str,
}
#[derive(Debug)]
struct Machine {
name: &'static str,
services: Vec<ServiceInstance>,
}
fn main() {
let ecu1 = Machine {
name: "Machine1 (ECU1)",
services: vec![
ServiceInstance { name: "ServiceInstanceA" },
ServiceInstance { name: "ServiceInstanceB" },
],
};
let ecu2 = Machine {
name: "Machine2 (ECU2)",
services: vec![
ServiceInstance { name: "ServiceInstanceC" },
],
};
let machines = vec![ecu1, ecu2];
for m in &machines {
println!("{} hosts:", m.name);
for s in &m.services {
println!(" - {}", s.name);
}
}
}
💡 応用
このデータ構造に対して 検索関数 を作れば
「ServiceInstanceA がどの ECU にあるか」などを簡単に問い合わせできます。
AUTOSAR Adaptive Platform で実運用する場合は、
JSON/YAML で同じ構成を外部ファイル化 → 解析して配置管理することも可能です。
このように PlantUML の配置図は「ECU(マシン)とサービスインスタンスのマッピング情報」として
シンプルなデータ構造に落とし込み、C++/Rust で管理できます。
ChatGPT の回答は必ずしも正しいとは限りません。重要な情報は確認するようにしてください。
参照
ChatGPT利用の技4つ with ChatGPT
https://qiita.com/kaizen_nagoya/items/4a178bd6a09a4a471a7f
ChatGPTによるQiita記事の改良と補足
https://qiita.com/kaizen_nagoya/items/20604d6dd0702ab95c2f
ChatGPTによるQiita記事の改良と補足(2)
https://qiita.com/kaizen_nagoya/items/996275307ffc8c1243f8
本から始める 面倒なことはChatGPTにやらせよう by からあげ
https://qiita.com/kaizen_nagoya/items/f5ce2a18db54b5610e4b
MCP入門 〜面倒なことはAIエージェントにやらせよう〜 by からあげ を聞きながら
https://qiita.com/kaizen_nagoya/items/54b648c838fae8d57e38
【松尾研LLMコミュニティ】面倒なことはLLMにやらせよう "Beginning LLM"2024年10月17日 AI(9)
https://qiita.com/kaizen_nagoya/items/efdc23fbe67cdae2126e
設計:ChatGPTで特異解か一般解を求める AI(1)
https://qiita.com/kaizen_nagoya/items/4dec580e16a7c84b0ec4
みんなの使い方から学ぶ
https://qiita.com/kaizen_nagoya/items/8e7de492d896df94a36e
AI・機械学習 昨日、今日、明日
https://qiita.com/kaizen_nagoya/items/adb184c8fc7a65ac9756
DNA LLM and genome for survey 2200 papers by name.
https://qiita.com/kaizen_nagoya/items/ce8a28d6072f340a9d59
ChatGPTから学ぶ 3倍褒めて3分の1貶す
https://qiita.com/kaizen_nagoya/items/91e70fd8caa25076718b
AI時代の相棒は、キミに決めた! 推しのAIエージェントをシェアしよう!企画参加まとめへの序章
https://qiita.com/kaizen_nagoya/items/e3fd7557bac97d1b88f2
記事投稿数、いいね数の目標設定して ChatGPTに聞いてみた。
https://qiita.com/kaizen_nagoya/items/019e2ad9c3e45e45854e
AI時代の相棒は、キミに決めた! ChatGPT推し ver.0
https://qiita.com/kaizen_nagoya/items/8068a884fb2e64cd3c4f
無料ChatGPTの処理限界
https://qiita.com/kaizen_nagoya/items/84683aee26d9f4a28af0
by ChatGPT, with ChatGPT and people opinions.
https://qiita.com/kaizen_nagoya/items/57f00f9b48b25bc231e6
ChatGPTの使い方の利点と課題 by ChatGPT
https://qiita.com/kaizen_nagoya/items/0f469e473a6ed0407daa
DataRobot 風 AI agent Robotをあなたに
https://qiita.com/kaizen_nagoya/items/1ca8ca1dedefaf739d16
ChatGPTの賢い使い方
https://qiita.com/kaizen_nagoya/items/3a7e4583553543eeeeb3
ChatGPTの弱みをあなたに
https://qiita.com/kaizen_nagoya/items/3c97c63a22939e203905
ChatGPTで裸の王様
https://qiita.com/kaizen_nagoya/items/8377be38d3a763e93811
設計 仕様 制約 AI利用開発の鍵 by ChatGPT
https://qiita.com/kaizen_nagoya/items/1b9cb2f9d26308d84791
PowerPoint 筋書き(outline), 見直し(review), 見栄え加工 by ChatGPT
https://qiita.com/kaizen_nagoya/items/37bb97fc250fca37295b
逃げ回るChatGPTを追い詰めるには
https://qiita.com/kaizen_nagoya/items/cd60426e626ba05e0377
三人寄れば文珠の知恵は直交する能力前提 by ChatGPT
https://qiita.com/kaizen_nagoya/items/512e5611615e2426bb42
プログラマ3年で社長事業(未成年編) 博士論文支援追加
https://qiita.com/kaizen_nagoya/items/326452b5bf29c144c307
自殺防止手引き原稿 補足 by ChatGPT
https://qiita.com/kaizen_nagoya/items/7e459fa7edf7205c2667
しつけ(discipline) の測定視点 by ChatGPT
https://qiita.com/kaizen_nagoya/items/6b5ce03c545f7bbd8723
技術者は英語を学ぶ必要はない。英単語の羅列でいい=プログラム。
https://qiita.com/kaizen_nagoya/items/4fc3963a21e0339fd1c9
猫中心設計から鳥中心設計へ part2
https://qiita.com/kaizen_nagoya/items/4d7a5a33c85e0b01dc5d
プログラマ必須科目 ChatGPTにも確認
https://qiita.com/kaizen_nagoya/items/7b30d9d119792130facd
なんで音楽とプログラムの関係がうまく書けないか。
https://qiita.com/kaizen_nagoya/items/489a68d360df4b26f87d
AI利用業務手引き
https://qiita.com/kaizen_nagoya/items/f201b292f37dba16e9ef
C言語(C++)が必要な人と必要ない人
https://qiita.com/kaizen_nagoya/items/2afe9e846b55b24cb6f1
C言語(C++)が必要な人、必要ない人 ChatGPT
https://qiita.com/kaizen_nagoya/items/a074cb8cd292d8d94bd4
C言語を習得する3つの方法
https://qiita.com/kaizen_nagoya/items/84cab0888c193bba429b
C言語を習得する3つの方法 ChatGPT
https://qiita.com/kaizen_nagoya/items/4a3518a18fa49f46787f