■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                      2008年11月03日

    楽しいJava講座 - 初心者から達人へのパスポート
                  vol.126

                                セルゲイ・ランダウ
 バックナンバー: http://www.flsi.co.jp/Java_text/
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


[このメールマガジンは、画面を最大化して見てください。]


========================================================
◆ 01.SOAPのアプリケーション(Webサービス)
========================================================


今回から、SOAP(ソープ)のお話をしたいと思います。
Strutsの話の続きはその後になります。


ソープと言っても、石鹸のことではありません。

SOAPはSimple Object Access Protocolの略で、文字通り(他のシステム
あるいは遠隔地にある)オブジェクトに簡単にアクセスするための仕組み
を提供するプロトコルです。(プロトコル = 通信規約)

ただし現在は、SOAP自体を固有名詞として使うことになっており、今後は
Simple Object Access Protocolという名称は使われなくなります。



さて、現在のように世界中に様々なコンピューターが存在していて
お互いにインターネットでつながりあっている時代では、プラットフォーム
(コンピューターのOS)やプログラミング言語に依存することなく、
互いのプログラムから他のシステムのプログラムを呼び出して使うことが
できると便利です。


たとえば、何らかの家電製品を製造している会社(仮にA社とします)と、
家電製品の部品を製造している会社(仮にB社とします)があったとします。

A社の製造管理システム(製造を管理するプログラム)では、定期的に製造
計画を立てて、必要になる部品とその個数をリストアップします。
そして、そのリストを社員(部品調達係)が見て、B社に部品を発注します。

一方、B社では、発注された(受注した)部品のリストを見て、B社の社員が
B社の製造管理システムに入力を行い、製造計画を立てます。

しかし、このようなやり方では人が入力ミスなどをおかす危険性もありますし、
これらの作業は単純作業に近いもので、人が行う仕事としてはあまり面白いもの
ではありません。

このような作業は、A社のコンピューターのプログラムがB社のコンピューター
のプログラムを呼び出して、直接、情報を伝達するようにすれば入力ミスも
発生しないし、人件費を削減することもできます。しかも、迅速にかつ自動的
に作業を行うことができます。社員も単純作業から解放され、もっと有意義な
仕事に集中することができます。


そこで登場するのがSOAPです。

SOAPを使えば、B社のプログラムの必要なメソッド(受注メソッド)を簡単に
A社に開放することができ、A社ではB社の受注メソッドを呼び出して使用する
プログラムを簡単に作成することができます。

また、SOAPは、コンピューターのプラットフォーム(OS)やプログラミング言語
から独立した仕様なので、A社で使用しているOSやプログラミング言語が、B社で
使用しているOSやプログラミング言語と異なっていても、使用することができます。

さらには、B社がこのメソッドをインターネットで公開して、他の会社からも
簡単に呼び出して使ってもらえるようにしておけば、ビジネス・チャンスが広がる
ことになります。(もちろん受注メソッドだけを単純に公開したのでは、いたずら
や犯罪に利用されてしまう恐れもありますので、現実的には利用者を認証する仕組み
や暗号化の仕組みと組み合わせたメソッドにしておく必要がありますが、細かい話
なので省略します。)

一般の消費者がインターネットで買い物できるようにしているシステム(いわゆる
B to Cのシステム(vol.079参照))がWebアプリケーションの形式をとっていることが
多いのに対して、上の形式は企業が企業から購入(いわゆるB to B(vol.079参照))
をするときに便利な形式になっていて、このようなアプリケーションの提供形式を
「Webサービス」と呼ぶことがあります。

Webアプリケーションが人を相手にしているのに対して、Webサービスはプログラム
を相手にしているという大きな違いがあります。


ただし、WebサービスはWebアプリケーションの中に組み込んで使用することも
できます。

たとえば、あるアパレル・メーカー(もしくはテーラー=衣服の仕立て屋さん)が
Webアプリケーションで受注するシステムを作るとしましょう。
Webページで衣服のデザインや生地を選択し、身体の寸法を入力して注文できる
システムです。

