SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

はじめてのWebサービス実装体験

辞書サービスの開発例


  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (3.7 KB)

サービス指向アーキテクチャの確立によって改めて注目されているWebサービスですが、Webサービスを利用する機会は多くても、Webサービスを実装して提供する機会は多くはありません。本稿では、簡単な辞書サービスを開発することで、Webサービスの実装を体験していきます。

  • このエントリーをはてなブックマークに追加

はじめに

 近年、Googleが提供しているようなWebベースのサービス型アプリケーションが注目を集めています。一般にWebサービスと呼ばれる(またはWeb API として提供される)これらのソフトウェアは、何らかのリソースや機能を提供するインターフェースを公開し、外部からサービスに接続することで、さまざまなソフトウェアの部品として機能することができます。

 多くの場合、Webサービスはインターネットに接続されたデバイスとブラウザがあれば利用することができるため、通常のプラットフォーム固有のアプリケーションに比べて配置や管理が容易で、利用者の負担も少ないというメリットがあります。インストールやアンインストールといった作業が不要であり、自分がどこにいて、どのデバイスを使っても同じソフトウェアとデータを共有できるためです。

 ある程度Webサイトやアプリケーションの開発経験があれば、何らかのWebサービスを利用したことがあるでしょう。GoogleやYahoo!、Windows Liveなどが提供している地図や、Amazonが提供している商品検索などが代表的な例だと思います。これらのサービスは、公開されているAPIに基づいてサーバーに要求し、目的の情報を取得することができます。

 Webサービスを広く公開するには、永続的にWebサーバを運用し続けなければならないため、Webベースのサービス型アプリケーションの開発は、個人や小規模な組織にとって敷居が高く、実装する機会も少ないかと思います。そこで、本稿では模擬的なWebベースの辞書サービスを開発し、「Webサービス発信側」を体験していきます。

 本稿のサンプルプログラムはPHP 5を用い、WebサーバにはApache 2.2を利用しています。クライアントの動作確認はInternet Explorer 6で行っています。

Webアプリケーションとの違い

 WebアプリケーションとWebサービスは、基礎となる概念が異なります。Webアプリケーションは、ブラウザ上で動作するWebベースのアプリケーション全体を指しますが、Webサービスはクライアント側のプラットフォームを特定しません。これは、サーバ側のプログラムの応答に大きな違いがあるからです。

 Webアプリケーションは、HTTPリクエストを受けるとサーバ側アプリケーションでデータを処理し、結果をHTMLに整形してクライアントに返します。そのためWebアプリケーションは常にWebサイトを閲覧しているブラウザを対象としていると言えます。HTMLの本来の目的は文書を表すことなので、データの構造化は「見出し」や「段落」といった文書構造でしか表すことができません。

 これに対して、Webサービスは要求の結果を抽象化された構造的なデータで返します。要求に応じて画像や音声を自動生成するサービスも考えられますが、多くの場合はXML形式が利用されます。XMLにはデザインを強制する情報を含まないため、データをどのように視覚化するかはクライアントに委ねられます。Webサービスの場合は、データモデルとビューが完全に分離されているのです。

 もともとWebサービスはXML形式のSOAPプロトコルを利用したリモートプロシージャコールによるソフトウェアを連結させるための仕組みのことを表しました。そのため、厳密には「応答結果がXMLであればWebサービス」というのは乱暴です。しかし、現在ではURIが何らかのソフトウェア的なリソースを表し、URIにアクセスすることでリソースを入出力できる一連のシステムをWebサービスと呼ぶ傾向があります。この場合でも、URIが一種のリモートプロシージャのように機能するという点ではSOAPの思想を受け継いでいます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
辞書サービスを考える

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

赤坂 玲音(アカサカ レオン)

平成13年度「全国高校生・専門学校生プログラミングコンテスト 高校生プログラミングの部」にて最優秀賞を受賞。2005 年度~ Microsoft Most Variable Professional Visual Developer - Visual C++。プログラミング入門サイト WisdomSoft の管理人。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1679 2008/08/26 13:33

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング