Webで使われるウェブアプリケーションのプログラミング、Webソフトウェア開発を行うことである。この作業を行う人間をWebプログラマ、Webエンジニア、Web開発者、Webディベロッパーと呼ぶ。概要[編集]Webプログラミングでは、サーバ側で動作するプログラムとクライアント側で動作するプログラムの両方を開発しなければならない。[1]それぞれの側のプログラムで利用される技術は異なり、さらにAjaxを採用するプログラムであれば、サーバ側・クライアント側のプログラムが複雑に連携して機能を実現するので、それぞれの側のプログラムを別々に開発することが難しく、プログラマには両方の側で用いられる技術を深く習得することが求められる。サーバ側でのプログラミングは、ウェブサーバ上で動くプログラミング言語を用いて行われる。このプログラミングは「サーバ・サイド・プログラミング」とも呼ばれる。EE)、.NET(ASP.NET(C#,VB.NET))などが挙げられる。クライアント側のプログラミングは、ウェブブラウザの解釈できるプログラミング言語を用いて行われる。ウェブブラウザはウェブで公開された文書の閲覧に比重が置かれたプログラムであり、必ずしも恵まれたプログラムの実行環境ではないことが多い。従ってクライアント側のプログラミングは困難となりがちである。JSF両方で利用可能なAjaxAnywhere等がある。これらはいずれもAJAXを実現するライブラリで、これらを用いることでJavaScript等によるクライアントサイドのコードの開発に比重を置くことなく、リッチなウェブアプリケーションを開発できることが期待できる。サーバサイドとクライアントサイドにおけるプログラミングの違い[編集]サーバサイド[編集]サーバサイドでのプログラミングには次のような特徴がある。アクセスが殺到しやすいウェブサイトではデータベースに高い負荷がかかりがちであるため、その解決のためにDBMSの知識がソフトウェア開発において求められることが多い。金融系や基幹系業務やB2Bなどミッションクリティカルな領域での開発ではフロントエンドだけでなくバックエンドの開発も行うためUNIXやサーバ、ネットワーク、セキュリティ、計算機科学、ソフトウェア工学の知識が求められる事が多い[2]。サーバサイドのプログラムでは多くの場合、複数ユーザの操作に応じた処理が同一プロセスのメモリ空間上で行われるので、ユーザごとに適切にメモリ上の情報が分離されるよう意識してプログラミングしなければならない。この変数がもし銀行口座の預金残高などに使われていた場合、その事態は顧客やエンドユーザーからの信用を徹底的に失うほど非常に深刻なものとなる。Flashを使うケースも増えている。JavaScriptを用いる場合、ウェブブラウザには様々な実装系があるため[3]、クライアント側のでプログラミングを行うためには、複数の実装系に精通している必要があった。Mapsに実装されることで脚光を浴びるにつれて、Ajaxに使用する(prototype.jsなどの)ライブラリが、ブラウザ依存しにくいように設計されるようになってきた。Ajaxのライブラリ、フレームワークを使いこなしていれば複数の実装系依存に拘る必要は無くなってきている。Flashで作られたサイトを開発する程度のものであったため、オブジェクト指向プログラミングの習得についてほとんど意識する必要がなかった。端末ハードウェアの性能が向上し、HTMLクライアントの限界と不満が叫ばれるようになってゆき、Ajaxとリッチクライアントが注目されるにつれて、クライアントサイドでもオブジェクト指向プログラミングを習得する必要性が高まってきた。リッチクライアントに使用する技術の一つであるSwingなどによるGUI開発ではオブジェクト指向プログラミングは、ファットクライアント、スタンドアロンアプリケーション時代から必須のものである。Ajaxのフレームワークの多くはオブジェクト指向プログラミングで設計されている[4]。ウェブブラウザはウィンドウシステムやウィジェット・ツールキットとは異なり、アプリケーションがGUIを実現できるようにする事を元来の目的とするプログラムではなく、Web上のHTML文書などを閲覧することを主な目的とするプログラムなので、そのプログラム上で良いGUIを実現するには様々な工夫が求められる。その工夫の例としてAjaxやリッチクライアントがある。リッチクライアント[編集]HTMLクライアントの欠点を補うために、HTMLクライアントとクライアントサーバシステムで使われてきたファットクライアントとの中間に位置するリッチクライアントも注目されている。Start、.NETのClickOnce、AdobeのAIRなどがある。これらの登場により、クライアントサイドの開発は一変しつつある。HTMLによるウェブページの記述はプログラミングではなくウェブデザインとされることも多いが、HTMLはグラフィックデザインだけではなくクライアントからサーバへの通信内容をも定義する等、その境目はあまり明確ではない。この場合、Web開発はフロントエンドだけに力を注いでいるため、ソフトウェア開発全体の氷山の一角に過ぎないケースがある。そのためにこのような開発のことをWeb開発とは呼ばないことがある。ウェブブラウザのバージョンの違いによるバグの有無もあるが、そもそも実装系によって仕様が違うこともある。今では主にAjaxに使われているJavaScriptは従来、オブジェクト指向言語ではないと誤解されていた。PreprocessorASPウェブアプリケーションWebアプリケーションフレームワークポータルサイトコードキャンプこの項目は、コンピュータに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています(PJ:コンピュータ/P:コンピュータ)。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。開発者Cookieに関する声明モバイルビュ。