2008年5月24日土曜日

Skype連携ソフトの複数デバッグ用Eclipseプラグインの開発

Skype連携ソフトの複数デバッグを一つのマシンで行えれば、やりとりを行うソフトの開発が非常に楽になります。
ですので、今日はこの方法を探ってみました。

まずは、Skype自体を複数アカウントで起動します。
その方法は、以前のitmediaの記事「Skypeを2つ同時に起動する」に詳しいです。
上記記事では、Windowsに標準搭載のrunasコマンドを使っています。
ですが、毎回パスワード入力するのが面倒であれば、
等をインストールして使う手もあります。

次はSkype連携ソフト自体を複数アカウントで起動する方法です。
通常のEclipseの起動オプションでは、別アカウントでJavaアプリケーションを起動という選択肢がありません。
いろいろ探しましたが、このような目的を実現するEclipseプラグインも発見することができませんでした。

となると、自分でプラグインを作るしかありません!

最初はEclipseのアプリケーション起動関係のフレームワークについて、「The Launching Framework in Eclipse」を読んで調査します。

その後、EclipseのJavaアプリケーション起動のコードを読んでいくと、内部ではjava.lang.Runtime#execを呼び出してプロセスを起動していることが分かりました。
起動後は、java.lang.Processインスタンスがそのまま保持されて制御に使われています。
Processインスタンスを使わない形に変更してプラグインを実現するとなると非常に多くのコード修正が必要そうです。
ですので、この仕組みはそのまま使う形でプラグインを実装することにしました。

方向性が固まったので、次は別アカウントで実行されたプロセスに結びつくjava.lang.Processインスタンスを生成する方法を考えなければいけません。
Processクラスを拡張 + JNI等を使って、別アカウントでのJavaアプリケーションと結びつく独自のクラスを作ることも可能ですが非常に大変です。
ですので、上記のRunAsXコマンドを使ってラップして実現します。
java.lang.Processインスタンスを作る前に、RunAsXコマンドを使う形にコマンド文字列を修正して、java.lang.Runtime#execに渡す方法です。

この仕組みを実現するため、既存のメソッドの一部を変えたいのですが、Eclipseの既存のクラスがこのような拡張を意図して作られていません。
ですので、メソッドレベルではなく、クラスレベルで構造を変える形で挑戦してみます。

結構なコード量が必要でしたが、この形で別アカウントでの起動に成功しました!!!

起動に成功したので、設定を行う起動ダイアログ等も作り込んでみました。




このプラグインで別アカウントのJavaアプリケーションをデバッグしている画面です。



残りの問題や改良を加えたら、Skype連携ソフト開発用Eclipseプラグインとして公開したいと思います。

2008年5月17日土曜日

Skype4Java 2.0の計画

Skype4Java 1.0をリリースしてから一年半ほど経つので、Skype4Java 2.0をリリースしたいと思っています。
メジャーバージョンアップするにあたっては、世界最高水準のライブラリを目指したいので計画をまとめてみます。
2.0では五つの方向性で機能を向上させます。

「安定性の向上」
  • Mac、Linuxコネクタの修正
    • 実装をJNAに変更
  • アプリケーションAPIレベルでテストカバレッジ100%の達成
「機能の充実」
  • Skype4COM、Skype4Pyと同レベルのSkype APIサポート
  • AP2AP機能を使ったRMIサポート
  • 使いやすい音声録音機能
    • mp3、OggVorbisへのリアルタイム録音
    • 会議通話の録音サポート
「配備の容易性」
  • Maven2セントラルリポジトリへの登録
  • jarのeclipseプラグイン化(OSGiバンドル化)
「ドキュメントの充実」
  • 日本語のjavadoc追加
  • 状態遷移図の追加
「サンプルプログラムの充実」
  • Appletでの利用例
  • JNLPでの利用例
  • サーブレットでの利用例
  • RESTful Webサービス化
  • 各種マッシュアップアプリケーション

2008年5月10日土曜日

Skype APIを使ってSkype連携ソフトを作る最初の一歩

Skype APIを使うことにより、Skypeと連携するソフトを作ることができます。

Skype APIを使い始めるにあたっては、まずSkype自体について情報収集しなければいけません。
  1. Skypeの基礎知識を習得
    1. Skype公式サイトで製品、サービス情報をチェック
    2. Wikipedia(日本本家)でSkypeの概要、歴史、関連情報をチェック
    3. Skypeの動作の仕組みについて学ぶ
    4. Skypeのキーワード「P2P」へのセキュリティ懸念への反論を学ぶ
  2. Skypeの業界動向を調査
    1. Skype市場の成長、大きさについて学ぶ
    2. Skypeハードウェアについて学ぶ
    3. Skypeソフトウェアについて学ぶ
  3. Skypeの過去のニュースや動きを調査
    1. Skype NewsブログのSkypeカテゴリの過去エントリをチェック(その1その2Skype関連製品カテゴリ)
    2. にっき (n-yoshi@lares)ブログのSkypeカテゴリの過去エントリをチェック
    3. Skype日本語ブログの過去エントリをチェック
  4. Skypeの最新情報が集まる仕組みを作る
    1. Skype関連のブログのRSSを登録
    2. SkypeキーワードのRSSを登録
    3. Googleアラートに追加
    4. Twitterユーザを追加
その後、Skype APIについて情報収集します。
  1. Skype APIの入門記事で学ぶ
  2. Skype API仕様書に目を通す
  3. 自分が使っているプログラミング言語用のSkype APIライブラリを選ぶ
  4. 簡単なアプリケーションを作ってみる
  5. Skype APIの最新情報が集まる仕組みを作る
    1. Skype API関連のブログのRSSを登録
  6. Skype Extraにして販売する方法を学ぶ (Skype Extraにせず、普通のアプリケーションのままリリースすることも可)
ここまでくれば、後は目的のSkype連携ソフトを作り上げてリリースするだけです。