情報検索概説II

情報検索概説II
Webページとプログラム
1999年12月9日
プログラムとは
 コンピュータはプログラムで動いている
 コンピュータが知っている処理手順
 ソフトウエア=プログラム
CPUが分かる(実行できる)プログラ
ム
 「機械語」と呼ばれている
 実態は単なる数値データの羅列
 それをメモリに置いて指示をすることで実行を
始める
 いきなり数値の羅列を作るのは人間には無理。
そこで、もう少し単語的な要素を組みあわせて
プログラムを作成できるようにしている
人間が作るプログラム
 最終的には機械語のプログラムが必要
(バイナリとも呼ばれる)
 Loopとかfunctionとか、日常言語に近い単語を
組みあせてプログラムを作るようになった
 計算を数式で書けるなどの特徴も
 それでも日常言語とは大きくかけ離れているが
 それらを高級言語と一般に呼ばれる。代表的
なものがC、Pacalなど
高級言語からバイナリを生成する
 日常言語に近いプログラムから、機械語のバ
イナリを生成する
 コンパイラというソフトウエア
 プログラムはテキストファイルで作成する
 ただし、ほかにもいろいろな準備や環境整備
が必要になる。専門家が行う仕事となっている
 即座にはプログラム実行できない
マクロ言語
 プログラムを書いたものが、そのまま解釈され
て実行されるものが出てきた
 手軽に実行できる
 比較的、習得が容易
 多くは、アプリケーション自体をコントロールす
るマクロ言語だった
 ワープロや表計算の作業を自動的に行う
 「スクリプト言語」とも呼ばれる
オーサリングツール
 パソコン画面を利用したプレゼンテーションに
特化した開発ツール
 動きのある映像や、ユーザーの操作を受け付
けるようなものを簡単に作成できる
 作成したものを配布する環境が整っている。
CD-ROMタイトルの制作で普及した
 Directorが有名だったが、今はFlashの方が
もっと有名に
プログラミングに関する話題
 オブジェクト指向
 開発環境
 設計の問題
 プロジェクト管理
 などなど
インターネットでの環境
 説明するまでもないことだが、Webはインター
ネットのもっとも普及したサービス
 ただし、Webページはスタティック(静的)。ファ
イルに記述したことしかできない
 時と場合によってあるいは状況によって異なる
結果をもたらしたい
 動きのあるページを作りたい
 こうしたニーズを満たすのが「プログラミング」
Webページでのプログラミングとは
 HTMLから別のプログラムを呼び出す
 サーバーでプログラムを動かす
 クライアントでプログラムを動かす
 HTMLを拡張してプログラムを組み込めるように
する
 一般にはクライアントでプログラムを動かす
 サーバーで動かすことも可能に
Webページでのプログラミング
クライアントで実行 サーバーで実行
HTMLの外部 プラグイン
Javaアプレット
CGI
Javaサーブレット
HTMLの内部 JavaScript
Active Server Pages
PHP3
Webページでのプログラミング
クライアントで実行 サーバーで実行
HTMLの外部 プラグイン
Javaアプレット
CGI
Javaサーブレット
HTMLの内部 JavaScript
Active Server Pages
PHP3
サーバーでプログラムを動かす
 HTMLはもともとは固定したもの
 したがって、HTML外部で何かをするというのが
1つの方法
 クライアントで何かさせるのは困難
 サーバではなんとかなる
 そこで、Webサーバが、別のプログラムを呼び
出す仕組みを作った
 それがCGI
CGI
 Webサーバーで、Webサーバープログラムが、
さらに別にあるプログラムを起動する
 Webサーバーからデータを受け取ることができ
る(つまりは、クライアントで入力したデータを
受け取れる)
 Webサーバーに処理結果を返し、それをクライ
アントに戻すことができる
実際のCGI
 たとえば、WebサーバーがUNIXで動いている
のなら、UNIXで動くプログラムなら何でもCGIと
なりうる
 でも、perlが流行っている
 スクリプト言語のperl
 ネットワーク環境なので飛ぶような実行速度は要
求されていない
 独特のプログラムの作りやすさ
 周辺環境が整っている
Webページでのプログラミング
クライアントで実行 サーバーで実行
HTMLの外部 プラグイン
Javaアプレット
CGI
Javaサーブレット
HTMLの内部 JavaScript
Active Server Pages
PHP3
クライアントでプログラムを動かす
 クライアントのOSは千差万別
 特定のOS向けのソフトウエアはWebページではあ
