# 第三者ライブラリのライセンス

PyHiroba は、以下のオープンソースソフトウェアを利用しています。各ライブラリの著作権は各権利者に帰属します。

「同梱」はこのサイトから配信しているもの、「実行時に取得」は利用者のブラウザが
配布元（CDN）から直接読み込むものです。同梱しているものは、ライセンス条文も一緒に置いています。

| ライブラリ | 著作権表示 | ライセンス | 条文 | 配布元 |
| --- | --- | --- | --- | --- |
| CodeMirror 5 | Copyright (C) by Marijn Haverbeke and others | MIT License | 同梱：[vendor/codemirror/LICENSE](vendor/codemirror/LICENSE) | https://github.com/codemirror/codemirror5 |
| marked | Copyright (c) 2018+, MarkedJS / Copyright (c) 2011-2018, Christopher Jeffrey | MIT License | 同梱：[vendor/marked/LICENSE](vendor/marked/LICENSE) | https://github.com/markedjs/marked |
| MathJax | Copyright (c) 2009-2022 The MathJax Consortium | Apache License 2.0 | 同梱：[vendor/mathjax/LICENSE](vendor/mathjax/LICENSE) | https://github.com/mathjax/MathJax |
| DOMPurify | Copyright (c) Mario Heiderich | Apache License 2.0 または MPL 2.0 | 同梱：[vendor/dompurify/LICENSE](vendor/dompurify/LICENSE)（Apache-2.0。MPL-2.0 を選ぶ場合の条文は https://mozilla.org/MPL/2.0/ ） | https://github.com/cure53/DOMPurify |
| library-hiroba | Copyright (c) Takehiro Funakoshi | MIT License | 同梱：[py/library_hiroba/LICENSE](py/library_hiroba/LICENSE) | https://github.com/funakoshi-takehiro/library-hiroba |
| Pyodide | Copyright (c) 2018-2024 Pyodide contributors | Mozilla Public License 2.0 | 実行時に取得。条文は https://mozilla.org/MPL/2.0/ および https://github.com/pyodide/pyodide/blob/main/LICENSE | https://github.com/pyodide/pyodide |
| Panel | Copyright (c) 2018, HoloViz | BSD 3-Clause License | 実行時に取得。条文は https://github.com/holoviz/panel/blob/main/LICENSE.txt | https://github.com/holoviz/panel |
| Bokeh | Copyright (c) Anaconda, Inc., and Bokeh Contributors | BSD 3-Clause License | 実行時に取得。条文は https://github.com/bokeh/bokeh/blob/branch-3.6/LICENSE.txt | https://github.com/bokeh/bokeh |
| Transformers.js | Copyright (c) Hugging Face | Apache License 2.0 | 実行時に取得。条文は https://github.com/huggingface/transformers.js/blob/main/LICENSE | https://github.com/huggingface/transformers.js |
| ONNX Runtime Web | Copyright (c) Microsoft Corporation | MIT License | 実行時に取得。条文は https://github.com/microsoft/onnxruntime/blob/main/LICENSE | https://github.com/microsoft/onnxruntime |

library-hiroba（`ui` と `ai`）は `py/library_hiroba/` に**同梱**している。
学校の閉域網でも `!pip install` なしで使えるようにするため。
同梱しているのは **0.6.1** で、配布元の内容を改変していない
（ライセンス本文は `py/library_hiroba/LICENSE`）。版を上げるときは配布元から取り直すこと。

## AI（言語モデル・埋め込みモデル）

プログラム実行画面（`/nb/`）で、利用者が読み込みを選んだときだけ配布元から取得され、
計算は利用者の端末の中だけで行われます。

下表の「実際に取得する場所」は `js/ai.js` の `AI_MODELS` と一致させること。
どれも元モデルそのものではなく、ブラウザで動く ONNX 形式への**変換物**を取得している。

| モデル | 作り手（元モデル） | ライセンス | 実際に取得する場所（変換物） |
| --- | --- | --- | --- |
| Qwen2.5 0.5B / 1.5B Instruct | Alibaba Cloud（https://huggingface.co/Qwen ） | Apache License 2.0 | https://huggingface.co/onnx-community/Qwen2.5-0.5B-Instruct ／ https://huggingface.co/onnx-community/Qwen2.5-1.5B-Instruct |
| Qwen3 0.6B / 1.7B | Alibaba Cloud（https://huggingface.co/Qwen ） | Apache License 2.0 | https://huggingface.co/onnx-community/Qwen3-0.6B-ONNX ／ https://huggingface.co/onnx-community/Qwen3-1.7B-ONNX |
| Qwen3.5 0.8B | Alibaba Cloud（https://huggingface.co/Qwen ） | Apache License 2.0 | https://huggingface.co/onnx-community/Qwen3.5-0.8B-Text-ONNX |
| Qwen3 4B Instruct 2507 | Alibaba Cloud（https://huggingface.co/Qwen ） | Apache License 2.0 | https://huggingface.co/onnx-community/Qwen3-4B-Instruct-2507-ONNX |
| LLM-jp-3 150M instruct2 | 国立情報学研究所 大規模言語モデル研究開発センター（https://huggingface.co/llm-jp ） | Apache License 2.0 | https://huggingface.co/onnx-community/llm-jp-3-150m-instruct2-ONNX |
| paraphrase-multilingual-MiniLM-L12-v2（文の埋め込み） | Sentence-Transformers／UKP Lab（https://huggingface.co/sentence-transformers ） | Apache License 2.0 | https://huggingface.co/Xenova/paraphrase-multilingual-MiniLM-L12-v2 |

**変換物側（onnx-community / Xenova）はライセンスを宣言していない**ため、ライセンスは
上表のとおり元モデルのもの（いずれも Apache License 2.0。元モデルのメタデータで確認）に従う。
モデルの重み（本体）は、取得時に Hugging Face の配信ホスト（現在は `us.aws.cdn.hf.co`）へ
転送される。学校のネットワークで許可設定を行う場合は、両方の許可が必要（`setup.html` の表を参照）。

Qwen2.5 は大きさによってライセンスが異なり、3B と 72B は Apache License 2.0 ではない
（研究用途などの制限がつく）。PyHiroba では **Apache License 2.0 の 0.5B / 1.5B のみ**を扱う。
Qwen3 は 0.6B / 1.7B とも Apache License 2.0。Qwen3.5 0.8B（`Qwen/Qwen3.5-0.8B`）と
Qwen3 4B Instruct 2507（`Qwen/Qwen3-4B-Instruct-2507`）も Apache License 2.0
（2026-09-06 に元モデルのメタデータで確認）。

Qwen3.5 0.8B の変換物は名前が `-Text-ONNX` で元モデルと異なるが、これは元が画像の設定も持つ形で、
変換物がテキスト側だけを取り出しているため。文章しか扱わない用途では同じ重みを指す
（チャットテンプレートが 7755 文字で一致することを確認: `sha256 273d8e0e…`）。

文の埋め込みモデル（paraphrase-multilingual-MiniLM-L12-v2）は、文章を数ベクトルに変換して
意味の近さを測る用途で、文章の生成は行わない。実際に取得するのは ONNX 形式への変換物である（上表を参照）。

## フォント

| フォント | ライセンス | 配布元 | 用途 |
| --- | --- | --- | --- |
| Zen Kaku Gothic New | SIL Open Font License 1.1 | https://fonts.google.com/specimen/Zen+Kaku+Gothic+New | 画面の文字 |
| JetBrains Mono | SIL Open Font License 1.1 | https://fonts.google.com/specimen/JetBrains+Mono | プログラムの文字 |
| Noto Sans JP | SIL Open Font License 1.1 | https://fonts.google.com/noto/specimen/Noto+Sans+JP | matplotlib のグラフの日本語 |

各ライセンスの全文は、上記の配布元をご確認ください。

### Noto Sans JP（同梱・`vendor/fonts/`）

matplotlib のグラフに日本語を描くために同梱している。Pyodide の matplotlib が持つフォントは
DejaVu / STIX だけで日本語の字形が無く、そのままでは見出しや軸ラベルが豆腐（□）になるため。

- 同梱物: `vendor/fonts/NotoSansJP-jisx0208-v1.ttf`（約4.0MB）
- 配布元: npm `@expo-google-fonts/noto-sans-jp` 0.4.3 の `400Regular/NotoSansJP_400Regular.ttf`
  （5.2MB）を、**JIS X 0208（第1・第2水準）＋ ASCII ＋ Latin-1 ＋ 記号**に絞ったもの
- ライセンス全文は `vendor/fonts/LICENSE-NotoSansJP.txt`（配布物に同梱）
- OFL 1.1 の Reserved Font Name は `'Source'` のみで、`Noto Sans JP` の名前は制限されていない。
  Google Fonts 自身も配信時に字を絞った版を同じ名前で配っており、それと同じ扱い
- 絞り込みの手順は `.github/tools/make-jp-font.sh` に残してある。同じ手順で作り直すと
  **バイト一致する**ので、同梱物が配布元の複製（＋記載どおりの絞り込み）以外の何かでないことを
  機械的に確かめられる（2026-09-03 に確認）:
  `SHA-256 = 5f61f46b28b3d96bb38c76e05dbffe007c13d836bbb492eff27278f125b99fcc`
