入門編『文字列演算子』
「ダブルクォーテーション『”』で囲まれているから、『こんにちは、エイダ』は文字列だよね?数じゃないから足せないよ?」
エイダの問いかけに魔導書は答える。
「うむ、では実際に動かしてみよう」
警告文に『こんにちは、エイダ3』と表示された。エイダは結果について、しばらく考える。
「えっ〜と、普通に文字として、くっ付いた?」
「そう。足し算のどちらかの値が文字列の場合、文字列をくっ付ける計算になる。両方とも数の場合は、普通の足し算になる。因みにこの『3』は『さん』と読むので、『エイダさん』と読…」
「『+』の他の演算子で、文字列を変化させるのはあるの?」
どうでもいい事を説明してたので、エイダはスルーして質問をした。エイダの父親も時々、面白くもないギャグを挟んでくるので扱いには慣れている。
「いや、『+』以外はないかな。他の演算子だと『NaN』になってしまう」
若干ショックを受けている魔導書は、実際に『+』を『−』にして実演してみせる。警告文で『NaN』と表示される。
「NaN?」
「『Not a Number』。英語で『数じゃないよ』の頭文字を組み合わせた単語」
魔導書の説明に、エイダは今まで気になっていた事を聞く。
「『alert』とか『script』とか『Not a Number』とか全部英語ばかり。何で普段使っている『日本語』で術式は組めないの?」
「英語を喋っている人達が、プログラムの基礎を開発したから、英語がベースなんだと思う」
「えっ?英語を喋る人達がいたの?英語って魔術を扱う為だけの言葉かと思ってた」
エイダが住む世界の共通語は日本語である。英語など魔術を極めようとする酔狂な学者しか学ばない学問であった。そんな英語を普段の会話に使うなど、エイダが驚くのも無理はない。
「元の世界は英語が共通語だったので、世界各国英語を喋る人は多かった。逆に異世界の共通語が日本語だと聞かされて、驚いたぐらいだ」
「? 魔導書さんは、そこにいた事があるの?」
「という言い伝えを聞いた事があるような?」
「ん?」
茶を濁したような答えに、首を傾げるエイダであった。魔導書は話題を変える。
「こほん。話がだいぶ逸れてしまったな。授業を再開しよう。これはどうなると思う?」
<script>
alert(1+2+"ダー!");
</script>
「1と2が足されて3になって、文字列の"ダー!"とくっ付くから『3ダー!』?」
なんかよくわからない言葉に、不思議に思いながらエイダは答える。
「その通りダー!」
変なテンションの魔導書の声と共に、ページには『3ダー!』が表示される。
「それではこれはどうかな?」
<script>
alert("エイダ"+1+2);
</script>
「これも同じように『エイダ3』」
「残念!」
ガッツポーズしてるような勢いで、魔導書は答えた。警告文には『エイダ12』と表示されている。
「えー、何で?」
「足し算が続く場合、前から順に計算するって教わった?」
エイダは母の厳しい授業を思い出し答える。
「うん」
「『"エイダ"+1+2』のように+が複数ある場合、どれから計算されると思う?」
「『"エイダ"+1』から」
エイダの答えに満足そうに、魔導書は説明を続ける。
「そう、『"エイダ"+1』が先に計算される。そして片方が文字列なので、くっ付ける計算が行われ『エイダ1』が作られる。そして次に計算されるのが『"エイダ1"+2』。これも文字列+数字の処理が行われ『エイダ12』となる」
「わかった」
「文字列をくっ付ける演算子に『+』を使うからややこしくなるのかもしれない。他のプログラム言語、例えばperlでは『+』ではなく、『.』が使われている」
「プログラム言語って沢山あるの?」
「多分、数百はあると思う」
プログラム一つでも大変なのに、それが数百あると聞かされエイダは目眩を覚えた。
「何でそんなに沢山あるの?一つにしちゃえば良いのに」
「色々な用途に合わせたり、新しい概念を元に作られたり、趣味で作ったり。それぞれに強みや個性があって、まぁ一つにまとめるのは無理かな?」
「ふーん、何か色々とあるんだね」
エイダの世界の共通語が日本語でも、地域によっては言葉が違う。貨幣や単位も、未だ統一はされていない。それと同じように、プログラム言語も統一されないのだろうとエイダは思った。
「『エイダ3』と表示する場合は、『()』をこの様に使えば大丈夫。曖昧な時は必要なくても『()』を使うのも一つの手だ」
魔導書が授業を再開する。
<script>
alert("エイダ"+(1+2));
</script>
入力領域に術式が入力され、『エイダ3』と警告文に表示される。エイダも納得し、頷く。
「算術演算子も粗方終わったし、次に教えないといけない事は……」
魔導書の呟きと共に、新しい術式が入力されていく。
<script>
var x=1;
var y=2;
alert(x+y);
</script>
書き終わると、魔導書は宣言した。
「次は『変数』を勉強しよう」
ーーーーーーーー ログ ーーーーーーーーーー
エイダは結合演算子『+』を覚えた。
『文字列演算子』スキルがLV1になった。
ーーーーーーーーーーーーーーーーーーーーーー
登場人物
エイダ・ラブレス
冒険者に憧れている9歳の普通の女の子。
魔導書への敬意が、段々と薄まってきている?
職業:術者 LV1
称号:初心者
スキル:『関数 LV1』『構文 LV1』『文字列 LV1』『コメント LV1』『算術演算子 LV1』『文字列演算子 LV1 new』
関数:『alert()』
HTMLタグ:『<script>』
喋る魔導書
エイダが森の奥で出会った喋る魔導書。
授業を面白くしようと頑張っているが、方向性は大丈夫か?
作者より
昨日初めてPVが100を超えました。嬉しいですね。当たり前の事なのですが、更新しないとPV増えません。頑張って続き書かないと。明日も更新できたらいいな。
異世界物は言語の問題が必ず生じます。自動翻訳やら言語スキル獲得で言葉の壁を越えるのが普通ですが、このお話ではなぜか異世界で日本語が使われている設定です。
スキルをどんどん覚えていき、レベルMAXになった複数のスキルが統合されていったら面白いかも?
参考にしたページ
式と演算子
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators
主要でもないプログラミング言語200種を一行で解説。作者もこんなにあるとは知りませんでした。
https://qiita.com/make_now_just/items/b2ab19f954417c71848d
JSfiddleサンプル
文字列演算子でNaN
https://jsfiddle.net/AkiraMeru/kkxtnjkd/4/
3ダー!
https://jsfiddle.net/AkiraMeru/kkxtnjkd/5/
エイダ12
https://jsfiddle.net/AkiraMeru/kkxtnjkd/6/
エイダ3
https://jsfiddle.net/AkiraMeru/kkxtnjkd/7/