結論: 「商用利用OK」は答えではなく、確認の入口

AI生成画像を仕事で使えるかどうかは、サービス名ごとに◯×が決まっているわけではありません。規約の版・プラン・取り込んだ素材・自社の事業規模という4つの層のどこかで条件が切り替わり、そのどれかを読み落とすと結論が変わります。2026年8月18日に主要サービスの公式規約ページ11件を実際に取得して条文を確認した結果と、確認したことを日付つきで残す手順を掲載します。

AI画像生成の商用利用条件を確認する4つの層と記録方法の図解。第1層は規約の版で、確認した版日付は2024年7月から2026年8月まで約2年の幅があった。第2層はプランの層で、無料枠の出力は商用利用不可かつ権利が事業者側に帰属する規約が実在する。第3層は素材の層で、ライブラリ素材を取り込んだ出力は所有の例外になる場合がある。第4層は事業規模の層で、年間売上100万米ドル超でライセンスが終了する条項がある。記録するのは確認日・規約に表示された版・本文の指紋の3点

この記事の位置づけ(先に読んでほしい3点)

自動で本文を取得できたのは11件中8件で、3件は取得できませんでした(2件はアクセス拒否、1件は接続不可)。取得できた8件の条文は原文で読み、取得できなかった3件については条件を書かずに「自分で開いて確認する対象」として扱っています。

1つ目。この記事は法的助言ではありません。 各社が公開している規約の文面を、確認日を明記して整理したものです。自社の使い方が許されるかどうかの判断、生成物が第三者の権利を侵害しないかどうかの判断は、規約の読み合わせだけでは決まりません。商用利用の可否を最終的に決める場面では、弁護士など専門家に自社の利用シナリオを示して確認してください。

2つ目。サービス間の優劣は判断していません。 後述の表に並べた規約は、対象範囲がそもそも揃っていません。モデルそのもののライセンス(Stability AI)、サービス全体の利用規約(Recraft・Ideogram・Microsoft・Google)、AI機能の個別規約と素材ライセンスの2階建て(Canva)が混ざっています。課金条件も規約の対象範囲も揃っていないため、この表で「どれが有利か」は比べられません。 表は「自社が使っているサービスの、読むべき条項の場所」を引くために使ってください。

3つ目。ここに書いた条件は2026年8月18日時点のものです。 規約は予告なく改定され、実際にこの記事の確認対象にも直近1週間以内に改定されたものが含まれています。この記事を読んだ日に自社が使うサービスの公式規約を必ず自分で開き、版日付と該当条項を確認してください。 後半の手順は、その確認を毎回手作業でやらずに済ませるためのものです。

動作環境(2026年8月18日 実行検証)

項目 値
Python 3.11.1
OS Windows 11
外部パッケージ なし(urllib / hashlib / re / json / argparse / datetime / pathlib のみ)
検証日 2026年8月18日
確認対象 AI画像生成に関わる公式規約ページ 11件
検証結果 passed(8件で版日付・本文の指紋を取得。3件は取得不可を検知して目視対象として出力。指紋の誤検知を1件見つけて対策後に再現なしを確認)

可否を分ける4つの層

層1: 規約の版 — 「いつ時点の条文か」が揃っていない

同じ日に各社の規約を読んでも、条文の新しさは揃いません。2026年8月18日に取得できたページで、規約自身が名乗っていた版日付はこうでした。

規約 表示されていた版
Recraft: Terms of Service Last updated: 11 August 2026
Google: 利用規約 発効日 2026年7月30日
Canva: AI Product Terms effective as of 26 June 2026
Microsoft: Image Creator / Video Creator Terms of Use Last Updated: March, 2026
Microsoft: Microsoft Services Agreement Published July 30, 2025 / Effective September 30, 2025
Ideogram: Terms of Service Last revised: August 14, 2024
Stability AI: Community License Agreement Last Updated: July 5, 2024

約2年の幅があります。 そして版日付の読み方には、さらに2つの罠がありました。

1つ目は適用開始日が利用者によって違うことです。Recraftの規約には「Effective as of: 11 August 2026 (new accounts) / 25 August 2026 (existing accounts)」と表示されていました。同じページを同じ日に読んでも、既存アカウントで使っているなら8月25日まで適用される条文は別ということになります。

2つ目は古い規約ページが検索でまだ生きていることです。Googleの「生成 AI の追加利用規約」(最終更新日 2023年8月9日)を開くと、冒頭にこう書かれていました。

AI 関連のトピックをカバーするため、2024年5月22日に Google 利用規約 を更新しました。この日付以降、この生成 AI の追加利用規約は、この規約に言及している契約書に署名済みのビジネス パートナーを除き、適用されなくなります。

つまりこのページを根拠に社内ルールを書くと、大多数の利用者には適用されない条文を引いたことになります。規約のURLを控えるだけでは足りず、そのページが現に適用される版かどうかまで見る必要があります。

層2: プランの層 — 無料枠が別のライセンスになっていることがある

無料枠を「有料と同じ条件で回数が少ないだけ」と考えると外します。2026年8月18日に確認したRecraftのTerms of Service第7.1条(Free Tier)には、無料枠で生成した成果物について次の制限が並んでいました。

(i) no commercial use of Free Tier Assets is permitted; (ii) Free Tier Assets are owned by Recraft and may not be sold, licensed or transferred; and (iii) Free Tier Assets may not be used to train artificial intelligence models, systems or networks or similar technology.

同条はさらに、無料枠の成果物について利用者がRecraftへ全世界の権利を譲渡する旨(irrevocably transfer and assign to Recraft all worldwide right, title and interest)まで定めています。一方、同第7.2条(Paid Subscription)は逆向きです。

You own all Assets you create with the Services and Recraft hereby assigns to you all copyright rights it may have in the Assets subject to the following restriction: Assets may not be used to train artificial intelligence models, systems or networks or similar technology.

同規約はBusiness UserとConsumer Userの区別についても「支払い階層ではなく、サービスを利用する目的で決まる」と定めており、無料枠であっても業務目的で使う人はBusiness Userに当たると読めます。無料と有料で条文が分かれている作りは他社共通ではないため、使っているサービスの無料枠の条項は個別に読む必要があります。

層3: 素材の層 — 「何を取り込んだ出力か」で扱いが変わる

自分の出力なのだから自分のもの、とは限りません。CanvaのAI Product Terms(effective as of 26 June 2026)は、出力の所有をこう定めています。

As between you and Canva, and to the maximum extent permitted by applicable law, you retain your ownership rights to your Input, and you own your Output, except for any Output that modifies or incorporates Licensed Content

同規約は例まで挙げています。Canvaライブラリの写真をAI機能で加工した場合、その出力は所有しない。ライブラリの写真を含むスライドをAIで生成した場合、スライド全体は所有するが個々の写真は素材ライセンスの下で使う。出力の権利は、素材の出自に引きずられます。

素材ライセンス側にも用途の制限があります。CanvaのContent License Agreementの禁止事項には、素材を商標やビジネス名の一部に使う用途が挙げられていました。

use any of the Content as part of a trade-mark, design-mark, trade-name, business name or service mark (excluding fonts)

同規約はブランド提供素材(Branded Content)や教育向け素材(Education Content)を個人利用・教育利用に限る旨も定めています。ロゴや商標に使う前提で素材を探すなら、この層まで見ないと判断できません。

なおCanvaのAI Product Termsは、出力の利用そのものについては「You may use your Output for any lawful purpose, provided that you comply with these terms and that you accept that any such use is at your own risk」と定めており、適法な用途であれば使える建て付けです。素材を取り込んだ場合だけ例外が乗る、という構造だと読めます。

層4: 事業規模の層 — 売上で条件が切り替わる

自社の売上が条件になっている規約もあります。Stability AIのCommunity License Agreement(Last Updated: July 5, 2024)は、商用目的で使う場合の登録義務と、売上による打ち切りを定めています。

If You are using or distributing the Stability AI Materials for a Commercial Purpose, You must register with Stability AI.

If at any time You or Your Affiliate(s), either individually or in aggregate, generate more than USD $1,000,000 in annual revenue (or the equivalent thereof in Your local currency), regardless of whether that revenue is generated directly or indirectly from the Stability AI Materials or Derivative Works, any licenses granted to You under this Agreement shall terminate as of such date.

売上が閾値を超えた時点でライセンスが終了し、Stability AIへ個別にライセンスを申請することになります。契約時点では条件を満たしていても、事業が伸びた時点で満たさなくなる種類の条件です。 同規約は「Commercial Purpose」に自社の社内業務(for Your business's or organization's internal operations)も含めており、社外に出さない用途も商用目的に入る建て付けです。

出力の所有については、同規約は「As between You and Stability AI, You own any outputs generated from the Models or Derivative Works to the extent permitted by applicable law」と定めています。ただし配布時には契約書の同梱・帰属表示の保持・「Powered by Stability AI」の掲示という義務があり、出力や素材を他の基盤生成AIモデルの作成・改善に使うことは禁じられています。オープンウェイトのモデルを自前環境で動かす選択は、この帰属義務と売上条件を含みます。

当日確認できた規約と、確認できなかった規約

以下は2026年8月18日に本記事のスクリプトで取得し、条文を原文で読んだ結果です。繰り返しになりますが、対象範囲が揃っていないため優劣の比較には使えません。 各サービスの読むべき条項の場所として使ってください。

サービス(規約名) 表示されていた版 出力の権利について書かれていたこと 押さえておく制限
Recraft(Terms of Service) 11 August 2026
新規は同日/既存は 25 August 2026 適用
有料: 利用者が所有しRecraftが著作権を譲渡。無料枠: Recraftが所有し利用者は権利を譲渡 無料枠は商用利用不可。有料でも出力をAIモデルの学習に使うのは不可
Ideogram(Terms of Service) August 14, 2024 所有権を主張せず、商用目的を含む利用を制限しないと明記 出力が一意である保証はない。非公開設定にした分以外は他ユーザーがリミックス可
Canva(AI Product Terms) 26 June 2026 自分の出力は自分が所有。ただしライブラリ素材を含む/加工した出力は例外 出力の利用は適法な用途に限り自己責任。出力が一意である保証はない
Canva(Content License Agreement) 版の表示は見つからず(本文は取得) AI生成のライブラリ素材は通常素材と同じ扱い 素材を商標・ビジネス名の一部に使うのは不可。ブランド提供素材・教育素材は商用不可
Stability AI(Community License) July 5, 2024 出力は利用者が所有(適用法の範囲で) 商用利用は登録が必要。年間売上100万米ドル超でライセンス終了。配布時は帰属表示義務
Microsoft(Services Agreement) Published July 30, 2025
Effective September 30, 2025
所有権を主張しない。ただし出力の知的財産権と利用可否は利用者が自ら判断すべきと明記 出力を使ってAI技術を作る・訓練する・改善するのは不可。来歴情報の除去も不可
Microsoft(Image Creator 使用条件) March, 2026 プロンプト・生成物の所有権を主張しない Microsoftと関連会社・第三者パートナーが事業運営に関連して利用できるライセンスを付与する建て付け
Google(利用規約) 発効日 2026年7月30日 「ユーザーのコンテンツはユーザーに帰属」と規定 生成AI出力の商用利用可否を直接述べた条項は、本日確認した範囲では見つからず(下記参照)

Googleについては補足が必要です。利用規約は「ユーザーのコンテンツ はユーザーに帰属します。つまり、コンテンツに含まれるユーザーの 知的所有権 はすべてユーザーが保持します」と定めていますが、生成AIの出力が商用に使えるかを直接述べた条項は本日確認した範囲では見つかりませんでした。確認できていない項目を「たぶん大丈夫」で埋めないことが、この作業でいちばん効きます。 該当サービスのヘルプや追加規約に個別の記載があるかを、利用しているプラン(個人・法人向けの契約)ごとに確認してください。

そして、本日は自動で取得できなかった3件があります。

サービス 参照しようとしたURL 本日の結果
OpenAI https://openai.com/policies/terms-of-use/ HTTP 403(ヘッドレスブラウザでも同様に拒否)
Midjourney https://docs.midjourney.com/hc/en-us/articles/27870375276557-Using-Images-Videos-Commercially HTTP 403(同上)
Adobe https://helpx.adobe.com/firefly/get-set-up/learn-the-basics/adobe-firefly-faq.html 接続不可(当環境からは応答なし)

自動取得を拒否するページは珍しくありません。この3件については、この記事では条件を書きません。通常のブラウザで開いて、版日付と該当条項を目視し、確認日を手で記録してください。 なおMidjourneyの商用利用条件は、別記事で2026年8月12日時点の公式ドキュメントを確認した内容を掲載しています(後述の関連記事)。ただしそれも「その日の版」であり、本日時点で同じとは限りません。

手順1: 確認対象の一覧を作る

