1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AIで作ったコードをブログに載せるとき、知っておきたいマナーと注意点

1
Posted at

前回、生成AIと著作権に関する法律の基本を解説しました。
今回は、実際にAI生成コードをブログに載せたり、OSSライセンスに配慮したりする際のマナーと注意点について、具体例を交えて解説します。

前編でも触れましたが、生成AIに関する法律やガイドラインはまだ発展途上です。
そのため、法律を守ることはもちろんですが、読者や開発者コミュニティとの信頼関係を築くためのマナーも同じくらい大切だと思っています。


この記事で伝えたいこと

前編が「法律上やってはいけないこと」の話だったとすれば、後編は「やっておいた方がいいこと」の話です。

法的な義務ではないけれど、読者のために明記した方がいいこと。
知らずにやってしまうと、トラブルにつながりかねないこと。

そういったポイントをブログ記事を書いた経験をもとに整理していきます。


1. AI生成コードであることを明記する

ブログにAI生成コードを掲載するとき、「このコードはAIで生成しました」と書くかどうか。
法的な義務があるわけではありませんが、明記することをおすすめします。

技術ブログを読む人の多くは、そのコードを参考にしたり、自分のプロジェクトに取り入れたりします。
AI生成コードには、前編で触れたようにOSSライセンスに抵触するリスクや、既存のコードに類似するリスクがあるため、読者に伝えることで、読者が自分で判断できるようになります。

2. 引用のルールを理解する

他人が書いたコードをブログで解説するために掲載する場合、それは著作権法上の「引用」にあたる可能性があります。
引用として適法に利用するためには、著作権法第32条1項に定められた要件を満たす必要があります。

引用が認められるための条件

具体的にどのような点が考慮されるかについては、学説や裁判例で様々な整理がなされています。
よく挙げられるポイントとしては、以下のようなものがあります。

  • 明瞭区別性:自分の文章と引用部分が明確に区別できること
  • 主従関係:自分の文章が「主」で、引用部分が「従」であること
  • 出所の明示:引用元を明記すること

なお、これらに加えて「引用の必然性」を要件として挙げる見解もありますが、必然性は要件とならないとする見解もあり、論者によって整理の仕方が異なります。

いずれにせよ、ブログでコードを引用する場合は、上記のポイントを意識しておくことが安全です。

ブログでの引用の具体例

たとえば、あるライブラリの使い方を解説する記事を書くとします。

避けた方がいい例
ライブラリのソースコードを大量にコピー&ペーストして、自分のコメントはほんの数行だけ。
これでは主従関係が逆転していると判断される可能性があります。

おすすめの書き方
自分の解説文をメインにして、引用するコードは必要最小限にとどめる。
引用部分はコードブロックで囲むなどして視覚的に区別し、出所(リポジトリのURL等)を明記する。

以下は `example-library` のREADMEから引用した基本的な使い方です。

> ```python
> from example_library import Client
> client = Client(api_key="your-key")
> ```
>
> 出典:https://github.com/example/example-library(MITライセンス)

この基本形をもとに、自分のプロジェクトでは以下のようにカスタマイズしました。
(以下、自分のコードと解説が続く)

3. OSSライセンスに配慮する

AI生成コードをブログに掲載する際に、もうひとつ気をつけたいのがOSSライセンスです。

前編でも触れましたが、コード生成AIは大量の公開ソースコードを学習データに含んでいる可能性があります。
そのため、AIが生成したコードが、学習元のOSSのコードと類似している場合、そのOSSのライセンス条件に注意が必要になることがあります。

主要なOSSライセンスの特徴

ブログでコードを扱う上で知っておきたい主要なライセンスの特徴を整理します。

MITライセンス

最もシンプルで制約の少ないライセンスのひとつです。
著作権表示とライセンス全文を残せば、商用利用・改変・再配布が自由にできます。
ReactやjQueryなど、広く使われているライブラリの多くがこのライセンスを採用しています。

Apache License 2.0

MITライセンスと同様に寛容なライセンスですが、特許に関する条項が含まれている点が大きな違いです。
貢献者から利用者への明示的な特許ライセンスの付与や、特許訴訟を提起した場合にライセンスが終了する「特許報復条項」が規定されています。
Android(の基盤部分)やTensorFlowなどがこのライセンスで提供されています。

GPL(GNU General Public License)

「コピーレフト」という特徴を持つライセンスです。
GPLのソフトウェアを改変して再配布する場合、派生物もGPLで公開し、ソースコードを利用可能にする義務が生じます。

GPLのコードを扱う際は、個別のケースごとに慎重に判断する必要があるようなので、判断に迷う場合は専門家への相談をおすすめします。
LinuxカーネルやWordPress(本体)などがGPLを採用しています。

ブログ記事でOSSコードを扱うときの注意点

自分のブログ記事でOSSのコードを紹介・解説する場合、以下の点を意識するとよいでしょう。

  • ライセンスの種類を確認する:紹介するライブラリやコードのライセンスを必ず確認し、記事内に明記する
  • 著作権表示を省略しない:MIT、Apache、いずれのライセンスでも著作権表示の保持は基本的な条件です
  • ライセンス全文へのリンクを添える:読者が自分で確認できるようにする
本記事で紹介する `example-library` はMITライセンスで公開されています。
ライセンスの詳細は [こちら](https://github.com/example/example-library/blob/main/LICENSE) をご確認ください。

4. 短いコードと長いコードで考え方が異なる

著作権の世界では、コードの長さ(というよりも創作性の有無)によって保護の範囲が変わります。

たとえば、forループの基本形や、変数の初期化、ファイルの読み込みといった短くてありふれたコードは、誰が書いても同じような記述になります。
こうした「ありふれた表現」には著作物性が認められにくいとされています。

一方で、複雑なアルゴリズムの実装や、独自の設計思想に基づいたクラス構造など、記述にエンジニアの個性が表れるような長いコードは、著作物として保護される可能性が高くなります。

ブログ記事を書くときの考え方

この区別を意識すると、記事内でのコードの扱い方も変わってきます。

短いコードスニペット(数行程度)の場合:

ありふれた記述であれば、著作物性が認められない可能性が高いです。
ただし、出所の明示はマナーとして行っておくのがおすすめです。

長いコード(数十行以上)の場合:

著作物性が認められる可能性が高くなります。
また、AI生成コードの場合は、学習元のOSSコードとの類似性にも気を配る必要があります。


5. 動作確認を行った上で掲載する

これは法律の話ではなく、純粋にマナーの話です。

AIが生成したコードをそのままブログに貼り付けて「はい、これで動きます」と書くのは避けた方がいいと思います。
AIは時として文法的には正しいけれど実際には動かないコードを生成することがありますし、セキュリティ上の問題を含むコードを出力することもあります。

読者がコードを参考にすることを考えると、以下の点は最低限確認した方が良いでしょう。

  • コードが実際に動くこと
  • 使用しているライブラリのバージョンが明記されていること
  • セキュリティ上の明らかな問題がないこと

6. ライセンスを明記する

自分のブログに掲載するコードにも、ライセンスを明記しておくと親切です。

ライセンスが明記されていないコードは、読者にとって「使っていいのかどうかわからない」状態です。
自分が書いたコードであれば、たとえば以下のように書いておくと、読者が安心して参考にできます。

本記事に掲載しているコードは、特に記載がない限りMITライセンスとします。
ご自由にお使いください。

ただし、AI生成コードの場合、前編で解説したようにコードの著作権の帰属が不明確な場合があります。
AIの利用規約を確認した上で、ライセンスを設定することをおすすめします。


参考資料

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?