低消費電力Linuxサーバを活用する。PT3Tweet本稿はepgrecを改造したパッチを配るのではなく、プログラムを書いたことが無いけれど、興味はある方向けに、epgrecを改造してもらう事で『オープンソースのプログラムを改造して使っています』と言う成果を出してもらう事を目的としています。開発自体はUbuntuLinux13.10上で行うため、あらかじめPT3が動く環境を構築してある事を前提条件とします。ハードウェアをそろえずにepgrecを改造してみたい方が最初から挫折する事を防ぐため、テスト用のXMLデータをアップロードしておきましたのでダウンロードしてお使いください。日経Linux誌2009年7月売り号(8月号)に掲載するために開発された録画予約システムで、PT1/PT2/PT3と一緒に利用して、地デジやBS/CSを録画予約する為のプログラムです。tar.gz形式でダウンロード可能な物は2011/10/02を最後に更新が止まってしまったようですが、http://sourceforge.jp/projects/epgrec/scm/git/epgrec/を見る限り、ソースコードの更新は2012/06/18まで続いていたようです。その後STZ版が登場していますが、本家の最新版との差分はそこまで無いことから、本家のバージョンを利用させてもらう事にします。今まで当サイトで利用させてもらっていたのはSTZ版だった為、epgrec(本家)のインストール方法を簡単に記載しておきます。ubuntu13以上にインストールする場合にはphpのセキュリティの設定等でubuntu12以下と比べて四苦八苦するところが多くなっています。環境構築』にまとめてあります。番組表更新や録画予約の仕組みを理解するまずは、epgrecがどのような仕組で動いているのかを理解しましょう。大体のイメージは下記の図の通りです(下手な図ですが、文章ではなく、イメージで伝わればいいです)。epgrecにはFireFoxやIE、Chromeでアクセスして操作します。その下では番組表の更新はcronで定期実行し、番組の予約録画はatジョブで実行されるようになっています。recpt1やepgdump等を解説ページを参考に言われるままにインストールしてきた場合には、recpt1で録画し、epgdumpでtsファイルからxmlを出力し、そのxmlを元に番組表を更新していると理解しておけば問題ありません。ディレクトリ構成まずは、epgrecの作者様のReadMeを参考に、大まかなディレクトリ構成を頭に入れます。開発中はファイル構成やシステム構成は何度も見直すことになる為、プリントアウトして手元に置いておくと効率的です。LICENSE.txtライセンス。目を通しておきましょう。README.jaReadMe。目を通しておきましょう。Reservation.class.php予約クラス。静的メソッドsimple()、静的メソッドcustom()。SmartySmartyはPHPのフレームワーク。getepg番組表更新の為のcronジョブ。開発する上で録画処理周りに手を入れる際には知っている必要があります。モードを指定するのみなので、難しい事はありません。番組表を取得する為にはrecpt1で60秒~180秒程度録画したtsファイルを作成する必要があります。そのtsファイルをepgdumpコマンドに渡すと、番組表が含まれたxmlファイルが出力されると言う仕組みです。テストデータの作成の為に使うかもしれないので、頭の隅に入れておきましょう。atコマンドの使い方cronは良く聞くと思いますが、atコマンドはあまりなじみの無いコマンドだと思います。atは定期実行する必要はないが、決まった時間になったら一度だけ実行されるLinuxのジョブです。番組の録画は1度だけ指定日時に実行されれば良いだけなので、atコマンドが選ばれるのは至極当然ですね。ソースコードの編集やgrepの仕方について先人が書いたプログラムを修正する際には、ソースを読んで理解する事になるわけですが、正直、全部のソースコードを理解して、『この修正の為にはあのファイルとあのファイルを修正して~』などと言うためにはかなりの時間を費やしてソースコードと格闘した後です。最初の取っ掛かりで簡単に何かを追加したい場合には、grepで対象箇所をピックアップする必要があり、対象が見つかったらvi(実際にはvimね)で編集して動作確認を実施します。本来であれば開発環境を別に用意して、テストが終わってから本番稼働しているサーバにアップロードすべきですが、今回は『やってみよう!!』と言うスタンスなので、構築済みの環境をそのまま修正します。grepを簡単に使えるようにしておきましょう。拡張子phpのファイルより、『INSTALL_PATH』を含む箇所をgrepする。INSTALL_PATHvimの設定ファイルを作っておくvimでソースコードの編集をする際に、検索時には色付けで強調表示されたり、tabがスペース何個分で表示されるか等をホームディレクトリの.vimrcファイルに設定しておきます。~/.vimrc.vimrcの中身は各自お好きに編集してください。サンプルとして下記にも載せておきます。基本的にソースコードの編集はvimで行いますが、windowsやmacからソースを編集したい場合には、samba等で/var/www/epgrecを共有フォルダに設定してしまい、windows/macから読み書きできるようにしてしください。慣れてしまうとLinux上で操作する方が楽ですが、不慣れな場合にはLinux上からソースコードの編集をする必要性は全くありませんので。TOPページに、『自動録画キーワード管理へ』のリンクを追加する。最初なので、簡単な所から始めていきます。やりたい事(仕様)を決める現状のepgrecでは『自動録画キーワード管理へ』リンクは、番組検索ページにあり、TOPページから移動する為には1ページ余分に遷移する事になっていますので、TOPページからすぐに移動できるようにしてみます。強引に動機づけしましたが、TOPページから『自動録画キーワード管理』に直接移動できるようにリンクを追加してみます。具体的には、下の図の赤枠の辺りに『自動録画キーワード』のリンクを追加する事を目的とします。修正対象箇所をgrepでピックアップするこの手の画面修正をする際には、その周りにあるキーワードでgrepしてみれば良いでしょう。経験的に『TOPページなのでindex.html辺りで、かつsmartyを使っているからtemplatesフォルダの下を見ようか』と判断しても良いです。<span>放送波選択</span>templates/index.html内に該当箇所があるようです。対象ファイルを開いて、『放送波選択』で検索してみます。vimでは『/』を押した後に検索キーワードを入力する事で、検索できます。581行目に放送波選択のキーワードがありました。その近隣を見てみると、環境設定や、強調表示等のキーワードが並んでいます。当初の目的の赤枠近辺のソースコードが解りました。今回はソースコードをそのまま載せずに画像で載せておきます。