忙しい現代人の腰&肩のお悩み対策!

MPL2.0ライセンスをうたったライブラリを使って開発し、製品として出荷したい考えています。

http://www.mozilla.org/MPL/2.0/FAQ.html
のQ11をみると、
MPL2.0ライセンスをうたっている該当のライブラリを変更せずに使うのであれば
製品のソースコードは開示しなくてもよいと読み取れるのですが
この解釈で正しいのでしょうか。

教えて頂けると大変助かります。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

いえーすざっつらいと。



MPL2.0のライセンスで公開されているライブラリ(より正確に言えばMPL2.0のライセンスで公開されているのはライブラリではなくてソースコード)をリンクして実行するプログラムにはソースコード公開義務はない。
それはQ12にまとめられている
MPL: The copyleft applies to any files containing MPLed code.
LGPL: The copyleft applies to any library based on LGPLed code.
GPL: The copyleft applies to all software based on GPLed code.
の方が理解しやすいかも知れない。

つまり、MPLなライブラリを使用して開発するにあたり、そのライブラリの一部を改変して再コンパイルした場合はその修正されたソースコードファイルについてはソースコードを公開し、かつそのソースコードはMPLでライセンスされる必要があるが、それの中に書かれてあるルーチンを呼び出すプログラムが書かれたファイルは何もしなくてOKだ。
・library.c ←MPL2.0
・mysource.c ←あなたが作った
の2ファイルを1つのEXEにして配布する場合でもmysource.cは公開義務はない。library.cを改変したとしても、公開義務があるのは改変されたlibrary.cのみであり、mysource.cには影響しない。
    • good
    • 4
この回答へのお礼

とてもわかりやすい回答をありがとうございます!

お礼日時:2014/05/09 22:55

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qファイルやディレクトリの存在確認を行う方法

ファイルをオープンするのはfopenでOKですが、ファイルやディレクトリの存在確認を行う方法が知りたいです。

何か組み合わせて作るものなのでしょうか?
perlとか便利な演算子があるのですが、C/C++って器用ではないですね。
これは処理系?依存の内容ですか?

私の環境は VC6, VC2005 Windows2000です。

Aベストアンサー

int access(const char* path, int mode);
int stat(const char* path, struct stat* sb);

かな?
MSDN を引くと _access_s() を使えとか書いてあるけど。

QLNK2019: 未解決の外部シンボルのエラーが出る

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自キャラのデータ
Point2D g_jikipos = {40, 400};//自キャラの座標

//画像ハンドル
int g_jikiimage[11];

//色々なファイルの読み込み
int LoadFiles(){
//画像ファイル読み込み
if(LoadDivGraph("media\\player01.bmp",
11,11,1,64,64,g_jikiimage) == -1) return -1;

return 1;
}


 mymain.h
//他から呼び出させるMyMainの関数
void MyMain();
int LoadFiles();


 myhelper.h(サンプルなので打ちミスはない)
#include "DxLib.h"
#include <limits.h>
#include <math.h>

//構造体宣言
//座標またはベクトルを記録する構造体
struct Vector{
float x,y;
};
typedef Vector Point2D;
//線を記録する構造体
struct Line2D{
Point2D startpos, endpos;
float katamuki;//傾きをラジアン値で記録
Vector speed;//移動している場合は速度をセット
};
//球体を記録する構造体
struct Ball2D{
Point2D position;
float hankei;//半径
};
//四角形を記録する構造体
struct Rect2D{
Point2D lefttop;
Point2D rightbottom;
float width;
float height;
};


//ライブラリ関数
Point2D PosInView(Point2D in);
int XInView(float inx);
int YInView(float iny);
void ScrollToLeft(float jikiposx);
void ScrollToRight(float jikiposx);
void ScrollToUp(float jikiposy);
void ScrollToDown(float jikiposy);
void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness);
void DrawCircleInView(float x, float y, float r, int Color, int FillFlag);
void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag,
int *imgarray, int allframe, float fps);
//ベクトル関数
Vector CreateVector(Vector in, float veclen);
Vector AddVector(Vector v1, Vector v2);
Vector SubVector(Vector v1, Vector v2);
Vector AddVectorInFrameTime(Vector pos, Vector speed);
Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel);
Vector Normalize(Vector in);
Vector RotateVector(Vector in, float radian);
float VectorLengthSquare(Vector in);
float DotProduct(Vector v1, Vector v2);
float CrossProduct(Vector v1, Vector v2);
void SetLine2DKatamuki(Line2D *in);
void DrawLine2D(Line2D in, int Color, int Thickness);
void DrawBall2D(Ball2D in, int Color, int Fill);
//当たり判定関数
bool HitTestLineAndBall(Line2D linein, Ball2D ballin);
bool IsPointAtLineFace(Line2D linein, Point2D ptin);
bool HitTestLineAndLine(Line2D line1, Line2D line2);
bool HitTestBallAndBall(Ball2D a, Ball2D b);
bool HitTestPointAndBox(Rect2D rect, Point2D pt);
//タイマー関数
void SetSimpleTimer(int idx, int time);
int GetPassedTime(int idx);


//グローバル変数
extern float g_frametime;
extern Rect2D g_framerect;//画面領域(当たり判定)
extern Point2D g_current_field_pos;//現在の左上座標
extern Rect2D g_stagesize;//ステージサイズ

//定数宣言
const float ZEROVALUE = 1e-10f;
const float PIE = 3.1415926f;
const int SCROLL_LIMIT = 200;
----------------------------------------------------------------
 エラー内容
