データアクセスに一手間加えてデータを分かりやすく加工したい。

クライアント側でやること。Xがやるのはデータの提供のみ。加工は、いらない


集計 Edit

データアクセスに集計を加えるには。

データアクセスの一例 Edit

  1. ページセットを作る。
    1. 「全ページ」から検索などで集合を縮小。
  2. ページセット内のページ1つずつにセレクターを適用。要素セットが得られる。
  3. 得られた多数の要素を要素自身の評価で同一視、集計、ソート。
    1. 要素が行なうのはハッシュコード生成。その処理にパラメーターを与えて、同一ハッシュコードになる場合を増やしたり減らしたりできる。どんなパラメーターかは要素次第なので要素の具体的なクラスに依存することになる。
    2. 得られたハッシュコードを使って集計。
    3. ソートは要素が持つ評価関数で順序付け。
    4. が揃っていないときはどうなるか?
      1. ソートできない。
      2. ハッシュコードに渡すパラメーターを別にしなければならない。
  4. セレクターを使った後にデータコンテキストの処理。

例えば、日付の集計をするには Edit

  1. 気になることを検索してページセットを作る。
  2. 得られたページそれぞれにセレクターを適用。日付の集合を得る。
  3. 日付で(それが書かれている)ページを分類。分類の粗さを1日/1ヵ月ごとにしたり、しきい値を複数設定して不規則な(任意の)期間ごとにまとめたり。
    1. 要素(日付要素)からページを得るには?
      ページ→要素セットのときに要素→ページセットも作っておかないといけない。
      ページ←→要素のマッピングはセレクター側でやるべき?
    2. 日付からハッシュコード取得。それをキーにしてDictionary作り。値側にはページ(かページのID)。
  4. 分類別に含まれるページ数を数えて、(日付の示す)期間×ページ数の一覧表やグラフを作る。
  5. 気になることが月別にどれだけあったかが分かる。

例えば、検索結果の1日前を調べるには Edit

データアクセス:t/1日前も実現したい。
例えば食事記録。体調が良くなった/悪くなったことを示すキーワードを検索してページセットを得る → セレクター関連名に「1日前」を持つリンクを抽出 → リンク先のページIDを得る(これを実現するには?) → ページIDからページを取得(この実現方法は?) → 得られたページセレクターを適用して食品リストを抽出 → 1つのキーを持つDictionaryに集計 → Dictionaryをレンダリングできる要素に与える → 一覧表やグラフになる。

セレクターで年内の週数を示す要素(「第32週」など)を使って…体重が増えたことを示すキーワードを検索。得られたページセット内のページセレクターを適用。得られた週数要素から得たハッシュコードをキーにして集計。集計結果のキー1つごと(分類1つごと)に対応する週数のセットを得て、それが書かれているページセットを得る。セレクターを使ってページセット内のページごとに含まれる食品リストを得る。ページセットごとに(ページごとではないのをどう実現するか?)、リスト項目を集計(同じ項目があればカウント+1)。できあがった週数ごと(ページセットごと)の集計結果をレンダリング可能な要素に与える。一覧表やグラフになる。

「第(\d+)週」はWiki上で定義できる要素。「タグ」と称して良い。
タグ

例えば、「検索結果に含まれるページ」が持つタグを集計 Edit

  1. 検索してページセットを縮小
  2. ページセレクターを適用。タグ要素が得られる。
  3. タグをそのまま集計。まとめる範囲指定などはしないで。
  4. Dictionary/Listを扱える要素に与えるとレンダリングされる。
    セレクターを省けばページの全情報が一覧化。どうなるかはレンダリング担当要素による。

一般化すると… Edit

  1. Wiki内の全ページというページセットがある。
  2. 検索などでページセットを縮小できる。
  3. ページセット内の各ページセレクターを適用して、要素を得る。1ページ→多数の要素。
  4. 要素をハッシュコードで分類・集計。ハッシュコードの生成規則には注文を付けることができる。(コードで。つまりプラグイン内のプログラムに記述)
  5. 集計結果を特定の要素に与えてレンダリング。利用者のための形式にする。
    レンダリング要素のほうが呼び出し順は先。ここでデータコンテキストの指定があるので、以降の要素はそのに応えなければならない。

集計処理がプラグイン依存で専用のコードを必要とする。Wiki上では指示できない。でもプラグインを選ぶことはできるので、それでいい。:i/集計をする要素が必要?ページセット+集計要素+レンダリング要素?


フレームワークの拡張が不要なら、あとで