• GemSpec.infoのフィーチャ
コンセプトを基にフィーチャモデルをまとめてみました。
FreeMindというマインドマップを描くためのツールを使ってまとめているのですが、そのままの形で公開するのは適さないので、このWikiに内容を書き出します。(Twikiへのエクスポート機能を使っているのでなんか表現方法が変ですが・・・)

ログイン

     * 意味合い
        * ユーザ管理
        * 世界中かつクローンサイト通してユニークにする
        * IDは何かを書くときに必要。読むのは誰でも読める
        * いたずら防止。いたずらからのリカバリ
     * 必要機能
        * プログラマ対象だしOpenID一本でいっかー
           * openid_fu_generator
              * パスワード認証は殺す
        * 簡単なプロフィールと画像ぐらい登録できた方がよさそう
           * attachment_fu
        * マスタDBにスパムだと思われるOpenIDを書けばクローンも含めて全て消されるように
           * OpenIDだけ指定すれば関連するモノが全て消える構造に保つ
     * 問題点

記事投稿

     * 意味合い
        * PHPのオンラインマニュアルのようにコードベースを作る
        * (特定領域に特化しているのため)ググっても出てこないものも、ここでは見つかるようにしたい
     * 必要機能
        * 直接書く
           * ベタテキスト
              * acts_as_commentable使える?
                 * ユーザ管理上問題なければ
           * GemCasts
              * コンテンツのIDとコメントを入力できるようにしておいて、システム側でiframeを生成
        * トラックバック
           * ユーザ毎にユニークなトラックバックURLを生成する(スパム対策)
           * ログイン状態でなければトラックバックURLは表示されない
        * 参照URLを登録
           * 「直接書く」の一形態(参照先URLのみ書き込む)という形かなぁ
           * 参照先コンテンツから本文抽出はしたいかも
              * extractcontent(gem)を使う
     * 問題点
        * 誰が書ける?
           * ログイン済みユーザのみ
        * どうやって管理する?
           * ログインにはOpenIDが必須で、スパムなどはOpenIDで検索して消す
           * 真偽は管理しないが、レーティングによって評価はしたい

レーティングとグルーピング

     * 意味合い
        * このGemはどんな風に使うのかを明確に
     * 必要機能
        * 1行メッセージ風にメリットとデメリットをまとめる
           * このGemは一言で言うと何か?
           * このGemを使うと何が嬉しいの?
           * このGemが苦手とすることは?
        * 愛されGemを集計
           * 自分の好きなgemに+1だけできる
        * タグ
           * タグクラウド
              * acts_as_taggable_redux
           * タグで逆引き用にグルーピング
        * ログイン済みユーザのみ書き込み・投票可能
        * 至るモノにレーティング可能
        * 最終更新日とか障害状況によって総合点を付けたい
        * 基本的にレーティングによってソートする
           * default_order
        * 最終的にレコメンドエンジンも盛り込みたい
           * データが貯まるまであまり考えない
           * ER図だけはちょっとだけ意識して作る
           * 汎用的に作ってgem化したい
              * acts_as_ratedベースまたはacts_as_favoritベース?
     * 問題点
        * 5つ星風だとレートが集まらないかも
           * 積極的にログインして投票してくれる人はごく少数
           * 少数意見でレーティングされてしまうと信頼性が低くなる
           * 解決案
              * 一度ログインしたら次回からは自動ログイン前提
              * ログインしてない人にはjGrowl使って一定確率でログインを促す
              * あまり考えず気軽に気分で投票できるようにする
                 * パターンは「好き」か「嫌い」のみ
                 * 5つ星の平均を取ると、サンプル数が少ないときに信用度が低くなるので
              * 「一覧に戻るリンク」の代わりに「好きに投票して戻る」を使う

Gemの情報

     * 意味合い
        * 全自動・もしくは半自動的にgemの情報を集める
        * 過去バージョンの情報も集める
     * 必要機能
        * gemの基本情報
           * gem specificationからデータ収集
        * gemやプラグインとの相性・障害情報
           * 別途gemで配布できる組み合わせ情報収集用スクリプトを作っておいて、協力者が自分でRAILS_ROOTで起動する
           * 組み合わせ情報はYAMLとしてデータベースに蓄える
           * バッチで解析して、オンラインに反映する
           * とりあえず、今は手を付けない方が良い
        * 全文検索用エンジン
           * HyperEstrair+acts_as_searchable_redux
           * 定期的にgem毎に関連する情報をまとめて全文検索エンジンに突っ込み、更新する
              * 第2段階かなぁ
     * 問題点

