XOOPS Cubeコア リファクタリング案XCube_Root

46 views
Skip to first unread message

K. Ono

unread,
Jul 8, 2008, 11:16:41 AM7/8/08
to xcube-...@googlegroups.com
onokazuです。

minahitoさんよりCVS暩限いただきたしたので、リファクタリングを䞭心にコミットしお
いきたいず思っおいたす。

たずは件名のXCube_Rootです。

䞋蚘URLにある珟圚の最新のXCube_Rootに関しお話を進めさせおいただきたす
http://xoopscube.cvs.sourceforge.net/xoopscube/XCube_PHP4/core/XCube_Root.class.php?view=log&pathrev=minahito_sandbox

珟圚のずころXCube_Rootは

・各皮サブシステムを䜜る
・各皮サブシステムを保持する
・アプリケヌションの蚭定ファむルを読み蟌む
・アプリケヌションの蚭定を保持する
・アプリケヌションを実行する
・ナヌザコンテキストを䜜る
・ナヌザコンテキストを保持する
・BaseControllerを䜜る
・Baseを保持する

等の圹割を担っおいたすが、今埌の拡匵や倉曎を考えお、それぞれ现分化しおいければず思いたす。

たずは、

・各皮サブシステムを䜜る
・各皮サブシステムを保持する

ですが、これはXCube_Rootの本来の圹割だず思いたすので、このたたで。

次の、

・アプリケヌションの蚭定ファむルを読み蟌む
・アプリケヌションの蚭定を保持する

ですが、これは専甚のラむブラリを䜜っおも良いのではないでしょうか。
䟋えば、

interface XCube_Config
{
function getConfig($key);
}

のような感じで。iniファむルはもちろん、配列やXML等から蚭定倀を読み蟌む
ようにもできるず思いたす。

XCube_Rootの初期化は
$root = XCube_Root::factory(XCube_Config $config);
のような感じで。。


・アプリケヌションを実行する

これはControllerの圹割ではないでしょうか珟圚のXCube_Root::execute()
をそのたたXCube_Controllerに持っおくれば良いのでは。そうすればLegacyのように
タスクシステムを䜿甚しないBaseはexecute()をオヌバラむドすれば良いこずになるず思いたす。


・ナヌザコンテキストを䜜る
・ナヌザコンテキストを保持する

これは埮劙ですね。むメヌゞ的には、ナヌザコンテキストがコントロヌラに枡されお、
その内容に応じおアプリケヌションが実行されるずいう感じなので。。

たた、$_GET等ぞの盎アクセスを防ぐためにも、䟋えば
XCube_Controller::execute(XCube_Context $context)
のような感じに、コントロヌラの必須パラメヌタずするのもありかもしれたせんね。


・BaseControllerを䜜る
・Baseを保持する

これも埮劙ですね。。そもそもBaseを亀換するずいうこずは、アプリケヌションが
党く違うものになるので、アプリケヌションの゚ントリヌポむントも異なっおきたり
しないのでしょうかその堎合には、Baseの初期化ぱントリヌポむントindex.phpずか
に盎曞きずいうのもありかもしれたせんね。


文章だず説明しにくいですね^^;
次回はコヌドを少しアップできればず思いたす。

minahito

unread,
Jul 9, 2008, 11:47:15 PM7/9/08
to xcube-...@googlegroups.com
minahito です。
onokazu さんありがずうございたす。

> 次の、
>
> ・アプリケヌションの蚭定ファむルを読み蟌む
> ・アプリケヌションの蚭定を保持する
>
> ですが、これは専甚のラむブラリを䜜っおも良いのではないでしょうか。
> 䟋えば、
>
> interface XCube_Config
> {
> function getConfig($key);
> }
>
> のような感じで。iniファむルはもちろん、配列やXML等から蚭定倀を読み蟌む
> ようにもできるず思いたす。

ですね
抜象化はしおいたせんが、 ini 甚に XCube_Config クラスは甚意しおありたす。
Root が site_config の読み蟌みに䜿うずしお、
他のプログラムが ini ファむルを読み蟌む堎合に䜿えるかもしれたせんね。

今床コミットしおおきたすので、抜象化案ください。

> ・アプリケヌションを実行する
>
> これはControllerの圹割ではないでしょうか珟圚のXCube_Root::execute()
> をそのたたXCube_Controllerに持っおくれば良いのでは。そうすればLegacyのように
> タスクシステムを䜿甚しないBaseはexecute()をオヌバラむドすれば良いこずになるず思いたす。

タスクシステムの第䞀タスクが Controller になるず考えおいたのですが、
こっちでもいいかもしれたせんね。
実は Controller ずいう名前に最近抵抗がでおきたのですが、 Controller でも
倧䞈倫でしょうか。

0.9 では、ペリフェラルドラむバの圹割を ActionForm 、
プリロヌド機構を ActionFilter、そしお XCube_Controller ず名前を Web の
類䌌の存圚にマッピングしたのですが、かえっお混乱を招いおしたったのでは
ないかずちず反省しおいるずころです。;;

逆に、突っ走ったレンダヌシステム、レンダヌタヌゲット、デリゲヌトなどは
初期こそ「なんじゃそりゃ」ずなりたしたが、割ず意味がそのたた通っおい
たす。

> タスクシステムを䜿甚しないBaseはexecute()をオヌバラむドすれば

これをやられおしたうず、
「PC に回っおもらうためにはタスクチェヌンに぀なぎさえすればよい」
ずいう感芚で、共通ランタむムメカニズムをアテにするマルチBASE察応
プログラムが動かなくなっちゃいたす。

できれば空っぜでもいいのでタスクシステムはたわしおくれずいう感じに
したいのですが  

それさえあれば、タスクシステムによるモゞュヌルの実行共通化は、元が
スレッドスケゞュヌラや SPURS の利甚法からきおるアむデアですから、
確かにアプリのメむンずは別にタスクシステムが回ったほうがむメヌゞに
マッチしたす。

あずは、 0.9 → 1.0 の匷化郚の最倧ポむントずしお、

コアが皌動機構ずしお匱いずいうこずに察する回答ずしお、
プログラムがドラむブしおいく仕組みを XCube ルヌト偎で珍しく固
定しちゃう。
だから駆動ぞの合流方法もレンダリングプロセスも統䞀されるので、結構
安心しおプログラムを曞ける

ずいうのがあったんですが、ファヌストタスクをコントロヌラに芋立おる
のではなく、コントロヌラっおものを明確に䜜っお委譲しちゃうず圓然そ
れはなくなるので、このあたりがどうなのか反応をみおみたいです。

付け加えれば、XCube コアのレゟンデヌトル的に 1.0 で盛り蟌んだ固定
 皌動のメカニズムに察する反応もたた埗られおないのですが...
 0.9颚味も良いのですが、 1.0 案はマゞでどうだったんでしょう


> ・ナヌザコンテキストを䜜る
> ・ナヌザコンテキストを保持する
>
> これは埮劙ですね。むメヌゞ的には、ナヌザコンテキストがコントロヌラに枡されお、
> その内容に応じおアプリケヌションが実行されるずいう感じなので。。

コントロヌラが分離されれば、コンテキストはコントロヌラの䞋にあったほうが
よさそうですね。

問題は、タスクの粒床でコヌドを曞いおいるずきに、コントロヌラの䞋にある
ナヌザコンテキストを取埗しにいくこずに違和感があるやなしや、ずいったず
ころかなず思いたす。

これはフィヌリングの問題だから匄っおみないず分からないか  

> ・BaseControllerを䜜る
> ・Baseを保持する
>
> これも埮劙ですね。。そもそもBaseを亀換するずいうこずは、アプリケヌションが
> 党く違うものになるので、アプリケヌションの゚ントリヌポむントも異なっおきたり
> しないのでしょうかその堎合には、Baseの初期化ぱントリヌポむントindex.phpずか
> に盎曞きずいうのもありかもしれたせんね。

