SCOはAPIアダプタのパスが分らない
APIアダプタは、SCOとサーバー側のLMSを結びつける、ブラウザ内で動作するLMSの一部です。APIアダプタは、JavaアプレットやJavaScript(AJAX)などで実装され、SCOからの要求を受け取り、サーバー側にデータを送信、サーバー側のデータをSCOに戻す役割を担っています。
APIアダプタには、LMSInitialize()などデータモデル要素を実行するメソッドが格納されています。SCOはJavaScriptを利用して、そのメソッドを実行します。
しかし、困ったことに、APIアダプタの位置は、必ず2つ上に存在するなどLMS共通として決まっていません。LMSによって配置場所が異なり、SCOからLMSInitialize()などを実行するパスが異なります。そのため、SCOは、パスが分からないためメソッドを実行することができません。
APIアダプタのパスを調べる
そこでAPIアダプタは、SCOにパスを取得しやすくするために、目印を作りました。これがAPIオブジェクトです。「API」とうい名称のオブジェクトで、APIアダプタと同じウインドウ階層にあります。つまりこのオブジェクトのパスが分れば、APIアダプタのメソッドが実行できるということです。
仕様書では、APIオブジェクトは、DOMオブジェクトであると記載されていますが、Windowオブジェクトと言った方が分かりやすいでしょう。Windowオブジェクトは、frameタグのname属性、JavaScriptのグローバル変数です。
LMSは、フレームで分割されていたり、複数ウインドウで構成されることがあります。APIオブジェクトは、ブラウザウインドウ内なら、どのウインドウでも良いという訳ではなく、必ずSCOからルートウインドウへ向かう親ウインドウに配置しなければなりません。SCOは、APIオブジェクトを見つけるために、親ウインドウ内に、APIオブジェクトが存在するか確認します。存在しなければ、さらに親のウインドウにないか、繰り上がり探していきます。
そして、SCOは、APIオブジェクトを探し出すと、パスを取得しデータモデル要素のメソッドを実行できるようになります。
こうした処理は、JavaScriptで自身でコーディングしていくか、ADLなどで配布されているライブラリを利用していきます。ライブラリを利用する場合、自動的に処理してくれるため、中でどう動いているのかは、概略を知っている程度で十分だと思います。