🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。

Q&A

解決済

1回答

3069閲覧

使用したライブラリの依存先のライセンスをどう扱うか

zoozle

総合スコア5

Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。

1グッド

1クリップ

投稿2021/01/29 12:29

前提・実現したいこと

自分のプログラムに使用したライブラリが
更に依存しているライブラリ等のライセンスについて

発生している問題・エラーメッセージ

僕がOreLibというライブラリを作るのに
IzonLib1というライブラリを使ったとすると、
IzonLib1のライセンスに応じてIzonLib1の著作権表示等が要ると思います。
このとき、IzonLib1がIzonLib2を使用して作られているとき
僕はOreLibを公開する時にIzonLib1に加え
IzonLib2の著作権表示もする必要があるのでしょうか?
さらに言えば、そのIzonLib2の依存先の〜というように、依存関係を網羅する必要があるのでしょうか。

具体的な状況を言うと、RustのGUIクレートのiced(MITライセンス)のラッパーを書こうかなと思っているのですが、完成したラッパーをcrates.ioとかに投稿する場合はicedだけでなくicedの依存クレートについても記述するべきか迷っています。

試したこと

最低限ググってみはしたのですが
「直接の依存先ライブラリのライセンス表示をどうするか」みたいな情報に埋もれて
あまりいい記述を見つけられませんでした。
teratailで質問するのは初めてで
こういったコーディングとは直接関係ない話題はちょっと場違いなのかも知れませんが
よろしくお願い致します。

gemmaro👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

68user

2021/01/29 13:13

おおむねよくわかっておりませんが、とりあえず以下が明確になっているとよいのではないでしょうか。 OreLibというライブラリを作るのにIzonLib1というライブラリを使う、とは具体的にどういうことでしょうか。OreLib 内に IzonLib1 のファイルを取り込むのか、OreLib 内に IzonLib1 のファイル改変したものを取り込むのか、OreLib 内に IzonLib1 のファイルは一切含まれていないのか。 また、OreLib を配布するつもりがあるんですよね。配布するのはソースのみでしょうか。バイナリ (動的リンク) でしょうか。バイナリ (静的リンク) でしょうか。
zoozle

2021/01/29 13:37

ご返信ありがとうございます。 OreLibはIzonLib1を改変せずにまるごと取り込みます。 Rustの言葉で言えばCargo.tomlの[dependencies]にクレート名を記載します。 また、crates.ioの仕組みに関して私はよく知りませんが、 Rust公式チュートリアルの日本語訳https://doc.rust-jp.rs/book-ja/ch14-02-publishing-to-crates-io.htmlを見るに、おそらくOreLibのソースコードが配布されるものと考えています。 確かにそのライブラリをどう使うのかも大事な情報ですよね。 これで少しは適切な回答をしやすい具体的な質問になりましたでしょうか。
68user

2021/01/29 13:51

> OreLibはIzonLib1を改変せずにまるごと取り込みます。 > Rustの言葉で言えばCargo.tomlの[dependencies]にクレート名を記載します。 Rust 等全くわかっておりませんが、これは OreLib のソースコード内に、IzonLib1 のソースが入っているという形でよいでしょうか (実行時に取り込むような形ではなく、git clone OreLib としたらその中に IzonLib1 のソースが入っている、ということでしょうか)。
zoozle

2021/01/29 13:56

はい。動的リンクはしません。 ソースが入っています。
68user

2021/01/29 14:11

となると、IzonLib1 の著作権表示が必要であるわけですね。 で、IzonLib1 と 2 の関係も同じであるならば、結論としては OreLib には IzonLib1 の著作権表示と IzonLib2 の著作権表示が必要。 そして蛇足ながら、OreLib のライセンスをどうするかは作者の自由 (MIT ライセンスには感染性はないため)。 という理解ですが、自信はございません。
zoozle

2021/01/29 14:24

なるほど、ありがとうございます。
guest

回答1

0

ベストアンサー

あまりライセンスには自信ありませんが、Rustの状況についてご説明します。

「Cargo.tomlの[dependencies]にクレート名を記載します」とのことですが、
この方法であれば、crates.ioから配布されるOreLibのソースコードには
IzonLib1のソースコードもIzonLib2のソースコードも一切含まれません。
単に「OreLibを使ったバイナリを生成するためにはIzonLib1をリンクする必要がある」
という情報が含まれるだけです。

C/C++などの場合、コンパイル済みの共有ライブラリを配布するケースも多いと思います。
その場合は、そのライブラリのバイナリを生成するのに使ったライブラリ(つまりIzonLib1/IzonLib2)
の著作権表示も必要になってきますが、Rustではcrates.io経由でのバイナリ配布は行われません。
(もちろんcrates.ioとは別に自サイトで何らかのバイナリ配布する場合は別です)

従って、OreLibの著作権表示としては単にOreLibの作者のものだけでいいと思います。

ちなみにもし全依存関係のライセンスを確認したい場合は
https://github.com/onur/cargo-license
が便利です。

投稿2021/01/30 01:51

dalance

総合スコア86

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zoozle

2021/01/30 02:41

>「OreLibを使ったバイナリを生成するためにはIzonLib1をリンクする必要がある」という情報が含まれるだけです。 crates.ioってそうなっているんですね。 確かに一個クレート使うとビルドする時に他にもproc-macro2とか諸々ダウンロードしますね。 しっかしcargoほんとに優秀だなぁ...有り難い。 ずばり今困っていることにお答えいただき大変助かりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問