Webサービスとは / Webサービスとは(2) / XML-RPCの実際 / 普通のHTTPリクエスト/レスポンスってどんなんだっけ? / cvs-mode for xyzzy / Webページサムネイル画像作成ツール / 2ch管理人 ひろゆき氏のブログ / Apacheの自動起動の設定(RedHat系) / ブラウザの「お気に入り」 / URL from IEのお気に入り

投稿日: 2004年01月30月

Webサービスとは

要するにWebサーバが情報を提供する相手が「人」か「アプリケーション」かというだけのような気がする。

いや、ちょっと違うか。今までも「ブラウザ」という固定の「アプリケーション」にHTML(XML) なりJPGなりを提供してたんだから。でも結局は人が見るためのデータだ。

WebサービスはHTMLやJPGの代わりにXMLでデータを提供する((-実際データ形式には依存しないと思うけど-))。それだけなら「index.xml」を置けば出来上がりなんだけど、常に同じデータしか返してこないWebサービスにあんまり意味は無い。

アプリケーションがデータを送り、Webサーバはそのデータに基づいたデータを返す。これはWebサービスに限ったことではなく、ブラウザでWebを見るときにも行っていることだ。違うのはそのデータがXMLか否か。

たとえば検索エンジンを利用するとき、検索窓に文字を入力している。ブラウザは入力された文字をWebサーバに送り、その文字を含むページの探しリストをHTMLにしてブラウザに返す。

これをWebサービス化したのがGoogleが始めた「Google Web API」だ。

このWebサービスを利用するアプリケーションは、検索したい文字をXMLとしてGoogleのWebサービス用のURLに送信する。Googleは受け取った文字を含むページのリストをXMLデータにしてアプリケーションに返す。

アプリケーションはそれをGoogleと同じようにHTMLにしてもいいし、ファイルに保存して終了してもいい。どう利用するかはアプリケーションを作る人次第。

プログラム経験者には「Webを使った関数呼び出し」と説明すると伝わるかも(抽象的過ぎて混乱するか・・・)。WebサーバにURLという関数名と引数を渡して返り値をもらうのだ。

多分Webサービスはもっと壮大なものだと思うけど、僕が使うレベルではこの程度の理解で困らないように思う。

Webサービスとは(2)

しつこいくらいにXML、XMLと書いたが、実はアプリケーションからはXMLを意識する必要は無い。HTTPのプロトコルしらなくてもCGIスクリプト書けるのと一緒。PHPやPerlなどはWebサービス用のライブラリがありXMLはその後ろに隠れて自分の書くコードからは見えない。

XML-RPCの実際

XML-RPC仕様書邦訳によればリクエスト、レスポンスはそれぞれ以下のような構造。

リクエスト

POST /RPC2 HTTP/1.0
User-Agent: Frontier/5.1.2 (WinNT)
Host: betty.userland.com
Content-Type: text/xml
Content-length: 181

<?xml version="1.0"?>
<methodCall>
   <methodName>examples.getStateName</methodName>
   <params>
      <param>
         <value><i4>41</i4></value>
      </param>
   </params>
</methodCall>

レスポンス

HTTP/1.1 200 OK
Connection: close
Content-Length: 158
Content-Type: text/xml
Date: Fri, 17 Jul 1998 19:55:08 GMT
Server: UserLand Frontier/5.1.2-WinNT

<?xml version="1.0"?>
<methodResponse>
   <params>
      <param>
         <value><string>South Dakota</string></value>
      </param>
   </params>
</methodResponse>

ごちゃごちゃ考えるより、この実例をひとつ見るほうがよっぽどわかりやすかった。

普通のHTTPリクエスト/レスポンスってどんなんだっけ?

GETは簡単だけど良く考えたらPOSTのほうはあまり考えたことがなかった。考えなくてもPHPはうまくやってくれてるし。

まずはGETリクエスト

GET / HTTP/1.0

