基本的に我々には我々の好きなものを作り、そしてそれを好きなライセンスで公開する自由があります。administrativeな話は後回しでいいんじゃないかと思います。
シックス・アパートに儲けていただきたいというのは私も同意見なのですが、我々がどのように「自由」を行使したにせよ(シックス・アパートに同情的に行動したにせよ)、プロフェッショナル・パッケージやテクニカル・サポートを買うに値する商品であり続けるようにするのは会社の責任においてやってもらう他ないです。
進地さんにはフロントエンド機能とバックエンド機能という説明をしましたが、私の意図をもう少し正確に述べるとこういうことです。
機能的には、
- 拡張フィールドをハンドリングするためのバックエンド機能をその他のフロントエンド部分と分離する。
- フロントエンド部分の実現によって好みのインタフェースが実現できて、みんなハッピー!
ということです。ライセンス的には、
- バックエンド機能のコードが成熟すれば、MTOSに寄贈する。MTOSの他の部分と同様にシックス・アパートが著作権を持つオープンソースとなる。
- CustomFieldsをこのバックエンドを使うように書き直す。CustomFieldsは商用ライセンスのままでOK
- その他のオープンソースプラグインもバックエンド機能を使えるので、みんなハッピー!
ということです。
つまり、一挙両得を狙おう、と。
2008/4/16 しんち <shinc...@gmail.com>:
--
Hirotaka Ogawa
http://twitter.com/ogawa
http://as-is.net/blog/
>> ただ、CustomFieldsという形ではなくても、MTOSのユーザコミュニティ、SixApart、およびMTOSビジネスを考えている立場の方、みんながそれぞれに喜べる形を作っていけたらなと思っています。その点、Six
Apartの中の人のご意見聞けたらうれしいんですが^^<<
中の人の立場上、MTOS[でを]ホゲりたいとおっしゃっている方に、「あれをしろ、あれはするな、これは困る、これはかまわない」とかは言えないです。ご自身のお気の向くまま、自由な精神でソフトウェアを開発していただければいいと思います。MTOSがその気持ちのトリガであり、また土台になるのであれば、MTOSプロジェクトのそもそもの提供者として、うれしい限りです。シックス・アパートのビジネスどうこうはシックス・アパートがパートナー様ともども考えればいいことで、オープンソースプロジェクトの開発者が最初に考えるべきことではありません(ご自身のビジネスについては考える必要があると思います)。
ところで、Custom Fieldsの周辺は、MTOSのリポジトリを眺めていただければわかるとおり、大きく手を入れようとしています。
吉松 史彰
Movable Type 開発チーム
シックス・アパート株式会社
どのあたり?
>
> 吉松 史彰
> Movable Type 開発チーム
> シックス・アパート株式会社
>
--
すいません、MLの場でこういった出だしのメールをお送りするの
は気がひけるのですが、
私が以下のようなメールをしんちさんにお送りしたのは、「アルファ
サードの野田<<スーツの方の野田」から「アークウェブのしんち」さ
んへお送りしたということです。既にMLに流れてしまったわけで
すが、
> ただ、既に野田さん、小川さん、蒲生さん、丹羽さんには直接メール
> でお話させていただいてまして、その折に野田さんから、
>
> - MT製品版とMTOSの差が実質CustomFieldsのみである
> 状況でCustomFieldsを出してしまうのはSixApartにとって
> どうなのか?
> - SixApartがCustomFieldsをMTOSにも提供しちゃった
> ら?
> - MTOSで開発するなら、まだ存在しない機能で、かつ
> SixApartが買いとりたくなるような機能がよいのでは?
基本的にライセンスに則っていればいいわけですから、そもそも私が
(この場で)そんなことを言うのがおかしいじゃないか?という話
になっても困るので、その点は私がここでそういう発言をした、という
ことではないことにしてください(いや、本当にこんなメール送
るの気が引けるのですがすいません)。
なので、好きなものを作成すれば良いと思います。が、せっかく情報を
共有できるのであれば、既にあるものを作るよりは「まだ存在しなく
て、且つプラットフォームの魅力がアップするもの」がいいと思ってま
す。
私が個人的にあればいいと思っているのは、
(1)AdobeのFlexとかJSのライブラリを活用したアセットの
アップロードを便利にする仕組み(複数ファイル、ドラッグ&ド
ロップ)
(2)ファイルブラウザ、画像のトリミングとか補正とかが管理画面で出
来るもの
(3)日付ベースで管理するのではなく、エクスプローラーみたいなもの
でエントリー管理できるもの
(4)管理画面の携帯対応化、携帯版ページの作成
で、4については既に簡単なものは出来ており、近いうちに何ら
かのものが公開できると思います(<<近いうちでなかったらごめんな
さい)。
http://code.sixapart.com/svn/movabletype/branches/feature-narrow-tables/
2008/4/16 Hirotaka Ogawa <hirotak...@gmail.com>:
吉松
素晴らしい!
てことは、MTOSであらかじめバックエンド相当の機能は提供されることになるので、Six
Apartはその上でCustomFieldsを実装し直す、コミュニティはCustomFieldsもどきでも何でも実装する、ということになりますね。そして相互運用性も保証される、と。
ということで実装を開始するのはちょっと待った方がいいです。>進地さん
> On 4/16/08, Hirotaka Ogawa <hirotak...@gmail.com> wrote:
> >
> > MT::Metaというのをどこかで見た気がしていましたが、feature-narrow-tables のことですね。
> >
> > http://code.sixapart.com/svn/movabletype/branches/feature-narrow-tables/
>
--
2008/4/16 しんち <shinc...@gmail.com>:
えーっと、それくらいの機能が実装されているのかと思いましたが、違いました。
もともとCustomFieldsなどはmt_entryテーブルのentry_metaカラムにシリアライズしたデータを格納するようになっていました。この方法にはいくつか問題があって、代表的なものを挙げると、
(1) entry_metaは各mt_entryに一個しかないため、複数のプラグインが別の目的でentry_metaをハンドルする場合、各々他のプラグインが操作する領域を壊さないように留意する必要があった。
(2) MT::Entryをロードするたびに不必要なblobを一緒に読み込むことになって非効率だった。
などなどです。
feature-narrow-tablesはこの問題を解決するための臨時branchで、その内容はすでに最新の開発branch
(release-35)に反映されています。
この変更では、mt_entryテーブルからentry_metaカラムがなくなり、mt_entry_metaという別テーブルに格納されることになります。これによりメリットは、
(1) プラグイン(アプリケーション)ごとに別のmt_entry_metaにデータを格納すればいいので、安全、簡単。
(2) MT::Entryをロードするたびに不必要なblobを一緒に読み込む必要がなく、メモリー利用効率がよい。
(3) 任意のMT::Objectにmetaデータを付与できる。
あたりでしょうか。
他にも実装上の工夫として、mt_XXX_metaテーブルは型ポリモルフィズムみたいなものを支援する機構があります。
メタデータとして構造のないデータ(例えば、テキストや数値、日付など)を格納する場合、いちいちblobに変換して入出力するとシリアライズ・デシリアライズのオーバーヘッドがかかるだけなのでできればやりたくないわけです。feature-narrow-tablesの実装ではデータ型ごとにmt_XXX_metaテーブルの適切なカラムに格納するようになっていて、構造のあるデータを格納するときだけblobにシリアライズして格納するようにできるようです。
> であれば、小川さんの仰るとおり実装は待ったほうがよさげですね。
もう少しgeneralな型になります。
この仕組みを使ったCustomFieldsの実装としては大まかに2種類あり得ます。
一つは、CustomFieldsデータの連想配列をシリアライズしてblobデータとして一つのメタデータに格納する方法。CustomFieldsのもともとの実装をなるべく変更しないようにするとこの方法を選択することになります。
もう一つは、CustomFieldsのフィールドごとにメタデータに格納する方法。CustomFieldsの実装をかなり変更する必要がありますが、テキストデータがそのままDBに格納されるので管理しやすくなります。
性能の面では、前者はシリアライズ・デシリアライズするのにオーバーヘッドがかかるのに対して、メタデータを取り出すのに複数のローにアクセスする必要があるため(実装によっては複数回のSELECTが必要になるため)オーバーヘッドがかかります。一つのオブジェクトに関連付けられるフィールドが多数あることを仮定すると、そのうち一つだけにアクセスする場合には前者のオーバーヘッドが後者を上回るでしょうし、全部にアクセスする場合には後者のオーバーヘッドが前者を上回ることになるでしょう。つまり、トレードオフの関係です。
荒木さんの記事 http://www.koikikukan.com/archives/2008/04/26-003333.php
によると、後者の方法で実装されたようですね。
これならオープンソース版のXXFieldsを実装して、CustomFieldsとの互換性を実現するのは簡単そうですね。
#MT::Fieldの定義部分もMTOSに入れてくれないものかなあ、と思わないでもないですけど。