検索機能

     * 意味合い
     * 必要機能
        * 日本語での全文検索
そのGemにひもづけられた情報全てが対象ランキングの計算が複雑かも * Gemの中身(ソースなど)の全文検索
        * ライセンスでの絞り込み
        * レーティングでの絞り込み
        * Gemの最終更新日時での絞り込み
        * タグ検索
     * 問題点

SEO対策

     * 意味合い
        * せっかく作るからには使ってもらいたい
        * 動的コンテンツに対するRailsとしてのSEOノウハウを得たい
        * ランキング上位に、ではなく、適切なキーワードで引っかかるように
     * 必要機能
        * GEM名で引っかかるようにマーキングする
        * RubyやRails、Gemなども静的キーワードとして盛り込む
        * RSSで更新情報を配信する
           * simple_rss使う?
              * acts_as_commentable使えるなら良いかも
        * サイトマップを動的生成する
           * sitemapを使う?
        * URLから内容を推測できるようにURL設計する
           * SEO的意味合い
           * アクセス解析上の意味合い
              * acts_as_sluggableでURLをreadableに
     * 問題点

逆引き

     * 意味合い
        * 同じ機能のgemが数多くあるので、使い分けに悩む
        * 使うより、使い分けを調べる事に時間を取られる
        * どうせタグでグルーピングするんだから、その中で順位を付ける
        * みんなでレーティングする。レーティングを促す
        * 自分で好きにグルーピングしてレーティングすると、きっと数も質も悪くなる
     * 必要機能
        * 同じタグが付いているgemについて
           * 自分が好きなgemには+1できる
           * 自分が嫌いなgemには-1できる
        * タグの付け方に方針を付ける
           * 「○○とき使うgem」という形でタグを付ける
              * ログインするとき使うgem
              * RSSを作るとき使うgem
              * ツリー表示するとき使うgem
              * 分類するとき使うgem
           * 当然1つのgemは複数のタグをつけて良い
     * 問題点
        * 逆引きとしてコンテンツをまとめる必要はないかも
        * このタグの命名規則では言語依存するよね

国際化

     * 意味合い
        * テンプレート以外はgettext前提
        * 時間はUTC
        * ソースへのコメントも基本英語
        * 中央DBはクローンサイトからの通信のみ受け付ける
        * 日本やアメリカ・ヨーロッパといった比較的情報が集まりやすい国以外でも簡単に情報集約サイトを開けるようにしたい
           * 共有すべきは共有する
           * タイとかね
        * クローンサイト間でgemのidを合わせる必要があるので、DBの同期機能が必要
           * この部分はクラサバ型にするしかないかなぁ
        * レーティングやレコメンドのためのサンプルも同期したい
        * タグ名を複数言語対応にすればクローンサイト間で共有できるかも
           * 「ログインするとき」なら「when authentication」とか
           * 「RSS作るとき」なら「when make the RSS」
           * translate_columns使う?
     * 必要機能
        * クローンサイトの管理
           * IP
           * ドメイン名
           * パスワード
        * クローンサイトの同じgemのページに移動できる機能
           * ドメイン名を変えるだけ
     * 問題点

ユーザ管理機能

     * 意味合い
        * 二重投票の防止
        * 書き込み内容への責任
        * 統計情報とってレコメンドエンジン作りたい
     * 必要機能
        * お気に入りgem
           * acts_as_favorite?
     * 問題点
        * ログインする意味があまりなければログインしない

その他

     * アクセス数を集計する
        * googleAnalyticsでよくね?



過去バージョンについて

たぶん、後でまたアップデートされるでしょうが、その都度最新版をアップするので、過程を知りたい方はFreeMindを使って見てください。

FreeMindについて

FreeMindの0.90Beta20を使って描いてます。
ダウンロードするならこちらからどうぞ

コメント

+ タグ編集
  • タグ:
  • gemspec info フィーチャ

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年09月19日 18:46