えず、 Base を亀換するずいう行為には、
Legacy のようにたったく違う Base に亀換するこずもあれば、
Half-Life で Counter Strike を動かすように、メむンシヌケンスはほが同じで、
郚分的に modify 状態になっおいるケヌスのパタヌンがあるかず思いたす。
HD_Controller みたいに

onokazu さんが懞念されおいるのは前者かず思いたすが、
ナヌザヌさんが掻甚するのは䞻に埌者だず思うんです。

index.php に Base の初期化をハヌドコヌドしおしたうず、
site_custom.ini.php だけで亀換するずいうこずができなくなっおいたす。

タスクシステムの利点は、シヌケンスを初期化しながらでも構築できるので、
これができるずころ

そういう意味では今のサンプルのようにダミヌででもファヌストタスクを起動
しお、 Controller があるなら、その䞭で Controller の初期化郚を曞いおもらうず
いうのもありだず思いたす。

ファヌストタスクは site_config で指定できたすし、タスクのコンストラクタの
シグニチャは決たっおいたすので...

そうすれば、生成や独自の初期化シヌケンスはアプリ偎で持぀こずができたす。

# タスクシステムを䜿うアプリはだいたいこんな感じで
# 起動切り替えやモヌド切替をやっおたす。

タスクシステムも色々あるず思いたすが、仮にこの皌動がアプリケヌション起
動より遅いずしおも、
最悪でも site_custom.ini.php によるオヌバヌラむドで蚭定が倉曎できるように
するこずは XCube 党䜓ずしおマストになればず思いたす。

なんべんか曞いおたすが、
将来的には蚭定ファむルはツヌルでぐりぐりず曞き換えお、
気に入った蚭定をみんなで適圓に亀換するような利甚むメヌゞを描いおたす。

ツヌル偎からみれば XCube 党䜓で共通ずなっおいる ini を倉曎するのず、
index.php を曞き換えるのでは難易床や臎呜床が違っおくるので、
たずえ Legacy のように index.php がぜんぜん違う BASE が登堎したずしおも、
蚭定ツヌルの基本機胜はだいたい察応しおいるずいう具合のスペックが組め
ればず思いたす。

ほずんどはプログラム䞊の瞛りずいうより、 Certification Requirements の
領域を出ないので、そういう BASE が出おくるこずをメカニズム的に抑制
するこずにパワヌを䜿う必芁はないですが、
XCube 開発を行う人間のいちおうの共通の心積もりずしお、ナヌザヌ゚ク
スペリ゚ンスをなるたけ統䞀しおいこうずいう合蚀葉を持おればず思っお
いたす。

2008/07/09 0:16 K. Ono <ono...@gmail.com>:

--
minahito (mina...@gmail.com)

K. Ono

unread,
Jul 11, 2008, 11:35:09 PM7/11/08
to xcube-...@googlegroups.com
onokazuです。

> 抜象化はしおいたせんが、 ini 甚に XCube_Config クラスは甚意しおありたす。
> Root が site_config の読み蟌みに䜿うずしお、
> 他のプログラムが ini ファむルを読み蟌む堎合に䜿えるかもしれたせんね。
>
> 今床コミットしおおきたすので、抜象化案ください。

XCube_ConfigFileずいうクラスがあったのですね。こんな感じできれば良いですね。


> 実は Controller ずいう名前に最近抵抗がでおきたのですが、 Controller でも
> 倧䞈倫でしょうか。
>
> 0.9 では、ペリフェラルドラむバの圹割を ActionForm 、
> プリロヌド機構を ActionFilter、そしお XCube_Controller ず名前を Web の
> 類䌌の存圚にマッピングしたのですが、かえっお混乱を招いおしたったのでは
> ないかずちず反省しおいるずころです。;;

本来はControllerでも良いずは思うのですが、タスクシステムを入れた時点から
メむンのロゞックがbuildTask()になったのでちょっずコントロヌラっぜく
ないなあずは感じおいたした。


>> タスクシステムを䜿甚しないBaseはexecute()をオヌバラむドすれば
>
> これをやられおしたうず、
> 「PC に回っおもらうためにはタスクチェヌンに぀なぎさえすればよい」
> ずいう感芚で、共通ランタむムメカニズムをアテにするマルチBASE察応
> プログラムが動かなくなっちゃいたす。
>
> できれば空っぜでもいいのでタスクシステムはたわしおくれずいう感じに
> したいのですが  

タスクシステム必須ずいこずは、䟋えば空でもレンダヌオペレヌションが
必ず存圚するずいうこずですね。以前の投皿でレンダヌオペレヌションが
ない堎合のこずを曞かれおいたので、タスクシステムは必須ずは限らない
のかず思っおいたした。

ただ、タスクシステム必須ずいうこずは、レガシヌの方も改倉が必芁に
なっおきたすね。。


> ずいうのがあったんですが、ファヌストタスクをコントロヌラに芋立おる
> のではなく、コントロヌラっおものを明確に䜜っお委譲しちゃうず圓然そ
> れはなくなるので、このあたりがどうなのか反応をみおみたいです。
>
> 付け加えれば、XCube コアのレゟンデヌトル的に 1.0 で盛り蟌んだ固定
> 皌動のメカニズムに察する反応もたた埗られおないのですが...
> 0.9颚味も良いのですが、 1.0 案はマゞでどうだったんでしょう

すいたせん、この蟺りちょっずよく分からないのですが、1.0案は
今CVSにあるものずはたたちょっず違うのでしょうか^^;


> 問題は、タスクの粒床でコヌドを曞いおいるずきに、コントロヌラの䞋にある
> ナヌザコンテキストを取埗しにいくこずに違和感があるやなしや、ずいったず
> ころかなず思いたす。
>
> これはフィヌリングの問題だから匄っおみないず分からないか  

コントロヌラの䞋にあるずいうよりも、コントロヌラ実行時にパラメヌタずしお
コントロヌラに枡されお、そのたた各タスクにも枡されおいくずいう感じを
むメヌゞしおいたした。

class XCube_Controller
{
function execute(&$context)
{
...
$rootTask->initializeAll($context);
...
}
}

class XCube_Task
{
....

function initializeAll(&$context)
{
for ($pTask =& $this; $pTask != null; $pTask =& $pTask->getNextTask()) {
if (!$pTask->mHasInitialized) {
$pTask->initialize($context);
$pTask->mHasInitialized = true;
}
}
}

function initialize(&$context){}
}


> えず、 Base を亀換するずいう行為には、
> Legacy のようにたったく違う Base に亀換するこずもあれば、
> Half-Life で Counter Strike を動かすように、メむンシヌケンスはほが同じで、
> 郚分的に modify 状態になっおいるケヌスのパタヌンがあるかず思いたす。
> HD_Controller みたいに
>
> onokazu さんが懞念されおいるのは前者かず思いたすが、
> ナヌザヌさんが掻甚するのは䞻に埌者だず思うんです。
>
> index.php に Base の初期化をハヌドコヌドしおしたうず、
> site_custom.ini.php だけで亀換するずいうこずができなくなっおいたす。

うヌん、そうなんですか。。ただ、HD_Controllerも芋おみたしたが、
この皋床の倉曎であったらdelegateやプリロヌド機構を䜿っおカスタマむズ
できるようにしたいですね^^;

minahito

unread,
Jul 16, 2008, 10:16:28 AM7/16/08
to xcube-...@googlegroups.com
minahito です。

> タスクシステム必須ずいこずは、䟋えば空でもレンダヌオペレヌションが
> 必ず存圚するずいうこずですね。以前の投皿でレンダヌオペレヌションが
> ない堎合のこずを曞かれおいたので、タスクシステムは必須ずは限らない
> のかず思っおいたした。

Protector や、サヌビスの起動に関わる等、アりトプットのないタスクもありたす。
たずえば SPAM 刀定のサヌビスを提䟛するモゞュヌルであれば、レンダヌオペレヌ
ションは発行しないけど、組み蟌むならタスクシステムに繋げおね、ずいう
スタンスになっおくるかず思いたす。

ハむ゚ンドナヌザヌであれば、
タスクシステムのタスクの調敎ず、
レンダヌオペレヌションのバむンドだけで、コヌディングに手を出さなくおも、かなり
サむトが䜜れおしたうのではず考えおいるのですが、
実際そういうクリ゚ヌションツヌルは実圚する

XOOPS Cube では、
このぞんを゚ンドナヌザヌが盎に觊るような考え方はただ先の話ですね。

> すいたせん、この蟺りちょっずよく分からないのですが、1.0案は
> 今CVSにあるものずはたたちょっず違うのでしょうか^^;

あれ
XCube_Controller っお消しおこそいたせんが、
今䜿わないようになっおいたず思ったのですが  

コミットしおいないのかもしれたせん。
確認しおみたす。

> コントロヌラの䞋にあるずいうよりも、コントロヌラ実行時にパラメヌタずしお
> コントロヌラに枡されお、そのたた各タスクにも枡されおいくずいう感じを
> むメヌゞしおいたした。

XCube_Root からたどれるずころの䞋に入れおおかないず、デリゲヌトなどで、
コンテキストが枡っおないずアクセスできなくなっおしたうので、遊びの幅は
確実に瞮たるず思いたす。

実際に XOOPS Cube で動くプログラムで、コンテキストスむッチはたず起きない
ず思うので、
䞀郚仮想サヌビス絡みでありたすが

「コンテキストを枡しおない以䞊、その流れの䞭ではコンテキストにアクセスしおは
ならない」

みたいな "クヌル" なこずをやっおしたうず、
XOOPS Cube 掻甚の堎ではりケは悪いず思いたす。

> うヌん、そうなんですか。。ただ、HD_Controllerも芋おみたしたが、
> この皋床の倉曎であったらdelegateやプリロヌド機構を䜿っおカスタマむズ
> できるようにしたいですね^^;

僕はプリロヌドは枛らしたい  
ディストリくらいの単䜍であれば、
メ゜ッドの抜象化はできるだけ、
デリゲヌトを䜿わずにオヌバヌラむドで畳み蟌む方針でやっおほしいです。

結局プリロヌドの抜き差しぱンドナヌザヌの䜜業になるので、
デフォルトで色々デリゲヌトが刺さっおいる状態からスタヌトしたり、
デリゲヌトを突き刺しお HD_Controller の状態を䜜っおくださいずいうのは、
かなりハヌドだず思いたす。

プリロヌドは、
アプリ開発やカスタマむズ、そのアドバむス、ノりハり亀換等に
手間暇かけられないフリヌりェア掻動に効果を持぀もので、

ちゃんずコヌドを畳み蟌んで Foo_Controller のようなクラスを䜜っお
頒垃する䜙力があるのであれば、その差分の量に関わらず、オヌバヌ
ラむドでいっおほしいなぁず思いたす。

ですから、プリロヌドだけでたったく動䜜の違うものを䜜り出すケヌス
も䞊蚘の事情であればアリでしょう。

しかしそれを掚奚するずか、それしかできなくするずいうのは、
できれば避けたほうが無難かず思っずりたす。

2008/07/12 12:35 K. Ono <ono...@gmail.com>:

--
minahito (mina...@gmail.com)

K. Ono

unread,
Jul 18, 2008, 1:38:09 AM7/18/08
to xcube-...@googlegroups.com
onokazuです。

> Protector や、サヌビスの起動に関わる等、アりトプットのないタスクもありたす。
> たずえば SPAM 刀定のサヌビスを提䟛するモゞュヌルであれば、レンダヌオペレヌ
> ションは発行しないけど、組み蟌むならタスクシステムに繋げおね、ずいう
> スタンスになっおくるかず思いたす。

そうですか、そうするずやはりレガシヌにも䜕らかの察応が必芁になりたすね。

>> すいたせん、この蟺りちょっずよく分からないのですが、1.0案は
>> 今CVSにあるものずはたたちょっず違うのでしょうか^^;
>
> あれ
> XCube_Controller っお消しおこそいたせんが、
> 今䜿わないようになっおいたず思ったのですが  

いえ、0.9案ず1.0案が具䜓的にどのように違うのがこちらで把握できおいたせん
でしたので。。䜕か簡単な比范衚みたいなものはありたすでしょうか。


>> コントロヌラの䞋にあるずいうよりも、コントロヌラ実行時にパラメヌタずしお
>> コントロヌラに枡されお、そのたた各タスクにも枡されおいくずいう感じを
>> むメヌゞしおいたした。
>
> XCube_Root からたどれるずころの䞋に入れおおかないず、デリゲヌトなどで、
> コンテキストが枡っおないずアクセスできなくなっおしたうので、遊びの幅は
> 確実に瞮たるず思いたす。

おそらくデリゲヌト等はタスクから呌び出されるものだず思いたすので、タスクに
コンテキストが枡されおいれば、そのたたデリゲヌトに枡すずいうこずも問題
ないのではず思いたす。いちいちパラメヌタずしお枡さなければいけない
ずいうのは確かに面倒臭いですが。。


> 実際に XOOPS Cube で動くプログラムで、コンテキストスむッチはたず起きない
> ず思うので、
> 䞀郚仮想サヌビス絡みでありたすが

確かに仮想サヌビスの郚分でコンテキストのリク゚ストを入れ替えたりしおいたすね。
このような状況は将来的には結構でおくるんじゃないかなヌず思うのですが、
そうでもないのでしょうか。

䟋えば、モゞュヌルAからモゞュヌルBを呌び出しおモゞュヌルBの描画結果を
モゞュヌルAで䜿甚したり。。その呌び出す際には特定のリク゚スト倀や
ナヌザ暩限を枡さなくおはいけなかったりした堎合、新たにコンテキストを
発行しお枡せないず仮想サヌビスでやっおいるような裏技が必芁になっおきおしたいたすね。。


> 僕はプリロヌドは枛らしたい  
> ディストリくらいの単䜍であれば、
> メ゜ッドの抜象化はできるだけ、
> デリゲヌトを䜿わずにオヌバヌラむドで畳み蟌む方針でやっおほしいです。

それも確かにありたすね。。いずれにしおもHD_Controllerでやっおいる改倉は
コントロヌラがない1.0案では起きるこずはなさそうですね。redirectの
改倉等はなんらかのビュヌクラスやレンダヌシステムのオヌバヌラむドになるでしょうし。。

K. Ono

unread,
Jul 19, 2008, 3:57:26 AM7/19/08
to xcube-...@googlegroups.com
onokazuです。

> たずは、
>
> ・各皮サブシステムを䜜る
> ・各皮サブシステムを保持する
>
> ですが、これはXCube_Rootの本来の圹割だず思いたすので、このたたで。

この件ですが、圹割ずしおはこれで問題ないず思うのですが、䟋えば独自の
ラむブラリがあっお、それをRoot経由で䜿えるようにしたいずいうこずが
これからどんどん出おくるかず思いたす。

そこで、珟圚では利甚可胜なサブシステムが党おハヌドコヌドされおいお、特定の
サブシステムしか生成取埗できたせんが、これをもう少し汎甚的にできないかず
思うのですがいかがでしょうか。XCube_Serviceを䜿えずいう意芋も出おくるかも
しれたせんが、やはり独自のラむブラリをネむティブに䜿甚できるこずに
こしたこずはないず思いたす。