services.tsv として、「サービス名・規約名・URL」の3列で保存します。1サービスに複数の規約がある場合は行を分けます(Canvaのように、AI機能の規約と素材ライセンスが別文書のことがあります)。

# サービス名 規約名 URL
Recraft Terms of Service    https://www.recraft.ai/terms
Ideogram    Terms of Service    https://about.ideogram.ai/legal/tos
Canva   AI Product Terms    https://www.canva.com/policies/ai-product-terms/
Canva   Content License Agreement   https://www.canva.com/policies/content-license-agreement/
Stability AI    Community License   https://stability.ai/community-license-agreement
Microsoft   Services Agreement  https://www.microsoft.com/en-us/servicesagreement
Microsoft   Image Creator 使用条件  https://www.bing.com/new/termsofuseimagecreator
Google  利用規約    https://policies.google.com/terms
OpenAI  Terms of use    https://openai.com/policies/terms-of-use/
Midjourney  Commercial Use  https://docs.midjourney.com/hc/en-us/articles/27870375276557-Using-Images-Videos-Commercially
Adobe   Firefly FAQ https://helpx.adobe.com/firefly/get-set-up/learn-the-basics/adobe-firefly-faq.html

自社で使っているサービスだけに絞って構いません。むしろ、使っていないサービスを並べるより、契約しているプランの規約を漏れなく入れるほうが効きます。

手順2: 確認スクリプトを用意する

terms_watch.py として保存します。やっていることは、各ページを1回読み、(1)規約が名乗っている版日付を拾う、(2)本文のSHA-256を計算する、(3)前回のログと比べて変化を報告する、の3つだけです。外部パッケージは不要で、ページの読み取りしか行いません。

# -*- coding: utf-8 -*-
"""AI画像生成サービスの利用規約を「確認した日付・版・本文の指紋」で記録し、次回との差分を出す。

usage:
  python terms_watch.py --list services.tsv --log terms_log.json
  python terms_watch.py --list services.tsv --log terms_log.json --md    Markdown表で出力

services.tsv は「サービス名<TAB>規約名<TAB>URL」の3列。外部パッケージ不要(標準ライブラリのみ)。
ページを読み取るだけで、書き込み・ログイン・スクレイピングの反復はしない。
"""
import argparse
import hashlib
import json
import re
import sys
import urllib.error
import urllib.request
from datetime import datetime, timezone, timedelta
from pathlib import Path

JST = timezone(timedelta(hours=9))
UA = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
      "(KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36")

# 規約ページが「版」を名乗るときの言い方は各社バラバラなので、拾える形を並べておく
VERSION_PATTERNS = [
    r"(?:Last\s+(?:Updated|updated|revised|Revised)|Published|Effective(?:\s+as\s+of|\s+Date)?)\s*[::]?\s*"
    r"([A-Z][a-z]+\.?\s+\d{1,2},?\s+\d{4}|\d{1,2}\s+[A-Z][a-z]+\s+\d{4}|[A-Z][a-z]+,?\s+\d{4})",
    r"(?:発効日|最終更新日|最終改訂日|更新日)\s*[::]?\s*"
    r"(\d{4}\s*年\s*\d{1,2}\s*月(?:\s*\d{1,2}\s*日)?)",
    # 「These AI Product Terms are effective as of 26 June 2026.」のように文中で名乗る形
    r"(?i)(?:are\s+)?effective\s+as\s+of\s*[::]?\s*"
    r"(\d{1,2}\s+[A-Z][a-z]+\s+\d{4}|[A-Z][a-z]+\.?\s+\d{1,2},?\s+\d{4})",
]
# 商用利用の判断に効く語。ヒット数ではなく「この語が本文に在るか」を見るための目印
FLAGS = {
    "commercial": ["commercial", "商用", "commercially"],
    "non_commercial": ["non-commercial", "noncommercial", "非商用", "personal use only"],
    "ownership": ["ownership", "own the", "you own", "帰属", "所有"],
    "not_unique": ["may not be unique", "similar output", "一意ではない", "同一または類似"],
    "revenue_gate": ["annual revenue", "年間売上", "1,000,000", "$1M"],
    "indemnify": ["indemnif", "補償", "免責"],
}

# リクエストごとに変わる値。これを残すと「毎回 変更あり」になり指紋が使えない
VOLATILE = [
    (r"(?i)trace\s*id\s*[::]?\s*[0-9a-f]{16,}", "TRACEID"),
    (r"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", "UUID"),
    (r"\b[0-9a-f]{24,}\b", "HEX"),
]


def normalize(html: str) -> str:
    """HTMLから本文テキストだけを取り出す。指紋の安定のため空白と揮発値は畳む。"""
    html = re.sub(r"(?is)<(script|style|noscript|svg|iframe)[^>]*>.*?</\1>", " ", html)
    html = re.sub(r"(?is)<br\s*/?>|</p>|</div>|</li>|</h[1-6]>|</tr>", "\n", html)
    text = re.sub(r"(?s)<[^>]+>", " ", html)
    for a, b in (("&nbsp;?", " "), ("&amp;", "&"), ("&#39;|&apos;", "'"), ("&quot;", '"')):
        text = re.sub(a, b, text)
    text = re.sub(r"\s+", " ", text).strip()
    for pat, rep in VOLATILE:
        text = re.sub(pat, rep, text)
    return text


def find_version(text: str) -> str:
    for pat in VERSION_PATTERNS:
        m = re.search(pat, text)
        if m:
            return re.sub(r"\s+", " ", m.group(1)).strip()
    return "-"


def flags_of(text: str) -> str:
    low = text.lower()
    return ",".join(k for k, words in FLAGS.items() if any(w.lower() in low for w in words)) or "-"


def check(url: str) -> dict:
    req = urllib.request.Request(url, headers={"User-Agent": UA, "Accept-Language": "ja,en;q=0.8"})
    try:
        with urllib.request.urlopen(req, timeout=30) as r:
            body = r.read().decode("utf-8", errors="replace")
            status, final = r.status, r.geturl()
    except urllib.error.HTTPError as e:
        return {"status": e.code, "note": "取得不可(要ブラウザ目視)", "version": "-",
                "sha256": "-", "chars": 0, "flags": "-", "final_url": url}
    except Exception as e:  # DNS/TLS/タイムアウト等
        return {"status": 0, "note": f"接続不可: {type(e).__name__}(要ブラウザ目視)",
                "version": "-", "sha256": "-", "chars": 0, "flags": "-", "final_url": url}
    text = normalize(body)
    return {"status": status, "note": "", "version": find_version(text),
            "sha256": hashlib.sha256(text.encode("utf-8")).hexdigest()[:16],
            "chars": len(text), "flags": flags_of(text), "final_url": final}


def main() -> int:
    ap = argparse.ArgumentParser()
    ap.add_argument("--list", required=True)
    ap.add_argument("--log", required=True)
    ap.add_argument("--md", action="store_true")
    a = ap.parse_args()

    rows = []
    for line in Path(a.list).read_text(encoding="utf-8").splitlines():
        if not line.strip() or line.startswith("#"):
            continue
        parts = line.split("\t")
        if len(parts) >= 3:
            rows.append(tuple(p.strip() for p in parts[:3]))

    logp = Path(a.log)
    prev = json.loads(logp.read_text(encoding="utf-8")) if logp.exists() else {}
    today = datetime.now(JST).strftime("%Y-%m-%d %H:%M JST")
    out, changed, unavailable = {}, [], []

    for svc, doc, url in rows:
        r = check(url)
        key = f"{svc}|{doc}"
        before = prev.get(key, {})
        if before.get("sha256", "-") not in ("-", r["sha256"]) and r["sha256"] != "-":
            diff = "変更あり"
            changed.append(f"{svc}(前回 {before.get('checked_at', '?')} と本文が不一致)")
        elif not before:
            diff = "初回"
        elif r["sha256"] == "-":
            diff = "判定不能"
        else:
            diff = "変更なし"
        if r["status"] != 200:
            unavailable.append(f"{svc}: HTTP {r['status']}")
        r.update({"service": svc, "doc": doc, "url": url, "checked_at": today, "diff": diff})
        out[key] = r

    logp.write_text(json.dumps(out, ensure_ascii=False, indent=2), encoding="utf-8")

    print(f"# 規約確認ログ  確認日時: {today}  対象: {len(rows)}件")
    if a.md:
        print("\n| サービス | 規約に表示された版 | HTTP | 本文指紋(先頭16桁) | 前回比 | 検出した語 |")
        print("|---|---|---|---|---|---|")
        for r in out.values():
            print(f"| {r['service']} | {r['version']} | {r['status']} | `{r['sha256']}` | "
                  f"{r['diff']} | {r['flags']} |")
    else:
        w = max(len(r["service"]) for r in out.values())
        print(f"{'SERVICE'.ljust(w)}  {'VERSION'.ljust(22)}  HTTP  {'SHA256'.ljust(16)}  DIFF      FLAGS")
        for r in out.values():
            print(f"{r['service'].ljust(w)}  {r['version'][:22].ljust(22)}  "
                  f"{str(r['status']).rjust(4)}  {r['sha256'].ljust(16)}  {r['diff'].ljust(8)}  {r['flags']}")
    print(f"\n[変更あり {len(changed)}件 / 取得できず {len(unavailable)}件]")
    for c in changed:
        print(f"  変更: {c}")
    for u in unavailable:
        print(f"  未取得: {u} → ブラウザで開いて版と該当条項を目視し、日付を手で記録する")
    return 0


