Ajax(Asynchronous JavaScript and XML)

分類
テクノロジ系 アルゴリズムとプログラミング
出る試験
基本情報応用情報
重要度
★★★☆☆

ページ全体を読み込み直さず、裏で通信して必要な部分だけを書き換える作り方。

もう少し詳しい説明

Ajaxは、ページ全体を読み込み直さずに、必要な部分だけを書き換える作り方です。言語ではなく、既にある技術の組み合わせ方を指します。

名前は Asynchronous JavaScript and XML の頭文字で、2005年に Jesse James Garrett が記事で使ったことから広まりました。

先に言葉を2つ説明します

ブラウザは、Google Chrome、Microsoft Edge、Safari など、Webページを見るソフトです。手元のパソコンやスマートフォンで動いています。

サーバは、要求を受け取って、応えを返す側の機械です。Webページの中身は、このサーバに置かれています。

ブラウザが「このページをください」と頼み、サーバが送り返す。 これがWebの基本の形で、このページの話はすべてこのやり取りの中で起きます。

何が変わったのか

それまでのWebページは、少しでも表示を変えるならページ全体を受け取り直す作りでした。

  1. 利用者がボタンを押す
  2. ブラウザ(Webページを見るソフト)がサーバ(応えを返す側の機械)に要求を送る
  3. サーバがページ全体を作って送り返す
  4. ブラウザが画面を作り直す

変わるのが一部分でも、関係ない部分まで全部送り直します。待っているあいだ画面はいったん白くなり、操作もできません。

Ajaxでは、2〜3が裏側で行われます。

「非同期」の意味

Asynchronous は非同期と訳します。意味は、返事を待たずに先へ進むことです。

同期だと、要求を出したら返事が来るまで何もできません。非同期なら、要求を出したあとも画面は動き続け、返事が届いた時点で、そのとき決めておいた処理が走ります。

利用者から見ると「待たされない」、作る側から見ると「届いてから書き換える処理を先に用意しておく」ということになります。

組み合わせている技術

Ajaxは、次のものを組み合わせて作ります。

役割使うもの
中身と見せ方HTML(ページの中身と構造を書く言葉)、CSS(見た目を指定する言葉)
画面を書き換えるDOM
裏で通信するXMLHttpRequest
全体をつなぐJavaScript

表に出てくるものを補っておきます。

どれも新しく作られたものではありません。 すでにブラウザにあったものを組み合わせたら、今までと違う使い心地になった、というのがAjaxの正体です。

裏で通信する部分は、いまは Fetch API(XMLHttpRequestより新しい、通信のための部品)が使われることが増えています。

DOMの「木」とは

ここでいう木は、植物のことではなく、データの並べ方の形を指す呼び名です。実際のHTMLで見てください。

<body>
  <h1>おしらせ</h1>
  <ul>
    <li>1件目</li>
    <li>2件目</li>
  </ul>
</body>

<body> の中に <h1> と <ul> があり、<ul> の中に <li> が2つ入っています。この「中に入っている」という関係を線でつないでいくと、1つの出発点から枝が分かれていく形になります。この形を木と呼びます。

線でつないで書くと、こうなります。

body
├ h1(おしらせ)
└ ul
  ├ li(1件目)
  └ li(2件目)
木での呼び方上の例では
根(いちばん上の、ただ1つ)<body>
枝(上下のつながり)「中に入っている」という関係
葉(それ以上、下へ枝が出ていないところ)<li>1件目</li> のように、中にタグが入っていないもの

木なのに、根がいちばん上にあります。コンピュータの世界では、上から下へ枝を伸ばして書くのが決まりなので、さかさまに見えるのがふつうの姿です。

DOMは、この木をJavaScriptから触れるようにしたものです。「<ul> の2つ目の <li> の文字を書き換える」のように、木の中の1か所だけを指して差し替えられます。差し替えた部分だけが画面に出し直されるので、ページ全体を作り直す必要がありません。Ajaxが「必要な部分だけを書き換える」と言えるのは、この仕組みがあるからです。

木そのものについては、木構造(1つの根から枝が分かれていくデータ構造。上下の関係を持たせたいときに使う)で詳しく説明しています。

正式名称の最後にXMLとあるが

Ajaxの正式名称は Asynchronous JavaScript and XML で、最後の語がXMLです。しかし、ブラウザとサーバのあいだでやり取りするデータが、XMLである必要はありません。

実際、いまブラウザとサーバのあいだで行き来しているデータは、ほとんどがJSON(JavaScript Object Notation。{"名前": "値"} のように、名前と値の組でデータを書く書き方)です。

XML(Extensible Markup Language。<名前>値</名前> のように、札で囲んでデータを書く書き方)より短く書けるので、通信量が少なくて済みます。HTMLの断片やただの文字列が返ることもあります。

「非同期である必要も、厳密にはない」という点まで含めて、正式名称が実態に追いついていない用語です。試験では正式名称が問われることがあるので、4つの語の並びは覚えておいてください。

何に使われているのか

地図を指で動かすと、はみ出した部分が後から表示される。検索窓に文字を入れると、候補がその場で出てくる。入力の誤りが、送信ボタンを押す前に赤く出る。

どれもAjaxです。 いまのWebアプリケーションで「ページが切り替わらずに動く」部分は、ほぼこの仕組みで作られています。

注意点もあります。受け取ったデータをそのまま画面に差し込むと、中に書かれたタグが、ただの文字ではなく命令として解釈されてしまいます。

タグは、<p> や <script> のように、HTMLで意味を表すための札です。もし <script> と書かれた文字がそのまま差し込まれると、ブラウザはそれをプログラムとして実行してしまいます。

これを悪用するのがクロスサイトスクリプティング(他人のサイトに悪意のあるプログラムを仕込み、見に来た人のブラウザで動かす攻撃)です。備えは、ページ全体を作り直す場合と同じように必要です。

試験ではこう出る

科目A(旧・午前)で出ます。いちばん多いのは、Ajaxで何ができるかを選ばせる問題です。「ページ全体を再読み込みすることなく、一部だけを更新できる」という表現が答えになります。

次に多いのが、正式名称と、使っている技術です。XMLHttpRequest(裏で通信するための部品)という名前は、そのまま選択肢に出てきます。

非同期という語の意味も問われます。「返事を待たずに、ほかの処理を進められる」という向きで答えてください。待ってから進むのが同期です。

応用情報では、Ajaxを使う画面の設計や、通信回数が増えることによるサーバ(応えを返す側の機械)側の負荷まで広がります。一度に全部送るより通信の回数は増えるという、裏側のことも押さえておくと答えやすくなります。

関連する用語

JSON
名前と値の組でデータを表す書き方。いまAjaxでやり取りされるデータは、ほとんどこれ
HTML
Webページの中身を示す言語。Ajaxが書き換えるのは、この構造の一部分
XML
データを木の形で表す言語。Ajaxの正式名称の最後にあるXMLはこれだが、いまは使われないことが多い
クロスサイトスクリプティング
受け取った文字がタグとして解釈される攻撃。受け取った内容を画面に出すときは同じ注意が要る

ミニクイズ

Ajaxを用いることによって実現できることとして、最も適切なものはどれか。

正解は 1番:ページ全体を読み込み直すことなく、表示の一部だけを更新できる

Ajaxは、ブラウザが裏側でサーバと通信し、受け取ったデータで画面の必要な部分だけを書き換える作り方です。従来は、少し表示を変えるだけでもページ全体を受け取り直して画面が一度白くなっていました。待たされず、通信量も少なくて済むので、地図を動かす操作や入力候補の表示などが滑らかになります。サーバ側のプログラムをブラウザで動かすものではありません。通信の暗号化(中身を他人には読めない形に変えること)はTLS(通信を暗号化するための決まりごと)、同時更新の矛盾を防ぐのは排他制御(同じものを2つの処理が同時に書き換えないよう、順番に1つずつ使わせること)の役目で、どちらもAjaxとは別の仕組みです。

間違えた用語の復習リストを見る →

この分野をまとめて解く → アルゴリズムとプログラミングのミニテスト(全44問)

最終更新:2026-10-09