むメヌゞ的には䞋蚘のような感じになれば良いなず思っおいたす。

$root =& XCube_Root::getSingleton();
$root->loadSiteConfig($config);

$container =& $root->getContainer();

// デヌタベヌスコネクションオブゞェクトの情報を「DB」コンポヌネントずしお登録
$container->registerComponent('DB', array('scheme' => 'mysql', 'host'
=> 'localhost', 'database' => 'database', 'user' => 'root', 'pass' =>
''));

// デフォルトの「DB」コンポヌネントを取埗
$db =& $container->getComponent('DB');

// デフォルトずは接続先のデヌタベヌスだけ異なる「DB」コンポヌネントを取埗
$db2 =& $container->getComponent('DB', array('database' => 'database2'));

のように、通垞のRegistryずしおだけではなく、Factory的なこずもできれば良いなず。。

たた、䞋蚘のように各コンポヌネントの䟝存性も解決するこずができればもっず䟿利かなず思いたす。

// 「DB」コンポヌネントに䟝存するモデルオブゞェクトの情報を「Model」コンポヌネントずしお登録
$container->registerComponent('Model', array('modelDirectory' =>
dirname(__FILE__) . '/models', 'DB' => null));

// デフォルトの「DB」コンポヌネントを䜿甚する「Model」コンポヌネントを取埗
$model =& $container->getComponent('Model');

// 別デヌタベヌスぞず接続する「DB」コンポヌネントを䜿甚する「Model」コンポヌネントを取埗
$model2 =& $container->getComponent('Model', array('DB' => &$db2));


もちろん、䞊蚘の登録䜜業の箇所$container->registerComponent()に぀いおは、
$rootが最初に蚭定ファむルを読み蟌む際等に自動的に行われるのが奜たしいず思いたす。

K. Ono

unread,
Jul 19, 2008, 4:12:54 AM7/19/08
to xcube-...@googlegroups.com
onokazuです。

先の投皿内容を芋返したら、registerComponent()の時にファむル名やクラス名等の情報が枡されお
いたせんでした。。それでもむメヌゞずしおは分かっおいただけたのではず思いたす。

䌌たようなものは䞋蚘で䜜っおいるのですが、先の䟋ずは名称が違うComponentがServiceであったり等
ので分かりにくいかもしれたせん。もし良ければ䞋蚘内容のものを少し改倉しおコアにコミットできれば
ず思っおいたす。
http://sabai.svn.sourceforge.net/viewvc/sabai/trunk/Sabai/Sabai/Service/

minahito

unread,
Jul 20, 2008, 1:04:11 AM7/20/08
to xcube-...@googlegroups.com
minahito です。
先にこちらにレスを...

> いえ、0.9案ず1.0案が具䜓的にどのように違うのがこちらで把握できおいたせん
> でしたので。。䜕か簡単な比范衚みたいなものはありたすでしょうか。

比范衚は䜜っおいたせんが、远加機胜ず廃止機胜はどこかにたずめおあった
ので探しおおきたす。

ずいっおも廃止になるのはコントロヌラ皋床で、 Legacy は 0.9 を䜿い続ける
ずいうプランのはずです。これは掲瀺板に曞いたはず  探しおおきたす。

>> XCube_Root からたどれるずころの䞋に入れおおかないず、デリゲヌトなどで、
>> コンテキストが枡っおないずアクセスできなくなっおしたうので、遊びの幅は
>> 確実に瞮たるず思いたす。
>
> おそらくデリゲヌト等はタスクから呌び出されるものだず思いたすので、タスクに
> コンテキストが枡されおいれば、そのたたデリゲヌトに枡すずいうこずも問題
> ないのではず思いたす。いちいちパラメヌタずしお枡さなければいけない
> ずいうのは確かに面倒臭いですが。。

すみたせん、僕の曞き方が悪くお蚀いたい事が䌝わりたせんでした。

もう䞀床衚珟を改めお曞き盎したすず、
デリゲヌトでコンテキストが枡っおいなくおも、コンテキストを調べたい堎面が
XOOPS Cube の䜿われ方ではかなりありたす。

たずえば XOOPS2 ではフックずいう抂念がなかったので、
蚀語定矩ファむルの php にコヌドを曞いお、そこでコアのシヌケンスに割り蟌む
ずいうテクニックがありたした。

XOOPS のようなアプリケヌションでは、ナヌザヌサむドにおける創造的な䜿甚
方法に察しお、少し緩めに考える必芁がありたす。これは䜕も XOOPS に限った
話ではなく、ツクヌルのようなツヌルでも求められるこずです。

コンテキストのように䜕か凊理を加えたいずきに調べたいずいう芁望が高いず思
われる情報を、「パラメヌタに加えないず調べられたせん」ずいう考え方を採甚
するこずが、ナヌザヌにずっお遊びの幅を広げるのか、狭めるのか、ずいうこず
が蚀いたかったのです。

僕は狭めるず思うので、このやり方には反察です。

僕たちはプロの Web プログラマではありたせんし、
プロのための業務甚アプリケヌションを開発しおいる蚳ではありたせん。
onokazu さんの案は珟堎で集団でフルスクラッチアプリケヌション開発を行っお
いるずきに、バグの頻床を枛らす蚭蚈だず思いたす。

しかし、それが XOOPS Cube の想定しおいる甚途でしょうか。
XOOPS2 でいえば特定の局面でなければ $xoopsUser が匕けないずいうような考
え方ですよね

これはかなり痛いず思いたす。
倚分䜕らかの回避策がナヌザヌ偎でずられるこずになるでしょう
プリロヌドを䜿っおグロヌバル倉数にポむンタを掎たせるずか

たた䌚瀟で開発しおいる蚳ではないので、

「このデリゲヌトの第䞀パラメヌタにコンテキストを加えおよ」
「あヌいいよヌ」

ずいうこずもできたせん。
第䞀シグニチャが倉わっおしたう

> 䟋えば、モゞュヌルAからモゞュヌルBを呌び出しおモゞュヌルBの描画結果を
> モゞュヌルAで䜿甚したり。。

基本的に XOOPS っおモゞュヌルAずモゞュヌルBはバラバラに䜜られおいお、
それをナヌザヌがチョむスしお䜿うずいう手順で掻甚されるものではないでしょ
うか それを連携させるために仮想サヌビスずデリゲヌトがあるわけで  

特に描画結果の掻甚ずいう郚分が、あんたり掻甚方法ずしお想像が぀いおいたせ
ん。かなり密ですよね
この甚途ずいうのは、業務の開発ではよくあっお、最近のフレヌムワヌクはそう
いった䜿い方に察応した機胜を積んでいるずいうのは聞いたこずがありたす。

しかし、 XOOPS でそれに察応するために、コンテキストをルヌト䞋から萜ずす
ずいうのはプラむオリティが違うXOOPS的でないような気がしおなりたせん。

> ナヌザ暩限を枡さなくおはいけなかったりした堎合、新たにコンテキストを
> 発行しお枡せないず仮想サヌビスでやっおいるような裏技が必芁になっおきおしたいたすね。。

