Quantcast
Channel: つねづね思ふこと 〜 ゲームやアニメの紹介を中心 に、あと気がついたときにプログラムネタも書いてます
Viewing all articles
Browse latest Browse all 153

キュレーションサービスのアルゴリズム

$
0
0

最近キュレーションサービスの実装に興味がある。

キュレーションサービスとは-図書館などで大量の本の中から曖昧な利用者からの質問を元にオススメを探してくれるキュレーター(学芸員)から来ているらしいですが、ここでは「自分の欲しい各地に散らばっているネット情報収集を代行してあらかじめ収集してくれるので探索時間なく効率的に記事が読めるサービス」を指します。
具体的には「Presso」とか「ハッカドール」「Flipboard」・「SmartNews」みたいなの。

そういうシステムは、自分の理解では基本的には以下の動作から構成されていると考えます。

1. 情報収集
2. 分類
3. 一方、アプリ側は利用者の好みを記憶
4. (2と3に基づいて)利用者向けの情報を効率的に配信
5. アプリ側のUI(=利用者の操作部分)

自分がキュレーションサービスのアプリケーションを作るとしたら...

1について、理想は「各地のサイトから自前のbotで取得AIで取捨選択」としたいところですが、時間もないしとりあえず人力でRSSフィードのURLを集めてYahoo!Pipesで一つに結合。
ただ、この方法では圧倒的に多いRSSを提供していないサービス群からのデータが収集出来ないので、例えばkimonoを使うとか?別途考える必要があります。

2. について、別途用意しているキーワードリストに添って、1のデータを分類、このひも付けデータの管理は、Toxi法を用います(今調べたんですが、このアルゴリズムに名前が有るんですね)。
Toxi法はソース・キーワード・紐付けの3つのテーブルが必要で取り扱いが複雑ですが、一つのソースに対して複数キーワード貼り付けたい場合の容量負荷が低く、且つタグキーワード検索時に文字では無く紐付けテーブルに格納されている数字ベースで行えるため、4においても利用者の好みをタグとして扱うことで高速に処理できるはずです。

3は、サーバで持つと携帯を変えた時も引き継げるのがいいけど、リリース当初はスモールスタートしたいから、取りあえずローカルDBに保存。

4について、やっぱり一覧に概要を文字だけじゃなくてサムネイルも出したいなら、高速に表示するために一工夫が必要だよな。
具体的にはサイトから取ってきた画像を、自分のサーバーへキャッシュとして特定の寸法なサムネイルで格納して、通信するときにCSSスプライトみたいに一つへ数珠繋ぎに加工して出力すると総合的な容量も少なく、セッション接続も押さえられ、結果的に早いのかな。
まあ↑のことは色々大変そうだし、将来のアップデート案件に回そう。

5 について、短時間にマルチプラットフォームで開発するなら、
やっぱりアプリの基盤部はHTML/Javascriptかな。
Visual Studioもマルチプラットフォーム出力に対応したし(一応iOSもXamarin for Visual Studioで公式に対応した!Microsoft的に。)

みたいに個人的な趣味のことで妄想するんですけど、なかなか普段仕事が終わってアパートに帰ると疲れ果てて、日によっては晩御飯も食べずに寝たりもして、なかなか組むのが難しい。

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例
るびきち 佐々木 拓郎
SBクリエイティブ
売り上げランキング: 10,354

いつも適当に貼り付けているこのブログ末尾のアフィリエイト枠ですが、↑については、実際に私も買ってざっと読んでみましたよ。
1番のbot作成について法的に気を付けるべき点とか、ざっとRubyで構築するサンプルソースなどがまとめられていて興味深かったです。
Rubyは組んだことないし、手持ちのレンタルサーバーではサポートして無かったりするのですが、phpのfile_get_contentsなどでも応用効くかな?


Viewing all articles
Browse latest Browse all 153

Trending Articles