リファクタリング(1)リモコンスクリプトのリファクタリング第1段階

HS-DHGL KURO-RS

リファクタリングとは、一言で書くと「プログラムをより良くする」こと。

DST-BX500 へ依存

現在は、
ハック de 録 !!スクリプト本体で、
/usr/local/bin/infrared_remocon BUTTON_1 BUTTON_POWER BUTTON_1 BUTTON_1 とかを at に登録し、
/usr/local/bin/infrared_remocon は、
言われた通りのシーケンスでリモコン操作をしている。

BUTTON_1 BUTTON_POWER BUTTON_1 BUTTON_1 といったシーケンスは、 SONY の BS デジタルチューナ DST-BX500 に依存したもので、 他の BS デジタルチューナ であれば違うシーケンスかも知れない。

「延長対応 ハック de ダブルまる録!! 外部チューナコントロール付き」 (藁)を公開するなら、 SONY の BS デジタルチューナ DST-BX500 にできるだけ依存しないように しないといけない。

構想

ハック de 録 !!スクリプト本体は BS デジタルチューナの機種に 依存しないようにする。

ハック de 録 !!スクリプト本体は、
その番組が BS デジタルの何チャンネルで放送されるかは知っているが、
BS デジタルチューナのチャンネルを合わせる方法は知らない。

/usr/local/bin/infrared_remocon は、
ハック de 録 !!スクリプト本体から BS デジタルの チャンネル番号だけをもらって、
BS デジタルチューナに依存したシーケンスでリモコン操作をする。

たとえば、
/usr/local/bin/infrared_remocon BSD1
とすれば BS デジタル1チャンネルに合わせる。

将来的には、
/usr/local/bin/infrared_remocon GWD1
とすれば地上波(Ground Wave)デジタル1チャンネルに合わせる とかもできればいいな。

/usr/local/bin/infrared_remocon の修正(その1)

yasunari@sil:/usr/local/bin$ cat infrared_remocon
#!/bin/sh

DATADIR=/usr/local/lib/kuro-rs
MACHINE=DST-BX500
SEND=/usr/local/bin/rs_send
PORT=1

case $1 in
BSD1)	# NHK 1 (BS1)
	set BUTTON_1 BUTTON_POWER BUTTON_1 BUTTON_1
	;;
BSD2)	# NHK 2 (BS2)
	set BUTTON_2 BUTTON_POWER BUTTON_2 BUTTON_2
	;;
BSD3)	# NHKハイビジョン
	set BUTTON_3 BUTTON_POWER BUTTON_3 BUTTON_3
	;;
BSD4)	# BS日テレ
	set BUTTON_4 BUTTON_POWER BUTTON_4 BUTTON_4
	;;
BSD5)	# BS朝日
	set BUTTON_5 BUTTON_POWER BUTTON_5 BUTTON_5
	;;
BSD6)	# BS- i
	set BUTTON_6 BUTTON_POWER BUTTON_6 BUTTON_6
	;;
BSD7)	# BSジャパン
	set BUTTON_7 BUTTON_POWER BUTTON_7 BUTTON_7
	;;
BSD8)	# BSフジ
	set BUTTON_8 BUTTON_POWER BUTTON_8 BUTTON_8
	;;
BSD9)	# WOWOW
	set BUTTON_9 BUTTON_POWER BUTTON_9 BUTTON_9
	;;
BSD10)	# Star channel
	set BUTTON_10 BUTTON_POWER BUTTON_10 BUTTON_10
	;;
BSDOFF)	# OFF
	set BUTTON_POWER
	;;
esac


while [ $# != 0 ]
do
	FILE=$DATADIR/$MACHINE/$1
	if [ ! -f $FILE ]
	then
		echo $FILE not found
		exit
	fi

	$SEND $FILE $PORT > /dev/null 2>&1

	shift
	sleep 5
done
yasunari@sil:/usr/local/bin$ 

今日のところはここまで。

実はこの infrared_remocon は、 (DST-BX500 への依存が残っているものの) 従前と互換性がある。
infrared_remocon BSD1 とすればもちろん BS デジタル1チャンネルにするし、
これまで通り infrared_remocon BUTTON_1 BUTTON_POWER BUTTON_1 BUTTON_1 としても、 BS デジタル1チャンネルにする。

何せ、今、録画予約が at コマンドに登録されているので、 もうすぐ infrared_remocon BUTTON_1 BUTTON_POWER BUTTON_1 BUTTON_1 の類の シーケンスが実行される。 今日互換性を崩すわけにはいかないのである。

こういった風に、互換性(I/F)を崩さずに最適化していくのが リファクタリングの醍醐味(かぁ?)。




HS-DH320GL
楽天市場
Yahoo!ショッピング
somap.com
TSUKUMO ネットショップ
ValuMore!
ムラウチドットコム
アット・ニフティストア icon
Joshin web icon
KURO-RS
楽天市場
Amazon
Yahoo!ショッピング
TSUKUMO
クレバリー


ハック de 録 !!の修正(4)リモコンシーケンス変更
ハックの記録
LinkStation/玄箱 をハックしよう

リファクタリング(2)ハック de 録 !!スクリプト本体の修正

Copyright (C) 2003-2007 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市