mysql:8079
From: つちや <つちや <kajika@xxxxxxxxxx>>
Date: Sun, 27 Jul 2003 16:54:31 +0900
Subject: [mysql 08079] GPL 関連で、ソフトを公開しようか迷ってます
はじめまして。つちやと申します。 MySQLおよびGPLが関連することで、疑問が出てまいりましたので、 ご意見をお聞かせいただければと思います。 まず、具体的な状況ですが、WSH(Windows Script Host)から、MySQLを操作する 方法の一つとして、MySQLDB.DLLを試させていただいたのですが、For文を使って 一気に全フィールド名を取得しようとすると、今ひとつ思い通りの結果が出ず (※1)、ま、それだったら自分で作ってみるかと、GPLライセンスで公開されてい るDirectSQL(http://sourceforge.net/projects/directsql)を使用して、Delphi にてMySQLCOM.DLLというオートメーションサーバー(リンクして使用するDLLで はなく、ActiveX化し、VBなどからCreateObjectして使用します)を作成してみ ました。(ADOの操作により近づけたかったということもあります(※2)) そこで、このMySQLCOM.DLLを公開する際に、GPLライセンスに基づいて公開する ことになるとは思いますが、関連して疑問が生じました。 (1) たとえ、MySQLのコマーシャルライセンスを取得したとしても、DirectSQLの ライセンスに基づき、MySQLCOM.DLLはGPLである必要があるのでしょうか。 (もちろん、MyODBCやMySQLDBは、 http://www.softagency.co.jp/mysql/licensing.html にて、GPLだとしても、MySQL本体のライセンスに準拠するわけですよね) (2) このMySQLCOM.DLLを(静的/動的リンクではなく)CreateObjectしてオート メーション操作しながらMySQLを操作するVBのソフト、WSHやASPのスクリプト 等も、GPLの影響を受けることになるのでしょうか。 (3) では、(2)のWSHスクリプトを、自分の他のアプリケーションのマクロとして 使用する場合は、 http://www.gnu.org/licenses/gpl-faq.ja.html#GPLPluginsInNF に基づき、アプリケーションそのものは、GPLの適用外にあるとみていいので しょうか。 の3ですが、3つとも「そうである」と思ったのですが、そういうことでよろし いのでしょうか。 もしも、(3)がOKでないと、たとえばExcelのVBAでMySQLを操作したいとして、 VBAマクロ自体をGPLとするのはいいのですが、VBAはExcelと「お互いにファン クションコールを使ってデータ構造を共有している場合」(上記(3)のサイトか ら引用)と解釈できれば、ExcelそのものもGPLでなければならないなんてことに なってしまいかねないですよね。 たとえMySQLのコマーシャルライセンスを取得したとしても、GPL公開が必要であ り、しかも、GPLライセンスの制限によって、VBAから使うことすら許されないな んて言われたら、(本音はGPL公開だって気が引くのに)やっぱり公開するのや めようと思うので質問させていただいたのでした。 (実は公開するような出来ではなかったというようなオチは、まだ考えないでお きましょう) (注) ※1 作成したMySQLDBオブジェクトをobjCNとして接続し、SELECT文を発行した後、 For i = 0 to objCN.FieldCount-1 S = S & objCN.FieldProperty(i+1,1) & vbTab Next MsgBox S とすると、最初の2〜3のフィールド名が正しく取得できないのでした。 一つ一つの処理で、MsgBoxで処理をストップして確認すると、正しくなっている のですが、、、 ※2 作ってみたらあんまりADO似じゃなかったのですが、レコードセット取得後後こ んなメソッドやプロパティを作ってます(一部だけ紹介します)。 ◇Move(RecordIndex)…指定したレコードに移動します。 ◇MoveFirst…最初のレコードに移動します。 ◇MoveNext…次のレコードに移動します。 ◇MoveLast…最後のレコードに移動します。 ◇MovePrevious…前のレコードに移動します。 ◇GetRow…現在の行のすべてのフィールド値を配列でかえします。 ◇GetRecords…現在のレコードセットのすべての値を2次元配列でかえします。 ◇BOF…BOFの時Trueを返します ◇EOF…EOFの時Trueを返します ◇RecordCount…取得したレコード数を返します ◇FieldCount…フィールド数を返します ◇FieldNames…全フィールド名を配列で返します ◇FieldName(FieldIndex)…FieldIndexで指定されたフィールド名を返します ◇Field(FieldName)…FieldNameで指定されたフィールドの値を返します
-> 8079 2003-07-27 16:54 [つちや <kajika@xxxxx] GPL 関連で、ソフトを公開しようか迷ってます 8080 2003-07-28 05:56 ┗[nisi <lemo@xxxxxxxxx] 8084 2003-07-29 00:06 ┗[つちや <kajika@xxxxx]