アパレル・メーカーはWebアプリケーションを開発する際に、生地を選択する機能
が既に生地メーカーによってWebサービスの形式で提供されている場合には、その
WebサービスをWebアプリケーションの中で呼び出して利用するようにすれば、開発
に要するかなりの労力を削減することができます。
また、その後、生地メーカーが提供する生地に何らかの変更が生じても、Webサー
ビス側つまり生地メーカー側が対処してくれるので、Webアプリケーション側つまり
アパレル・メーカー側は何もしなくても済みます。

そして、お客様がWebページで生地を選択してアパレル(衣服)の注文を完了させ
ると、アパレル・メーカーは何もしなくてもアパレルの作成に必要な生地が自動的
に生地メーカーに発注されることになります。

つまり、お客様がWebページを操作してくれるだけで、アパレルの製造システムへの
入力と、必要な生地の発注が自動的に行われることになり、アパレル・メーカーは
かなりのコスト削減を見込めることになります。

もちろん生地メーカーにとっても、このようなWebサービスを公開しておくと
ビジネス・チャンスの大幅な拡大が見込まれることになります。


同様のことは、SOAPが出現する前から存在していたCORBAという技術を使っても
実現できることなのですが、CORBAは現在は段々と使用されなくなってきています。
そして、CORBAに取って代わってSOAPが段々と普及してきているのです。

これには主に次のような理由があります。

=================================================================
(1) CORBAを使ってインターネット経由で通信を行うとファイア・ウォールを通過
できないという問題があるが、SOAPは通常、Webのプロトコル(HTTP)を使用する
ので、ファイア・ウォールを楽々と通過できる。
このため、インターネットのようなオープンなネットワークを通して通信するため
にはSOAPのほうが都合がよい。

(2) CORBAよりもSOAPを使うほうが、ずっとプログラミングが簡単である。
=================================================================


┌補足─────────────────────────┐
 CORBAはCommon Object Request Broker Architectureの略で、
 Object Request Broker(ORBと略す)はオブジェクトのRequest
 (オブジェクトへの要求)の仲介者を意味します。
 ここで言うRequestとは、要するにオブジェクトに投げるメッ
 セージのことで、仲介者とは、そのメッセージを(互いに異なる
 プログラミング言語で書か れたオブジェクトの間で言語を翻訳
 して)仲介するソフトウエアを意味します。
 Commonは「共通」の意味で、Architectureは構造と仕組み(基本
 的な設計)を意味 する言葉(日本語でも通常はアーキテクチャー
 と呼ぶ)ですから、 CORBAは「オブジェクトのメッセージを仲介
 するソフトウエアの共通のアーキテクチャー」という意味になり
 ます。
 これはOMG(Object Management Group)という標準化団体が作成
 した標準仕様で、インターネットを経由したオブジェクト間の
 通信には通常、IIOP(Internet Inter-ORB Protocol)という
 独自のプロトコルを使用します。
└───────────────────────────┘


ただし、CORBAはSOAPと違って、オブジェクト間の通信だけでなく、オブジェクトの
バックアップ/リストアを行うサービス、トランザクション処理を行うサービス、
データベース管理のサービスなど、様々な付加的サービス機能も提供しているため、
C++などでプログラミングする場合にはまだまだ有用であるかもしれません。

しかし、Javaの場合は、こういったサービス機能は、既にJ2EEや他のオープン・ソース
などで提供されているため、CORBAを使う必要性は感じられません。

というわけで、Javaがどんどん普及してきている現在では、CORBAは段々と使われなく
なってきているのです。



では、さっそくSOAPを使ったプログラミングがどんなに簡単なものであるか、体験
してみましょう。


まず、環境をそろえることから始めましょう。


JavaでSOAPを利用するためには、通常はAxisというオープン・ソースを使用します。
AxisはTomcatと同じくApacheソフトウエア・ファウンデーションによって作られた
オープン・ソースで、Tomcatなどのサーブレット・コンテナー(Webコンテナー)上
で稼動します。

