step04 『and』でつなぐ属性
「まってよメル、もう少し……!」
「何よ? お腹すいたし、何か食べて帰りたいわ」
「僕もおなかは空いたけどさ、最後の『属性』っていうのが気になるんだよ、教えてよ」
僕は、椅子から立ち上がったメルハートを引き止めた。
細い体を包む学舎の青い制服の裾と、白いブラウスの胸元を飾る赤いリボンを気にしていた彼女は、再び図書館の椅子に腰掛ける。
「……随分勉強熱心ね」
「だって……」
僕は失った一年分の『魔法学科』の授業内容を覚えなおさなくちゃいけない。
教科書を読んでも良いけれど、こうして詳しい友人に教えてもらうのが一番の近道だ。
それに……この図書館でメルハートと向い合って、こんな風に話す時間を、実は結構気に入ったって事もある。
もちろん、言えば調子に乗るのは目に見えているから、内緒にしておくけれど。
学舎のクラスで過ごしている時はお互い別の親しい友人グループと一緒になり、お喋りをしていることが多い。
僕とメルハートの家は隣同士な事もあり、登下校はどうしても一緒になるけれど……、こうして勉強を一緒にするっていう経験は、意外と初めてかも知れない。
僕のそんな気持ちなんて露知らず、メルハートは再び僕の家庭教師か何かになったつもりでふんぞり返った。そして、小脇に抱えていた魔法の本を、机に置く。
「ま、いいわ。教えてあげる」
「やった、ありがとメル」
「そ、その代わり。お腹がすいたし、帰りに何か奢りなさいよね!」
「え、えぇ……!?」
思わぬ申し出に面食らいながらも、結局いつもの事だし別にいいかと半笑いを返す。
「で……、何だったかしら、あぁそう『属性』の説明ね」
「うん。さっきのwhere句に関係があるって言っていたけれど、どういう意味か教えてよ」
僕はついさっき勉強したばかりの『検索魔法』を思い出す。
――select * from 『ヘイム大陸周諸国大全①』 where 『属性』=『人間』
(セレクト、アスタリスク、フロム、『ヘイム大陸周諸国大全①』、フエア、『属性』イコール『人間』)
属性に対して『人間』で絞れば、人間に関する言葉が選び出される。『武器』なら武器に関する言葉が選び出される。
その理屈はなんとなく解るけれど……なんだか、都合が良すぎる気がする。
「実はね、ウィズに教えるために簡単に『属性』ってひとくくりで見せたけれど、実はもう少し細かくて複雑なの」
「複雑?」
「そう。一晩考えてウィズが疑問に感じたら、教えてあげようと思ったけれど。予定を早めて教えちゃうわ」
メルハートは、魔法の教科書のとあるページを開いた。
そこにはこう書かれていた。
『人間という種族の属性は一言では表せない。神に造られし世界の住人である。生き物であり、男女の区別が有る。生きた時間により、幼児から子供、大人、老人へと変化する。生活している集団には、王、兵士、平民という身分が存在し、秩序と混沌を併せ持つ。手足がそれぞれ二本、目玉は2つで口は一つ。食物を摂取し排泄もする。生きている間は動くが、死を迎えることで動かなくなり、土と水と骨へと分解する』
「なにこれ……人間の解説書?」
ゴチャゴチャといろいろな事が書かれているけれど、人間を意味しているのは間違いない。
「そうね。ここに書かれているものこそが人間のもつ『属性』の数々ってこと」
「これを『検索魔法』で条件をつけて、表示させているんだ」
「概念的には、そういうことね。だから『人間』という指定で王様も騎士様も、全部が出てきたの。他にも『性別』『身分』『年齢』……いろいろな属性があるわ」
「……てことは、組み合わせたらどうなるの?」
「やってみせましょうか?」
ふふん、と意味ありげに眉を持ち上げる。
「うん。でも、どう唱えるの?」
「『and』(アンド)で繋げればいいわ。見てて、正式な『属性』の指定はこうよ」
メルハートはさっきの呪文を少し変えて唱え始めた。
――select * from 『ヘイム大陸周諸国大全①』
where 『種族』=『人間』
and 『性別』=『男』
(セレクト、アスタリスク、フロム、『ヘイム大陸周諸国大全①』、フエア、『種族』イコール『人間』 アンド 『性別』イコール『男』)
種族という属性を『人間』で絞って、更に『性別』を加えたってことだ。本の上に四角い魔法の窓が輝き、索引に記されたページが表示されてゆく。
――王様、大臣、騎士。
「あ、やっぱり。お姫様と王妃様は出てこない!」
人間という属性に更に性別という属性を重ねて、条件を『男性』だけに絞ったって事だものね。
「ま、この国の騎士様は全員男性だし、女性大臣も居ないものね」
「なるほど、andで条件を組み合わせられるんだね!」
「舌さえ噛まなきゃ、いくつでも重ねていいわよ」
「あはは」
調子に乗って今度は僕が唱えてみる。
――select * from 『ヘイム大陸周諸国大全①』
where 『種族』=『人間』
and 『性別』=『男』
and 『身分』=『学生』
今度は更に『学生』を条件として入れてみた。
――<エラー>該当無し。
「あれ? 何も出てこない?」
初めての失敗だ。魔法の窓は黒くて、エラーの文字だけが浮かんでいる。
「もう、ウィズ……。考えてもみなさいよ。王様、大臣、騎士。このどこに『学生』がいるのかしら?」
「あ……そうか! 条件を付け過ぎちゃうと、逆に「あり得ない条件」で呼びかけているってことになるんだ」
「そう。街の大通りで『学生で王様か騎士様、いませんかー?』って叫んでご覧なさいよ。頭がおかしいと思われて、衛兵にしょっぴかれるわ」
メルハートは、くすくすと笑いながら、夕日を浴びて金色の濃くなった髪を指先で梳く。
「……確かに」
むむむ。やっぱり魔法の呪文は難しいなぁ。
<つづく>
【ワンポイント】
今回は、前回からの続きですね、呪文『where』句。
情報を絞るためにの条件は、『and』を使って重ねることが出来ます。
前回の書き方は実は『属性』イコール、と抽象的すぎましたから、少し踏み込んで書きましょう。
select * from 本の名前(テーブル名)
where 『種族』=『人間』
and 『性別』=『男性』
and 『身分』=『平民』
これで「種族は人間、性別は男、ついでに平民であること」と組み合わせた条件を
指定したことになります。
まぁ、これはあくまでも作中の『人間』の属性が細かく記述された図鑑から呼び出すための例です。
けれど実際に使われる魔法言語(SQL)の構造は、これを覚えておけば理解できますよ。
つづきは・・・またあとで。