Forge はオートデスクが A360 や Fusion 360、BIM 360 などのクラウド サービスで培ってきた要素技術を Web API として公開している API セットであり、そのブランド名でもあります。ただし、従来、オートデスクが提供してきたデスクトップ製品用の API とは、目的や考え方、また、提供方式や利用形態が大きく異なります。
デスクトップ製品 API 概説
デスクトップ製品の API の形態は オートデスク製品の API が利用するテクノロジ でご案内していますので、精通さえていない方は必要に応じて内容をご確認ください。さて、デスクトップ製品 API は製品が持っている機能を、対応する関数、メソッド、プロパティとして同じように API 化されていることが普通です。そして、API を用いて、製品の機能を拡張したり、API 機能を再利用して反復タスクを自動化したりするのが目的になっているかと思いす。API を利用するのは、デスクトップ製品にロードして実行されるアドイン(別名、アドオン、プラグイン)アプリが主です。また、API の提供は、デスクトップ製品のインストール時に同時にインストールされたり、SDK で提供されたりしてます。
Forge の実装
Forge の場合はどうでしょう。デスクトップ製品の API と違って、Forge は単一のテクノロジで構成されているわけではありません。主に、Forge サービス本体を提供しているサーバー(クラウド)とコミュニティする RESTful API と、Web ブラウザで 2D 図面や 3D モデルを表示する Forge Viewer の JavaScript API です。重要なのは、Forge を利用するのが Web サーバー上に構築される Forge アプリになる点です。決して、A360 や BIM 360 の機能自体を拡張するようなアドイン形式のアプリではありません。
Forge アプリを Web サーバーに実装しなけければならないのは、端的に言えば、Web セキュリティを保持するためです。Web ブラウザのデベロッパーツールについて でも触れていますが、RESTful API 呼び出しで必須な Access Token は Web ブラウザ内(クライアント)で動作する JavaScript プログラムからは取得出来ません。また、Access Token を取得する際に利用する Client ID と Client Secret を隠蔽することも可能です。
Viewer 以外で利用することになる Forge の RESTful API は、オートデスクが利用している AWS やオートデスクにどこかのサーバーから直接配信されているわけではなく、Google APIgee ゲートウェイを介して配信されています。apigee によって、RESTful API 呼び出しのすべてがログされ、かつ、どのデベロッパキー(Client ID と Client Secret)によって呼び出されたものかが特定可能になっているわけです。
Forge アプリを構築する Web サーバー テクノロジと Forge SDK の関係
このように、Forge はインターネット、あるいは Web 開発の環境で運用することが自明です。そして、Forge アプリをホストする Web サーバーに、どのテクノロジを用いるかという選択肢にも繋がることになります。Microsoft Internet Information Server(IIS)上に .NET テクノロジを使って Forge アプリを構築したり、Apache や Node.js、Nginx や PHP、Java のいずれかを用いたり、開発者の自由裁量に任されています。
ただ、それぞれのテクノロジ内でネイティブに RESTful API の endpoint を呼び出しを実装していくのは、パラメータの設定などで少々面倒に感じるかもしれません。この煩雑さを低減する目的で、すべてではありませんが、https://forge.autodesk.com/code-samples で主要な Web サーバー テクノロジ毎に Forge SDK が提供されています。
Forge SDK の利用は必須ではありませんが、RESTful API の呼び出しをラップしているので、Forge アプリの実装を簡素化することが可能となります。
Forge Viewer
一方 、Forge Viewer は、CDN(Content Delivery Network)を介して CSS と JavaScript ライブラリとして配信されています。Forge View JavaScript ライブラリは、オープンソースの three.js ライブラリをベースに構築されています。もちろん、three.js は WebGL JavaScript ライブラリの上位ラッパーです。このため、Forge Viewer ライブラリは three.js ライブラリと親和性が高く、場合によっては、座標やマトリックスなど、three.js 側の要素を用する場面も考えられます。
これとは別に、Forge Viewer JavaScript ライブラリは、Web 開発で一般的に使用されている JavaScript ライブラリを併用するることが可能です。JQuery、AngularJS、React、BACKBORN.JS、ember などです。これらの利用も開発者の自由裁量となります。
デスクトップ製品 API が単一企業による単一テクノロジで提供、利用することが出来ることを考えると、Forge の全体像を把握するにも広範な知識が必要になってしまいます。ただ、これが現在の「繋がる」世界を実現している柔軟な環境と捉えたほうがいいかとも考えます。もはや、特定の単一企業や団体で全てを創り出すのは現実的ではありません。逆に、このような環境だからこそ、マッシュアップ が容易になっている、とも思います。
By Toshiaki Isezaki
コメント