02: 創造するコマンド「Create」
この章の概略
メッセージ・ボックスからプログラミング言語LiveCodeeの命令文をコンピュータに送る。
ここではインターフェイスの開発ツールを用いません。
-
アプリケーション開発の土台となる「スタック」その他のオブジェクトを作成。
-
メッセージ・ボックスからスタック内のカードを移動させる。
始めにスタックありき
私たちはこれからLiveCodeと言うコンピュータと対話できる言葉を使って、少しづつ目に見えるオブジェクトや、その働きを作って行きます。始めにLiveCodeの言葉を使ってコンピュータにメッセージを送る、メッセージ・ボックスで交信してみましょう。LiveCodeのアプリケーション・アイコンをダブルクリックでオープンすると、デスクトップの上方横に並んだメニュー・バー、左に上下に並んだツール・パレットと、何もないデスクトップの空間だけが見えます。あるいは「Project Browser」と「Application Browser」のウインドウが見えているかもしれません。今はこのふたつのウインドウは閉じてください。
メニューバーには、トップに文字だけの「File」「Edit」など通常のアプリ用のメニューの下に、アイコンで「Inspector」「Code」「Message Box」などが並んでいます。「Message Box」をクリックします(上図赤丸)。「Message Box (Single Line) メッセージ・ボックス」が現れます。「Message Box (Single Line)」がトップにあるタイトル・バーに表示されていない時は、メッセージ・ボックスの上方に並んだアイコンの左端をクリックして選びます。それではまだ何もないこのデスクトップの空間に、新しくプログラムの世界を築き上げる大地を創ります。図のように、メッセージ・ボックス上段のテキスト・スペースに「create stack」とタイプして、リターンキーを叩きます。
create stack
スタックを創りなさい。
デスクトップ上のどこかに小さな四角形がひとつ現れます。コンピュータはプラスとマイナスの電気信号でないと、理解して働いてくれませんから、人間との間にいくつものステップを経て、お互いに理解できる言葉や事柄に変換して対話を進めて行きます。私たちが理解できる英語の言葉「create stack(スタックを創りなさい)」は、少し機械に近い言葉に翻訳されて、さらにもう少し機械に近い言葉に翻訳されて、と言うステップを幾つか踏んで、電気信号になってコンピュータに伝えられ処理されて、結果はそこからまた同じ道程を逆にたどって、最後に具体的な目に見える、四角形のオブジェクトになって現れます。
今コンピュータとの対話で「create stack」と言う言葉を使いました。「create」は日本語でも「クリエイト」で分かるでしょう。もう一つの単語「stack(スタック)」は英語で、一つにまとまった束と言う意味です。何枚ものハガキやカードをきちんと揃えて、まとめた束のような物を想像すれば良いです。LiveCodeではこの四角形のオブジェクトを「スタック」と呼んで、プログラム開発の目に見える他のオブジェクト、イメージやテキスト・フィールド等の土台となるものです。これは言葉の世界で「スタック」ですが、具体的な四角形になると人間の思考で何通りもの違うモノに想像できます。私は何もない空間にスタックの「大地」を創ると言いました。見方を変えれば宇宙に漂う「惑星」とも、大劇場の「舞台」とも、映画館の「スクリーン」とも、昔ながらの図書館の「検索カード」とも、一組の「トランプ」とも、スタックの中に様々なデータを組み込んで行く事で、用途にしたがって何とでも考えられる事が可能です。さらに今はデスクトップに浮かぶ一つのスタックだけの小さな世界ですが、ここからインターネットで別の宇宙に繋がって行く事もできます。
デスクトップ上にあるスタックは、一般的なコンピュータの用途ではウインドウ(window)とも言えます。実際に
create window
ウインドウを創りなさい。
とメッセージ・ボックスから送っても同じ結果を得る事ができますが、LiveCodeの柔軟性を示すだけにして、これからこの四角形のオブジェクトは「stack」と統一して、書き進めてゆくことにします。プログラミング言語LiveCodeでは「stack スタック」は、データ(カードやバックグラウンド)を束ねるオブジェクトの構造を言います。詳しくは後の章で。
値を設定する「set」
この四角形のオブジェクトに名前を付けます。どこかデスクトップ上の隅の方にあったら、適当な処に移動させてください。今は四角形の上部には「Stack 1365539028*」のように、数字の仮の名前が入っています。伝統的なコンピュータ言語学習の作法にしたがって、「Hello World」と名付ける事にしましょう。メッセージ・ボックスに下のスクリプト
set the name of this stack to "Hello World"
このスタックの名前を "Hello World" と設定しなさい。
をタイプまたはコピペして、スペルの間違いがないかを確認したら、リターンキーを叩くと、数字に変わって「Hello World*」が四角の上部にあるバーに現れます。スペルの間違いがあるとメッセージ・ボックス下段のスペースに「Script compile error: エラー」の表示が出ますから、もう一度確認してください。
ダブルクオート「”」で括ったスタックに付けた名前 "Hello World" は、LiveCodeでは「string(ストリング)」と言っている文字列で、アルファベットか数字の普通の英語の文または単語が使えます。普通の英語の文と言ったのは、LiveCodeのプログラミングの言葉としてリザーブ(予約)されているいないに関わらず、ダブルクオート内なら何でも自由に英語の言葉・数字が使えると言う意味です。また逆に言えば、英語の表現に近いLiveCodeと言っても、ダブルクオートの外は厳密に決められた言葉と文法に従わないといけません。もしダブルクオートの外でスペルを間違ったり、対象物(この場合は「this stack」)が見当たらなかったりしたら、LiveCodeはコンパイル・エラーになってストップしてしまいます。LiveCodeでは他の機械レベルに近いコンピュータ言語と違って、数字をストリングにした場合、文章としての数字とも、値としての数字としても扱うことができます。後章で具体例が出た時に詳しく。
チュートリアルの後半まで、日本語での名前の付け方等は忘れてください。
プログラミング自体、もともと英語をベースに作られているので、
英語である程度表現ができるようになった後、可能な日本語表現を加えて行きます。
LiveCode7 注:LiveCode 7ではスタックの名前を「ハローワールド」と日本語にしても問題ありません。
ボタンとカードを創る
スタック「Hello World」の上にボタンを一つ作ります。メッセージ・ボックスから
create button
ボタンを作りなさい。
を送りると、スタック中央に四角い横長のボタンが現れます。上のスタックの説明に「何枚ものハガキやカードをきちんと揃えて、まとめた束のような物」と書きました。今ここにあるオブジェクトは、スタックがひとつ、スタックの中にカードがひとつ(1枚)、カードの上にボタンがひとつあります。このカードの上にもう1枚新しいカードを作ります。メッセージ・ボックスから
create card
カードを作りなさい。
を送ると、ボタンは見えなくなって新しいカードが現れます。スタックの上部のバーは「Hello World (2)*」となります。これはスタックのカード・ナンバーが「2」を表しています。もう一度メッセージ・ボックスのスクリプトのリターンキーを叩くと、スタックの上部のバーは「Hello World (3)*」となります。
カードの移動
スタック「Hello World」にはカードが3枚あります。現在はスタックの上部のバーは「Hello World (3)*」となっているので、次々にカードを移動してそれぞれを開いてみましょう。
go to the next card
次のカードに行きなさい
と、メッセージ・ボックスにタイプして、リターンキーを叩き続けると、次々にスタックの上部のバーのナンバーが変わって行きます。「Hello World (1)*」が開けられた時には、先ほど作ったボタンが現れ、それ以外は白地のカードが見えます。「go to the next card」は他の言い回しもできて
go to next card
go next card
go next
open next
上記のどれでも同じ働きをします。「next」はカードナンバーが増えて行く方向に進みますが、逆向きに進めたい場合は
go to the previous card
前のカードに行きなさい
これも「next」と同じ言い換えができます。
また「previous」は短縮形の「prev」も使う事ができます。
go prev
(カードと言う言葉は省かれていますが、意味は)前のカードに行きなさい
カードにはそれぞれナンバーが付いているので、
カードナンバーを指定して移動する事もできます。
go to card 1
カードナンバー1に行きなさい
始めにメッセージ・ボックスからカード1を開いて、その後
go to cd 3
カードナンバー3に行きなさい
をメッセージ・ボックスから送って、カード3を開いてください。
「card」の短縮形「cd」を使ってみました。
ここでLiveCodeは一旦終了(Quit)させます。メッセージ・ボックスに
quit
終了しなさい
をメッセージ・ボックスから送って、この章は終わります。
Tips
- スタックやカードのように、別な呼び方や短縮形にできるオブジェクトは、呼び方を統一しておかないと、 何かの事情ですべてを書き直さなくてはいけない場合、検索から漏れてバグの原因となることがあります。
この章で出て来た言葉
create コマンド(command) 現在あるカード上に新しいオブジェクトを作成する
stack オブジェクト(object)LiveCodeの開発の土台となるオブジェクト 同義語:window
card オブジェクト(object)スタック内の1枚のカード 短縮形:cd
create stack "Hello World"
create card
go to cd 1
set コマンド(command)あるバリュー(価値、評価)を付与する、設定する
the キーワード(keyword)プロパティやファンクションの名前の前に付けて指し示す
name プロパティ(property)オブジェクトを特定する名前
this キーワード(keyword)現在のスタック、カードを指し示す
set the name of this stack to "Hello World"
go コマンド(command) 他のカードやスタックに移動する 同義語:open
next キーワード(keyword)現在のカードから次のカードを指定する
previous キーワード(keyword)現在のカードから前のカードを指定する 短縮形:prev
go to the next card
go next cd
go prev card
quit コマンド(command)LiveCodeまたは作成したアプリケーションの終了
quit