無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

DIコンテナ作成計画

JavaScriptで使えるDIコンテナはないかなとGoogleで10分だけ探したけど見つからなかったので、作ることにしました!(予定)

何に使うの?

MVCでUIを作ると、各レイヤー間の依存関係が何気に複雑になりがちです。

  • 要素のイベントハンドラとコントローラの関連付けとか(View-Controllerの関連付け)
  • モデルの変更を捕捉してUIを更新とか(View-Modelの関連付け)

このあたりを一手にやってくれるコンテナがあったら、使えるかなと思うわけです。

コンセプト

超軽量。

計画
// コンテナを作成
// 引数でコンポーネントの定義を記述する関数を渡す。
var c = new container.Container( function( binder ) {
  
  // "name" に sample.Kitten クラスを関連付ける。
  binder.bind("name").to( sample.Kitten ) ;
  binder.bind("name").toProvider( function( container ){
    return obj;      
  } );
  binder.bind("name").toInstance( obj  );
  binder.bind("name").toFunction( "name", "functionName" );
  
  // すべての設定を行ったもの。
  binder.bind( "name" ).to( sample.Kitten  ).inject( {
     "field1": "name",
     "field2": "name"
  }).initialize( function( obj, container ){
  }).destroy( function( obj, container ){
  }).scope( container.Scope.Singleton ).intercept(  function(){}, /.*/, /.*/ ) ;
  
  // すべてのコンポーネントに適用するインターセプタ
  binder.bindInterceptor(  function(){}, /.*/, /.*/  );   
} );

// コンテナからコンポーネントを取得する。
var kitten = container.get( "kitten" );


//デフォルトの設定はアノテーションでもできる。
function Kitten () {}
Kitten.prototype.meta = {
  "@container.inject": {
      "field":"service"
  },
  "@container.initialize":function( obj, container ){},
  "@container.destroy": function( obj, container ){},
  "@container.scope":   container.Scope.Singleton,
  "@container.intercept": [
      [ function(){}, [ /.*/, /.*/ ], [/.*/]]
      [ function(){}, [ /.*/, /.*/ ], [/.*/]]
   ]
}