if __name__ == "__main__":
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")
    raise SystemExit(main())

手順3: 実行する(2026年8月18日の実出力)

初回はログが無いので、全件が「初回」になります。

> python terms_watch.py --list services.tsv --log terms_log.json
# 規約確認ログ  確認日時: 2026-08-18 21:57 JST  対象: 11件
SERVICE       VERSION                 HTTP  SHA256            DIFF      FLAGS
Recraft       11 August 2026           200  2014216949b0f7e8  初回        commercial,non_commercial,ownership,indemnify
Ideogram      August 14, 2024          200  8c9d38784500fa69  初回        commercial,non_commercial,ownership,not_unique,indemnify
Canva         26 June 2026             200  80b36cd15ed8b669  初回        commercial,ownership,not_unique
Canva         -                        200  c6d366a530db1c42  初回        commercial,non_commercial,ownership
Stability AI  July 5, 2024             200  66247b3cb3b80ee1  初回        commercial,non_commercial,ownership,revenue_gate,indemnify
Microsoft     July 30, 2025            200  23071f0ca4768999  初回        commercial,non_commercial,ownership
Microsoft     March, 2026              200  fad66daff1d9bc1c  初回        ownership,not_unique,indemnify
Google        2026年7月30日               200  4592685537c6a887  初回        ownership,indemnify
OpenAI        -                        403  -                 初回        -
Midjourney    -                        403  -                 初回        -
Adobe         -                          0  -                 初回        -

[変更あり 0件 / 取得できず 3件]
  未取得: OpenAI: HTTP 403 → ブラウザで開いて版と該当条項を目視し、日付を手で記録する
  未取得: Midjourney: HTTP 403 → ブラウザで開いて版と該当条項を目視し、日付を手で記録する
  未取得: Adobe: HTTP 0 → ブラウザで開いて版と該当条項を目視し、日付を手で記録する

--md を付けると、そのまま社内ドキュメントに貼れる表で出ます。2回目の実行では前回比が入ります。

> python terms_watch.py --list services.tsv --log terms_log.json --md
# 規約確認ログ  確認日時: 2026-08-18 21:57 JST  対象: 11件

| サービス | 規約に表示された版 | HTTP | 本文指紋(先頭16桁) | 前回比 | 検出した語 |
|---|---|---|---|---|---|
| Recraft | 11 August 2026 | 200 | `2014216949b0f7e8` | 変更なし | commercial,non_commercial,ownership,indemnify |
| Ideogram | August 14, 2024 | 200 | `8c9d38784500fa69` | 変更なし | commercial,non_commercial,ownership,not_unique,indemnify |
| Canva | 26 June 2026 | 200 | `80b36cd15ed8b669` | 変更なし | commercial,ownership,not_unique |
| Canva | - | 200 | `c6d366a530db1c42` | 変更なし | commercial,non_commercial,ownership |
| Stability AI | July 5, 2024 | 200 | `66247b3cb3b80ee1` | 変更なし | commercial,non_commercial,ownership,revenue_gate,indemnify |
| Microsoft | July 30, 2025 | 200 | `23071f0ca4768999` | 変更なし | commercial,non_commercial,ownership |
| Microsoft | March, 2026 | 200 | `fad66daff1d9bc1c` | 変更なし | ownership,not_unique,indemnify |
| Google | 2026年7月30日 | 200 | `4592685537c6a887` | 変更なし | ownership,indemnify |
| OpenAI | - | 403 | `-` | 判定不能 | - |
| Midjourney | - | 403 | `-` | 判定不能 | - |
| Adobe | - | 0 | `-` | 判定不能 | - |

[変更あり 0件 / 取得できず 3件]
  未取得: OpenAI: HTTP 403 → ブラウザで開いて版と該当条項を目視し、日付を手で記録する
  未取得: Midjourney: HTTP 403 → ブラウザで開いて版と該当条項を目視し、日付を手で記録する
  未取得: Adobe: HTTP 0 → ブラウザで開いて版と該当条項を目視し、日付を手で記録する

「変更あり」が出たら、そのページを開いて版日付と該当条項を読み直します。ここまでが機械にやらせる範囲で、条文の解釈から先は人の仕事です。

つまずいた点1: 指紋だけだと毎回「変更あり」になった

最初の版では、1分後に再実行しただけでMicrosoft Services Agreementが「変更あり」と出ました。

| Microsoft | July 30, 2025 | 200 | `1656283d9aea71e8` | 変更あり | commercial,non_commercial,ownership |

[変更あり 1件 / 取得できず 3件]
  変更: Microsoft(前回 2026-08-18 21:54 JST と本文が不一致)

原因を差分で追うと、規約の条文ではなくページに埋め込まれたリクエスト単位の識別子でした。

A: 'Microsoft Services Agreement This is the Trace Id: 348674e4a47ea3c7d09a293d4f194f31 Skip to main content ...'
B: 'Microsoft Services Agreement This is the Trace Id: 3dd73547d22b459b4d3c4e91d04443f7 Skip to main content ...'

対策として、指紋を計算する前にTrace Id・UUID・長い16進文字列を固定文字へ置き換えました(掲載コードの VOLATILE)。置き換え後にログを消して2回実行し、全件「変更なし」で再現しないことを確認しています。

教訓は、指紋を単独の根拠にしないことです。 「版日付」と「指紋」の両方を並べ、指紋だけが動いたときは条文ではなくページの都合を疑う。これがないと、通知が鳴りすぎて誰も見なくなります。

つまずいた点2: 3件は自動で取得できなかった

OpenAIとMidjourneyはHTTP 403でした。ヘッドレスブラウザで開き直しても403のままで、ボット対策の待機ページが返るだけでした。Adobeは当環境からは接続そのものが成立せず、ヘッドレスブラウザでもプロトコルエラーで止まりました。

ここで大事なのは、取得できなかったことを「たぶん変わってない」で埋めないことです。掲載したスクリプトは取得できなかった行を 判定不能 として残し、末尾に目視対象として名前を出します。運用では、この3件だけは担当者がブラウザで開いて版日付を台帳に手入力する、という手作業を残すのが現実的です。11件のうち3件なら回ります。

この方法で分かること・分からないこと

分かること。

  • どのサービスの規約の、どの版に、何が書かれていたか(確認日つき)
  • 前回の確認から本文が動いたかどうか
  • 自動で確認できないページがどれか

分からないこと。

  • 生成した画像が既存の著作物・商標・肖像に類似していないか(規約の読み合わせでは判断できません)
  • 自社の具体的な使い方がその条文の範囲に入るか(契約や事実関係の評価が必要です)
  • 出力に第三者の権利が乗っていないか(規約を守っていても別の問題として残ります)

この点はサービス側も明言しています。2026年8月18日に確認したMicrosoft Services AgreementのAI services条項は、所有権を主張しないと述べた直後にこう続けます。

You'll need to make your own determination regarding the intellectual property rights you have in output content and its usability, taking into account, among other things, your usage scenario(s) and the laws of the relevant jurisdiction.

規約に「商用利用できる」と書いてあることと、自社のその使い方が安全であることは別の話です。社内で判断を固める段では、確認ログを持って弁護士など専門家に相談してください。 この記事は法的助言ではなく、相談に持っていける材料を揃えるための手順です。

関連記事(レーンの分け方)

本記事は「複数サービスの規約を横断して確認し、確認したことを記録に残す手順」のレーンです。個別サービスの料金とプラン別の条件は各ツール記事、生成物そのものの調べ方は別のHow記事に分けています。


