2005年06月04日
HTTP::MobileAgentがバージョンアップ&アーキテクチャ改修提案
Posted by nene2001 at 22:06 /
Tag(Edit):
http::mobileagent
architecture
/
0 Comments:
Post /
View
/
1 TrackBack
/ Google Maps
HTTP::MobileAgentがデベロッパーリリースでバージョンアップしていたみたいですね。
現在5/16版の0.23_02が最新のようですが、0.23_01は3月には出ていたみたいです。
デベロッパーリリースは検索で最新にあがって来ないので、気付きませんでした...。
HTTP-MobileAgent-0.23_02
Yappoさんアタリから2月くらいに聞いた話だと、大規模なアーキテクチャの見直しがあるという感じの話が出ているという事だったのですが(私の受け取り方が間違ってる可能性もあるけど)、Changesを見る限り、マイナーアップデートとデータメンテナンスに留まっているようです。
というか、気付いた理由が、ちょうどこちらもHTTP::MobileAgentのアーキテクチャ見直しを、本家が動きそうになければやろうと思い初めて、先のcoLinux環境構築中も、理由の一つがHTTP::MobileAgentの開発環境構築だったりしますが...。
(もう一つの理由は、mod_authfoafのために、マジで作れるかは別として、Apacheモジュールの作り方を覚える環境づくりのため)
というわけで、HTTP::MobileAgent::Plugin::Extensionを作ってきた立場から、HTTP::MobileAgentの改修案を提案します。
- 本体とキャリア毎サブクラスを分離し、別メンテナが管理
いや、昔と違ってケータイのキャリアも機能も仕様もいろいろ増えたし、単独のメンテナが全部面倒みるのは無理ですって。
面倒見れたとしても、つい最近まで京ぽんへの対応がみそっかすだったように、メンテナ側の温度差で各キャリアへの対応度合いが変わってしまうのも問題あり。
ソフトバンクとか、新しいキャリアも入ってくるし、そんな時メインのメンテナが対応する気にならない限り対応できないのはよろしくない。
そう考えると、今のアーキテクチャで、サブクラス選択の戦略が本体に含まれてしまっていては、本体を変更しないとキャリアの追加や判定条件の変更等が出来ず問題。
サブクラス選択の戦略はサブクラス自体に持たせ、本体はサブクラスが入るはずのフォルダを__FILE__等から導出して、自動的にインストールされているサブクラスを判定し、それらの判定ルーチンを本体が順に呼び出して(或いはプラグインがuseされる際に判定戦略を本体側に登録して)サブクラスを選択する、という構造にすればどうかと思う。
もちろん、構造として別管理できるようにするだけで、本体と一部のサブクラスのメンテナがかぶったっていいし、またいちいち本体とサブクラス両方インストールしなくてもすむように、本体はバージョンアップ毎に最新のサブクラスを同梱すべきだとは思う。 - データの分離を徹底的に
まあ一つ前の項ともかぶるんだけど、今ドコモのHTMLバージョン判定とか、GPS判定とか、ロジックの中に入ってしまってて変更しようと思えばコードを変えないといけないわけですが、その辺を外に出して独自にバージョンアップできるようにしないといけないなと。
かつ、DoCoMoDisplayMapのような自動化を進めなければ。 - プラグイン追加を標準化し、柔軟な機能追加と、本体への取り込みを容易にする
機能の面でも、利用者毎に機能の興味・必要性への差があって、例えばFLASHへの対応度合いなんか、私は使う予定もないし使えるか否かの判定に興味はないけど、それがないと困る人もいるわけで、そう考えると、メソッド追加等のプラグインも、追加したい人が自由に追加できるような経路を作る必要がある。
単純に、HTTP::MobileAgent::Plugin::Extensionがやってるような型グロブを使って関数を追加したり、或いは置き換えてやるようなやり方だと、本体やサブクラスの方が置き換えられたメソッドを変更したり、或いはプラグインの機能を本体に取り込もうとしても、どうしてもプラグインの機能で本体のメソッドが置き換えられてしまうので、それ以上発展させようがなkうなってしまう。
(これ、今まで本家の人に色々迷惑かけたと思います。最初の考えが足りなかったかもしれませんすみませんでした)
だもんで、それを防ぐには、本体の方でメソッド書き換えや追加のためのインターフェースを用意してやって、かつ本体やサブクラスが、既に内部に取り込み済みのプラグインの名前やバージョンを管理しておいて、プラグインによるメソッド追加・書き換え要求時にその辺の条件のネゴシエーションを行ってやって、古いプラグインからのメソッド書き換えは却下する、といった構造にすればどうかと思う。 - 完全な後方互換配慮
HTTP::MobileAgent単独で使ってきた人にも、HTTP::MobileAgent::Plugin::Extension経由で使ってきた人にも、共通に使えるよう後方互換構造を考えたいなと思います... - 動作設定フラグの導入
HTTP::MobileAgentでは一部の動作設定を環境変数を使って制御してますし、HTTP::MobileAgent::Plugin::Extensionではimport時の引数で制御してますけど、どちらもイマイチ格好悪いなと。
(環境変数は、判らない...私が思い込んでるだけで、それが普通なのかもしれないけど)
動作設定のフラグを用意して、それを変更するクラスメソッド・オブジェクトメソッドを整備する方が格好いいのかなあと。
もちろん、後方互換のための手順は整備するべきですが...。 - サブクラス判定戦略へのIPチェックON/OFFフラグ追加
あとまあ些細な感じですが、現在のところサブクラス判定とは切り離されて、サブクラス割り当て後にメソッドでチェックする形になる、HTTP::MobileAgent::Plugin::ExtensionのゲートウェイIPアドレス妥当性チェックですが...。
これサブクラス判定に突っ込まなかった理由はちゃんとあるわけですけども、でもIPアドレスチェックまで含めてサブクラス判定して欲しい、という要望も一部ではあるかなと。
おかしなIPからアクセスしてきてたら、ユーザエージェントがどうであれすぐさまNonMobileサブクラスで判定するモードもあってよいかなと。
[composed and posted with ecto]
Related query words in Google & Yahoo
Related Books from Amazon
Trackback to this entry
TrackBack URL :
Trackbacks
HTTP::MobileAgentのアーキテクチャ改修案、本家に取り込んでもらえそう
Excerpt: ...といっても、俺の実装を採用してもらえそう、ということではなく、こ...
Weblog: ここギコ!
Tracked: 2006年07月14日 23:10
Excerpt: ...といっても、俺の実装を採用してもらえそう、ということではなく、こ...
Weblog: ここギコ!
Tracked: 2006年07月14日 23:10
コメントはありません。
Post a comment
![[ここギコ!]](http://kokogiko.net/logo.png)



・国連人権委、アイヌ・琉球文化の保護を日本に勧告(ほるほる)
・3Dどきゅめんと…って何?点字文書?(building2008)
・3Dどきゅめんと…って何?点字文書?(building2008)
・Vodafone 3GのUserAgent問題:その後(Igroktectonick)
・GoogleMapsと連動したいならPostGISの他にmysqlという選択肢も出てきた あとジオメディアサミット関西も(okumula)
・人員がクラスタ化できている職場と言うのはうらやましい そろそろ限界です(「ま」のつく人)
・もうAmazonクレジットカードは使いません...楽天カード一本で。(名無し)
・ジオメディア忘年会 新年会から始まり東京1、2、関西と続いたジオメディア2008の締めくくり(ぴかぴか)
・GoogleMapsと連動したいならPostGISの他にmysqlという選択肢も出てきた あとジオメディアサミット関西も(kokogiko)