この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "Webプログラミング"
Webプログラミング(ウェブプログラミング)とは、World Wide Webで使われるウェブアプリケーションのプログラミング、Webソフトウェア開発を行うことである。また、この作業を行う人間をWebプログラマ、Webエンジニア、Web開発者、Webデベロッパーと呼ぶ。 Webプログラミングでは、サーバ側で動作するプログラムとクライアント側で動作するプログラムの両方を開発しなければならない。[注釈 1]それぞれの側のプログラムで利用される技術は異なり、さらにAjaxを採用するプログラムであれば、サーバ側・クライアント側のプログラムが複雑に連携して機能を実現するので、それぞれの側のプログラムを別々に開発することが難しく、プログラマには両方の側で用いられる技術を深く習得することが求められる。 サーバ側でのプログラミングは、ウェブサーバ上で動くプログラミング言語を用いて行われる。このプログラミングは「サーバ・サイド・プログラミング」とも呼ばれる。例としてサーバサイトにつかう言語と環境としてCGI + PerlやPHP、Ruby、Java Servlet + JSP + Enterprise JavaBeans + Spring Framework + Apache Struts (Jakarta EE)、.NET (ASP.NET (C#, VB.NET) ) などが挙げられる。 クライアント側のプログラミングは、ウェブブラウザの解釈できるプログラミング言語を用いて行われる。しかしながらウェブブラウザはウェブで公開された文書の閲覧に比重が置かれたプログラムであり、必ずしも恵まれたプログラムの実行環境ではないことが多い。 従ってクライアント側のプログラミングは困難となりがちである。これを省力化するためのライブラリが様々に用意されており、例としてJavaServer Facesの部品として利用可能なライブラリ ⇒AjaxFaces、JSPカスタムタグライブラリとして導入できる ⇒AjaxTags、JSP, JSF両方で利用可能な ⇒AjaxAnywhere等がある。なお、これらはいずれもAJAXを実現するライブラリで、これらを用いることでJavaScript等によるクライアントサイドのコードの開発に比重を置くことなく、リッチなウェブアプリケーションを開発できることが期待できる。 サーバサイドでのプログラミングには次のような特徴がある。 アクセスが殺到しやすいウェブサイトではデータベースに高い負荷がかかりがちであるため、その解決のためにDBMSの知識がソフトウェア開発において求められることが多い。DoS対策なども念入りに行う。さらに金融系や基幹系 またサーバサイドのプログラムでは多くの場合、複数ユーザの操作に応じた処理が同一プロセスのメモリ空間上で行われるので、ユーザごとに適切にメモリ上の情報が分離されるよう意識してプログラミングしなければならない。この変数がもし銀行口座の預金残高などに使われていた場合、その事態は顧客やエンドユーザーからの信用を徹底的に失うほど非常に深刻なものとなる。 クライアントサイドでのプログラミングは、Ajax(JavaScript + XML)のようにウェブブラウザ上で動くプログラミング言語を用いて行われるケースもあるが、近年ではリッチクライアントが登場し、ウェブブラウザのかわりにブラウザ依存を避けられるJava Web StartやClickOnceやAdobe Flashを使うケースも増えている。 JavaScriptを用いる場合、ウェブブラウザには様々な実装系があるため[注釈 3]、クライアント側のでプログラミングを行うためには、複数の実装系に精通している必要があった。しかし、JavaScriptに使用されているAjaxがGoogle Mapsに実装されることで脚光を浴びるにつれて、Ajaxに使用する(prototype.jsなどの)ライブラリが、ブラウザ依存しにくいように設計されるようになってきた。Ajaxのライブラリ、フレームワークを使いこなしていれば複数の実装系依存に拘る必要は無くなってきている。 従来では、Web開発におけるクライアントサイドといえば、WebデザイナがHTMLと小規模なJavaScriptやAdobe Flashで作られたサイトを開発する程度のものであったため、オブジェクト指向プログラミングの習得についてほとんど意識する必要がなかった。しかし端末ハードウェアの性能が向上し、HTMLクライアント
概要
サーバサイドとクライアントサイドにおけるプログラミングの違い
サーバサイド
クライアントサイド
ウェブブラウザはウィンドウシステムやウィジェット・ツールキットとは異なり、アプリケーションがGUIを実現できるようにする事を元来の目的とするプログラムではなく、Web上のHTML文書などを閲覧することを主な目的とするプログラムなので、そのプログラム上で良いGUIを実現するには様々な工夫が求められる。