2008年9月20日土曜日

gemspec.infoのフィーチャモデル

gemspec.infoのコンセプト からの続きで、今回はフィーチャモデリングしました。

と言っても、かなり我流ですが。

モデリング結果

まずは設計成果から。

例によってWikiに上げました。

Ruby on Rails プラグイン まとめ wikiGemSpec.infoのフィーチャ がそのページです。

一応FreeMindからTWikiエクスポートかけたテキストとして書いてありますが、正直見にくいと思うので、添付してあるFreeMind用のファイルを開いてもらうのが一番良いかと思います。

GemSpec.infoのフィーチャモデル

全体的な流れ

ええと、前にも書いたかも知れませんが、これらの設計成果物は「設計結果の清書」としてではなく、「考えるために書く」(書きながら設計する)ために作っているものです。よって、これで完成という意味合いではなく、極端に言えばアプリケーションが完成するときにやっと設計成果物も完成するものと捉えています。(まぁ、リリース間近になっても設計資料をメンテしているかは疑問ですが)

実際、おいらの作業はほぼERが完成してモックの細部を詰めているところですが、この段階になっても作りながら新たなアイデアが浮かんで、一部フィーチャモデルにフィードバックが入ることもあります。なので、今アップロードしたものも現在の最新版であって、まだ変更される可能性もあります。

アジャイルやRailsのお作法的には、全体的な方向性を整えるために、全体を通しての設計はすべきだと思いますが、Ruby on Rails によるシステム開発をモデリングで効率的に行う であかさたさんもおっしゃっているとおり、ある程度でレールに乗っちゃった方が効率的だと思います。

なので、ここでは細部まで突っ込んで考えるより、ある程度まとまったらコーディングに移り、問題が浮上したら都度微調整ぐらいに考えています。

コンセプトからフィーチャを起こす

ここからは我流前提で行きます。

例によって内容はWikiを見てもらうとして、ここでは何に注意して作業したかだけ説明します。

まずは、「ログイン」とか「記事投稿」などの主要機能について、「意味合い」「必要機能」「問題点」に分けて書いていきました。

意味合い

  • 何故この機能が必要なのかを明確にする
  • コンセプトと被るものが多いけど、コンセプトよりもっと具体的に書く
  • 「何故」こうしたかを明確にした方がシンプルになって、方向修正もしやすい
  • たとえば機能同士の整合性やユーザインタフェースが不自然になりそうだったら、一度「なんでこの機能が必要なんだっけ?」と気軽に戻れる場所を作っておくのは気分的に楽

必要機能

  • 機能や画面として必要なものを列記する
  • 意味合いと合わせて、何故「こうした」かを明確に対として書く
  • gemやプラグインを使う場合はそれを書いておく
  • でも、どんな時にgemやプラグインを使えばいいかわからないと思うので、前もってgemやプラグインが提供してくれる機能やマイグレーションの内容は知っておく必要がある
  • Ruby on Rails プラグイン まとめ wikiとかgemspec.info使え(再帰的に)

問題点

  • 意味合いとか必要機能を勢いに任せて書き進んだときにふと思いついた「そういえば、こういう場合にこの機能ってちゃんと機能するのかな?」みたいな疑問をメモしておく
  • おおよそ書きたいことを書き終わった後、問題点を潰しに入る
  • もう周りの状況は見えているはずなので、意味合いに立ち返りながら、機能を諦めるのか、機能を活かして問題点をうまく避ける工夫をするのかを考える
  • 機能を諦めることで問題点を解決するなら、マインドマップから両方消す
  • 機能を活かして問題点を上手く避けるなら、具体的にどうするのかを詳しく書く

意味合い→必要機能→問題点→次の項目の意味合いと、がーっと書き進んだ後、書く速度も落ちてきて、もう大体いいかなーと思ったら、もう一度全体の整合性を見直しながらgemやプラグインを使えそうな部分を探し、最後に問題点を潰していく感じでしょうか。

実際にはgemやプラグインの検討を始めたあたりで、モックやER図も描き始めています。おいらの場合、そうしないと全体の流れがうまくイメージできないので。(特にユーザインタフェース上の問題や、データ構造上実現可能/不可能なことがイメージできない)

そうそう

Railsのちゃんとした設計はおろか、業務レベルの実装もしたことはない(業務では管理はしてた。個人レベルで実装はしてた)ので、このへんかなりぐたぐた感ありますが、ご容赦ください。

逆に、効率的な設計手法には興味があるので、突っ込みとかアイデアあればガシガシどぞー。

今後の予定

札幌Ruby会議01でライトニングトークの選考に残ったので、参加予定の方はよろしくです。

もうちょっとで設計が終わるので、来週からはコーディングできるかな。10月上旬には完成したいなぁ。

ただ、今月の北海道は勉強会ラッシュなので、プライベートの時間があまり取れないのです。

勢いで徹夜するのが結局効率的なのかな。

0 件のコメント: