3.03. スクリプト(1)Hello world、変数、forループ

Praatスクリプトを本格的に書いていくには,Praatスクリプトの「文法」を学ぶ必要があります。体系的に学ぶための王道は,Praatのヘルプに用意されているScripting tutorialを最初から最後まで丁寧に読むことですが,ここでは実例をもとにいくつかの基本的な事項を学んでいきます。

まず,新しいスクリプトを書くための準備として,Objectウィンドウの上メニューからPraat > New Praat scriptを実行し,スクリプトのウィンドウを立ち上げましょう。

(1)はじめてのスクリプト:Hello world

たいていの場合,プログラミング言語やスクリプト言語の学習において最初にすることは,文字列を出力してみることです。スクリプトウィンドウ上に,次のように入力してみましょう。

writeInfoLine: "Hello world"

最初のwriteInfoLineは,コロン(:)以下をInfoウィンドウに出力し改行することを意味します。出力するものが文字列の場合,出力したい文字列はダブルクオテーションで囲みます。なお,Praatスクリプトにおいて,多くの場合スペースは意味を持ちません。上の例ではコロンと"Hello world"の間にスペースを入れていますが,スペースを全く入れなくても,スペースを二つ以上入れても問題ありません。

スクリプトウィンドウ上部メニューのRun > Runにより,このスクリプトを実行してみましょう。すると,次のようなInfoウィンドウが立ち上がります。

Hello worldの次の列にも文字列を出力したい場合は,AppendInfoLineというコマンドを使います。以下を実行してみましょう。

writeInfoLine: "Hello world"
appendInfoLine: "こんにちは世界"

数字を出力するときには,ダブルクオテーションはつけません。以下を実行してみましょう。

writeInfoLine: "Hello world"
appendInfoLine: "こんにちは世界"
appendInfoLine: 1

(2)変数(variables)

Praatでは,変数をつくり,そこに値を代入することができます。以下のスクリプトを書き,実行してみましょう。

a = 1
writeInfoLine: a

ここでは,aという変数に1という値を代入しています。Praatスクリプトにおいて,変数名は必ず小文字で始まらなければならず,2文字目以降にはアルファベット(大文字・小文字),数字,アンダーバー(_)を使うことができます。この範囲内で,変数名は自由につけることができます。

変数を使って計算をすることもできます。

a = 1
b = 2
c = a + b
writeInfoLine: c

上のスクリプトを実行すると,どのように出力されるでしょうか?

文字列の場合は,変数名に$をつけます。また,代入する際にダブルクオテーションで囲みます。

d$ = "Hello world"
writeInfoLine: d$

他の変数の値を文字列の中に埋め込むには,以下のようにシングルクオテーションを使います。

a = 1
b = 2
c = a + b
e$ = "'a' + 'b' = 'c'"
writeInfoLine: e$

(3)Forループ

Praatスクリプトの文法のうちで重要なものの一つに(多くのプログラミング言語やスクリプト言語に言えることですが),forループというものがあります。以下のスクリプトを見てみましょう。

writeInfoLine: "start"
for i from 1 to 10
   appendInfoLine: i
endfor

ここで,for i from 1 to 10というのは,iという変数に1から10を順番に代入していくということを意味しています。まずiに1が代入され,appendInfoLine: iが実行され,次のendforでforの行に戻り,iに2が代入されます。このようなforからendforの繰り返しを,iが10になるまで続けます。

このスクリプトを実行すると,以下のように出力されます。

forとendforは必ずセットで用いられます。forで始まりendforで終わるものを一般にforループと呼びます。forループの内部(ここではappendInfoLineの行)は,スペースやタブによって字下げして書くのが一般的です。これは,スクリプトを見やすくするためです。