チャットって再読み込みしないとできない?jQueryでできるって?
「非同期通信」という言葉をご存知だろうか。
プログラミングを勉強している人ならば常識なのかもしれないが、日常で耳にしないこの言葉を知らない人も多いと思う。
つい最近まで私も知らなかった。今もまだ分からない。今まさに躓いている。猛烈な壁にぶち当たっている。この壁硬ぇ。
サーバーサイド言語であるPHPはサーバーに働きかける。サーバーにデータを保存したり、サーバーで管理するデータを引き出したりする。
少し想像しにくいので、Yahooのニュース記事で考えてみよう。
読者の方々が手に持つ携帯電話。その携帯電話でYahooの記事を見るとする。
芸能でも、国際情勢でも、国内でも、経済に関するニュースでも何でもいい、何か気になる記事を見つけた時に画面をタッチする。
すると、画面表示が切り替わる。そのページには記事のタイトルが先頭にある。小さい文字で時間が書いてある。その下には記事についての画像、下に移って記事が出てくる。
「ふん、そうか、なかやまきん◯君はまたボディビル大会で優勝したのか」
これはサーバーに文字と画像と時間と記事などのデータがあり、そのデータをブラウザ(携帯電話の画面やパソコンの画面)に表示しているのだ。
データを読み込むタイミングは記事をクリックした時である。
そして、チャットで考えてみる。
部活で帰りが遅くなり、お母さんに連絡する年頃の女の子がいたとする。名前はノブエ。昭和初期の名前だが、勿論、令和の例え話である。
ノブエは帰宅が遅くなることを母、光輝に連絡した。
『部活今終わって、アヤと一緒に帰ってる!7時には家に着く(ハート))』
『りょ。牛乳切れたから牛乳買ってきて』
『かしこまり(牛)』
このやりとりの間、二人は画面を切り替えずにやり取りをしている。
メッセージが届けば、画面にメッセージが出る。
そう、ページを再読み込みしないで、新規のメッセージを見ることができるのだ。
非同期通信がなかった時のことを考える。
サーバーにメッセージを送り、そのサーバーにある新規のメッセージデータを取得しなければならない。メッセージデータが送信されたタイミングは分からない。その為、まるで昔のガラケーの「二次元殺法センターに問い合わせ連打の術」のようなことになってしまうのである。
昔の……ノブエの時代はいい時代だった。電車で煙草も吸えた(私は非喫煙者です)。ジョーカーがいっぱいのなんでもありだった。
今は違う。再読み込みしないで再読み込みのような動きをしてくれる。サーバーにあるデータを勝手に取得してくれるのだ。
サーバーにあるデータが勝手に届く? どうやって?
それがjQueryのajaxの非同期通信である。
まぁ、PHPや他の言語にも非同期はあるのだが……私が選んだのはjQueryのajaxである。
この壁が硬ぇ。
妻のためにぶち壊す壁である。
お陰様で非同期通信の壁を打ち壊すことが出来ました。また新たな壁が出現しておりますが、その壁も妻のために打ち壊します。




