録画+ネットワーク視聴+B-CAS関係 のサーバ開発を考える

■ はじめに
Linux環境下で良いソフトが無いのと、TvRockに大きな不満があるので自分で作ってみようかと計画してみます。

計画するものの、開発途中でTvRockの番組取得が抜群に速くなって、取得エラーがほぼなくなれば、今回企画した開発はなくなるかもしれません。


■ 目標とする機能要件
1.高速番組表取得
2.録画機能
3.ネットワーク視聴
4.BonCasLink機能の搭載
5.番組表Webページ機能

上記機能は Spinel / TvRock / TvTest / BonCasLink を合わせたサーバにする事が最終目標です。
番組表に関しては WebAPI のみを提供する予定で、今回開発するサーバは IP許可リスト に自サーバやGoogle App Engine などにアップしたWebサイトからAPIを叩くような作りにして頂くようにします。
セキュリティを考えるのが面倒なのと、僕自身がスマートフォン向けにアプリを作成したいからです。
(ポートを開いてる限り危険にさらされるので結局セキュリティを考えないといけないかもしれないけれど、そこは考えない物とします。。)


■ ユーザ観点での目的意識
・インストールを非常に手軽にする
・設定を手軽にする


■ 問題点
Linuxのアプリを作ったことがない
・マルチメディアプログラミングの経験がない
・ネットワークを利用するアプリ開発の経験が殆どない
・マルチスレッドプログラミングの経験も数えるほどしかない
・デバイスを利用したプログラミングを行ったことが指の数ほどもない
ICカード関係のプログラミングの経験がない
・しかもC++言語を忘れた!(←致命的?)


 .NET Frameworkの恩恵を受けて育った傾向が強いので、ハードルが些か高いかなと思いつつも、欲しいアプリは多分今後も出ないだろうと思うので自分で作るかなと少しやる気を出してます。


■ 予定している開発言語
・ドライバ: C++ or C++/CLI
・BonDriver.dll: C++ or C++/CLI
B-CASクライアント.dll: C++ or C++/CLI
・サーバ(録画、配信): C#.NET 4.0 & F# 2.0、
・提供環境:.NET Framework 4.0 が動く環境


■ ファイル構成の想定
Linux用 PT2ドライバ
BonDriver.dll
B-CASクライアント.dll?
サーバアプリ.exe
サーバアプリ_linux.dll
サーバアプリ_win.dll
サーバアプリ.exe.config
epgdata.xml?
channel.xml?


上記の設定ファイルの代わりに データベース を使う可能性があります。
また、BonCasLinkはAPIフックを使ってる様ですが、僕が開発する際は TvTest のプラグインとして提供出来ないかを考えます。
面倒なら BonCasLink のサーバの仕様のまま作るかもしれませんが・・・(ライセンス的に問題なければ)


■ 最後に
 パフォーマンス観点でも考慮したいけれど、C++に慣れていないかつ、Linux向けに開発が正直非常にハードルが高いので、Monoを利用する形を取らざる終えないのかなと思われます。
ちなみに F# を利用するのは個人的趣味ですが、番組表取得で行う際 T0+T1,S0+S1 を並列実行するのに手軽そうだと考えての事なのと、F#の思想としてバグを生み出しにくい開発を行える点にあります。
何より Ocaml や F# はコーディングが非常に手軽です。

 今回作る物は基本ソースコードは非公開にします。
ベクターにアップしても大丈夫なように、ライセンス違反しないように1から作り上げる予定です。
ただし、作り上げる課程で知り得た情報はドキュメント化してGoogleドキュメントか何かにアップします。
最終的にはPDFにまとめられれば良いと計画しつつも、計画は実行されないままになる予感。

 自分のやる気が続くことを願いつつ、明日もしくは今からC++の再学習も兼ねてTvTestみたいな物を作れるか試します。
まずはBonDriver.dllを利用したデジタル放送のプログラムの仕組みから覚えていきます。