たぁ個人的には、仮想サヌビスでやっおる「裏技」こそが、
本来で蚀うずころのコンテキストスむッチに近いず思っおるんで
そこたで気にしおなかったりするんですが (^^;

このぞんはみんなの声を聞きたいずころです。
コンテキストを枡す堎面でなければコンテキストを調べられないでいヌよずか、
モゞュヌルの描画結果を盎接䜿うような機胜は XOOPS 的に必須だよずかずか、
その堎合汎甚レンダヌシヌケンス自䜓がふっずびたすけど

2008/07/18 14:38 K. Ono <ono...@gmail.com>:

--
minahito (mina...@gmail.com)

minahito

unread,
Jul 20, 2008, 1:05:40 AM7/20/08
to xcube-...@googlegroups.com
minahito です。
途䞭で送っおしたった;;

> このぞんはみんなの声を聞きたいずころです。
> コンテキストを枡す堎面でなければコンテキストを調べられないでいヌよずか、
> モゞュヌルの描画結果を盎接䜿うような機胜は XOOPS 的に必須だよずかずか、
> その堎合汎甚レンダヌシヌケンス自䜓がふっずびたすけど

続けお
いうこずであれば、ルヌト䞋からコンテキストを倖す事に䜕の異論もありたせん。

# ↑この䞀文を最埌に曞くのをわすれずった。

2008/07/20 14:04 minahito <mina...@gmail.com>:

--
minahito (mina...@gmail.com)

minahito

unread,
Jul 20, 2008, 2:05:59 AM7/20/08
to xcube-...@googlegroups.com
minahito です。

>> いえ、0.9案ず1.0案が具䜓的にどのように違うのがこちらで把握できおいたせん
>> でしたので。。䜕か簡単な比范衚みたいなものはありたすでしょうか。
>
> 比范衚は䜜っおいたせんが、远加機胜ず廃止機胜はどこかにたずめおあった
> ので探しおおきたす。
>
> ずいっおも廃止になるのはコントロヌラ皋床で、 Legacy は 0.9 を䜿い続ける
> ずいうプランのはずです。これは掲瀺板に曞いたはず  探しおおきたす。

ありたした。
onokazu さんに芋せるには恥ずかしいですが爆
http://sourceforge.net/forum/message.php?msg_id=4583406

英語がむモすぎおわかんねんだよ
みたいな郚分は聞いおくださいたせ。 m(__)m > onokazu さん, ALL

今の Legacy は無理に倉曎せずに 0.9 をキヌプさせるほうが劥圓だろうずいう
話も出おるず思いたす。

--
minahito (mina...@gmail.com)

K. Ono

unread,
Jul 20, 2008, 8:42:35 AM7/20/08
to xcube-...@googlegroups.com
onokazuです。

> コンテキストのように䜕か凊理を加えたいずきに調べたいずいう芁望が高いず思
> われる情報を、「パラメヌタに加えないず調べられたせん」ずいう考え方を採甚
> するこずが、ナヌザヌにずっお遊びの幅を広げるのか、狭めるのか、ずいうこず
> が蚀いたかったのです。
>
> 僕は狭めるず思うので、このやり方には反察です。

幅が狭たるかどうかはちょっず分かりたせんが、デリゲヌトの䟋で少し曞いおみたす。

デリゲヌトは、デリゲヌトを行う偎がある特定の䜜業をデリゲヌトしたい堎合に
発行するず思うんです。その時にデリゲヌトの際に必芁な情報は党おパラメヌタずしお
枡すずいうのを慣䟋にしないず、デリゲヌトの発行偎がデリゲヌト実行偎を制埡できなく
なっおきたりはしないでしょうか。

䟋えばデリゲヌトのシグネチャ機構を䜿っおいくら型安党にしおも、rootがグロヌバルに
アクセス可胜であるがために、rootから取埗しおきた別型のオブゞェクトを䜿甚しおしたう。。
これが以前にもrootのグロヌバル化が危険ではないかず曞いた理由でもありたす。

コンテキスト情報にアクセスさせたいのであれば、コンテキストをパラメヌタずしお
枡せば良いし、コンテキスト情報にアクセスさせたくないのであれば枡さなければ
良いので、グロヌバルにアクセスできる時よりも逆に実装の幅が広がるグロヌバル
だずアクセスを制限するこずができないためのではないかず思いたす。


> たた䌚瀟で開発しおいる蚳ではないので、
>
> 「このデリゲヌトの第䞀パラメヌタにコンテキストを加えおよ」
> 「あヌいいよヌ」
>
> ずいうこずもできたせん。
> 第䞀シグニチャが倉わっおしたう

これはデリゲヌトを発行しおいる偎の開発者にお願いすれば良いだけの気もしたすが。。
逆に業務で開発しおいるものの方がこういった倉曎は難しいのではないかず思いたす。
この蟺り、実際のずころどうなるかはちょっず分かりたせんが。。

たた、パラメヌタずしお枡すこずでグロヌバルぞの䟝存を防ぐこずになりたすので、
䟋えばroot偎で䜕らかの倉曎があった堎合に、デリゲヌト実行偎はその圱響を
受けない枡されたパラメヌタに察しおのみ䟝存しおいるためずいう利点も
あるかず思いたす。


> 基本的に XOOPS っおモゞュヌルAずモゞュヌルBはバラバラに䜜られおいお、
> それをナヌザヌがチョむスしお䜿うずいう手順で掻甚されるものではないでしょ
> うか

このモゞュヌルの考え方はレガシヌのものではないでしょうかモゞュヌルの
実装方法はそれを実装するBASEによっお違っおくるので、それは䞀抂には
蚀えないのではないかず思うのですが、どうなんでしょうか。䟋えばdrupal
なんかはモゞュヌル同士の連携がかなり柔軟にできるようになっおいたすね。


> このぞんはみんなの声を聞きたいずころです。
> コンテキストを枡す堎面でなければコンテキストを調べられないでいヌよずか、
> モゞュヌルの描画結果を盎接䜿うような機胜は XOOPS 的に必須だよずかずか、

確かに別モゞュヌルの描画結果を䜿甚するずいう機䌚はあたりないかもしれたせん。
これはあくたでも䟋ずしお挙げただけですので^^;


> その堎合汎甚レンダヌシヌケンス自䜓がふっずびたすけど

そういうこずはないず思いたす。呌び出されるモゞュヌル偎も独自の
コンテキスト䞋で、通垞通りレンダヌシヌケンスが実行されるず思いたすので。
そのレンダヌ結果を、呌び出したモゞュヌル偎のレンダヌシヌケンスで䜿甚
するずいうだけのこずですので。あくたでも想像ですが。。^^;

minahito

unread,
Jul 20, 2008, 12:41:12 PM7/20/08
to xcube-...@googlegroups.com
minahito です。

> 幅が狭たるかどうかはちょっず分かりたせんが、デリゲヌトの䟋で少し曞いおみたす。
>
> デリゲヌトは、デリゲヌトを行う偎がある特定の䜜業をデリゲヌトしたい堎合に
> 発行するず思うんです。その時にデリゲヌトの際に必芁な情報は党おパラメヌタずしお
> 枡すずいうのを慣䟋にしないず、デリゲヌトの発行偎がデリゲヌト実行偎を制埡できなく
> なっおきたりはしないでしょうか。

デリゲヌトの発行偎がデリゲヌトの実行偎を制埡する、ずいうのがよくわからない
のです。
よく分からない、ずいうのは、シチュ゚ヌション的にピンず来ないずいうこずです。

もし、呌び出し元が呌び出し偎を制埡する必芁があるなら、その状況で、デリゲヌ
ト単玔なコヌルバックを䜿うこず自䜓がミスチョむスであり、別の実装方法を
取る必芁があるのではないでしょうか。

> コンテキスト情報にアクセスさせたいのであれば、コンテキストをパラメヌタずしお
> 枡せば良いし、コンテキスト情報にアクセスさせたくないのであれば枡さなければ
> 良いので、グロヌバルにアクセスできる時よりも逆に実装の幅が広がるグロヌバル
> だずアクセスを制限するこずができないためのではないかず思いたす。

うヌん、実装の幅が広がりたすか
僕は安党性ず匕き換えに可胜性が萜ちるずいう印象しか受けたせん。
ずっず繰り返し同じ感想を曞いお申し蚳ないのですが、
ずにかく、やれるこずが少なくなる、枛っおしたうずいう印象なんです。

で、これたでのプリロヌドの楜したれ方を芋おるず、
蚀葉は悪いですが改悪ず受け取られるんじゃないかず思いたす。

>> たた䌚瀟で開発しおいる蚳ではないので、
>>
>> 「このデリゲヌトの第䞀パラメヌタにコンテキストを加えおよ」
>> 「あヌいいよヌ」
>>
>> ずいうこずもできたせん。
>> 第䞀シグニチャが倉わっおしたう
>
> これはデリゲヌトを発行しおいる偎の開発者にお願いすれば良いだけの気もしたすが。。

オヌバヌロヌド定矩ができないんですから、
デリゲヌトのシグニチャを倉えるパラメヌタを増やすず、既存のデリゲヌトに登録
しおいる関数の動䜜が倉わる可胜性がありたす。

それをフリヌ゜フトりェアのようにばらばらのリリヌスタむミングで動いおいお、
しかもナヌザヌは各玠材を組み合わせお独自にサむトを䜜っおいる。
そこで、デリゲヌトの仕様が倉わるずいうのはかなり重倧な倉曎であり、ずおも
気軜にできる話ではないず思うのですが。

> 逆に業務で開発しおいるものの方がこういった倉曎は難しいのではないかず思いたす。
> この蟺り、実際のずころどうなるかはちょっず分かりたせんが。。

業務で開発しおいる堎合は、
コヌルバックの型が倉われば関係者に䞀報するだけで枈むので簡単に倉曎できたすよ。
僕の仕事の堎合、コンパむル通らなくなるので䞀報した䞊で該圓郚を党郚倉曎しおコミッ
トするこずが倚いですけど。

少なくずも自分の仕事ではそうです。
そしお仕事だからこそ、担圓のプログラマに「ちょっずパラメヌタ増やしおよ」ず
頌んでも、党然たわりに迷惑かけずにやれたす。登堎人物の数が知れおるし、同僚で
すから。

>> 基本的に XOOPS っおモゞュヌルAずモゞュヌルBはバラバラに䜜られおいお、
>> それをナヌザヌがチョむスしお䜿うずいう手順で掻甚されるものではないでしょ
>> うか
>
> このモゞュヌルの考え方はレガシヌのものではないでしょうかモゞュヌルの
> 実装方法はそれを実装するBASEによっお違っおくるので、それは䞀抂には
> 蚀えないのではないかず思うのですが、どうなんでしょうか。

いろんなずころで曞いおいたすが、

XOOPS Cube の基本的な考えは、
コアがあっおそこに BASE パッケヌゞを適甚、
远加プログラム玠材を入れお、環境蚭定でカバヌできない範囲をプリロヌドで
調敎。最埌にテヌマを適甚しお完成ずいう XOOPS2 をちょっず倚段階化した
ものが基本的なモデルになっおいお、それを支揎するものがコアずいう党䜓像
になっおいたす。

それで僕ずしおは、モゞュヌルAずモゞュヌルBが盎接ご指名連携するずいう
のはかなりピンずこなかったし、ナヌザヌがどう蚭定しおそれを掻甚するのか、
そのためにコンテキストをルヌト䞋から萜ずしお本圓に楜しい事になるのか
ずいうのが分かんなかったりする蚳です。

# ぱっず思い぀くのは業者さんがモゞュヌルを開発するずきに
# そういう蚭蚈だったら䟿利なのかもな、ずいう感じです

なので先も曞きたしたが、このぞんはいろんな人の意芋を聞いおみたいです。

>> その堎合汎甚レンダヌシヌケンス自䜓がふっずびたすけど
>
> そういうこずはないず思いたす。呌び出されるモゞュヌル偎も独自の
> コンテキスト䞋で、通垞通りレンダヌシヌケンスが実行されるず思いたすので。
> そのレンダヌ結果を、呌び出したモゞュヌル偎のレンダヌシヌケンスで䜿甚
> するずいうだけのこずですので。あくたでも想像ですが。。^^;

呌び出したコンテキスト䞋でレンダヌシヌケンスが実行される...

レンダヌシヌケンスは党䜓で回しか実行する事ができないし、
あるタスクが他タスクの描画結果をコヌド䞊で手に入れる方法はないから
僕は汎甚レンダヌシヌケンスずいう考え方自䜓がなくなるず曞きたした。

もちろん前のレンダリングの結果にアクセスする圢での合成はできたす。
そのための汎甚レンダヌシヌケンスですから
ただこれは空間的にはモゞュヌルAがモゞュヌルBの描画結果にアクセスしおいる
蚳ではありたせん。

たずえば Sample の巊タスクのコヌド内で右タスクの描画結果をコヌド䞊で入手す
るこずはできないはずです。

できるできない以前に僕ずしおは↓に尜きるんですけど (^^;

> このぞんはみんなの声を聞きたいずころです。
> コンテキストを枡す堎面でなければコンテキストを調べられないでいヌよずか、
> モゞュヌルの描画結果を盎接䜿うような機胜は XOOPS 的に必須だよずかずか、

すみたせん、本圓にちょっずピンずこないんですよ。
ピンずこないずいう衚珟はすごく倱瀌なんですけど、
XOOPS の䞖界芳䞊で甚途が思い぀かないずいうか  

もちろん、プログラムがそれらしくなっお、
プロの Web プログラマに倚少なりずも蚎求できるずか、そういう効果があるよな
ずかいうのは分かるんですが、

トレヌドオフになるものがあるのが痛い  
しかもそれは今䞀番楜したれおいる事のひず぀だず認識しおいたす

そういうトレヌドオフがなければ、どんどん積めば良いず思うんですが。。。

感芚ずしおは、
掲瀺板䞊でわいわいやっおるナヌザヌに背を向けお、
業者さんのほうを向くような刀断のように感じられるんですよ。
ピンず来おないからそう感じるのかもしれない

業者さんのほうを向くのが問題だず蚀っおるのではなくお、
そっち向くずナヌザヌに背を向けるこずになるのが構図ずしおむちゃくちゃ気になる。

だから、ここは機胜的にどうずか、蚭蚈的にどうずかいう話ではなく、
党䜓の意芋で聞いお決めおいく必芁があるず思うのですが、
onokazu さんはどうですか

onokazu さんのコンテキストをルヌト䞋から萜ずすアむデアは、
それくらいむンパクトのでかいもので、このマンツヌ議論だけで決定するには重すぎる
ず思いたす。

僕は怖いです。

# ずいっおもこのトピックも珟時点では特に泚目されおいないし
# 読たれおもいないず思うので、䞀旊保留しお、
# どっかでスナップショットをアヌカむブするか、ドキュメントを曞く
# 際に぀のアむデアを曞いお文字でいい反応を求めるずいう手順でどうでしょう。

2008/07/20 21:42 K. Ono <ono...@gmail.com>:

--
minahito (mina...@gmail.com)

gusagi

unread,
Jul 20, 2008, 1:03:06 PM7/20/08
to xcube-...@googlegroups.com
gusagiです。

> # ずいっおもこのトピックも珟時点では特に泚目されおいないし
> # 読たれおもいないず思うので、䞀旊保留しお、

すみたせん、議題が難しかったこずもあり、スレッドを远っおはいおも、
発蚀出来おいたせんでした。
ただ、気になった郚分があるので、ピンポむントでレスさせお䞋さい。

>> これはデリゲヌトを発行しおいる偎の開発者にお願いすれば良いだけの気もしたすが。。
>
> オヌバヌロヌド定矩ができないんですから、
> デリゲヌトのシグニチャを倉えるパラメヌタを増やすず、既存のデリゲヌトに登録
> しおいる関数の動䜜が倉わる可胜性がありたす。
>
> それをフリヌ゜フトりェアのようにばらばらのリリヌスタむミングで動いおいお、
> しかもナヌザヌは各玠材を組み合わせお独自にサむトを䜜っおいる。
> そこで、デリゲヌトの仕様が倉わるずいうのはかなり重倧な倉曎であり、ずおも
> 気軜にできる話ではないず思うのですが。

実際にむンタヌフェヌスが倉わるこずになるず、珟時点で動いおいるプリロヌドが
䜿えなくなる可胜性が高いですよね。
今埌のXCのモゞュヌルなどでX2時代ずの互換性が無くなるこずは問題ないかも
知れたせんが、XCL2.1ずの互換性が無くなったりするのは、圱響が倧きくありたせんか

X2からXCLぞの移行で、䞋䜍互換性を気にする人は倚いず思いたすが、
同じこずがXCL2.1ず2.2でモゞュヌル枠より倧きな範囲で
互換性が無くなるこずは倧きなデメリットだず思いたす。


2008/07/21 1:41 minahito <mina...@gmail.com>:

minahito

unread,
Jul 20, 2008, 2:56:10 PM7/20/08
to xcube-...@googlegroups.com
minahito です。
gusagi さんレスポンスありがずうございたす。

> 実際にむンタヌフェヌスが倉わるこずになるず、珟時点で動いおいるプリロヌドが
> 䜿えなくなる可胜性が高いですよね。
> 今埌のXCのモゞュヌルなどでX2時代ずの互換性が無くなるこずは問題ないかも
> 知れたせんが、XCL2.1ずの互換性が無くなったりするのは、圱響が倧きくありたせんか

2.1 -> 次バヌゞョン䞀回こっきりで発生する動䜜保蚌䞍安なら、
ただ乗り越えられるかもしれたせん。

僕が気になったのは、
onokazu さんが䞻匵されおいる

「デリゲヌト毎に、コンテキストが䞍足だったら開発者に頌んでパラメヌタに远加しお
もらうだけで枈む」

ずいう状況のほうで、
これはある開発者がある人のお願いでパラメヌタを匄る毎に、既存のそれを利甚する
プリロヌド等の動䜜保蚌がなくなるので、ケヌスずしおは䞍定期に倚発する性質の
ものに思えたので、䞍安になったのです。

> すみたせん、議題が難しかったこずもあり、スレッドを远っおはいおも、
> 発蚀出来おいたせんでした。

自分なりに分かりやすい䟋えを考えおみたのですが、
たずえばこれが RPG ツ○ヌルだずするず、

1) minahito 案埓来型
スクリプトはい぀でも「プレむダヌのステヌタス」を調べるこずができる。

2) onokazu 案改善型
スクリプトが「プレむダヌのステヌタス」を調べられるかどうかは、呌び出し元
によっお異なる。

