Hawk
w3l_admin****@hawk*****
2006年 6月 29日 (木) 15:47:05 JST
Hawkです。 藤中さんの”Perl方式”をもう一度分析し直した結果、 昨晩こんな方法を思いつきました。 http://blog.hawklab.jp/item-72.html PHPそのものに備わったinclude_pathを活用することで、 Mapleの”外側”で自由に読み込むファイルを制御できます。 いかがでしょうか? ちなみに前回の内容について少しだけ補足しておきますと、 ”包括的統一的に扱える”とは 拡張機能の拡張機能(例えばFilter_Validateに対するValidator_*) についても、同様の階層化が達成されなくてはならない、という意味です。 今回の方法で言うなら、 2. MAPLE_DIRおよびCOMPONENT_DIR内のクラスファイルを読み込むときは、 include_pathからの相対パスで読み込む に従うだけで、拡張機能の拡張機能も階層化の恩恵に与ることができます。 FUJINAKA Tohru wrote: > Hawkさん、こんにちは。 > 藤中です。 > > # 丁寧な説明、ありがとうございます。 > ## ちょっと遅くなりました。 > > >>>Perlの方式(perl付属/vender_perl/site_perlとディレクトリを用意する)は検討 >>>されましたでしょうか。 >>>検討されいるとすれば、同方式では何かネックがあるのでしょうか? >> >>例えばMaple本体付属、共有ライブラリ、アプリケーション固有というように、 >>いくつかの階層を持たせる方法は検討しましたし、 >>開発者間での議論においても提案したはずです。 > > (snip) > >>だから「Maple本体」としては、拡張機能も、拡張機能の拡張機能も >>包括的統一的に扱えるような仕組みを用意してやって、 >>拡張機能の側も、勝手気ままに独自の管理体制を敷くのではなく、 >>本体側の仕組みを利用するようにする……という風に再構成する必要があるので >>しょう。 >>”Perlの方式”がそこまでを意味するなら、確かにそれは検討すべき >>目指すべき方式であり、今の段階では単に未到達である、 >>ということになります。 > > > 私としては、単に前半に出てきた「階層を持たせる」だけでいいかと考えていた > だけでして。 > > Mapleは、妙に自由度があるにも関わらず、一方では妙な制約が課せられていま > す。 > 検索パスがそのひとつ。 > 配列(的)に持つことができるようになるだけで、拡張機能の配置場所の制約がな > くなるので使い勝手が良くなると思っています。 > > 手元のPerlの@INCはこのようになっていて、 > /etc/perl > /usr/lib/perl5/vendor_perl/5.8.8/i686-linux > /usr/lib/perl5/vendor_perl/5.8.8 > /usr/lib/perl5/vendor_perl/5.8.6 > (snip) > /usr/lib/perl5/vendor_perl > /usr/lib/perl5/site_perl/5.8.8/i686-linux > /usr/lib/perl5/site_perl/5.8.8 > /usr/lib/perl5/site_perl/5.8.6 > (snip) > /usr/lib/perl5/site_perl > /usr/lib/perl5/5.8.8/i686-linux > /usr/lib/perl5/5.8.8 > /usr/local/lib/site_perl > . > 例えばスクリプトで HTML::Prototype パッケージが必要になったら、@INC配列 > の先頭から順番に"$INC[$i]/HTML/Prototype.pm"という感じでファイルを検索し > ていく、という動作です。 > > -- > > なお、統一管理できるような仕組みというのは、うーん、どうでしょう? > 必要かどうかがちょっとわからないのと、取り入れた場合にはおそらく、機能か > 何かのキー名称で管理することになりそうで、もしそうなるとその衝突を回避す > る労力がどこか(本体かリポジトリか)で必要になると予想され、その労力はだれ > が負担するのかな、と。 > > Emacsでは本体や個々の拡張パッケージがそれぞれ適当な変数を宣言して、適当 > にやっています。 > compilation-search-path > Variable: *List of directories to search for source files named in error messages. > exec-path > Variable: *List of directories to search programs to run in subprocesses. > load-path > Variable: *List of directories to search for files to load. > ... > > Mapleに似合うのは、このぐらい緩い感じかなと。 > > PerlもEmacsも長らくこんな感じでやってきていますので、Mapleでもなんとかな > るかと、なんとなく思います。 > # もっといい方式があるかどうかはともかく。 > -- Hawk : { web site : http://blog.hawklab.jp/ }