まり意味を持たない(なくはないのだが)
 そこで、OSやブラウザに依存しない、仮想的な
コンピュータを定義した(Virtual Machine)
 そのコンピュータのプログラムを作るための言
語がJava
Javaアプレット
 プログラム自体はサーバーにある
 Webページがそのアプレットを呼び出す
 ダウンロードする
 クライアント側で実行する
 そのとき、Java VMを使う
 セキュリティ的な問題点
 ウイルスみたいなプログラムがあったら大変
 ちゃんと手は打ってある
Javaの特徴
 OSに依存しない
 C++に近い言語のプログラムを、Java VM向けのバ
イナリにコンパイルする
 Java VMさえあれば、どこでも実行する
 ブラウザが対応した
 Webページの1つの枠の中で、プログラムが実行で
きた
Java言語の特徴
 豊富なライブラリ機能
 OSに匹敵する機能を提供する
 言語というより、プログラム実行環境と言った方が
いい
 プログラミングがやりやすくなる機能
 メモリ管理が容易、安全
 セキュリティ機能
Javaの今
一時期は大ブーム。しかし、しぼんだ
 Java自体の問題

機能が限られていた時代に過大評価された
 問題点がなかったわけではない


外的要因


Microsoftにうまく立ち回られ、事実上骨抜き状態に
サーバ用プログラム、携帯機器での利用がホットな
話題
HTMLの機能を拡張する
 HTMLの中にプログラムを書く
 HTMLファイルを読むのは
 サーバー
 クライアント(ブラウザ)
 さらにプログラムから、HTMLの要素自身をコン
トロールできれば・・・
Webページでのプログラミング
クライアントで実行 サーバーで実行
HTMLの外部 プラグイン
Javaアプレット
CGI
Javaサーブレット
HTMLの内部 JavaScript
Active Server Pages
PHP3
クライアントで処理する
 JavaScript
 ダウンロードしたHTMLの中にあるプログラムを
逐一実行する
 Javaの文法に近い
 というか、Javaブームに便乗した
 HTMLの中にプログラムを組み込める
 結果をHTMLとして表示
 HTMLの要素をコントロールできる
動きのあるHTML
 Dynamic HTML
 動きを持たせる
 スタイルシート
 ページのレイアウトを高度にできる
 スタイルシートの仕様は、JavaScriptでのコントロー
ルを視野に入れたもの
Webページでのプログラミング
クライアントで実行 サーバーで実行
HTMLの外部 プラグイン
Javaアプレット
CGI
Javaサーブレット
HTMLの内部 JavaScript
Active Server Pages
PHP3
サーバーで処理する
 HTMLの中のプログラムをサーバーでいきなり
処理をしてしまう
 処理結果のHTMLをクライアントに送りつける
 プログラム作成が大変
 デバッグがしづらい
 Active Server Pages、PHP3などが代表的
Webページでのプログラミング
クライアントで実行 サーバーで実行
HTMLの外部 プラグイン
Javaアプレット
CGI
Javaサーブレット
HTMLの内部 JavaScript
Active Server Pages
PHP3
クライアントでのプログラム実行手
段(プラグイン)
 プラグイン
 OSあるいはブラウザごとに、特定の機能を実行で
きるようなプログラムを追加できるようになってい
る
 たとえば、ビデオ映像をページに表示するなど
 補助的な意味合いが強い
 昔からあったが、これを効果的に利用した
Flashというソフトが登場した
Flash
 オーサリングツールの流れにある
 アニメーション、ユーザーインタフェースなど画
面表示系のプログラム(?)を作成しやすい
 作ったファイルが小さい
 プラグインが、ブラウザに標準的に組み込ま
れるようになった
Flashの特徴
 テキストでプログラムを書くのではない
 画面上に表示したい図形オブジェクトや写真、
グラフィックスなどを配置する
 その動きを定義する
 ユーザーの操作を受け付ける
 一連の作業がビジュアルにできる
 さらにプログラムもできてしまう
サーバー開発の実態

サーバーで完結させればシステム管理が楽になる
アプリケーションサーバー
 データベースアクセスなど業務アプリケーション構築に必
要な機能をWebベースで利用できるようにする


サーバーで効率的にプログラムを動かしたい


複数のサーバーの処理を連動させたい


JavaでのServlet
Enterprise JavaBeans, CORBA
「共通化」の不要な世界? 手段は多様化
今後の処方箋
 Flashができれば、食いぶちには困らないとさ
れている
 できる人は超忙しい、単価が高い
 プログラミング系を目指す人
 いろいろな手段ができるようになっていると強い