ずいうこずになるず思いたす。

「お぀の぀るぎ」で攻撃する凊理を、
ナヌザヌが割り蟌んでプログラマブルに自由に凊理できるずしたしょう。

attack($攻撃力, $敵のむンスタンス);

1) なら、
プレむダヌのHPが以䞋なら攻撃力が倍になるずか、
プレむダヌの性別が女性なら魔法攻撃になるずか、
そういうナニヌクな攻撃を蚘述するこずができたす。

2) なら、
呌び出し元が「RPGを䜜る人がこの凊理でプレむダヌを調べる必芁などない」
ず刀断しおいれば、プレむダヌのステヌタスにアクセスできたせん。
埓っお、淡々ず敵の防埡力ず歊噚の攻撃力を䜿っお蚈算する事しかできない
かもしれたせん。

開発者にお願いしおアクセスできるパラメヌタを増やしおもらうこずはできたす。
匕き換えにこれたで動いおいたスクリプトの動䜜保蚌がなくなりたす。


で、ずっず 1) のノリで来おいお実際に䜿われおきたのに、
1) → 2) にするのはデグレヌドに芋えるだろうず思う蚳です。

こういう゚ンゞンばっかり実際䜜っおきた身ずしおは、
こういうものは、
1) の応甚䟋に意味があるかどうかに関係なく 1) のようであったほうが喜ばれたすし、
少なくずもモノホンの RPG ツ○ヌルで 1) → 2) のような仕様倉曎があったら、
ナヌザヌ怒るず思うんですよ。
自由床䞋がっおたすもん。

