Re: [Fswiki-dev] Re: FSWiki4.0 につい て

Naoki Takezoe takez****@gmail*****
2005年 3月 23日 (水) 11:14:53 JST


竹添です。

On Wed, 23 Mar 2005 00:27:28 +0900, あき <attin****@kk*****> wrote:
> あきです。
> 
> > > V3.5は、後先を考えずにいろんな機能を詰め込んできた、というくらいですの
> > > で、そういった遺産を引きずることは、今後の発展にも開発速度という面に
> > > おいて影響することが懸念されます。
> > > V4.0では、「後先を考えずに・・・」を極力排除し、以降のバージョンでも
> > > ずっと互換を保っていけるような、そんな洗練された設計を切に望みます。
> > > (そうしていきたいです)
> > > 特に私的には、コア部分とプラグインの棲み分けをキッチリと線引きしたい
> > > と思っています。
> >
> > 線引きとしては今と変わらないと思います。includeプラグインだけは例外
> > で、現在はプラグインでありながら半分はコアみたいな感じになってます。
> > (これはなんとかしたいです)
> 
> 勢いで発言してしまい、申し訳ありません。
> 『フレームワーク』という言葉が出てきましたので、そういった観点でソース
> を拝見させて頂きました。(「何を今更」と言われるかもしれませんが)
> 
> 私が気にしていたのは、プラグインによってはかなり深い部分まで立ち入ってい
> る部分もあり、このような状態ではたとえどんなにしっかりとした骨格を作って
> も、互換性をとり続けることは困難であろう、という点でした。
> その対策として、コア側では1枚のレイヤー(一般的にはAPIだとか、コンポー
> ネントだとか)を設け、プラグインには原則そのレベルにまでしかアクセスを
> 許さない。それ以上は互換性の保証対象外とする。
> といったふうにすれば棲み分けが出来るであろうと考えていたのです。

その考え方は正しいです。私もそのように考えています。

今はWiki.pm、Util.pmなどのモジュールがプラグインから見た場合にFSWikiの
コア機能を利用するためのインターフェースになっていますが、APIが不十分で
あるなどの理由で、プラグインが直接ファイルシステムにアクセスしたりというような
ことを行っています。これは避けたいです。そのために、汎用的に利用可能な
ページ属性という仕組みや、キャッシュ機構をコア側で提供したいと考えています。

> しかしどちらかというと竹添殿の考えは逆なのですね。
> そいうたレイヤーを設けると、むしろ性能(速度)面が問題になってくる。
> ただでさえ速度を気にしてるのにこれ以上遅くなる要素など入れたくない、と。
> おおかたそんなところかと思います。

いえいえ、逆ではないです。上記の通り、考え方は同じだと思います。

> 開発可能なプラグインの種類、私はパラグラフとインラインくらいしか知らなか
> った(他にもあるのは知っていたが、興味が無かった)のですが、意外とじっく
> り見ると使えそうなものがありますね。
> 基本的にはベースの機能の殆どを塗り替えることが可能なほどでしょうか。
> つまりは、表面的な部分から根っ子の部分に至るまで、いかようにでも料理して
> 下さい、というスタンスだったわけですね。

FSWikiはページの編集といった基本的なUIもプラグインとして実装されていますから、
これらのプラグインを取り替えることで、Wikiとはまったく異なるWebアプリケーション
を構築することも可能です。

今の3.5系について説明しますと、コア部分はWikiパーサ、データ管理、認証機能、
WikiFarm機能、プラグイン機構などを備えたフレームワークで、そのうえに各種プラ
グインを載せることでFSWikiが動いています。プラグインを全て外せばそれだけでは
何の役にも立たないモジュールの集まりなわけです。

ただ、だからといって「全てご自由に」というわけではなくて、現在のプラグインがかなり
プリミティブな部分まで触っているのは単に現状のコア部分のAPIが不足しているから
だと思います。その辺は4.0でフォローしていきたいと思っています。

> > 私が発言したのは、「用意しても誰も使わずに性能低下の原因となるだけ
> > のレイヤは設けたくない」という趣旨のものです。ここで仰っているレイヤー
> > というのはどのようなものでしょうか?
> 
> 既に考えは伝わったか、と思いますが、念のため私がイメージしていたものを
> 記載しておきます。
> 私がいうレイヤーとは、ネットワーク階層モデルのような、あるレイヤの機能は、
> それより下位のレイヤの機能の集合体によって構成され、また、そのレイヤの
> 機能は、それより上位のレイヤによって利用される。
> 
> といったものです。
> プラグインが手を出せるのはこの階層まで、と線を引けば、コア、プラグイン
> 共に、相手の取り分についてはあれこれと考える必要がなく、自分の取り分に
> 専念できるのでは?
> と思っていた次第です。
> このようにすれば、将来互換を保ち続けるのも比較的に楽にできますよね。

具体的に私が言っているのは

・永続化レイヤ
・Wikiパーサからフックされるインターフェース

といったところです。前者はRDBなどへの対応も考慮して抽象化していたのですが
結局あまり利用されることはなかったみたいですし、後者に関してもWikiテキストから
HTMLだけでなくPDFなどへの変換も考慮して抽象化していたのですが、HTMLに
特化したほうがいいのかな?という考えもあって、4.0ではどうしようかと悩んでいる
ところです。

プラグインから利用可能なAPIという意味ではもちろん、仰るとおりレイヤ化(と呼ぶ
のが適切かどうかわかりませんが…)は必要です。
そのためのフレームワークですから。

-- 
Naoki Takezoe <takez****@gmail*****>


Fswiki-dev メーリングリストの案内
アーカイブの一覧に戻る