- PR -

Javaサイトと外部モジュール

1
投稿者投稿内容
johnes
ベテラン
会議室デビュー日: 2007/11/21
投稿数: 50
投稿日時: 2007-12-17 16:39
お世話になります。

携帯電話(au/DoCoMo)の公式サイトの開発を行っています。
一般流通している外部モジュールを利用して処理を行う必要がある箇所があります。

#以前に「携帯を含めたさまざまなブラウザを対象にしたServlet/JSP」
#というスレッドを立てさせて頂いた者です。
#皆様のお力添えのおかげをもちまして、あれから何とか方針を決定し、
#サイト製作を進める事が出来ています。再びお世話になります。

環境は以下のようになっております。

== 開発/単体テスト環境 ==
OS :WindowsXP
言語 :Java5.0
Web+APサーバ:Tomcat5.5

== 本番環境 ==
OS :RedhatLinuxAS4
言語 :Java5.0
APサーバ :Tomcat5.5
Webサーバ:Apache2.0

ところが、外部モジュールで提供されているものは、開発/単体テスト環境と本番環境に共通して使えるとされるものがCライブラリ版のみとなっており、JNIを使ってCライブラリを呼ぶ方法しかないのかと困惑しています。
ちなみに、そのモジュールは以下が提供されているとのことです。
 Windows用:Cライブラリ版、COM版
 Linux用 :Cライブラリ版、シェルコマンド版

#Java(Servlet)によって構築された公式サイトは多いと思うのですが
#JavaAPIが提供されていないモジュールも多いようで驚きました。

このようなJavaAPIが提供されていないモジュールを使用しなければいけない場合、皆様はどのように対応されていますか?

情報に不足やわかりづらい点がありましたらなんなりとご指摘ください。
このような開発経験がある方、ノウハウのある方、お力添えをお願いします。

※インギさんからのご指摘により、一部内容を書き換えました。