検証履歴

  • 2026-10-08: 関連記事リンクに書いていたCanva AIの回数を、Canva公式ヘルプ「AIの利用状況を把握する」(日本語版)と英語版「Understanding your AI usage」の当日の本文で照合しました。無料版の最大20回は日英とも一致しました(日本語版「標準AI機能またはプレミアムAI機能を最大20回まで使用できます」、英語版「Up to 20 uses of Standard AI tools, OR Premium AI tools」)。一方、リンク文言の「「月200回」はもう公式ページに無い」は誤解を招く表現でした。公式ページには有料プラン(プロ/チームス/非営利団体)の「プレミアムAI機能は最大200回、最高品質AI機能は最大20回」が載っています。英語版はこの2つを「OR」で結んでおり、別々の枠ではなく同じ枠のいずれかの目安です(日本語版は読点で並べていますが、同じページに「すべてのAIツールは同じAI利用枠を共有しています」とあります)。無料版に200回の枠が無い点は変わらないため、リンク文言を「無料枠は最大で月20回(標準とプレミアムで共通の枠)」に差し替えました。本文の規約の条文(4つの層と表)は今回の照合の対象外で、2026年8月18日確認のままです
VERIFIED
動作確認日: 2026.08.18 / 環境: Python 3.11.1 / Windows 11 / 標準ライブラリのみ(urllib・hashlib・re・json・argparse)。本記事のスクリプトで各社の公式規約ページ11件を実際に取得し、版日付・本文のSHA-256・差分判定の実出力を掲載。うち8件は取得成功、3件(OpenAI・Midjourney・Adobe)はHTTP 403または接続不可で取得できず、その実出力もそのまま掲載。引用した条文はすべて2026年8月18日に原文で確認 / ステータス: passed

よくある質問

「商用利用OK」と書かれているまとめ記事を根拠にしてはいけませんか?
出発点としては使えますが、根拠には向きません。理由は確認日が分からないことです。2026年8月18日に本記事で確認した限りでも、規約ページに表示されている版日付は2024年7月5日(Stability AIのCommunity License)から2026年8月11日(RecraftのTerms of Service)まで約2年の幅がありました。さらにRecraftの規約は「Effective as of: 11 August 2026(new accounts)/ 25 August 2026(existing accounts)」と表示されており、同じサービスでもアカウントの新旧で適用開始日が違います。つまり「いつ時点の、どのアカウントに適用される条文か」が特定できない情報は、社内の判断根拠として残せません。公式ページを自分で開き、版日付と該当条項を記録してください。
無料プランで生成した画像を業務に使うのは問題ないですか?
サービスごとに違い、無料枠だけを別扱いする規約が実在するため、無料枠は個別に条文を読む必要があります。2026年8月18日に確認したRecraftのTerms of Service第7.1条は、無料枠で生成した成果物(Free Tier Assets)について「no commercial use of Free Tier Assets is permitted」「Free Tier Assets are owned by Recraft and may not be sold, licensed or transferred」と定め、加えて利用者がRecraftへ全世界の権利を譲渡する旨まで明記しています。一方で同第7.2条は、有料サブスクリプションでは「You own all Assets you create with the Services」としてRecraftが著作権を利用者へ譲渡すると定めています(いずれもAIモデルの学習に使わないという制限つき)。同じサービスでも無料と有料で条文そのものが分かれている例です。他社が同じ作りとは限らないため、使っているサービスの無料枠の条項を必ず自分で読んでください。
この確認手順を踏めば、法的に安全だと言えますか?
言えません。この手順で分かるのは「どのサービスの規約の、どの版に、何が書かれていたか」を日付つきで記録できるところまでです。生成された画像が既存の著作物や商標、肖像に類似していないかという判断、規約に従っていても第三者の権利を侵害しないかという判断は、規約の読み合わせでは決着しません。実際、2026年8月18日に確認したMicrosoft Services AgreementのAI services条項は「You'll need to make your own determination regarding the intellectual property rights you have in output content and its usability」と、利用者側での判断を明示的に求めています。本記事は一般的な情報の整理であり法的助言ではありません。商用の可否や契約上の扱いは、弁護士など専門家に自社の利用シナリオを示して確認してください。
AI導入・活用支援

AI導入・実装のどこから着手するかを、30分で整理します

支援内容・進め方・料金の考え方を、30分のオンラインで整理します。フォームは3項目、送信は30秒です。

無料で相談する(30秒で送信)

先にサービス内容と料金を見る →

無料で相談してみる →