特集
NetDictionary

「WebService.jp Insider Night」 第2夜(2)

デジタルアドバンテージ
2002/04/26


Microsoft .NET/Webサービスを応用した商用サービスをすでに運用中

新野【@IT】:それではまずは、パネリストの方々の現在のWebサービスへの取り組みについて伺います。イーストさんは、出版各社が保有している辞書などのオンライン化を進めており、その一環としてWebサービス化を手掛けていると聞きました。具体的にはどのようなものでしょうか?

渋谷【イースト】:辞書検索のWebサービスです。辞書検索用のWebサービス・インターフェイスを開発し、先ごろ、商用サイトでの公開にこぎ着けました。これは「ジャパンナレッジ」というサイトです。このサイトでは、さまざまな辞書を検索できますが、『現代用語の基礎知識』と『日経BPデジタル大事典』の2つは内部的にはWebサービスを使っています。今後は実験サイトとして、Webサービスを公開する予定です。今年は、Webサービスを使った本格的なビジネスが立ち上がる年になると思います。

新野【@IT】:開発環境としては何を使ったのですか?

渋谷【イースト】:Visual Studio .NET(以下VS .NET)です。歴史的にイーストは、マイクロソフト・ベース・テクノロジを使った製品開発を行っているため、自然とこの選択になりました。

新野【@IT】:Webサービスという意味でも、Microsoft .NETテクノロジを使っているという点でも、商用システムを運用している例はまだ少ないと思いますが、Microsoft .NETプラットフォームや開発環境をどのように評価していますか?

渋谷【イースト】:開発環境は大変に使いやすく、Webサービスだということをほとんど意識しなくても開発ができます。Webサービスだからといって、最初から構える必要はありません。これまでどおりに開発作業を進めて、最後に「Webサービスにせよ」と指示すれば、それで簡単にWebサービスができてしまう。非常に便利ですが、逆に簡単すぎるのが少々危険かもしれません。簡単にできてしまうがために、深いところまで理解しなくても取りあえず動くものはできてしまうが、意外なところに落とし穴があるとか……。

Javaを得意とする豆蔵が.NETを先行させた理由は?

新野【@IT】:豆蔵さんは主にJavaを中心としてオブジェクト指向の啓蒙をされています。

萩本【豆蔵】:最近はビジネスもやってます(笑)。

新野【@IT】:Javaを使ってWebサービスを開発することは簡単でしょうか? その場合、開発ツールは何を使うのでしょう?

萩本【豆蔵】:できます。取りあえず弊社ではIBMのWebSphereを使っていますが、ほかにもWebサービスに対応したさまざまなWebアプリケーション・サーバがあります。

新野【@IT】:やはり得意とするJavaを使ってWebサービス開発を行っているのですか?

萩本【豆蔵】:ご指摘の通り弊社はJavaが中心です。ただしことWebサービスにかぎっては、.NETが先行しています。現在、Webサービスの教育コースとして、教室の中にマーケット・プレイスを構築して、そこに生徒さんたちが自分で作ったWebサービスを導入していくというものをやっています。現時点で、このコースで使っているのは.NETベースのWebサービスです。今年中には、WebSphereをベースとしてして、EJBを使用する同様のコースを作ろうと思っています。

新野【@IT】:Javaを得意とする御社が、Webサービスに関しては.NETを先行させた理由は何かあるのでしょうか?

萩本【豆蔵】:それはよく聞かれるのですが、.NETが先行したのは、たまたまなのです。私たちが目指しているのは、特定のアプリケーション・サーバに依存しない世界です。そのためには、Javaだけでなく、ほかのプラットフォームも手掛ける必要があります。それでも、オブジェクト指向という点では変わらないはずです。

新野【@IT】:最終的にはオブジェクト指向にたどり着くということですか?

萩本【豆蔵】:コースの参加者の方々に最終的に学んで欲しいのは、自社内のシステムを開発するときに、見通しのよいシステムを作るということです。そのためにWebサービスをどう生かせるのかを考えるわけですが、まずはWebサービスを気軽に使ってもらうことから始める必要があるでしょう。そのあと、実際のシステムを作るときにどうするか、最後はそれをオブジェクト指向の利用に行き着くはずです。そこで、オブジェクト指向技術をどのように活用すればよいかを考えていただければと思います。もちろん現実のシステムでは、オブジェクト指向だけでは解決できない問題もありますが。

