-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
外部公開する箱庭APIのあるべき姿をもう一度再検討する #25
Comments
他言語バインディングが無いと残念なので,やっぱりC/C++ or Rustかなぁと思います. |
コメントありがとうございます。そうですね。C/C++とRustが最有力ですね。 |
箱庭APIの検討内容目的ここでは、以下を検討します。
前提事項
箱庭アセットAPIの機能分類箱庭アセットが箱庭を利用する上で必要な機能分類は以下のものがあります。
各APIの機能概要ライフサイクル管理シミュレーション自体は、動き始めたら、シミュレーション全体を停止させるまでアセットの増減はしない想定なので、これくらいしか考えていません。
シミュレーション時間シミュレーション時間に関して、箱庭アセットとして必要となるAPIとしては以下があります。
これに対して、以下のような要件もあると思われます。
期待したシミュレーション時間まで呼出コンテキストブロックする機能ですが、1のAPIがあれば箱庭アセット側で作成するという案もあります。箱庭APIとして用意すべきかどうかは要検討です。 PDUデータアクセスPDUデータアクセスについては、以下の2つがあります。
最近、気づいたこととして、書き込みしたシミュレーション時間を取得できる機能が必要と思い始めました。
この機能自体は、PDUデータ読み込みAPIとセットで取得できるものでなければなりません。 さらに、PDUデータアクセスについて、データロストを考慮して、過去データを取得できる機能が必要かもしれないと思ってはいますが、必要性がまだ把握しきれていません。 データロストが怖い場合は、箱庭アセット側でデータロストが発生しない周期で定期的にデータ受信をするプログラムを作れば良いためです。 また、そのプログラムは現実のアプリ側にも必要と思われるので、シミュレータとして用意すべきか?と悩みます。 エラー番号エラー番号は、errno.h とマッピングさせたい。 |
APIシグネチャここでは、かっちょいーAPI名を検討します。 名前空間hako::assets ライフサイクル管理
シミュレーション時間
PDUデータアクセス
|
PDUチャネルの配信と購読について(メモ)PDUデータは、ROSのトピックと同様に配信者と購読者が存在します。 これら一連の初期設定は、APIで公開するよりは、初期化関数の引数として購読・配信のPDUデータをJSONで渡すことで、初期化関数が自動設定できるようにします。 そう考えると、箱庭アセット登録も初期化関数に含めてしまえば良いような気がしてきた。 |
PDUデータ構造見直しPDUのメタデータは以下で管理している。 ここに以下のデータを追加する。
UDP/MQTT通信データはいかになりそう。
|
用語の整理(確認) -PDUドキュメント化するにあたって、用語の整理をしていきたいです。PDUに関しては以下の言葉がでています。
|
PDUデータは、おそらく共有メモリないのデータだと思います。 |
こちらでAPI仕様を書き始めました。随時コメント受け付けます! https://github.com/toppers/hakoniwa-core-cpp-client/tree/rapi |
これの出口、UnrealEngineにすると面白いかもしれない。 |
@s-hosoai さんからのコメント 以下疑問点です. |
失礼しました。修正しました。 |
現時点では、contextのような引数の想定は入れておりません。
contextとして何か必要そうなものあれば、教えていただけますか。 |
各コールバックで何をしないといけないかという点は、説明として追記するようにしたいと思います。
ごめんなさい、こちらのイメージができませんでした。 |
こちらは、アプリケーション側ですね。 |
おっしゃる通りですね。ちょっと説明の仕方を考えます。 |
APIの説明の前に、ユースケースのカテゴリ説明を追加しました。これに合わせて、ユースケースのID体系も変えてみました。 全体的に直しましたので、再度、ご確認をお願いできますとありがたいです。 https://github.com/toppers/hakoniwa-core-cpp-client/blob/rapi/README.md |
hako_asset_executeの主体も分からなくなってきました.コア機能からアセット or アセットからコア機能への実行依頼のどちらでしょうか?いずれも,どのアセットへの依頼か,どのアセットからの依頼なのか把握する必要があると思うのですが,どのように管理しているのでしょうか? |
回答ありがとうございます!
現状、必要性はなさそうですが、今後の拡張性を考慮して、void*のメンバを一個入れておきますか。
こちらは、register段階で終わるような気がしていて、戻り値は無しでも良いような気がしております。 なので、戻り値は返せるように設計だけしておいて、現状はシミュレータ側は無視する作りにしますかね。
おっしゃるとおり、結構、これの実装は難しいのです...。 周期タスクで実装されているケースなら問題ないんですけどねぇ。 |
ここは、実際にサンプルコードをお見せした方が早いと思いますね。 イメージとしては、こんな感じですね。
|
現状の箱庭APIは低レベルなものが多く、ユーザ視点でもう少し利用しやすい形にしたい。
その上で、箱庭APIとして採用する言語を再定義したい。
以下、候補案。
ちなみに、最近のお気に入りのAPIセットはこちら。
https://github.com/toppers/hakoniwa-core-cpp-client/blob/main/src/hakoc/src/hako_asset_runner.h
Python向けにはこちらも整備されていてるもの。
https://github.com/toppers/hakoniwa-python-simasset-plugin/tree/main
The text was updated successfully, but these errors were encountered: