この項 xiàng 目 mù では、Web開 kaī 発 fā 手 shoŭ 法 fă について説 shuō 明 míng しています。
コナミのアーケードゲームについては「A-JAX 」をご覧 lăn ください。
その他 tā のAJAX については「アイアース 」をご覧 lăn ください。
一 yī 般 bān 的 de なWebアプリケーション(左 zuŏ )とAJAX(右 yoù )の動 dòng 作 zuò の違 weí い
Ajax (エイジャックス[ 1] [ 2] 、アジャックス[ 3] )は、ウェブブラウザ内 neì で非 feī 同 tóng 期 qī 通 tōng 信 xìn を行 xíng いながらインターフェイスの構 goù 築 zhú を行 xíng うプログラミング手 shoŭ 法 fă である[ 4] 。XMLHttpRequest (HTTP 通 tōng 信 xìn を行 xíng うためのJavaScript 組 zŭ み込みクラス )による非 feī 同 tóng 期 qī 通 tōng 信 xìn を利 lì 用 yòng し、通 tōng 信 xìn 結 jié 果 guŏ に応 yīng じてダイナミックHTML (DHTML) で動 dòng 的 de にページの一 yī 部 bù を書 shū き換 huàn えるというアプローチを取 qŭ る[ 5] 。
Ajax は『A synchronous J avaScript A nd X ML 』の略 lWè で、2005年 nián 2月 yuè 18日 rì に米 mĭ 国 guó のインフォメーションアーキテクトであるジェシー・ギャレット[ 注 zhù 釈 shì 1] により名 míng 付 fù けられた[ 5] [ 6] [ 7] 。
1997年 nián 頃 qĭng 、第 dì 1次 cì ブラウザ戦 zhàn 争 zhēng が勃 bó 発 fā し、その中 zhōng で動 dòng 的 de にWebページを書 shū き換 huàn えるDHTML という概 gaì 念 niàn が登 dēng 場 cháng した。登 dēng 場 cháng したばかりの頃 qĭng は、クライアントサイドでページを書 shū き換 huàn える必 bì 要 yaò 性 xìng は薄 bó いとされ、ページの動 dòng 的 de な装 zhuāng 飾 shì のみに有 yoŭ 用 yòng であると考 kaŏ えられていた。しかし、Web技 jì 術 shù 者 zhě の実 shí 験 yàn 的 de なコーディングの結 jié 果 guŏ 、JavaScript上 shàng で非 feī 同 tóng 期 qī 通 tōng 信 xìn を記 jì 述 shù することで、業 yè 務 wù や実 shí 用 yòng に耐 naì える優 yoū 秀 xiù なインターフェースを備 beì えたアプリケーションをHTML +CSS +JavaScript で作 zuò 成 chéng 可 kě 能 néng であることが徐 xú 々に判 pàn 明 míng していった[ 6] 。
従 cóng 来 laí のWebアプリケーション では、サーバ にリクエストを送 sòng 信 xìn 後 hoù 、レスポンスを新 xīn たにウェブページ として受 shoù け取 qŭ ることで画 huà 面 miàn 遷 qiān 移 yí が発 fā 生 shēng していたが、Ajaxにより画 huà 面 miàn 遷 qiān 移 yí を伴 bàn わない動 dòng 的 de なWebアプリケーションの製 zhì 作 zuò が実 shí 現 xiàn 可 kě 能 néng になる[ 1] 。
例 lì えばWeb検 jiăn 索 suŏ に応 yīng 用 yòng することで、従 cóng 来 laí は入 rù 力 lì 確 què 定 dìng 後 hoù に行 xíng っていた検 jiăn 索 suŏ を、ユーザがキー入 rù 力 lì をする間 jiān にバックグラウンドで行 xíng うことによってリアルタイムに検 jiăn 索 suŏ 結 jié 果 guŏ を表 biaŏ 示 shì していく(インクリメンタルサーチ )といったことが可 kě 能 néng になる。
上 shàng 記 jì の機 jī 能 néng は、Webブラウザ 標 biaō 準 zhŭn 搭 dā 載 zaì の技 jì 術 shù のみで実 shí 現 xiàn できる[ 4] 。Ajaxという用 yòng 語 yŭ が考 kaŏ 案 àn される前 qián から手 shoŭ 法 fă 自 zì 体 tĭ は存 cún 在 zaì しており同 tóng 時 shí 多 duō 発 fā 的 de に試 shì みられていた。しかし、2005年 nián に行 xíng われた、コンサルティング会 huì 社 shè を経 jīng 営 yíng するJesse James GarrettによるAjax:A New Approach to Web Applicationsというエントリの投 toú 稿 gaŏ と、Google がGoogle マップ やGoogle サジェスト にこの手 shoŭ 法 fă を使 shĭ 用 yòng したことで有 yoŭ 名 míng になり[ 6] 、Webアプリケーションの操 caō 作 zuò 感 găn 覚 jué をネイティブアプリケーションの操 caō 作 zuò 感 găn 覚 jué に近 jìn 付 fù ける手 shoŭ 法 fă としてAjaxが注 zhù 目 mù され始 shĭ めた。さらに、Googleでは、デスクトップアプリケーション と遜 xùn 色 sè のない電 diàn 子 zĭ メールクライアント であるGmail やGoogle Calendar でも積 jī 極 jí 的 de にAjaxを使 shĭ 用 yòng し、Ajaxの実 shí 用 yòng 性 xìng がGoogleのWebアプリケーションを通 tōng じて世 shì 界 jiè 中 zhōng のインターネット技 jì 術 shù 者 zhě に広 guăng く認 rèn 知 zhī された。
AjaxによるWebプログラミング (Webアプリケーション製 zhì 作 zuò )が注 zhù 目 mù された背 beì 景 jĭng には、この従 cóng 来 laí のページ遷 qiān 移 yí のみに頼 laì ったWebの使 shĭ い勝 shèng 手 shoŭ の悪 è さ[ 1] [ 7] に対 duì する不 bù 満 măn や、XML 、DOM などのWeb関 guān 連 lián 技 jì 術 shù の標 biaō 準 zhŭn 化 huà (ウェブ標 biaō 準 zhŭn )、および高 gaō い機 jī 能 néng を持 chí ったWebブラウザの普 pŭ 及 jí などが挙 jŭ げられる。
従 cóng 来 laí の技 jì 術 shù の組 zŭ み合 hé わせであるため、それぞれの持 chí つ問 wèn 題 tí をそのまま内 neì 包 baō する。
例 lì えば、各 gè 種 zhŏng Webブラウザ間 jiān のDHTMLの実 shí 装 zhuāng の違 weí いをコードで吸 xī 収 shoū する必 bì 要 yaò がある。
実 shí 際 jì 、Ajaxを実 shí 現 xiàn する技 jì 術 shù はブラウザ間 jiān で実 shí 装 zhuāng に違 weí いがあり、基 jī 幹 gàn 技 jì 術 shù であるXMLHttpRequest実 shí 装 zhuāng の元 yuán となったInternet Explorer の実 shí 装 zhuāng の解 jiě 説 shuō ではXMLHttpRequestという用 yòng 語 yŭ は見 jiàn あたらず、ActiveX でMicrosoft XML (MSXML) 機 jī 能 néng を呼 hū び出 chū して実 shí 行 xíng する。Internet Explorer 6では、Microsoft XML 3.0が付 fù 属 shŭ しているため[ 8] 、ActiveXを無 wú 効 xiaò にしていない限 xiàn りこの機 jī 能 néng が使 shĭ える。Microsoft XMLの実 shí 装 zhuāng ではバイト配 peì 列 liè を取 qŭ り出 chū せるなど機 jī 能 néng 的 de な違 weí いもある。言 yán 語 yŭ としてVBScript が使 shĭ える点 diăn も異 yì なる。
また、Ajaxアプリケーションでは動 dòng 的 de にページの一 yī 部 bù が書 shū き換 huàn えられる為 weì 、デザイン とコード が以 yĭ 前 qián のように単 dān 純 chún に分 fēn 離 lí できないという開 kaī 発 fā 上 shàng の問 wèn 題 tí 点 diăn がある(Model View Controller も参 cān 照 zhaò )。このため、現 xiàn 在 zaì では通 tōng 常 cháng のWeb開 kaī 発 fā に比 bĭ べ開 kaī 発 fā により時 shí 間 jiān がかかると言 yán われている。
Ajax の必 bì 要 yaò 性 xìng が叫 jiaò ばれるにつれこうした問 wèn 題 tí を解 jiě 決 jué すべく、アプリケーションフレームワーク の開 kaī 発 fā が進 jìn み、これらを利 lì 用 yòng することで、こうした問 wèn 題 tí は解 jiě 決 jué しつつある。
Ajaxフレームワークとしては以 yĭ 下 xià のようなものがあり、それぞれについて特 tè 徴 zhēng がある。
これらを利 lì 用 yòng することで、ブラウザの互 hù 換 huàn 性 xìng に関 guān する問 wèn 題 tí を解 jiě 決 jué することが出 chū 来 laí 、またデザインとコードの分 fēn 離 lí といった Web 開 kaī 発 fā の効 xiaò 率 lw 性 xìng を高 gaō める工 gōng 夫 fū を取 qŭ り入 rù れることも可 kě 能 néng になるとされている。
Spry は、Adobe CS のような統 tŏng 合 hé 開 kaī 発 fā 環 huán 境 jìng に組 zŭ み込まれていたり、Prototype は、Ruby on Rails などの Web アプリケーションフレームワークの一 yī 部 bù として統 tŏng 合 hé されるなど、さまざまな Web 開 kaī 発 fā ソフトウェアの一 yī 部 bù として組 zŭ み込む動 dòng きも広 guăng がっている。
非 feī 同 tóng 期 qī メソッドはAjax独 dú 自 zì のものなのかと勘 kān 違 weí いしやすいが、HTML DOMにはXMLHttpRequest以 yĭ 外 waì に以 yĭ 下 xià のような非 feī 同 tóng 期 qī メソッドが存 cún 在 zaì する。
Image#src, HTMLImageElement#src
Window#location (HTMLIFrameElement, HTMLFrameElement)
HTMLScriptElement#src
DHTML Behavior (#default#download)
現 xiàn 在 zaì はAjax関 guān 連 lián 技 jì 術 shù としてXMLHttpRequestを全 quán く使 shĭ わないプログラムまでが取 qŭ り上 shàng げられるようになっており、JavaScriptを効 xiaò 果 guŏ 的 de に使 shĭ 用 yòng して動 dòng 的 de なWebサイトを作 zuò る手 shoŭ 法 fă 全 quán 般 bān をAjax関 guān 連 lián と広 guăng く捉 zhuō える傾 qīng 向 xiàng も巷 xiàng に存 cún 在 zaì する。
ウィキメディア・コモンズには、
Ajax に
関 guān 連 lián するカテゴリがあります。
全 quán 般 bān 国 guó 立 lì 図 tú 書 shū 館 guăn その他 tā