[ メッセージ編集済み 編集者: johnes 編集日時 2007-12-17 18:48 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-12-17 18:10
>ところが、キャリアから課金モジュールとして提供されているものは、開発/単体テスト環境と本番環境に使え
>るものがCライブラリ版のみとなっており、JNIを使ってCライブラリを呼ぶ方法しかないのかと困惑しています。
キャリアからの開発キットの提供を受ける前に NDA を結んでいると思いますが、大丈夫ですか?
johnes
ベテラン
会議室デビュー日: 2007/11/21
投稿数: 50
投稿日時: 2007-12-17 18:32
引用:

キャリアからの開発キットの提供を受ける前に NDA を結んでいると思いますが、大丈夫ですか?


インギさん。ありがとうございます。
我々は下請けの下請けの・・・でして、直接NDAを結んでいるわけではないのですが・・・やはりまずいですよね。一般論的な意味合いに書き換えます。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-12-17 19:00
引用:

ちなみに、そのモジュールは以下が提供されているとのことです。
 Windows用:Cライブラリ版、COM版
 Linux用 :Cライブラリ版、シェルコマンド版


自分ならJNIはよく知らないので、Windows用COM版とVB辺りで、
シェルコマンド版と同じインターフェイスのコマンドを作ります。
で、Runtime#execで起動して結果を取得する感じですね。
その処理を行うメソッドをあらかじめ抽象化しておけば、
色々応用が利くと思いますが。
johnes
ベテラン
会議室デビュー日: 2007/11/21
投稿数: 50
投稿日時: 2007-12-18 10:42
引用:

かつのりさんの書き込み (2007-12-17 19:00) より:
引用:

ちなみに、そのモジュールは以下が提供されているとのことです。
 Windows用:Cライブラリ版、COM版
 Linux用 :Cライブラリ版、シェルコマンド版


自分ならJNIはよく知らないので、Windows用COM版とVB辺りで、
シェルコマンド版と同じインターフェイスのコマンドを作ります。
で、Runtime#execで起動して結果を取得する感じですね。
その処理を行うメソッドをあらかじめ抽象化しておけば、
色々応用が利くと思いますが。


ありがとうございます。

なるほど!こうしておけばIFが同じになるので環境が違ってもソースの変更はなくなるというわけですね。重々に参考にして検討させて頂きます。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-12-18 12:08
引用:

johnesさんの書き込み (2007-12-17 16:39) より:
ところが、外部モジュールで提供されているものは、開発/単体テスト環境と本番環境に共通して使えるとされるものがCライブラリ版のみとなっており、JNIを使ってCライブラリを呼ぶ方法しかないのかと困惑しています。
ちなみに、そのモジュールは以下が提供されているとのことです。
 Windows用:Cライブラリ版、COM版
 Linux用 :Cライブラリ版、シェルコマンド版


最初に、こういう場合は Windows も Linux も JNI で「Cライブラリ版」を呼ぶほうが確実だと思います。モノを見ないことには分かりませんが、「COM版」や「シェルコマンド版」は、呼び出しサンプル用の簡易版という位置づけであることが多いような気もします。
しかし、JNI は難しいです。Web サーバー上で JNI を動かすのはさらに難しいです。そこにどこまで工数を割くことができるかが問題となります。

また、理想としては、Windows と Linux の両方で動くようにしておくほうが、あとあとトラブルがあったときに、もう片方で検証できますので便利です。しかし、これだと工数がかかります。最終的には本番でないほうは無駄になるわけですから。
工数をケチるならば、最初っから本番でないほう、すなわち Windows 版のほうをまったく手をつけない、というのもひとつの割り切りかもしれません。すなわち、開発も Linux でやるわけです。

極限まで工数を削ると、Linux 版だけで、シェルコマンド版だけ、となるでしょうが、これを本番で安定稼動できるか、が不安です。規模にもよるかもしれません、小規模なサイトでたまに落ちても良いようなものならば、これで行く、という選択肢もあると思います。
johnes
ベテラン
会議室デビュー日: 2007/11/21
投稿数: 50
投稿日時: 2007-12-18 19:33
さまざまなケースの回答ありがとうございます。

引用:

unibonさんの書き込み (2007-12-18 12:08) より:
最初に、こういう場合は Windows も Linux も JNI で「Cライブラリ版」を呼ぶほうが確実だと思います。モノを見ないことには分かりませんが、「COM版」や「シェルコマンド版」は、呼び出しサンプル用の簡易版という位置づけであることが多いような気もします。
しかし、JNI は難しいです。Web サーバー上で JNI を動かすのはさらに難しいです。そこにどこまで工数を割くことができるかが問題となります。


なるほど・・・確かに色々見てみるとunibonさんのおっしゃるような記述がありました。
私もJNIの経験がなく、JNIのサンプルコード等を探していたのですが難易度が高そうで、しかもWebサーバ上だと更に難易度が上がるのですが。。。

引用:

また、理想としては、Windows と Linux の両方で動くようにしておくほうが、あとあとトラブルがあったときに、もう片方で検証できますので便利です。しかし、これだと工数がかかります。最終的には本番でないほうは無駄になるわけですから。
工数をケチるならば、最初っから本番でないほう、すなわち Windows 版のほうをまったく手をつけない、というのもひとつの割り切りかもしれません。すなわち、開発も Linux でやるわけです。


前者はかつのりさんもおっしゃっていたような方法ですね。確かにこれだとおっしゃるように便利なのは間違いないですが、テスト用が無駄になってしまいますね。。。
後者のようにLinuxでテストできれば一番楽なのだと思います。。残念ながら今回テスト用のLinuxマシンは用意して貰えないようです。。。

引用:

極限まで工数を削ると、Linux 版だけで、シェルコマンド版だけ、となるでしょうが、これを本番で安定稼動できるか、が不安です。規模にもよるかもしれません、小規模なサイトでたまに落ちても良いようなものならば、これで行く、という選択肢もあると思います。


今回は開発工数があまりないので、こちらの方法も検討してみようと思います。

一応、本番環境を利用してのテスト期間も設けられているようですので、テスト環境で安定稼動を実証できなくても、その時に安定稼動に持っていくことが出来るかと思いますので。

本当に勉強になります。
1

スキルアップ/キャリアアップ(JOB@IT)