商用Webサービスを開発するうえでの教訓

新野【@IT】:イーストさんは、Webサービスを利用した商用システムを構築したわけですが、実際にシステムを構築してみて分かったことはありますか? システム構築時の注意点とか、乗り越えないといけないハードルとか。

渋谷【イースト】:プログラミング・スキルという意味では、ネットワーク系のプログラムを作った経験があれば大丈夫でしょう。やはり最も重要なのは、処理を行ったときにネットワークにかかる負担などを見積もれるということです。先ほど言ったとおり、開発自体はあまりに簡単にできてしまうのですが、トラフィックなどを念頭に置かないと、実用システムとしては使いものにならないでしょう。

萩本【豆蔵】:何らかの理由でサーバが停止している可能性があるという前提も必要ですね。ネットワークを介したRPC(Remote Procedure Call)を利用しているという意識はある程度必要でしょう。

Webサービスを活用してチームでのソフト開発を容易に

渋谷【イースト】:Webサービスを開発していて面白いなと思ったのは、複数のプログラマーがシステムを開発するときにも便利だということです。従来は、1つのシステムをいくつかのモジュールに分けて、相互のインターフェイス仕様を決めて、モジュールの単位に複数のプログラマーで手分けして作業するという方式が一般的です。これに対し今回私たちは、モジュールの代わりにWebサービスを使いました。こうすると、従来は紙などに書き出す必要があったインターフェイス仕様も、WSDLで参照できるようになるため不要になりました。別の担当者が開発したサービスのURLを教えてもらい、WSDLをインポートすればすぐに使えますから。

新野【@IT】:オーバーヘッドが大きいのでは?

渋谷【イースト】:確かにパフォーマンスはよくありません。しかし必要なら、Webサービスをベースに開発作業を進め、最後にモジュールとして組み合わせるということも可能だと思います。これは本来のWebサービスの使い方とは違うのかもしれませんが。取りあえず現時点では、気軽に何でもWebサービスを使ってみるという姿勢でいます。

さまざまな場面でWebサービスを使ってみる

新野【@IT】:チーム・プログラミングの手段としてWebサービスを使ったということですが、オブジェクト指向プログラミングにうるさい萩本さんとして、そういう使い方は問題ありませんか?

萩本【豆蔵】:まったく問題ないでしょう(笑)。基本的に分散システムは、本来1つのものを分散するというよりは、離れたところにあるリソースを制御するという方が自然です。それらを複雑なプロトコルで接続するよりも、そこにオブジェクトがあるということで相互接続すればよい。こうした目的にWebサービスは向いていると思います。現実には、更新系にしろ参照系にしろ、ちょっと複雑なシステムを作ろうとすると、トランザクションをどう管理するのか、ロング・トランザクションをどうするかなどの問題に直面すると思いますが、まずはWebサービスをいろんな場面で使ってみることが大事だと思います。

単一のシステムにWebサービスを活用する

参加者:最終的に1台のコンピュータで実行されるものなら、Webサービスにするメリットはないのでは?(ソフトウェア開発)

渋谷【イースト】:確かに、今回開発したシステムは、最終的にインターネットに公開するときには1台になっていますから、それだけ見ると意味がないかもしれません。必ず1台で完結するシステムであることが明らかなら、Webサービスを使う必要はなかったでしょう。

小川【DA】:各サービスを将来的に転用可能なコンポーネントとして考えられるなら、当初は1台のコンピュータで実行されていても、Webサービス化するメリットはあるのではないでしょうか?

萩本【豆蔵】:一般論として、コンポーネントありきで考えると、例えばJavaで作ったコンポーネントと、.NETで作ったコンポーネントがあったとして、それらを接続して使うという場面があるでしょう。それらがJavaで作られていようと、.NETだろうと、オブジェクトとして実現されたサービスを使いたいだけと考えると、同じマシンで動いていたとしてもWebサービスを使う価値はあると思います。


 INDEX
  [特集]NetDictionary座談会記事
    「WebService.jp Insider Night」 第2夜(1)
  「WebService.jp Insider Night」 第2夜(2)
    「WebService.jp Insider Night」 第2夜(3)
 
 特集 :NetDictionaryプロジェクト
 


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間