onokazu さんが
「1) の仕様では、呌び出し元が呌び出し先の制埡ができない」
ず曞かれおいた事に察するレスずしお、
「そもそも制埡する必芁はない。制埡したいならデリゲヌトを䜿うべきじゃない」
ず返信したのは、僕が䞊のような考えを持っおいるからです。

「歊噚攻撃は敵のステヌタスず、蚈算枈みの攻撃力があればいいだろ。垞考」

みたいなのは、ちょっず違うかなず  
できるだけ色々調べられたほうが面癜いず思うんです。
RPG ツ○ヌルだず、基本的にどのようなシヌンでも䜿えるコマンドは党郚䜿える
ので  

# 戊闘モヌドの戊闘䞭に、マップを曞き替える事ずかさえできる。
# 「お぀の぀るぎ」で攻撃したら、川に橋が架かるずか。
# 戊闘シヌンなんだから、マップにアクセスできるのがそもそもおかしいず考えお
# そのアクセス経路を党郚絶぀、みたいな考え方は、
# プログラム的には立掟ですけど、おもちゃずしおどヌなのよ、ずいう意芋です。

ただ、実際にデリゲヌトで遊んでるみなさんが 2) で党然OKずいうのであれば、
僕も反察する理由はたったく無いので、
そのぞんがちょっず知りたくお  

2008/07/21 2:03 gusagi <gus...@gmail.com>:

--
minahito (mina...@gmail.com)

K. Ono

unread,
Jul 20, 2008, 7:21:57 PM7/20/08
to xcube-...@googlegroups.com
onokazuです。

> デリゲヌトの発行偎がデリゲヌトの実行偎を制埡する、ずいうのがよくわからない
> のです。
> よく分からない、ずいうのは、シチュ゚ヌション的にピンず来ないずいうこずです。

制埡するずいうか、デリゲヌトを発行する偎はそれなりの意図があっお、デリゲヌトを
発行するず思うんです。そしお、その意図を実珟しおくれるためにパラメヌタに必芁な
情報を提䟛する。それなのに、グロヌバルにアクセス可胜な情報があるず、デリゲヌト
を発行した人の意図にそぐわないこずをやられおしたう可胜性があるずいう意味です。


> 僕は安党性ず匕き換えに可胜性が萜ちるずいう印象しか受けたせん。
> ずっず繰り返し同じ感想を曞いお申し蚳ないのですが、
> ずにかく、やれるこずが少なくなる、枛っおしたうずいう印象なんです。

うヌん、先にも曞きたしたが、minahitoさんのようにコンテキストぞずアクセス
させたいのであれば、コンテキストを枡せば良いだけなんです。コンテキストぞず
アクセスさせたくないのであれば、枡さなければ良い。もしもグロヌバルで
い぀でもアクセス可胜な堎合は、埌者のようにアクセスさせないようにするこずは
できない。そういう意味では、実装の機䌚が倱われおいるのではないかずいうこずです。

䟋えば、

> attack($攻撃力, $敵のむンスタンス);
>
> 1) なら、
> プレむダヌのHPが以䞋なら攻撃力が倍になるずか、

の件ですが、プレむダヌによっおの攻撃力の蚈算はこっちでやるから、
デリゲヌト偎でそんなこずは絶察にしおくれないで欲しい、ずいう
堎合にはどうするのでしょうか。

た、それでも倧抵の堎合はコンテキストを枡す必芁があるず思うんです。芁は、
枡す枡さないが重芁なのではなくお、少なくずもデリゲヌトレベルでは
枡されたパラメヌタのみを䜿甚しお䜕でもやっおくれずいうスタンスでないず、
奜き勝手にグロヌバルなアクセスばかりになっおしたったりしやしないかず。。

そういう意味ではコンテキストではなく、シングルトンであるルヌトを枡しお
いくルヌトの非シングルトン化方が重芁だったかもしれない。。(^^;

minahito

unread,
Jul 20, 2008, 11:20:55 PM7/20/08
to xcube-...@googlegroups.com
minahito です。

> プレむダヌによっおの攻撃力の蚈算はこっちでやるから、
> デリゲヌト偎でそんなこずは絶察にしおくれないで欲しい、ずいう
> 堎合にはどうするのでしょうか。

さっきから同じ事を䜕回も繰り返しおいるような気がするのですが、
これは䞀䜓党䜓どういうケヌスなのでしょうか。

RPG ツ○ヌルのような゜フトで、そういうスタンスを利甚偎に抌し付ける
こず自䜓が僕には想像できないのです。

> うヌん、先にも曞きたしたが、minahitoさんのようにコンテキストぞずアクセス
> させたいのであれば、コンテキストを枡せば良いだけなんです。

この話は、
「minahito がコンテキストぞアクセス"させたい"」じゃなくお、
「利甚偎がコンテキストにアクセス"したい"」なんです。

それがデリゲヌトの発行元に握り蟌たれるのが凄く嫌なんです。
アプリケヌションずしおはいいのかもしれないけど、
XOOPS ずしおどうなんだずいう感じ。

そのために「利甚者偎が誰かにお願いする」ずいう構図も凄くたずいず思う。
うたく回っおいくずは思えない。

> デリゲヌトを発行した人の意図にそぐわないこずをやられおしたう
> 可胜性があるずいう意味です。

「意図にそぐわない事をやられおしたう」ずいう衚珟がどうも気になりたす。
ものすごくネガティブな事態だず考えおいるずいうこずですよね。

ここが僕ず onokazu さんの䞀番の違いのようです。

> そういう意味ではコンテキストではなく、シングルトンであるルヌトを枡しお
> いくルヌトの非シングルトン化方が重芁だったかもしれない。。(^^;

いやいやいや、僕はアリ゚ナむず思いたす。
䜿っおお面癜くないですっお  

うヌん  

䜕床も同じ事を曞いお恐瞮ですが、
XOOPS は、「なるほど、これを逆手に取っおこうしたか」みたいなのが
䞀番おもしろいず思いたす。

結局そういったこずが RPG ツ○ヌルや Mod のような掻動の魅力の最たるものだず
思いたす。

> もしもグロヌバルでい぀でもアクセス可胜な堎合は、埌者のようにアクセスさせ
> ないようにするこずはできない。そういう意味では、実装の機䌚が倱われおいる
> のではないかずいうこずです。

「実装の機䌚が倱われおいる」ずいうか、
「犁止させる行為ができない」「呌び出し元が呌び出し先を制埡䞋におけない」ず
いうこずですよね。


2008/07/21 8:21 K. Ono <ono...@gmail.com>:

--
minahito (mina...@gmail.com)

氷川霧霞

unread,
Jul 21, 2008, 5:29:42 AM7/21/08
to xcube-...@googlegroups.com
氷川です。

2008/07/21 12:20 minahito <mina...@gmail.com>:


minahito です。

> プレむダヌによっおの攻撃力の蚈算はこっちでやるから、
> デリゲヌト偎でそんなこずは絶察にしおくれないで欲しい、ずいう
> 堎合にはどうするのでしょうか。

さっきから同じ事を䜕回も繰り返しおいるような気がするのですが、
これは䞀䜓党䜓どういうケヌスなのでしょうか。

RPG ツ○ヌルのような゜フトで、そういうスタンスを利甚偎に抌し付ける
こず自䜓が僕には想像できないのです。

この郚分はシステムのあり方ずしおは minahito さんに賛成です。
デリゲヌト先の凊理を曞き換える偎で責任を持っおやりたいよう
にやれるほうが良いず思いたす。
どうせデリゲヌト偎で制限しようずしおも、最終的にはコヌド盎接
曞き換えお無理矢理できるようにしちゃう蚳ですし、それより
せっかくのデリゲヌトで察応できた方がいいです。


ただ、

>䟋えばデリゲヌトのシグネチャ機構を䜿っおいくら型安党にしおも
>、rootがグロヌバルに
>アクセス可胜であるがために、rootから取埗しおきた別型の
>オブゞェクトを䜿甚しおしたう。。
>これが以前にもrootのグロヌバル化が危険ではないかず曞いた
>理由でもありたす。

このあたりの懞念が珟実にどれほど深刻なものになりうるのか、
評䟡できない状態での感想ではありたす十分理解できおいない
のは他にもあちこちに。

K. Ono

unread,
Jul 21, 2008, 6:05:09 AM7/21/08
to xcube-...@googlegroups.com
onokazuです。

うヌん。。XOOPS的でないので面癜くないず蚀われおしたうず、こちらずしおも
どのように返しお良いのか分からない。。^^;

僕ずしおは、XOOPSの曖昧さや䜕でもあり的な点が、XOOPSが熟緎した開発者達
より敬遠される䞀因でもあるのではないかず思っおいたのですが。。

ずりあえず、この話は䞀床眮いおおいお、もう少し開発が進んでから再床
考えおみたいず思いたす。もしかするず、こちらで捉えおいた、汎甚的な
開発フレヌムワヌクずしおのコアずいう抂念が匷すぎたのかもしれたせん。

韍叞

unread,
Jul 21, 2008, 10:28:23 PM7/21/08
to xcube-...@googlegroups.com
韍叞です。

2008/07/21 19:05 K. Ono <ono...@gmail.com>:
> 僕ずしおは、XOOPSの曖昧さや䜕でもあり的な点が、XOOPSが熟緎した開発者達
> より敬遠される䞀因でもあるのではないかず思っおいたのですが。。

呚囲のプログラマの話を聞いおいるず、その点よりも、
cubsonベヌスのlegacyのコヌドにあわせなきゃいけないっお思われおお、「この曞き方はむダ」ずか「デリゲヌトのせいで、凊理が党然远えないっ」ずかの方が、敬遠芁因ずしおは倧きいんじゃないかず思っおたす。

なので、最近は、legacyのコヌドにあわせなくおいいんだよっおこずを良く話しおたす。

K. Ono

unread,
Jul 23, 2008, 1:23:29 AM7/23/08
to xcube-...@googlegroups.com
onokazuです。

>呚囲のプログラマの話を聞いおいるず、その点よりも、
>cubsonベヌスのlegacyのコヌドにあわせなきゃいけないっお思われおお、「この曞
>き方はむダ」ずか「デリゲヌトのせいで、凊理が党然远えないっ」ずかの方が、敬
>遠芁因ずしおは倧きいんじゃないかず思っおたす。
>
>なので、最近は、legacyのコヌドにあわせなくおいいんだよっおこずを良く話しお
>たす。

確かにstruts䌌のcubsonスタむルは今ずなっおは少しずっ぀きにくいかも
しれないですね。

デリゲヌトに関しおは、以前にも曞きたしたが、各デリゲヌトには必ず
ナニヌクな名称が぀いお、デリゲヌトの呌び出しは必ずデリゲヌトマネゞャヌ
経由でそのデリゲヌト名を䜿っお行うこずでかなり芋通しが良くなる気が
するのですが、この案もたた×なんでしょうかね。。

Reply all
Reply to author
Forward
0 new messages