(ただし、Axis2(SOAP 1.2に対応したAxis)ではTomcatなどを使わずに単独で稼動
させることも可能になっていますが、ここではAxis2の話は省略し、今回はAxis 1.4
(SOAP 1.1に対応)を使用します。)


というわけで、さっそくAxisをダウンロードしてインストールしてみましょう。

(1) 下記URLからAxisの圧縮ファイル(axis-bin-1_4.zip)をダウンロードして下さい。
(マイドキュメントなどに保存して下さい。)

http://ftp.kddilabs.jp/infosystems/apache/ws/axis/1_4/axis-bin-1_4.zip
(ただし、上記はApacheのサイトではなくApacheのミラー・サイトです。)

(2) 保存した圧縮ファイルを解凍してください。

(3) 解凍してできたaxis-1_4フォルダーの中にwebappsフォルダーができているはずですが、
さらにその中にaxisというフォルダーができていますね。これをTomcatのwebappsフォルダー
の中にコピーしてください。
vol.070でTomcatをインストールしたときのフォルダー構成で言えば、

C:\Tomcat6.0\webapps

の中にコピーして

C:\Tomcat6.0\webapps\axis

という構成にするわけです。


以上でインストールは完了です。


では、Axisが動作することを確認してみましょう。


Tomcatを起動した後、Webブラウザーを起動して、以下のURLを入力してください。
(Tomcatの起動の仕方を忘れた人はvol.070を復習してください。あるいは、Eclipse
から起動してもかまいません。)

http://localhost:8080/axis/


=======================================================
                    Apache-AXIS
                                              言語: [en] [ja]
こんにちは! Apache-Axisへようこそ
今日は何をしたいですか?

検証 - ローカルのインストール状況を検証する
うまく機能しない場合は、下記「Axisの検証」を参照
リスト - デプロイ済みのWebサービスリストを見る
呼出し - HTTPヘッダの一覧表示を行うエンドポイントを起動する (もしくはWSDLの参照)
訪問 - Apache Axisホームページを訪問する
Axisの管理 - [セキュリティ上の理由からデフォルトでは利用不可]
SOAPモニタ - [セキュリティ上の理由からデフォルトでは利用不可]

(以下省略)
=======================================================

のような画面が出ればOKです。

上の画面の中で、「検証」をクリックすると、Axisの構成確認をしてくれます。
構成確認結果の画面のうち、「必須コンポーネント」には必ず必要なJARファイルが
リストされていますので、すべてのJARファイルが見つかっていることを確認して
ください。
もしここに見つからないJARファイルがリストされている場合は、自分で別途インス
トールしてAxisのlibディレクトリー(C:\Tomcat6.0\webapps\axis\WEB-INF\lib)に
コピーしておく必要があります。
「オプショナル コンポーネント」は、セキュリティー関係のJARファイルなど必須
ではないけれど必要に応じてインストールすべきJARファイルがリストされますが、
当メールマガジンでは使用しませんので無視してください。


というわけで、これで確認作業も完了です。



では、簡単なプログラム(Webサービス)を作ってSOAPを使ったプログラミングの
シンプルさを確認してみましょう。



(次回に続く)


では、今日はここまでにします。

何か、わからないところがありましたら、下記のWebページまで質問を
お寄せください。



┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
★ホームページ:
      http://www.flsi.co.jp/Java_text/
★このメールマガジンは
     「まぐまぐ(http://www.mag2.com)」
 を利用して発行しています。
★バックナンバーは
      http://www.flsi.co.jp/Java_text/
 にあります。
★このメールマガジンの登録/解除は下記Webページでできます。
      http://www.mag2.com/m/0000193915.html
★このメールマガジンへの質問は下記Webページにて受け付けて
 います。わからない所がありましたら、どしどしと質問をお寄
 せください。
      http://www.flsi.co.jp/Java_text/
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Copyright (C) 2008 Future Lifestyle Inc. 不許無断複製