共通科目情報処理(上級)、インターネットの仕組み、2006年01月17日 電子・情報工学系 新城 靖 <yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/ipe/inet-2005/2006-01-17
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
http://www.ipe.tsukuba.ac.jp/~yshinjo/
World Wide Web の応用・高度な利用
Gateway とは、WWW で使われている HTTP というプロトコルへの入り口という 意味。 プログラムの実行結果は、普通は、HTML にすることが多いが、普通のテキス トであることもイメージであることもある。
図? CGIの仕組み
CGI の利用例
CGI になるファイル名のパタン
/cgi-bin/name /dir/name.cgi
設定によっては、これ以外のものも可能である。
<FORM ACTION="http://www2.coins.tsukuba.ac.jp/~yas/ipe/inet-2005/2006-01-17/cgi-printarg.cgi" method="post"> <P> 姓: <INPUT type="text" name="lastname"> 名: <INPUT type="text" name="firstname"><BR> <INPUT type="radio" name="sex" value="Male"> 男 <BR> <INPUT type="radio" name="sex" value="Female"> 女 <BR> <INPUT type="radio" name="sex" value="others"> その他 <BR> 電子メール: <INPUT type="text" name="email"><BR> <INPUT type="submit" value="send"> <INPUT type="reset"> </P> </FORM>表示例:
<FORM>
と
</FORM>
で括られた部分が1つのフォームになる。
<INPUT>
の部分が、ブラウザからサーバに送られるデー
タを表わす。
send
ボタンが押されると、ブラウザは、
HTTPの
POST メソッドを使って、サーバにデータを送る。
サーバは、それを受け取ると、指定されたプログラムを実行する。
環境変数
REQUEST_METHOD データを送るのに使われたメソッド。POST か GET。 GET は、普通のページを得るものと同じ方法で、長いデータは送れない。 SCRIPT_NAME プログラムの名前。 QUERY_STRING URLの指定で「?」以下に指定された文字列メソッドとして
POST
が使われた時、標準入力からは、
<FORM></FORM>
で指定されたパラメタを受け取ることが
でる。
このデータは、「&
」で区切られた
「フィールド名=値
」の並びになっている。
例:
lastname=姓&firstname=名&sex=Male&email=who@u-ust.ac.jp
CONTENT_LENGTH
からは、データの長さが得られる。
メソッドとして、GET
が使われた時には、
環境変数 QUERY_STRING
に
「&
」で区切られた「フィール
ド名=値
」の並びが含まれている。
送られてくるパラメタの中に漢字など含まれていた場合、
「%hh
(2桁の16進数)」
という形になっている。
これを元にもどすには
cgiparse
というプログラムや
perl
の命令 hex() が使われる。
SSI が使えるシステムでは、
file.html
の変わりに
file.shtml
とすると、
SSI の機能が働くようになります。
例1: ファイルの内容の読込み
<!--#include file="filename"-->例2: プログラム
/bin/cal
の実行結果の埋め込み
<PRE> <!--#exec cmd="/bin/cal"--> </PRE>例3:ファイル
file.shtml
の更新時刻の表示
最終に変更されたのは、 <!--#config timefmt="%Y/%m/%d %H:%M:%S"--> <!--#flastmod file="file.shtml"--> です。
`#include'
や
`#exec'
で、大事なファイルが盗まれないように、細心の注意を払ながら利用する必要
がる。
筑波大学教育用計算機システムでは、SSI は使えないような設定になっている。
普通は、Apache のサーバの内部(拡張モジュール)で動作する。 この方法で動作させると、「プロセス」が作られない分だけ高速になる。
PHP の特徴。
http://www.php.gr.jp/ 日本PHPユーザ会
<HTML> <HEAD> <TITLE> PHP の例題 </TITLE> <BODY> PHP の例題です。 <UL> <?php for( $i=5; $i>0; $i-- ) { print("<LI> "); for( $j=$i; $j>=1 ; $j-- ) { print("★"); } print("\n" ); } ?> </UL> </BODY> </HTML>実行例: http://www2.coins.tsukuba.ac.jp/~yas/ipe/inet-2005/2006-01-17/php-example.php
Javaサーブレットは、XMLの扱いに強い。
Microsoft社の Web サーバ Internet Information Server (IIS) 上で VBScript と呼ばれるスクリプト言語、(または、JavaScript)を動作させる。 結果として、HTML 等が変えされる点は、CGI と同じである。
(JavaScript も使えるが、サーバ側で動作するだけで、クライアントに変えさ れるのは、HTML だけ。)
最近では、VPScript, JavaScript の他に、VP.NET や C# といった 言語も使える(ASP.NET(エーエスピー ドットネット))。
画面に何かを表示する機能があり、WWWブラウザ上で動く。 Javaアプレットを使うと、アニメーションを作ったり、 CGI を使わずにユーザとの対話できる。
CGI では、プログラムは、WWWサーバが走っているコンピュータで動くが、 Javaアプレットは、プログラムはブラウザの上で動く。
<APPLET></APPLET>
。
HTML記述:
<APPLET CODE="http://www.coins.tsukuba.ac.jp/~yas/ipe/inet-2005/2006-01-17/rctext.class" WIDTH="500" HEIGHT="50"> <PARAM NAME="message" VALUE="hello,world"> 与えたメッセージが動き回るJavaアプレット。 </APPLET>表示例:
CODE
属性で、Javaアプレットを保存している
ファイルのURL(ただし、同一ホスト内)、
WIDTH
属性で、幅、
HEIGHT
属性で、高さを指定する。
<PARAM>
タグを使えば、アプレットに
オプションを渡すことがでる。
<APPLET>
と
</APPLET>
の間には、
Java Applet に対応していないブラウザのためのテキストを書く。
Java言語については、 共通科目では別の講義がある。
ブラウザで実行される。
JavaScript は、文法こそ少し Java に似ているが、Java とはまったく別の 言語である。WWW ページの中の Javaアプレットは、 「実行可能なインライン・イメージ」に似ているが、JavaScript の記 述は、「実行可能なインライン・テキスト」に似ている。たとえば、次 の例を考える。
<SCRIPT LANGUAGE="JavaScript"> <!-- for( i=0 ; i<10; i++ ) document.writeln("<P>hello,world</P>"); //--> </SCRIPT>これで、
<P>hello,world</P>
を 10 回書いた
のと同じ効果がある。<!--
と
//->
は、JavaScriptを知らないブラウザにはコメント
として扱われる決まり文句である。関数定義などは、ヘッダ部分
<HEAD></HEAD>
に書くという方法もよく使われる。
JavaScript は、CGI と似ているところもあるが、JavaScript でないとで
きないものに、ブラウザの制御がある。たとえば、次の例では、ブラウザ
の(戻る
)ボタンと同じ動きをさせることができる。
<A HREF="javascript:history.back();">戻る</A>戻る
ブラウザを制御する仕組みが、悪用される。
JavaScrit は、信頼しているサイトから送られたときだけ有効にする方法がある。
Web ブラウザの拡張機能(プラグイン・モジュール)で動作する(ブラウザによっ ては、動作しないことがある)。
ActionScript と呼ばれるスクリプト言語で既述されたプログラムが、WWW ブ ラウザで動作する。たとえば、ボタンが押されたら動作するプログラムが既述 できる。
Flash のページを作成するには、一般的にはMacromedia社から購入することに なる。Flash の仕様は公開されているが、フリーの開発環境はそれほど普及し ていない。
Flash と CGI (サーブレット等も含む)や JavaScript (クライアント側)を連 携させることもできる。
PostScript という、Adobe 社によるプリンタ用のプログラミング言語が元に なっている。PostScript と比較すると複雑な制御構造は取り払われている。 フォントを埋め込んだり再現する機能は引き継いでいる。
JavaScript が埋め込める。
PDF 文書作成するには、Adobe Acrobat (readerがつかない) や、その他のフ リーのプログラムが使える。MacOSX では、OS内部でも使っているので、印刷 の代りに PDF で保存できるようになっている。
手書きPDF入門 というのが以前あった。
現在、World Wide Web で広く用いられている画像の形式としては、GIF, JPEG, PNG などがあるが、いずれもビットマップ、または、それを圧縮した形 式である。この場合、拡大すると画像が荒くなるという問題がある。これに対 して、SVG は、ベクトル形式、すなわち、画像の輪郭線を表現したものである。 よって、画像を拡大しても荒くなることがない。また、画像の大きさとデータ 量は無関係であり、大きな画像であってもデータ量が増えない。
以下は、SVG で直線、長方形、円を記述した例である。
<svg> <line x1="10" y1="100" x2="100" y2="100" style="stroke:blue" /> <rect x="20" y="200" width="100" height="50" style="fill:red; stroke:red;" /> <circle cx="300" cy="300" r="50" style="fill:yellow; stroke:yellow;" /> </svg>SVG は、W3C (World Wide Web Consortium)により標準化作業が進 められている。XML 形式を用いているが、モデルとしてはPDF や PostScript と似ているである。Adobe 社からも WWW ブラウザ用の プラグインも提供されている。Web ブラウザ Mozilla や FireFox でも、ブラウザ本体で SGV 扱うための開発が進められている。
SVG は、地図を表示するために適している。携帯電話や PDA に対 して地図を配信するサービスで SVG がよく使われる。
インターネット上にある膨大な情報から、必要な情報を見つけ出すためには、 次のような方法がある。
リンク集 とは、他のページへのリンクを集めたWWWページ。 なにかWWWページを探したい時には、すぐに「キーワード検索」を思い浮か べるかもしれないが、実際には、 FAQ FAQやリンク集の方が速いことがある。
ヒット率と選択率
図? ヒット率と選択率
あちらを立てればこちらが立たず。 トレードオフ。3つの論理演算
「keyword1」で検索。
図? キーワードを1つ与えた時 図? キーワードを3つ与えた時(AND) 図? キーワードを3つ与えた時(OR) 図? キーワードを1つ与えた時(NOT)
NOT keyword1 AND keyword2 AND keyword3
図? キーワードを3つ与えた時(AND,NOT)
図? キーワードを1つ与えた時 図? キーワードを2つ与えた時 図? キーワードを3つ与えた時
絞込検索は、実は、AND と同じ。
keyword1 AND keyword2 AND keyword3
図? キーワードを3つ与えた時(AND)
検索対象のデータにキーワードを与える方法
インターネット上の重要な情報源に FAQ がある。 FAQ は、もともとは、 Frequently Asked Questions の略で、「よくある質問」という意味である。 実際には質問だけでなく て答えもいっしょに書かれている。しかも、実用的で非常に品質がよい情報 が集まっていることが多いので、質問したいことがなくても、自分の興味がある 分野の FAQ を探して読むことはよい勉強になる。
FAQ を作る活動は、ネットワーク・ニュースでよく行なわれている。というの も、繰り返しなされる質問をまとめて定期的に投稿することで、記事の質を高 めることができる。インターネットで流通するようなフリー・ソフトウェアで も、マニュアルとは別に FAQ が作られることもよくある。
普通の WWW は、直接的にはページを編集する機能を提供していないので、情 報の発信者と受信者は明確に区別されていた。Wiki では、基本的にはページ を表示することができれば、簡単な操作でそれを編集することができる。これ により、気軽な双方向のコミュニケーションが実現される。wikiwiki とは、 ハワイの言葉で、「素早い、形式張らない、急ぐ」ということを意味している。
Wiki では、WWW ページを記述する時に、HTML のようなマークアッ プ言語を用いず、基本的にはテキストを用いる。ただし、次のよう な簡単なルールがあり、HTML に近い表現能力を持つ。
Wiki は、Ward Cunningham氏が開発したものの他に、Wikiクローン と呼ばれる同等品が多数開発されている。多くのクローンは、Perl や Ruby のようなスクリプト言語により記述されており、WWW サー バが持っている、外部のプログラムを実行する機能(CGI機能) を用 いて動作する。
http://ja.wikipedia.org/
ウィキペディア(日本語)
Blogger と呼ばれるブログ作成ツールの登場すると、商用のニュースサイトに 匹敵するようなデザインのページをブログとして簡単に作ることができるよう になった。それに伴い、充実した内容を含むものも増え、専門家による情報発 信にも利用されるようになった。今日では、ブログはパブリッシングツールと しての地位を得初めている。
ブログが一般的に着目され始めたのは、9月11日の米国同時多発テロ事件以後 である。イラク戦争の前には、「Where is Raed ?」と題するバグダッド在住 の Salam Pax と名乗る人物のブログに1日数十万件のアクセスがあった。こ のような出来事では、現場の人の声やマスメディアでは報道されないような情 報がブログとして発信された。
日本では、土佐日記以来、誰かに読まれることを前提にした日記(形式の文学) の歴史があり、今でも個人的な日記も多い。
RSS の 記述は、全体で大きく2つの部分に分かれる。前半は、Web サイト 全体(RSSではチャネルと呼ぶ)の記述であり、Web サイト全体の タイトル(40バイト程度)、URL、および、リンク、簡単な説明(500 バイト以内)が含まれる。後半では、個々の Web ページのタイトル や URL が置かれる。
RSS は、ニュースサイトが記事の見出しを配信するためによく使わ れている。また、ブログ(blog、Web log)のツールの中には、自動 的に RSS により更新情報を提供するものがある。RSS を自動的に 収集して表示するためのブラウザや RSS を蓄積し検索サービスを 提供する Web サイトも開発されている。
現在、RSS には、1.0 系列と 0.9-2.0 系列の2つの系列がある。 RSS は、1999年、Netscape Communications社により、自社のサー ビスで見出し一覧を配信するために開発された。その後、見出しだ けでなく、要約、日付などの拡張がなされた(RSS 0.9, 0.91)。 Netscape が開発をやめた後、RSS-DEV と呼ばれる開発グループが 作られた。そのグループにより、基本的な要約提供部分をコアとし、 高度な機能をモジュールとして追加できるようにした RSS 1.0 が 策定された。一方、別のグループは、RSS 0.91 を元にして、コン テンツ配信を目指して RSS 2.0 を作成した。
RSS 2.0 は、クリエティブ・コモンズのライセンスで配布されている。
RSS -- サイト情報の要約と公開 by 神崎正英 http://www.kanzaki.com/docs/sw/rss.html
英語圏では、「RSS reader」よりも「aggregator」という呼び方が多い。 複数の RSS や Atom で配信されている情報を1つに集約(aggregate)して 読みことができることによる。
RSS reader/Aggregator を使うと、単純に WWW サイトを訪れる方法と比較し て、楽に更新された情報を見ることができる。メーリング・リスト等と 比較して、spam が混入することは(今の所)ない。
2種類の方法がある。
GET の例で、WWW ブラウザに現れた URL に ? 以降のパラメタを変更してみなさい。
テキストボックスの中に漢字を入れた場合どうなるか観察しなさい。
まず、サーバに telnet (Tera Term) でサーバ (icho) に接続してログインしなさい。 一連の作業が終わったら、exit でサーバからログアウトしなさい。
% telnet www2.coins.tsukuba.ac.jp 80注意:www ではなく www2。ipe ではなく coins。![]()
GET /~yas/ipe/inet-2005/2006-01-17/cgi-printarg.cgi?lastname=l1&firstname=f1&sex=Male&email=a%40b HTTP/1.0(![]()
![]()
GET /~yas/ipe/inet-2005/2006-01-17/cgi-printarg.cgi?a=1&b=2&c=3 HTTP/1.0![]()
![]()
同様に、telnet で接続された後に、次のようなデータをサーバに送って見なさい。
POST http://www2.coins.tsukuba.ac.jp/~yas/ipe/inet-2005/2006-01-17/cgi-printarg.cgi HTTP/1.0 Content-Length: 43 lastname=1&firstname=2&sex=Male&email=a%40bここで、43 は、送るデータのバイト数(空行を含まない)である。 変数を修正する時には、バイト数(ASCII文字(英数字直接入力)なら文字数)と一致している。
固有名詞を例に、類似のデータを引出してみなさい。
検索エンジンによっては、これ以外の他の演算子を提供していることがある。