入門編『構文』
「独自の術式を組むのって大変?」
エイダの疑問に、魔導書は答える。
「まぁ大変と言えば大変かな?実際、森の中で火を出すの苦労したし。主に計算が……」
エイダは思い出したのか、目をキラキラさせて興奮気味に語る。
「歩いても小さな火がピタッと頭の上で燃え続けるなんて、本当に凄かった。あんな魔法初めて見た」
「エイダの為だけに組んだ術式だからな」
魔導書は少し照れ気味に答えた。
「わたしも出来るようになるかな?」
憧れる様にエイダは呟いた。
「そうだな、簡単なjavascriptを組んでみるか?」
「えっ、うん、やる」
エイダは即答した。
「ちょっと待ってて」
ページの上下に二つの四角型の領域が現れ、大きさが変わったり、文字が現れたり、消えたりする。1分もしない内に準備が整った様だ。
「下の入力領域に術式を書くと、上の出力領域に表示するようにした。それでは始めよう」
術式入力領域に文字が表示される。
<script>
</script>
「山括弧の中にscriptって書かれてる」
「これはタグと言って、<script>は術式の始まり、</script>は術式の終わりを意味する。この二つのタグの間に書かれるのが実行される術式になる。例えば、こんな感じ」
<script>
alert("ボクはわるい魔導書じゃないよ");
</script>
「ボクはわるい魔導書じゃないよ」と文章が四角のボックスと共にページに表示された。
「これがjavascriptなの?」
「そう。ページに警告文を表示するだけの簡単な命令文。警告文は『閉じる』ボタンを押すと消える」
「『閉じる』ボタン?これかな?」
エイダは『閉じる』の文字を触ると、警告文のは消えた。しかしエイダは少し不満そうだ。
「けどこれ、全然魔法じゃないよ?」
「確かに魔法ではない。しかしjavascriptは元々この様に魔導書のページを『動的に』表現する為に作られた言語なんだ」
「動的?」
「文字に触ると色が変わったり、ページが新しくなったり、新しい文章が現れたり。それがなぜか、この世界では魔法を制御するのに使われている」
「何で?」
「さあ?この世界を作った神様が面倒臭がり屋で、別の世界の人の技術を拝借したとか」
魔導書は嫌々そうな声で答えた。こほんと咳払いをして気を取り直し、授業を再開する。
「さて、これと同じように『へんじがない、ただの魔導書のようだ』と警告文を表示するにはどうすればいいと思う?」
「えっと、こんな感じかな」
エイダの発した命令文が、下の術式入力領域に入力されていく。
<script>
alert("へんじがない、ただの魔導書のようだ");
</script>
「正解」
入力した文字が警告文で表示される。
「では命令文を二行並べると、どう表示されると思う?」
<script>
alert("ボクはわるい魔導書じゃないよ");
alert("へんじがない、ただの魔導書のようだ");
</script>
魔導書がちょっと意地悪な質問をしてきた。エイダは考える。
「どちらともとも表示されると思うけど。『同時に』か『順番に』か?う〜ん。『ボクはわるい魔導書じゃないよ』が表示されて『閉じる』ボタンを押したら、次の『へんじがない、ただの魔導書のようだ』が表示される……かな?」
「正解。術式は上から順に、一つずつ命令文が処理されていく』
予想通りに動いて嬉しそうなエイダに、魔導書はまたまた意地悪な質問を投げる。
「では二行の命令文を一行にすると、どうなると思う?」
<script>
alert("ボクはわるい魔導書じゃないよ");alert("へんじがない、ただの魔導書のようだ");
</script>
「上から順に処理されるから、今度は両方同時にとか?」
エイダの予想通りの答えに、嬉しそうに魔導書は答える。
「残念。動作は前と変わらないが正解」
「え〜」
魔導書は説明する。
「術式は改行や空白はあまり関係ない。極端な話、一行に全部書いても全く問題ない」
<script>alert("ボクはわるい魔導書じゃないよ");alert("へんじがない、ただの魔導書のようだ");</script>
「しかし、これだと読みにくいので、術者は改行を入れたり、空白を入れたりして見栄えを良くし、理解しやすいようにする」
頑張って理解しようとしているエイダに、さらに魔導書は追い討ちをかける。
「ちなみに、こんなに改行しまくっても動作は全く同じだ」
<script
>
alert
(
"ボクはわるい魔導書じゃないよ"
)
;
alert
(
"へんじがない、ただの魔導書のようだ"
)
;
</script
>
「え〜、これは嘘でしょう?」
さすがに今回は、エイダは抗議の声を上げた、しかし実行すると、全く同じ様にメッセージが表示された。
したり顔の雰囲気を醸し出す魔導書に、エイダは若干の苛立ちを覚えるのであった。
ーーーーーーーーー ログ ーーーーーーーーー
エイダはスクリプトの構文を理解した。
『構文』スキルがLV1になった。
エイダはタグ『<script>』を覚えた。
エイダは関数『alert()』を覚えた。
ーーーーーーーーーーーーーーーーーーーーーー
登場人物
エイダ・ラブレス
冒険者に憧れている9歳の普通の女の子。
アルファベットも問題なく読めている様です。
職業:術者 LV1
称号:初心者
スキル:『関数 LV1』『構文 LV1 new』
関数:『alert() new』
HTMLタグ:『<script> new』
喋る魔導書
エイダが森の奥で出会った喋る魔導書。
質問を通して考えさせて教えるタイプ。
作者より
プログラム言語によっては、改行や空白が意味をなす場合があります。例えばpythonでは、インデントがループ内か外かを示します。
i = 0
while i < 10:
i = i + 1
これだと問題なく10回だけ処理されるのですが、
i = 0
while i < 10:
i = i + 1
インデントがないと「i = i + 1」がループの外になる為、iはず〜っと0のままになり、無限ループに入ってしまうそうです。
今回のお話に出てくるjavasriptのサンプルをjsfiddleに置きましたので、遊んでみて下さい。閑話でjsfiddleの説明をする予定です。
「ボクはわるい魔導書じゃないよ」
https://jsfiddle.net/AkiraMeru/wnvdb30o/
「へんじがない、ただの魔導書のようだ」
https://jsfiddle.net/AkiraMeru/wnvdb30o/1/
「ボクはわるい魔導書じゃないよ」「へんじがない、ただの魔導書のようだ」二行
https://jsfiddle.net/AkiraMeru/wnvdb30o/2/
「ボクはわるい魔導書じゃないよ」「へんじがない、ただの魔導書のようだ」一行
https://jsfiddle.net/AkiraMeru/wnvdb30o/3/
「ボクはわるい魔導書じゃないよ」「へんじがない、ただの魔導書のようだ」断片
https://jsfiddle.net/AkiraMeru/wnvdb30o/4/
参考にしたページ
括弧の種類
http://blog.livedoor.jp/chameleon_web/archives/11469073.html