2008年9月10日水曜日

gemspec.infoのコンセプト

RubyOnRailsの設計手法もレールに乗せよう からの流れで、これから作る予定のGem情報集約サイト(gemspec.info)について、設計資料からソースコードまでこのブログで晒してみますね。

自分としてもRubyOnRailsの設計手法もレールに乗せよう で煽っておいて、実際にステップを意識して設計をしたことはあまりないので、Ruby on Railsでこの設計手法を採用することは現実的か、問題点はないか、効率的か、といった点も確認してみたいので。

もちろんgemspec.infoのプロモーション活動も兼ねて。

まず始めに

設計とは本質的にケースバイケースだと思います。

ただRailsぐらい作り方が決まっているモノの設計は、ある程度パターンがあるだろうと。

なので、RubyOnRailsの設計手法もレールに乗せよう の流れを基本としつつ、足りないところは付け足して、無駄と思えるところは省けばいいという方針で進めます。

ただ、足したり省いたところには理由は説明しますね。

で、初っぱなから足したモノがあります。

ユースケースとコンセプトの関係

RubyOnRailsの設計手法もレールに乗せよう では「ユースケースがそのアプリケーションの存在意義となる」とか言った記憶がありますが、そもそもコレってユースケースの範疇じゃないよなぁと思い直しました。

ビジネスモデルというか、物事の本質というか、まず実現したいことがあって、それをモデリングすることで具現化したものがユースケースだろうと。このエントリではこの実現したいことを(なんと表現すべきか解らないので)コンセプトとしますが、今までに無いものを作るならば、コンセプトこそが存在意義だろうと思ったのです。(逆に既に存在するモノに対して使い勝手で差別化するならユースケースが大事)

あともう一つ、受託開発など設計者がユーザでは無い場合に、設計者がビジネスロジックを理解し、発注者(や開発チーム)と理解した内容をすり合わせしやすいようにユースケースを作るって意味もあるのかなと。でも、今回はおいらユーザでありGem作者だし、おいら自身が欲しいと思ったシステムを作るので、わざわざユースケースを作る必要はないかなと思ったのです。

なので、今回はコンセプトだけまとめ、ユースケースは省くことにしました。 

gemspec.infoのコンセプト

そもそも設計のような変化していくモノをブログにまとめるのはどうかと思ったので、内容自体はWikiにまとめることにしました。(文書化できる部分だけでも)

これだけのためにWikiを立てるのもなんなので、Ruby on Rails プラグイン まとめ wikigemspec.info特設ページを作りました。

コンセプトに関するモノはgemspec.infoのコンセプトです。(@wikiはURLがイケてない…)

こんな感じ。

GemSpec.infoのコンセプト

コンセプトのアイデア出しとまとめはFreeMindというマインドマップ描画ツールを使っているのですが、さすがにそのまま貼るには適さないので、テキストに書き出しています。Twiki用のエクスポート機能を使ったのでちょっと不自然ですが、FreeMindのデータファイルをアップロードしておいたので、自然な形で読みたい人はそちらをどうぞ。

Wikiと同じ事を解説してもつまらないので、ここでは触れませんが、要は立場によって違うニーズをまとめ、情報をうまく集約できる仕組みを考え、それを効率的に検索できる方法を考える。って感じかなぁ。

コンセプトのまとめ方

まぁ、人それぞれだと思うけど、まいむぞうの場合って感じでまとめておきます。

コンセプトの骨格部分は思いつきでまとめていますが、この初期段階で問題点を洗って、その解決方法(というか補完するアイデア)をフィーチャなどと合わせて時間をかけて煮詰めと肉付けをくりかえしている感じです。

具体的には犬の散歩しながらとか、風呂とかトイレや寝る前にあ、これいいかもとアイデアが浮かぶことが多いですね。浮かんだアイデアはすぐ書き出さないと絶対忘れるので、その場でエディタに書くか携帯メールに溜めました。

この後のフィーチャモデルと違って、調べることは少ないと思うので、(別のアプリやサイトや本などに触れて)いろんな視点からコンセプトを考えると、色々浮かんでくる気がします。ただ、おいらの場合はあまり時間をかけすぎると飽きてくるので、適当なところで切り上げます。

おいらはいつも考えるときにマインドマップを使っていますが、アイデアのようにポツポツと浮かんでくるモノを体系立てて考える時ってマインドマップはいいですよ。おいら漢字や絵を書けない子なので、PC上で書いていって、後で再構成できるFreeMindはかなり気に入ってます。(他にもマインドマップ描画ツールはありますが、自分の知ってる中では一番イイです。特にver0.90イイ)

テンション上げ上げで

忙しさを理由に進まないのは自分的にもマイナスなので、札幌Ruby会議01までには完成して「でけましたー」と叫びたいところ。

自分を追い詰めるためにライトニングトークの申し込みもしておいたので、作業もはかどると思うよ。

コンセプト見て「はにゃ?」とか「ここってこうだと思うでー」ってところがあったら、ブログでもwikiでもいいのでコメントください。

0 件のコメント: