Webプログラミング(うえぶ-、うえっぶ-)とは、World Wide Webで使われるウェブアプリケーションのプログラミング、Webソフトウェア開発を行うことである。また、この作業を行う人間をWebプログラマ、Webエンジニア、Web開発者、Webディベロッパーと呼ぶ。
目次
1 概要
2 サーバサイドとクライアントサイドにおけるプログラミングの違い
2.1 サーバサイド
2.2 クライアントサイド
2.2.1 リッチクライアント
3 脚注
4 関連項目
//
Webプログラミングでは、サーバ側で動作するプログラムとクライアント側で動作するプログラムの両方を開発しなければならない。[1]それぞれの側のプログラムで利用される技術は異なり、さらにAjaxを採用するプログラムであれば、サーバ側・クライアント側のプログラムが複雑に連携して機能を実現するので、それぞれの側のプログラムを別々に開発することが難しく、プログラマには両方の側で用いられる技術を深く習得することが求められる。
サーバ側でのプログラミングは、ウェブサーバ上で動くプログラミング言語を用いて行われる。このプログラミングは「サーバ・サイド・プログラミング」とも呼ばれる。例としてサーバサイトにつかう言語と環境としてCGI + PerlやPHP、Ruby、Java Servlet + JSP + Enterprise JavaBeans + Spring Framework + Apache Struts(Java EE)、.NET(ASP.NET(C#,VB.NET))などが挙げられる。
クライアント側のプログラミングは、ウェブブラウザの解釈できるプログラミング言語を用いて行われる。しかしながらウェブブラウザはウェブで公開された文書の閲覧に比重が置かれたプログラムであり、必ずしも恵まれたプログラムの実行環境ではないことが多い。
従ってクライアント側のプログラミングは困難となりがちである。これを省力化するためのライブラリが様々に用意されており、例としてJavaServer Facesの部品として利用可能なライブラリ ⇒AjaxFaces、JSPカスタムタグライブラリとして導入できる ⇒AjaxTags、JSP, JSF両方で利用可能な ⇒AjaxAnywhere等がある。なお、これらはいずれもAJAXを実現するライブラリで、これらを用いることでJavaScript等によるクライアントサイドのコードの開発に比重を置くことなく、リッチなウェブアプリケーションを開発できることが期待できる。
サーバサイドとクライアントサイドにおけるプログラミングの違い
サーバサイドでのプログラミングには次のような特徴がある。
アクセスが殺到しやすいウェブサイトではデータベースに高い負荷がかかりがちであるため、その解決のためにDBMSの知識がソフトウェア開発において求められることが多い。さらに金融系や基幹系業務やB2Bなどミッションクリティカルな領域での開発ではフロントエンドだけでなくバックエンドの開発も行うためUNIXやサーバ、ネットワーク、セキュリティ、計算機科学、ソフトウェア工学の知識が求められる事が多い[2]。
またサーバサイドのプログラムでは多くの場合、複数ユーザの操作に応じた処理が同一プロセスのメモリ空間上で行われるので、ユーザごとに適切にメモリ上の情報が分離されるよう意識してプログラミングしなければならない。例えばJava ServletやJSPでクラス変数を不適切に使用して、そのサーブレットにアクセスする複数のユーザがその変数を共有してとんでもない事態に発生するミスも過去に実際起きている。[要出典]この変数がもし銀行口座の預金残高などに使われていた場合、その事態は顧客やエンドユーザーからの信用を徹底的に失うほど非常に深刻なものとなる。
クライアントサイドでのプログラミングは、Ajax(JavaScript + XML)のようにウェブブラウザ上で動くプログラミング言語を用いて行われるケースもあるが、近年ではリッチクライアントが登場し、ウェブブラウザのかわりにブラウザ依存を避けられるJava Web StartやClickOnceやAdobe Flashを使うケースも増えている。