1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました
1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\my\Debug\my.exe : fatal error LNK1120: 外部参照 1 が未解決です
1>my - エラー 2、警告 0
ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ
----------------------------------------------------------------
画像を貼り付けときます
(見えにくい場合→http://www.dotup.org/uploda/www.dotup.org154142.jpg.html)
初心者なのでわかりやすくお願いします

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自...続きを読む

Aベストアンサー

ファイル構成から推測するに
mymain.cpp というファイルに
void MyMain(void) {
// ここに処理を書く
}
という関数が必要なようです。

QGPLライセンスのライブラリを利用=ソース公開しなきゃだめ?

GPLライセンスについて調べています。
考え方がまちがっていたらご指摘いただきたいです。

1.GPLライセンスのライブラリを用いたシステム開発を行った場合
  ソースの開示を求められたら、開示しなければいけない?

たとえば、Javaで開発したシステムの場合、ここでいうソースコードとはjavaファイル郡になるのでしょうか?
jarファイルとかwarファイルだけでは駄目 ということですよね?

2.GPLライセンスのライブラリを用いたソフトを作って売る場合も
  同様で、ソースの開示を求められたら、開示しなければいけない?

つまりは、Javaで開発したソフトをパッケージ販売したいなら、
ソースコードをお客に開示するつもりでいなければならない ということでいいですか?

また、ソースコードを開示する先 は、お客だけでいいのでしょうか?
まったく関係のない人から開示を求められた場合も、ソースコードを渡さなきゃいけないのでしょうか?

以上です。
よろしくおねがいします。

Aベストアンサー

僕もあまり詳しくはないですが、
GPLで配布について求められていることは、
バイナリを直接配布する場合、そのバイナリを入手するのと
同じ手順でソースコードも入手できるようにすることだったと思います。

つまり、サイト経由でバイナリを配布するならば同じページでソースコードを配布しないとだめだし、CDで配るのなら、同じCDの同じディレクトリに同梱しないといけません。

ちなみに、GPLには、LGPLというライブラリ用の劣化したGPLがあります。
この場合、動的リンクをする場合にはGPL汚染はしなかったと思います。
利用しようとしているライブラリのライセンスを確認して、実際に利用している人に聞いてみるのがよいかと。。

参考URL:http://www.opensource.jp/lesser/lgpl.ja.html

QApache License Version 2.0ライセンスについて、私の認識が間違っていないか確認させてください。

Apache License Version 2.0について、私の認識が間違っていないかを、確認させてください。(Apache License Version 2.0原文を見てみた(読む以前の問題)のですが、私の英語読解力ではそこに書かれている意味を正しく理解する自信がなかったので、Webの日本語サイト等で調べたうえでの認識です・・。)

1, 原著作者とは、Apache財団のことをいうのか。
2, 謝辞を表示とは、Apache Softwareを使用したプログラム内で、謝辞を表示しなければならないということなのか。また、謝辞とは、具体的にどういったものなのか。

3, 最後に、率直に質問しますが、Apache Softwareをモジュールとして使用して記述されたプログラムを、ソースコード非公開かつ有償の製品として営利目的で販売することは、ライセンス上合法ですよね?

Aベストアンサー

こんにちは。とりあえずわかる範囲で。
>1, 原著作者とは、Apache財団のことをいうのか。
違います(違う場合もある)。
Apacheライセンスの元で配布しているソフトウェア(ライブラリ)を
作成した自然人もしくは法人です。
もちろん対象のソフトウェアがApacheだったりすればその原著作者は
Apache Software Foundationになります。

>2, 謝辞を表示とは、Apache Softwareを使用したプログラム内で、謝辞を表示しなければならないということなのか。また、謝辞とは、具体的にどういったものなのか。

これはライセンスに明記されていると思いますが。

licenses/Apache_License_2.0 - Open Source Group Japan Wiki @ SF.jp
http://sourceforge.jp/projects/opensource/wiki/licenses%2FApache_License_2.0

にある参考日本語訳だとこの辺ですね。

成果物の一部として「NOTICE」に相当するテキストファイルが含まれている場合は、そうしたNOTICEファイルに含まれている帰属告知のコピーを、派生成果物のどこにも関係しないものは除いて、頒布する派生成果物に入れること。その際、次のうちの少なくとも1箇所に挿入すること。(i) 派生成果物の一部として頒布するNOTICEテキストファイル、(ii) ソース形式またはドキュメント(派生成果物と共にドキュメントを頒布する場合)、(iii) 派生成果物によって生成される表示(こうした第三者告知を盛り込むことが標準的なやり方になっている場合)。NOTICEファイルの内容はあくまで情報伝達用であって、本ライセンスを修正するものであってはなりません。あなたは頒布する派生成果物に自分の帰属告知を(成果物からのNOTICEテキストに並べて、またはその付録として)追加できますが、これはそうした追加の帰属告知が本ライセンスの修正と解釈されるおそれがない場合に限られます。

通常この手のライセンスで求められる「謝辞」というと、『誰それが作成したところの
××というライブラリを使用した』という感じの、ベースとなったものの
元の作者がわかるように記述されているものをさすことが多いと思います。

べつにありがとうとか感謝しているとかいう表現は不要です。
というか、「謝辞」という表現を使った訳ってどこにあったのでしょうか?

>3, 最後に、率直に質問しますが、Apache Softwareをモジュールとして使用して記述されたプログラムを、ソースコード非公開かつ有償の製品として営利目的で販売することは、ライセンス上合法ですよね?

ちょっと具体的なことをおたずねしますが、『Apache Softwareをモジュールとして使用』
とはどのような状態を指しているのでしょうか?

たとえば一群のライブラリ関数を集めたDLL(共有ライブラリ)がApace ライセンスを使用するものであって、
質問者さんのアプリはそれを呼び出して使うだけということであれば
まったく問題はありません。
また、データベースサーバのようなものであっても、定められたプロトコルにしたがって
呼び出しているようなものが質問者さんのアプリであるならこれも問題はありません。

>本ライセンスでは、成果物や派生成果物から分離できる製作物や、成果物や派生成果物の
>インタフェースへの単なるリンク(または名前によるバインド)を、派生成果物に含めません。

この辺が該当します。
この場合、質問者さんが自分の作成された部分はまったく好きに扱えます。
ただし、DLLなどそのものはあくまでApacheライセンスに縛られますので
注意してください。

しかし、たとえば、Apache(httpサーバ)のソースコードを改変したものを
まったく自由にできるかというとこれはちょっと疑問があります。

こんにちは。とりあえずわかる範囲で。
>1, 原著作者とは、Apache財団のことをいうのか。
違います(違う場合もある)。
Apacheライセンスの元で配布しているソフトウェア(ライブラリ)を
作成した自然人もしくは法人です。
もちろん対象のソフトウェアがApacheだったりすればその原著作者は
Apache Software Foundationになります。

>2, 謝辞を表示とは、Apache Softwareを使用したプログラム内で、謝辞を表示しなければならないということなのか。また、謝辞とは、具体的にどういったものなのか。

こ...続きを読む

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

QDWORDの実際の型は何でしょうか

VC++.NETの環境です。
DOWRD dw1 = 1;
int i = 2; と定義し
ここで
if ( i > dw1 ){
何かの処理;
}
とコーディングすると
warning C4018: '>' : signed と unsigned の数値を比較しようとしました。
のワーニングがでます。
これは、DWORDがint型でなくunsigned int型のようにも見えます。
ある本によれば(VC++.V.NET逆引き大全500の極意)
DWORD はint型であると記述されています。
もし、int型ならこのワーニングはでないはずなのですが、
なぜでるのでしょうか。又、DWORDの実際の型は何なのでしょうか。ご存じのかたおりましたら、教えていただけませんでしょうか。

Aベストアンサー

型定義が知りたいのならば、宣言ファイルを見れば疑問を挟む余地もありません。
DWORD型はwindef.hで
"typedef unsigned long DWORD;"
と宣言されています。

Visual Studioを使っているのならば、知りたい型の上にマウスポインタを置いて右クリック、ポップアップメニューの「定義へ移動」または「宣言へ移動」で簡単に知ることが出来ます。

Qapt-get install ****** でinstallしたものをuninstallするには?

御世話になります。
vncserverだけをinstallするつもりが
誤って
apt-get install vncとうってしまいました。
これをuninstallしたいのですが
どのようにすればよろしいでしょうか?

教えて下さい。

Aベストアンサー

# apt-get remove パッケージ名
では、設定ファイルは削除されずに残ります。

完全に削除するときは、
# apt-get --purge remove パッケージ名
です。

Qint型からchar型への変換

タイトル通り、int型からchar型への変換の仕方がわかりません!><
どうしたらいいのでしょうか?

Aベストアンサー

#include <stdio.h>


char buf[5];
int no;

no = 10;
sprintf(buf, "%d", no);

QエクセルのIF文で「NOT=」はどう書くのですか?また、>=や<=の場合の書き方を教えてください

タイトルのとおりです

IF文で下記の3つの書き方がわかりません。

NOT=は、<>?
0以外の場合は、A1<>0?

A1が0と同じか、大きい場合は
A1>=0?

なんだか、うまくいきません^^;

よろしくお願いいたします

Aベストアンサー

A1が・・・・・
A1 <> 0  0以外
A1 >= 0  0以上(0を含む)
A1 > 0   0より大きい(0は含まない)
A1 <= 0  0以下(0を含む)
A1 < 0  0未満
A1 = 0  0

=<,=> などの書き方は使えません。

QC言語の配列をC++のvectorに高速に変換したい

質問は表題のとおりです。
単純な方法では以下の通りになると思いますが、
(C言語文字列から string への変換のように)
一括変換の仕組みは vector にないのでしょうか?
static const int n=5;
int a[n]={0,1,2,3,4};
std::vector<int> v(n);
std::vector<int>::iterator vit=v.begin();
for(int i=0; i<n; i++){
*vit++ = a[i];
}

上記の例では n=5 ですが、nがとても大きな場合に適用したいと考えています。
ちなみに、gcc 3.4.3 を使っています。

Aベストアンサー

> C言語の配列に関して、STL のアルゴリズム(binary_searchなど)を
> 使いたいと考えているのですが、
それなら素直にこうすればよいのではないの?

--------------------
#include <algorithm>
#include <iostream>
int main(){
  using namespace std;
  static const int n=5;
  int a[n]={0,1,2,3,4};

  cout << binary_search(a, a+n, 3) << endl;
  cout << binary_search(a, a+n, 6) << endl;

  return 0;
}


人気Q&Aランキング