ライブラリとフレームワークの関係

言葉の定義の問題はありそうだ。
クラスライブラリとフレームワークはどこで線を引けばいいのかが非常に微妙な気がする。
この記事ではDXRubyやRuby/SDLをライブラリ、その上にかぶせてゲームを簡単に作れるようにしたものをフレームワークと、極端な意味に定義しておこう。


サイロスさん(Miyakoのひと)からトラックバックを頂いた。
DXRubyを気にしてくれているようで、恐縮する限りだ。
最近、追加機能やらなんやらを考えていて、たくさんの機能を一つの思想のもとにまとめるのは難しいとしみじみ感じている。
Miyakoは多機能フレームワークで、俺にはとても真似できそうにない。
DXRubyFrameworkもシンプルに実行性能のみ追求してるし、どうにも多機能という方向性は俺には能力的にも性格的にも合わないらしい。
ところで、サイロスさんのブログで非常に気になったキーワードが一つ。

DXRuby上で動くMiyako

さすがに自由度の高いSDL用のMiyakoが、DirectXのほとんどを隠蔽してしまっているDXRubyでそのまま動くとは思えないが、何かしらの多機能フレームワークを載せられる可能性を見た。
実は俺もちょうど昨日、MyGameのDXRuby版が作れるのではないか、と検討していたところだ。
なんというタイミング。


俺個人でもDXRubyFrameworkを作ろうとはしているが、それはあくまでもDXRubyの展開の一つであって、DXRubyをベースとした別の何かというものを真面目に考えたことは無かった。
DXRubyはRuby用ライブラリの一つであり、MyGameやMiyakoもそうで、それらは別のものでユーザーからすれば競合していて、どれかを選択するものだという漠然としたイメージがあった。
でもなんだか違うようだ。
MyGameやMiyakoはライブラリではなく、フレームワークなのだ。
もちろんベースにしているライブラリが違えばできることも変わるから、フレームワークなら何でも載せ換え可能とはならないが、なんというか、そう考えることで少し俺の視点が変わった気がする。


「シンプルかつ高性能」は俺のポリシーだ。
いつでも何を作っても目指すのはそこだし、当然DXRubyもそれを追求している。
理由は、そうでさえあれば後付けで機能は追加できるから。
とすると、DXRubyをベースにしたフレームワークやゲーム開発環境というのが出てくる可能性ってのは、確かにある。
いままではDXRubyを使った何かという形でぼんやりと考えていたのだが、それとはちょっと違って、DXRubyをベースにしたDXRuby以外の何かというものが作れるかもしれない。
うーん、うまく表現できない。
DXRubyの概念を踏襲したものではなく、別の概念のものを上にかぶせる、とでも言うか。
ベースライブラリとして使うには少し機能をまとめすぎている感はあるが、DXRubyの簡潔さは実行速度を出すために必要なものだ。
たぶん俺がRuby/DirectXみたいなものを作ったとしても、DXRubyより速くはならない。
他の人が作ったらなるかもしれない。


まあそれはともかく、DXRubyはシンプルかつ高性能を目指しているからこそ、それを拡張するフレームワークを作る余地が大きく残っている、ということだ。
Ruby/SDLほどの柔軟性はないが、何かしらのベースライブラリになれる可能性はある。
うん、面白い可能性だと思う。
俺には作れない何かを他の人が作ってくれるならすごい話だ。
そういう人向けにもう少し柔軟な機能を追加するのもいいかもしれない。
いずれにせよ今すぐにって話でもないだろうから、そういうのは追々。