« オフィススイートのプラットフォーム化は遠い | メイン | 2005年のエンタープライズソフトウェア開発業界展望 »

Skype APIをJavaから使う

Skypeは、P2Pのインターネット電話ソフトウェアだ。その音質の高さから話題になっている。しかし、こいつをただの電話やメッセンジャーと同じにしてはいけない。プラットホーム化するSkype:アリエル・ネットワーク徳力基彦氏、Skype社Vincent Shortino氏インタビューでも指摘しているが、

Skypeは音声データのプラットホーム、標準規格を提供しかかっている段階にあると見てよい。

ということなのだ。そこで、SkypeをJava経由で使ってみた(※なぜJavaからなのかといわれれば、僕がそれしか分からないから)。

JavaからSkype Access APIをいじる
Skypeは、Windows上でのAPIが公開されており、WindowsのSendMessageを使うことで利用できる。また、API自体もHTTPのように文字列のメッセージでやり取りをする単純なものなので、ベースの部分さえ実装できれば簡単に応用がきく。Javaから利用するためには、JNI(Java Native Interface)経由になるが、既にxic氏が、JSkypeというのを公開している。ダウンロードは、こちらから。

なお、準備が3つ必要だ。
1つ目はCのライブラリ。JSkypeのDLLはVisual C++で作成されているので、MicrosoftのCライブラリが必要になる。"msvcrtd.dll"をwww.dll-files.comの該当ページからダウンロードし、アーカイブファイルを解凍すると取得できる。とりあえず、Windowフォルダ(C:\windows)に入れておくのが楽チン。
2つ目は、Elcipse。クライアントアプリケーションがSWTを利用しているので、Eclipse3.0をインストールしておく。
そして、3つ目は当たり前だが、Skypeを本家か、ライブドアからインストールし、起動しておこう(※細かいけど、セカンドモニターを有効にしていると、インストール後の起動に失敗する。一度、セカンドモニタを切ってから起動させれば、その後は問題なくなる)。

では、取得したJSkype.zipを解凍する。利用するのは、
{JSKYPE_INSTALL}\JSkype\source\java\run.bat。これを開き、ECLIPSE_HOMEを自分の環境に合わせる(必要なら、JAVA_HOMEやパスも追加)。で、クリックするだけ。Eclipseのライブラリを使ってアプリケーションがコンパイルされ、アプリケーションが起動する。

すると、こんなメッセージウィンドウが表示されるはずなので、1つ目か、2つ目で答えればSkypeへ接続が行われる。

で、表示されているこのウィンドウにコマンドを入力すればよい。

コマンドは、Skypeの開発者コミュニティサイトで公開されているSkypeのAPIマニュアル(PDF)を見れば分かる。このPDFの"7.9From Device to Skype"以下が、アプリケーションからSkypeに送信できるメッセージだ。

たとえば、ユーザーを探したい場合は、"SEARCH USERS {TARGET}"を入力する。yusukeを含む人を探したい場合は、「SEARCH USERS yusuke」と入力しsendを押す。と、こんな感じで表示される。

そして、メッセージの送信も可能だ。他の人に向けて文字列を送るには、「MESSAGE {相手のID} {メッセージ}」で可能だ。相手側ではチャットウィンドウが起動し、文字列が表示される。なお、Windows同士の実験では日本語も問題ないようだ。こう入力すると、

相手のSkypeでは、こうなる。

あと、JSkypeでは実装が中途半端だが、Skypeからのイベントハンドリングも可能だ。そのため、メッセージを受信も可能だ。

なお、今後は、このJSkypeを元に、Sourceforge.netで、jsaとして、開発を行うことを予定しているみたい。2004年内にコードをあげると言っていたけど、まだなので、しばらくは動かないかもしれない。

まとめ
文字列メッセージのやり取りができる以上、Skype上で独自のプロトコルを実装すれば、P2Pアプリケーションが作れるはずだ。実際、Skypeも、この点を想定していて、Skypeのプラットフォーム上に商用アプリケーションを構築する場合には、ライセンスが必要になるビジネスモデルも持っている。
Skypeは、数億ノードのネットワークも構築できるらしく、Skype自身をプラットフォームとして、面白いアイデアが生まれる可能性もある。今後、注目だ。

トラックバック

このエントリーのトラックバックURL:
http://www.arclamp.jp/mt33/mt-tracback.cgi/1382

この一覧は、次のエントリーを参照しています: Skype APIをJavaから使う:

» Skype APIをJavaから使う 送信元 腐ったミカンは戻らない
P2P電話としては一歩抜け出た感のあるのSkype 最近ではライイブドアが日本円で決済できるスカイプアウトカードSを発売したり着々と日本にも浸透しつつある。 と、まぁ使い方とか一般的なことはほかのサイトに任せるとしてここでは P2P とか開発者的な目で Skype を見てい [詳しくはこちら]

» Skype APIをJavaから使う 送信元 【センボー ボー ボー ログ】
arclamp.jp アークランプ: Skype APIをJavaから使うおっし!これはいい。でもWindowsのみか。。。Mac OS X上で使えるSkypeAPIないのかな?Skypeの持っているネットワーク資源を利用したアプリケーションの構築には興味あるな~だってサーバーを立てる必要が無い訳だし、通... [詳しくはこちら]

コメント (5)

SIPヲタな人です。


たしかに、Skypeはすごいっす。

つぎのP2Pに必要と思われる機能(NAT越え,プログラマブルなメッセージプロトコル)を
備えていて、特に、すでに巨大なネットワークを構築している点は驚異的とさえ言えます。

ときどき、SIP vs Skypeなんて言われてますよね。
ただこれも、電話機能だけを取り上げている所もありますが、実際には、yusukeさんの
言うように、その次にあるアプリ部分でどんな面白いものを作れるかが鍵かと思って
おります。
私もこの辺、いろいろとネタがないか調査している所ですが。

>なにか、面白いネタがあったら、こっそり教えてください。(^-^;A

eclipseのSWTライブラリを用いてSkype APIを使えるようにするJavaクラスライブラリを作ってみました。
http://skype.sourceforge.jp/

今後ビデオチャット、音声チャット部分のみが単独でインストール、操作できるように公開されて、Skypeがインフラソフトウェアになると非常におもしろいですね。
Breezeのようなアプリケーションが誰でも簡単に作成できるようになると世界が変わるような気がします。

おぉ!すばらしいです。さっそく使ってみます。

Skype APIを使えるようにするJavaクラスライブラリですが、めでたくSkype社公認のオフィシャルAPIになりました。
https://developer.skype.com/wiki/Java_API
ここ数ヶ月で様々な改良を加えていますので遊んでいただけるとありがたいです。

久納さん、すばらしいです。おめでとうございます!
うん、なにか面白いことができそうな気がしますよ。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2004年12月29日 18:30に投稿されたエントリーのページです。

ひとつ前の投稿は「オフィススイートのプラットフォーム化は遠い」です。

次の投稿は「2005年のエンタープライズソフトウェア開発業界展望」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type