開発/設計/議論

議論の目的

現時点のJ2SE版SIPropプロトタイプの仕様をJ2MEに沿った形に落とし込むことを 目的としています。

各部分の問題点

制御モジュール

  • DIとして動作する
    • クラスローダーが存在しない
  • CPUやメモリの制限
    • 多くの制御モジュールをインスタンス化できない

解決案

  • 事前コンパイル方式
    • 汎用的な形で定義した制御モジュールをある程度専用的なモジュールに変換す る

もちろん、SE→ME変換などの言うものを作成するとなると一つのプロジェクトと して成り立ってしまうくらいでかい話となるため、当面は、使えるクラスを絞った形とします。
具体的には、モジュールはMEで使えるクラスだけを使うような形となります。

  • 独自言語方式
  • Factoryパターンによる、同一クラス名変換方式
  • Mapなどを利用した独自クラスローダー作成方式

スクリプト

  • スクリプトエンジンの不在

解決案

  • 制御モジュールへの取り込み
    • 条件分けなどを、制御モジュールへ取り込んでしまう。

この場合、新たな問題点として、柔軟性が劇的に下がってしまう可能性がある。

これを解決する案として、

制御モジュールセット

という概念を設定します。

例えば、N社の網で使用することが事前解っている場合、

どのモジュールを呼び出すべきかのベストプラクティスも判明する

という点を利用して、

N社用制御モジュールセット

などを定義することにより、100%に近い動作をさせるということです。
また、より100%に近づけるため、エラーが出た場合には、そのパケット情報か ら、新しい制御モジュールセットをネットワークからダウンロードするような機 能も検討したいと思います。

メッセージ変換部

  • テンプレートエンジンの不在

解決案

  • 事前コンパイル方式
    • テンプレートから、ヘッダークラスを生成する
  • テンプレートの単純化
    • SIPropにおいては、パケットの組み立てがメイン動作となるため、テンプレートは用いず、正規表現による置換や独自プログラムによる置換を考慮する

各部分の問題点まとめ(J2ME用のエンジンの構造概要)

以上の点から、J2ME用のエンジンは、下記のような構成となることが想定されま す。

  • モジュールセットとして限定された数個の制御モジュール
    • スクリプトも内包する
    • SE版から生成する
  • モジュールセットとして動作させるためのコントロール制御モジュール
    • B2BUAとして動作させるためのもので、独自に実装を行う
  • ヘッダークラス
    • テンプレートからクラスを生成する
  • トランスポート部
    • MEのSocketは特殊であるため、独自で実装する必要がある

結論

制御モジュール

  • 制御モジュールセット+事前コンパイル方式 J2MEで使用可能なクラスに限定して、制御モジュールを作成するようにする。各モジュールのロード方法は、下記の2パターンを実際に試してみて良い方を採用する。
  • Factoryパターンによる、同一クラス名変換方式
  • Mapなどを利用した独自クラスローダー作成方式

スクリプト

  • 次期Verisonで、考慮する。

メッセージ変換部

  • テンプレートの単純化
    • SIPropにおいては、パケットの組み立てがメイン動作となるため、テンプレートは用いず、正規表現による置換や独自プログラムによる置換を考慮する。