[Maple-user: 312] Re: ユーザアプリケーションの作成場所

Back to archive index

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/
}



Maple-user メーリングリストの案内
Back to archive index