レスポンスはリクエストがGETでもPOSTでも同じ(余計なヘッダは省きます)

HTTP/1.1 200 OK
Content-Type: text/html
Date: Fri, 17 Jul 1998 19:55:08 GMT

<html>
<head>
<title>Welcome mylab.jp!</title>
</head>
<body>
mylab.jpへようこそ。
</body>
</html>

フォームなどから入力する場合で、POSTメソッドを使った場合のリクエストはフォームのエンコード方法にmultipart/form-dataや、application/x-www-form-urlencodedがあるらしい。名前から察するに前者はマルチパートのメールみたいにバウンダリで値を区切ったりするんだろう。後者はGETと同様に変数=値&変数=値・・・という感じだろうか。

HTML 4.01仕様書 邦訳 フォームのMIMEタイプ で答えあわせをしてみると、FORM要素の enctype属性に指定できる値はデフォルトのapplication/x-www-form-urlencodedとmultipart/form-dataの2つがあり、一般的にはURLエンコードを使うがファイルを送信する場合には後者のマルチパート方式を使わなければならない。

application/x-www-form-urlencodedを使うPOSTリクエスト

multipart/form-dataを使うPOSTリクエスト

参考サイト

cvs-mode for xyzzy

Memo-cvs-modeを使う

Webページサムネイル画像作成ツール

LinuxでMozillaを使う方法 http://blog.bulknews.net/mt/archives/000494.htmlより

#!/bin/bash
mozilla -geometry 800x800 &
PID=$!
sleep 3;
ID=`xwininfo -name "Mozilla" -int | perl -e 'while(<>) {
 if   (/Window id: ([0-9]+)/) { print $1; } }'`
mozilla -remote openURL\(http://$1\)
sleep 3;
import -window $ID -silent $1.jpg
kill $PID

http://www.persistent.org/hiki/hiki.cgi?%A4%BF%A4%E0%A4%E9から

2ch管理人 ひろゆき氏のブログ

元祖しゃちょう日記

ココログのページって始めて見た。ニフティ社長のブログもある。

Apacheの自動起動の設定(RedHat系)

http://m9841.info/server/apache2.htmlより

付属の apachectl を利用します.
# cp /usr/local/apache2/bin/apachectl /etc/init.d/apache2
コピーした apache2 を編集します.
# vi /etc/init.d/apache2
25行目くらいのコメントが終わった所で以下を追加します.
#chkconfig: - 85 15
#description: apache2.0
chkconfig に登録します
# chkconfig --add apache2
# chkconfig --level 345 apache2 on
RPM とかで他の httpd がインストールされているときは,
# chkconfig --level 345 httpd off
とかして次回から起動時に自動起動しないようにしておきます.

ブラウザの「お気に入り」

昔は巡回するページをお気に入りに入れていた。それがWWWCを使うようになって巡回にはWWWCを使うようになった。今はそれがアンテナだったりRSSリーダーと併用になっている。

で、ブラウザのお気に入りは調べ物中に有用だと思ったページを登録している。

今その整理中なのだ。お気に入りに登録されていたページを日記に移す作業。

というわけで、いつもより多く更新しております。

URL from IEのお気に入り

一つ一つ書いてる暇が無い。


この記事へのコメント

※ このコメントは旧ブログシステム(tDiary)からの移行です。

rufeinさんからのコメント(2004-01-30 19:36:39)

xyzzyのcvs-modeについての記述はかなり適当にかいてしまったところもあるので、わかりにくいところや間違いがあったら、具体的にWikiにつっこむなり、日記に書くなりしていただければ、修正できると思います。

hajimeさんからのコメント(2004-02-02 09:19:50)

必要な情報が簡潔にまとまっているので助かります。気づいた点があったらお知らせします。

名前:宮内 はじめ

Code for Nagoya名誉代表

E2D3名古屋支部長

プログラマーです。GISやデータビズが好きです。このサイトは宮内の個人的なメモです。

プロフィール

お問い合わせ