進化する Design Automation API

Forge API の 1 つである Design Automation API は、他の API 同様、継続した改善、改良をおこなっています。

ここ最近の改良では、Design Automation API for Revit のパフォーマンスが、次の 2 点で改善されています。

  • Design Automation API では、WorkItem のリクエスト時、すべてのリクエストはキューに蓄積されて、実行環境が仮想マシン(AMI)により動的に作成されて処理されます。

    この際、短い時間に多くのリクエストが集中してしまうと、仮想マシンの確立(スピンアップ)に時間がかかってしまい、pending レスポンスが返るような場面が見られことがあります。Design Automation API for Revit では、仮想マシンのスピンアップの待ち時間が短縮するよう改善を加えて、WorkItem の処理時間全体を短縮する努力を続けています。

  • Design Automation API for Revit が WorkItem 毎に使用する仮想マシンの仕様が強化され、最大メモリ量の合計が、従来の 16GB から 32GB に増加しています。これにより、大規模な Revit プロジェクトを使用した AppBundle(アドイン)の実行パフォーマンスが従来より改善しているはずです。

この他、Design Automation API がサポートするすべてのコアエンジン(UI のない AutoCAD、Revit、Inventor、3ds Max)で、WebSocket を使った WorkItem リクエストと通知メカニズムがサポートされるようになりました。 

  • 従来、WorkItem リクエストは、RESTful API として用意されている POST workItems endpoint 呼び出しでおこなっていました、また、WorkItem 処理の進捗状況と完了には OnProgress、OnComplete コールバックによって通知を得ることが出来ました。

    ただ、コールバックは URL 指定が必要なため、Web サーバー実装を介した実装が必須になってしまいます。このため、クライアントが WorkItem の進捗と完了を知るには、通常、GET workitems/:id endpoint を使ったポーリング処理を、Web サーバー上にルーティングした endpoint を介して検出しているかと思います。

ユーザーと Forge アプリ実装の間でデータが双方向にやりとりされる様子を示す図。左側にユーザーアイコン、右側に AutoCAD、Revit、Inventor、3ds Max のアイコンが表示されている。

今回、この処理に WebSocket を用いた API が追加されています。具体的には、クライアントとして使用するデバイスと Forge サーバーとの間にリンクを確立して、直接、WorkItem のリクエストや進捗、完了通知を得ようとするものです。

Forge APIとWebブラウザの間の通信を示す図。ユーザーとForgeアプリ実装をつなぎ、AutoCAD、Revit、Inventor、3ds Maxのクラウド機能をサポート。

これによって、冗長なコミュニケーションの低減出来るようになります。ただ、リンクの確立はデバイス毎になってしまうため、RESTful 呼び出しと相対比較して十分な効果が得られるか、テストと評価をお勧めしています。

  • WebSocket API の使用が常にベストなわけではありません。また、従来の RESTful API  を使った運用を置き換えていくものでもありません。既に、Web サーバー実装で OnComplete コールバックを運用している場合には、特に明示的な理由がない限り、WebSocket API に移行する必要性はありません。
  • WebSocket API を利用した場合でも、pending ステータスの状況がなくなる訳ではありません。

Design Automation API・WebSocket APIの詳細は、Forge ポータルのドキュメントをご確認ください。

Developer’s Guide:
https://forge.autodesk.com/en/docs/design-automation/v3/developers_guide/websocket-api/

Reference:
https://forge.autodesk.com/en/docs/design-automation/v3/reference/websocket/

AutoCAD Web アプリの PDF 出力機能では、ここでご紹介した Design Automation API の WebSocket API が内部的に使用されています。

AutoCAD Webアプリのインターフェイスが表示されている画面。左側にはオブジェクトプロパティやレイアウトのプロパティがあり、右上にPDF出力機能のボタンが見える。

By Toshiaki Isezaki

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading