競合フレームワークと比べたら負けだと思っている


タイトルだけで終わってしまいそうなエントリですが、id:kensir0uさんにコメントいただいたので
それをベースに私の考えを記してみます。


私が本当に重要だと思っているのは

「競合のフレームワークと比較してどうかではなく
ユーザの問題をいかに解決を手助けするか、
またはどのような解決が望ましいと信じているか」

です。
また、フレームワークがユーザの問題は100%解決してくれるようなことは間違いなく無いと
言えると思います。手助けは出来ても、どのような状況下においても有効なわけではない。
これが自分が考える前提です。

ならば、フレームワークに出来ることってなんだろうと考えたときに、


「でしゃばらないで、枠組みだけをしっかり提供する」


のが望ましいんじゃないかと考えるようになりました。
とかくフレームワークみたいなものを作っていると、これも必要だろう・あれも必要だろうとなりがちです。
しかしこれらを削って、YAGNIを徹底して枠組みだけをしっかり提供しようと。

じゃあ枠組みって何?って突き詰めていくと、自分はどの問題に取り組んでいて、どのように問題解決の
手伝いをしたいのかを明確にしていく作業に落ち着くんじゃないかと思います。
つまり競合とか見る前に解決したい問題って何?を突き詰めていくのが先だし、むしろそっちを
重点的にやっていくほうが良いと考えています。
もちろん競合と比較しなくちゃいけない場合もあるでしょう。それを否定したりはしません。
しかし、その前に積み上げるものがあって、そっちやりきってからで十分遅くないとは思っています。


前にご紹介した「UNIXという考え方」から少し引用してみます。
UNIXという考え方の第8章(p125)に「ひとつのことを上手くやろう」という思想があります。
自分が得意としているところをきちんとやりこなし、UNIXのコマンドのように、
大きなことをしたくなったら他と連携すればいい、そういう考え方です。
Webフレームワークも同じじゃないですかね。
いろいろなことに手を出すのではなく、Webフレームワークにとって
一番うまくやれるひとつのことをきちんとやりこなそう、これが自分が設定したゴールです。



なので、

Strutsの例なんかもそういう側面もあるんじゃないかなー?と思います。
先行のソフトウェアで当初は簡単にWebシステムが作れるってところがキャッチフレーズの一つだったと思います。
現在としては後発のフレームワークも出ましたし、Strutsが採用される確率はマクロで見るとフレームワーク毎で対等なはずなのですが、
StrutsユーザーはStrutsの細かいところまで知ってるから、Strutsで実現できない機能がないかぎり、
他のフレームワークには当事者の意見としては手を出したくない、またそうする必要がないと考えているのかもしれません。

ここに、Strutsのゆるぎないアドバンテージがあります。
しかし、機能的にはStrutsよりもすばらしい機能を持ったフレームワークが多々あります、
コレにユーザーが手を出さないのはやはり、細かい知識を習得したくないって部分があるんじゃないかと思います。
そこで、この部分は是が非でも細かい知識を習得させる環境を作る必要があるのかなと思います。
これがユーザーに対する機能の明確化、また仕様の整備という部分になるのではないでしょうか。

Strutsを超えるにはソフトウェアの機能よりももっといろいろな側面で優位に立つような戦略も要求されるのかなと思います。

http://d.hatena.ne.jp/shot6/20080701#c1214915112


こういう考え方を今はしていないです。昔はしてたけどw
なので、Strutsと比べてこれがすげーぜ!とか言うつもりも全く無く、
ユーザが抱える問題を解決する方をきちんと注視できるようになりたいという気持ちで
望んでいるわけです。


つまり、自分が作っているものを提供することによって、ユーザがどのような
開発体験(願わくば成功してほしいですが)を得られるのだろうかというところにフォーカスしていきたい。
そう考えています。どういう使われ方を望んでいるのか、提供するのは部品なのか・製品なのか、
そういうところをもっともっと突き詰めていきたいですね。



P.S.

ちなみに、以下の考察は自分も正しいんじゃないかと思います。
ユーザは目の前の案件をより効率的に完了させたいんであって、
フレームワークに詳しくなりたいってわけじゃないと思います。
なので、あるフレームワークを使っている8割の人はそのフレームワークの2割程度の
基礎部分しか使ってないのが現状じゃないかなあと考えてます。


案件完了の手伝いが出来ること、これは勿論注力したい大前提ということになります。

自分にも言えることなんですが、色んなソフトを動かす、利用するのが好きであるという人は結構な数いると思います。けれどもソフトを使いこなしたい、極めたいって人は時間の都合もあるのかもしれませんが、そんなには居ないと思います。

これは、細かい知識を習得することが大多数の人にとって好ましくない事なんでは
ないかと思います。
カテゴリであらわすと応用・補足的な知識とでも呼びましょうか。

つまり、ユーザーがこのような知識を得たソフトというのは長く利用されるのでは
ないでしょうか。

http://d.hatena.ne.jp/shot6/20080701#c1214915112