jk-meets-js

恋に落ちるコード.js [技術系コメディ/短編/連載中]

This project is maintained by 8novels

特別編 恋に落ちるイベント -絵子と樹里の冬休み-

「なんだろう、この気だるい雰囲気は」 「……まったりするねー」

 冬休み。|篠宮樹里《しのみやじゅり》は、親友である|瀬尾絵子《せのおえこ》の家におじゃましている。コタツの上にはMacBookが2台とiPhoneが2台、そしてミカンの山。絵子が樹里にプログラミングを教わる、という名目だったのだが。

「このコタツがな、日本中のクロック数を下げてるよな」
「冬の味方でありラスボスだよねー、コタツって……」
「コタツと勉強は、実に相性が悪いな」
「じゃあ、片付けようか? 心を鬼にして」
「それはダメ」
「ダメなんだ」

 ミカンを口に運ぶ2人。白いスジを綺麗に取り除く分、絵子の方がペースは遅い。

「ところで。年末年始って、イベントが豊富にあるよな」
「あー、目白押しだよねー」
「年明けには初詣に行ったり」
「こないだまでキリスト教のくせに今度は神道か! とツッコんだり」
「年末は大掃除したり」
「来年こそはこまめに掃除しようと誓ってすぐ忘れたり」
「年賀状書いたり」
「interval:1yの|死活監視《ping》だって言ってたよ、知り合いのダメな大人が」
「お年玉をもらったりあげたり」
「一生もらう側でいられますように」
「などなど。これらは、1年という時間が経過したことにより発動する、一種のタイマーイベントと言っても良い」
「お? なんかJavaScriptの話に自然に持っていこうとしてるぞ」

 絵子は姿勢を正す。まったりモードから勉強モードに切り替えたようだ。

「JavaScriptでは、このような定期的なイベントの他に、突発的なイベントも処理できる仕組みが備わっている」
「突発的なイベントとは?」
「例えば、『マウスが動いた』とか『クリックされた』とかそういうものだな。あとは『フォームに情報が入力された』とか『ページが表示された』とか……」
「イベントって言っても、派手なものばかりじゃないのね」
「そうだな。で、パソコンが主流だった頃は、単純なイベントしかなかったんだがな」
「……スマートフォンやタブレットの登場によって、イベントの種類が増えた、ってこと?」
「冴えてるな、絵子。ミカン差し上げまーす」
「わーい」
「イベントの種類は飛躍的に増え、より複雑になった。例えば『画面をタッチした』というイベントも、何本指でタッチしているのか、何秒間か、などの違いですべき操作が変わってくる。それらを適切に処理できるようJavaScriptも進化している」
「へー。えらいね」
「他にも多数のイベントがあるぞ。GPSが位置情報の変化を感知した、とか。照度センサーが明るさの変化を感知した、とか。近接センサーが物体の接近を感知した、とか……」
「スマートフォンにはいろんなものが搭載されてんのね。それ全部JavaScriptからイベントを拾えるの?」
「あらかた拾える。今後もどんどん増えていく」
「ほー。すごいや」

 *

「ただ、何でもかんでも感知すると収拾がつかなくなるからな。実際には、『イベントハンドラ』というものを登録したイベントだけが監視される。要は『私は今からこのイベントだけに注目しますよ!』という宣言みたいなものだな」
「監視カメラのモニターをオンにして、じっと見張ってる感じかな」
「そんな感じだ。逆に、もう監視しなくても良くなったイベントは、イベントハンドラを解除することにより負担を軽減できる」
「たくさん見張ってるのは大変だもんねー」

 2人の間にミカンの皮がうず高く積み上げられていく。

「あとは、イベントの|伝播《でんぱ》についても触れておこうか」
「でんぱ? アレなことを受信したりするのかしら」
「……例えば絵子が、あるWebページを読んでいたとする」
「うん」
「その文章中の『巨乳』という文字に激しく反応したとする」
「不本意だけど、状況はわかった」
「怒りに任せてその『巨乳』という文字を何度も何度もタッチしたとする」
「なんでそんな奇行に走ったのか解せないけど、状況はわかった」
「タッチされるたびにブラウザはタッチイベントを発生させる」
「うん、ブラウザは冷静だね」
「さて問題は、そのイベントはどこで発生したのか、ということなんだが」
「え、巨乳ででしょ?」
「正確には、『巨乳』というテキストが含まれる要素で発生している。例えば……」

   <p>「巨乳には大きさに応じて高い高い税金をかければいいのよ!」と言う絵子の悲痛な叫びが街にこだまする。</p>  

「というHTMLで書かれた文章だとするとだな」
「…………うん」
「この場合、『巨乳」というテキストはp要素で囲まれた段落の一部なので、このp要素でタッチイベントが発生している」
「p要素がタッチされた、ということになるのね」
「そう。ただし、それだけではない。このp要素はあるsection要素の子要素であり、さらにそれはあるarticle要素の子要素である、という構造になっている場合が非常に多い」
「まあ、ちゃんと構造化された文章ならそうなってるだろうね」
「つまり、これはsection要素をタッチしたことにもなるので、そこでもタッチイベントが発生する。さらにその親要素であるarticle要素でも発生する」
「うわ大騒ぎだ。一社員の不始末が社長の耳にまで入ったみたいな」
「このように、イベントは子要素から親要素へと伝播される。これをイベントの伝播という。その様子が、泡が水中を登って行く様子に似ているので『イベントのバブリング』と呼ばれたりもする」
「へー」
「なので、ちゃんとイベントの伝播を適切なところで止め、これ以上伝播させないようにする、などの処理が必要になることもある。意外とこの約束事を忘れて、意図しない動作に悩まされることも多い。実際にプログラムを書くときに思い出すといい」
「はーい」

「というわけで、そろそろ絵子のタッチイベントを発生させるぞ」
「絶対来ると思ったよ! 途中から感付いてたよ! 言動がもうセクハラオヤジそのもの……ぁあんっ」
「お姉ちゃん、水ようかん買ってきたけど食べ……あ、お邪魔しました〜」
「あ、ちょっと待って|紗羅《さら》、いろいろ誤解が」
「紗羅ちゃんこんにちは、どうぞお構いなく」
「揉みながら言うセリフじゃないから……」

 *

 出演:
 |篠宮樹里《しのみやじゅり》 |情報処理《JS》副部長。JavaScriptその他諸々について絵子の良き先生。
 |瀬尾絵子《せのおえこ》 |情報処理《JS》部長(押し付けられた)。自称ツッコミ役だが時折大ボケをかます。
 |瀬尾紗羅《せのおさら》 絵子の妹。中学生。|木更津彩《きさらづあや》名義で地元ラジオのパーソナリティーとしても活躍中。