文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

【まとめ】IT系ニュースまとめサイトを開発中です【グラフ化】

いつも「サイト作る!」といってやるやる詐欺をしているtreeです。
今回のやるやる詐欺は「ITニュースまとめサイト」の構築です!!

いきなりですが、作成中のサイトのスクリーンショットをどうぞ御覧ください。
f:id:treeapps:20131124021619p:plain
f:id:treeapps:20131124021627p:plain

まだ作成中で、レイアウト等に迷っているので色々おかしいですが、こんな感じになってます。

このサイトを作る理由など

何故このサイトを作るのか

アフィリエイトで月1万円稼ぐまでの苦しい道のりを振り返る! - 文系プログラマによるTIPSブログ
この記事にも書きましたが、API等で他人からもらった情報をそのまま垂れ流しても、
オリジナルコンテンツでないので全く評価されません。

それが解っていてなぜ作るのか。

スキルアップのため!!

はい。アフィリエイトはほとんど期待していません。
2chのまとめサイトのまとめサイトのような形で、しぃアンテナみたいな形態になりそうです。
しぃアンテナ(*゚ー゚)

このサイトのゴールは?

このサイトを作るうえで、ゴールを決めています。
それは、

統計情報の視覚化

です。
このサイトは1週間で何件記事を書いていて、今後期待できるサイトだ、
というようなことをグラフ表示して視覚化したいと考えています。
この単語を含む記事が最近増えてきている等、流行が追えるようなグラフもいいなあ。

どんな技術要素で開発してるの?

nginx、tomcat、MySQL、Apache solr、sastruts、bootstrap2、の構成です。
tomcatから脱却すべくjettyを触ったりしてますが、eclipseと相性が悪く、ちょっと苦戦中。
本当はelasticsearchが使いたいところですが、今回は使い慣れたsolrを使います。
そっちの勉強より、統計の視覚化の方が重要課題となってるので。

ニュースの取得先とかデータはどうなってるの?

RSSからスタートします。

  1. RSSのURLをDBにセットしておき、複数サイトのRSSを並列で抽出してDBに格納。
  2. 格納したデータをsolrで差分更新。
  3. ○日以上経過したニュースはDB・solrから削除。

というシンプルなフローです。
最初はDBを挟まずsolrオンリーでやってたんですが、
機能拡張を考えると、solrのインデックスを失ってもDBから全件生成できる状態であれば、どんな機能変更も可能になるので、やはりDBを挟む事にしました。
それに、後述のデータビジュアライゼーションのためにはデータの蓄積が必要なので、solrオンリーだと難しいですね。

solrを使う事でファセット機能による件数取得が簡単で速く、
同義語が使えるというメリットを享受できます。

課題

未知の単語への対応

プログラムの技術の進化が早過ぎて、次から次へと新たな単語が登場します。
そのため、検索インターフェースをどうしたらよいか困っています。
フリーワード検索した回数が多いものをボタン化するのはやるとして、
今流行っているオススメの単語をどうやって抽出したらいいか解らず、
「データベース」とか「クラウド」とか、曖昧な言葉を使ってしまっています。

データビジュアライゼーション

グラフ化は最重要・最難関の課題です。
これは難しいので、最初は統計機能は無しでリリースしちゃおうかとも考えています。
まず、グラフ化するためには元になるデータが必要です。
どういう形でデータを貯めておけば後でグラフ化できるのか。
期間を絞り込めるようにするには日付をどうもたせればよいのか。
そして一番の問題は、グラフ化ツールはどれを使うか

D3.jsが真っ先に候補に挙がりますが、これは純粋なグラフ化ツールでないし、難しいです。
http://d3js.org/:title:bookarm

私はこれから学びたい技術はデータビジュアライゼーションなので難しいやつ上等!ですが、
それだとtreeのitnewsがリリースできないので、選択肢に困ってます。
難しすぎず、使い捨てのようなツール以外で良いやつがあれば是非教えて下さい。

RSS内のPR広告がウザい

↓こんなやつです。
f:id:treeapps:20131124024614p:plain
大手サイトのRSSでよく見るのですが、
RSS内にPR広告を織り交ぜてきやがる
のです。最悪ですね・・・
RSS取得の処理の時にこのPRを根こそぎ削除してやりたいのですが、それだと規約違反になることは確実なのでできません。規約に違反せず、如何にしてPR広告を押させないかを検討中です。

リリースできんのか!?

飽きたらやめます(ニッコリ

ビジュアライジング・データ ―Processingによる情報視覚化手法

ビジュアライジング・データ ―Processingによる情報視覚化手法

Data Visualization with D3.js Cookbook

Data Visualization with D3.js Cookbook