== 動画情報について ==

 ● ニコニコ動画の動画単体の情報を管理するクラス
 
   ・動画ごとにインスタンスを作成する
   ・http://ext.nicovideo.jp/api/getthumbinfo/[動画番号] で情報を取得できる。

 ● 基本データ
   ・タイトル
   ・再生時間 (10:15のような形式ですが、総秒数で取得できるようにする)
   ・サムネイルのURL
   ・紹介文
   ・投稿日時(Unxiタイムスタンプに変換して取得したほうが便利そう)
   ・動画の種類 ( flv or mp4 )
   ・動画のファイルサイズ
   ・〃(エコノミー版)
   ・コメント数
   ・マイリスト数
   ・動画ページのURL
   ・外部再生の可否
   ・タグ(10件まで)
   ・投稿した人のユーザーID
   ・削除されているかどうか
   ここまでAPIで取得できる情報
 
 ● 拡張データ
   主に基本データの組み合わせで計算して取得する値
   ・マイリスト率
   ・VOCALOID正義値
   ・聴き入り度
   ・推定平均ビットレート
 
 ● システム
   内部で管理するために必要な情報
   ・最終情報取得時間(Unxiタイムスタンプ)
   ・動画情報が取得できているかどうか。
 
 ---------------------------------
 動画情報の管理と取得について

  まず、動画情報は、開発面においてあらゆる場面で使われることが想定される。
  その都度、APIにアクセスしていては、負荷が掛かるので以下のような対処を検討する。
  
  再生数やマイリスト数は、ほぼリアルタイムで更新される値である。
  しかし、管理面においては、必ずしも最新にする必要は、無いと考えられる。
 
   ・キャッシュ   ←メモリー上に読み込まれている動画情報
      連想配列にでも動画番号をキーとした動画情報を格納しておき、必要ならそこから取り出すようにする。
   ・ローカルデータ
      動画情報をローカルに保持しておくためファイルやデータベース。
      なぜ必要か?
       アプリケーションによっては、数百以上の動画を管理することがあるかも知れない。例:PITA SE等
       数十件程度ならすぐだが、数百あるとAPI取得するのにもそれなりの時間と負荷が掛かる。
       そこでローカルに保持しておき、それを使うようにする。
   ・ニコニコAPI
      ニコニコ動画のAPIから動画情報を取得する。

   * 更新間隔
     キャッシュやローカルデータとして保持した場合でも古い情報は、価値が無くなってしまう。
     そこで "最終情報取得時間" から 一定日数または時間が経過したらAPIを見に行くようにする。

   * 動画情報取得の流れ
     
     キャッシュにあるか?   → ある → その情報を取得 → ↓
     ↓                            ↓
     ローカルデータにあるか? → ある → その情報を取得 → ↓
     ↓                     その情報は、一定時間前のものか?(更新間隔の判定)
     ↓                     そうならA1へ。そうでなければ、その情報で確定。
     ↓                               
     [A1]
     
     APIにアクセスしに行く
     ↓
     ローカルデータに保持する。
     
 ---------------------------------
 必要そうな機能
    
    * 強制更新
      負荷が掛かるからと一定時間前の情報しか取得できないとなると最新情報を扱いたい場合に不便なので
      必ずAPIを見に行って最新を取得する機能