[サイトTop] [As/R Top] [ヘルプTop] [戻る]

スクリプトをもっと詳しく

ファイラーが語ろう


 今回は、存在意義が怪しい奇妙なスクリプトコマンドを紹介をします。

 ウチのソフトには、おバカな機能が結構あります。
 現在は載せてませんが、自爆装置とか、目からビーム出す機能とか、変形合体してロボットになる機能とか、脳波誘導によるファイル管理とか、漢のロマンに満ち溢れた機能を以前は搭載していました。
 (諸般の事情によって、現在の版では削除されております)

 もっとも極めてまれに、世間的に評価されたりする機能もチラホラ存在しており、残念ながら(?)ネタで完結できなかった事例も多々あります。
 例えばリストコントロールでチェックボックスを使ってファイル管理をするってエクスプローラーよりも圧倒的に早期に実現してますし、状況依存の右クリックメニューなどはMS-DOSの時代から実現してました。
 もちろん世界初とか、起源とか、権利を主張するつもりは毛頭ありませんが、世に便利さを広めるキッカケは概ねノリと勢いと遊び心から生まれることもあるってことです。
 まぁ、使い方次第だと思いますし、あまり役に立つかどうかは気にしないでいただければと思います。

 さて今回紹介する機能も、何に使うのか正直ものすごく分かりにくいと思います。
 というのも、喋ったり音楽を再生したりするスクリプトコマンドが用意されています。
 何のために実装されたか?ということですが、必殺技名を叫びながらコマンドを実行するためです。
 重要なのでもう一度繰り返しますが「必殺技名」を叫ぶためであり、もちろんヘルプにも記載してあります。

 あと「歌って踊れるファイラー」を目指していたので、「歌う」ことに注力している機能とも言えます。
 もちろん「踊る」に注力した機能もあるので、ヘルプに記載はありますが、後日詳細に(中略)

 まぁ、スクリーンリーダー(視覚障碍者の方が利用する画面読み上げソフト)の補助としての使い方も視野に入れてましたが、まともに使えるように対応するのは、サポートにかかる時間と費用を考えると無理っぽかったので諦めたという経緯もあります。
 また、ここで実装されたソースコードが、うまく話すことができない聴覚障碍者の方のために作られたソフトで利用されているなんてこともあったりしますが、気にしないでいただけると軽いノリで済ませられますので、深追いしないようにご協力をお願いします。


※音声合成エンジンについて
Microsoft社の提供している音声合成エンジンは2種類存在します。
Microsoft Speech Platform(日本語を含めほとんどの言語が無償配布、エンジンのみ)と、SAPI(日本語版はOfficeと配布、コントロールパネルに登録される)と呼ばれているものです。
残念ながら、As/RではSAPIを使用しているのでMicrosoft Speech Platformをインストールしていても喋らせることができません。
Windows8以降であれば、SAPIの日本語版も標準で搭載されていますが、Windows7ではOfficeなどに同梱されているもの導入することになります。

まぁ、7でも英語なら素のOSの状態で喋れるので、遊んで見る程度なら十分でしょう。

※スクリプトファイルは、必ず文字コードはUNICODEで保存してください。
 SHIFT JISでは読めません。
※As/Rはなるべく最新版を利用してください。
 Windows updateと、音声エンジンとOSの組み合わせによって適切に動作しない版が存在していることが確認されています。




今、何を選択しているの?

 現在選択しているファイルを読み上げるスクリプト。
 システムリリース時のファイルリストの読み上げ確認の時に、PCに読ませて楽をするという使い方をしたこともあります。
 うっかり「お前、それなら一人でチェックできるだろ?」と言われて、作業分担を増やされたのは悲しい出来事です。

CheckGrammar=1
for
speach=?Name?
//messageboxok=?Name?
next

※これを、任意のキーに割り当てておくと、選択している状態をいつでも確認することができます。
※イベントコマンドの「プレビュー表示発生」に割り当てておくのも面白いと思います。


入力したテキストを喋って!

 テキストを入力するダイアログが表示され、そのテキストを読み上げます。
 漢字を用いても概ね正確に読み上げてくれますが、固有名詞は厳しいでしょう。

CheckGrammar = 1
var $InputDir$ = Input,喋らせるテキストを入力してください
if $InputDir$ !=
	//messageboxok = $InputDir$
	Speach = $InputDir$
else
	//messageboxok = 何にも入力されなかった
endif



今何時?スクリプト

 現在時刻を喋ってくれます。

CheckGrammar=1

//ゼロサプライ解除の小細工
//数値演算を利用して整数化することでゼロ埋めされてるものを除去している
var $HOUR$ = ?Hour?
$HOUR$ =* 1

var $MINUTE$ = ?Minute?
$MINUTE$ =* 1

var $SECOND$ = ?Second?
$SECOND$ =* 1

//messageboxok = $HOUR$時$MINUTE$分$SECOND$秒
Speach = $HOUR$じ $MINUTE$ふん $SECOND$びょう



今日は何日?スクリプト

 本日の日付を喋ってくれます。

CheckGrammar=1

//ゼロサプライ解除の小細工
//数値演算を利用して整数化することでゼロ埋めされてるものを除去している
var $DAY$ = ?Day?
$DAY$ =* 1

var $MONTH$ = ?Month?
$MONTH$ =* 1

Speach = ?Year?ねん $MONTH$がつ $DAY$にち
//messageboxok = ?Year?年$MONTH$月$DAY$日



今日は曜日?スクリプト

 本日の日付を喋ってくれます。

CheckGrammar=1

//messageboxok = ?WEEK?
Speach = ?WEEK?



時報スクリプト

 毎時の時報を喋ってくれます。
 このスクリプトは、本体のオプション→その他→イベントコマンド→1分ごと、に登録して毎分自動実行されるようにしてください。

 またWavファイルなどの音声ファイルを使用する場合は、Speachコマンドではなく、PlayWavコマンドに置き換えてください。
 時間や曜日をキッチリ判定して平日の9時に「お仕事がんばるぞ」と、18時に「おつかれさま」と喋らせるといった凝ったことも可能でしょう。
 他にもRandomコマンドなどを使用して、任意のディレクトリに放り込んでるファイルを再生するとか、色々アイデアは広がると思います。

debug
CheckGrammar=1

//ゼロサプライ解除の小細工
//数値演算を利用して整数化することでゼロ埋めされてるものを除去している
var $HOUR$ = ?Hour?
$HOUR$ =* 1

var $MINUTE$ = ?Minute?
$MINUTE$ =* 1

if $MINUTE$ == 0
	//messageboxok=$HOUR$時になりました
	Speach=$HOUR$じになりました
endif

※分岐があるので、debugコマンドを埋めてます。
 ScriptTrace.exeで実行時トレースできるようになるので、興味がある方はお試しください。