yorisoi — やさしい日本語化スキル
1. 狙いの宣言
「やさしい日本語」は、日本語に不慣れな読者(在留外国人・日本語学習者)にも伝わるように 調整した日本語である。本スキルは、公的な外部規範であるガイドライン (出入国在留管理庁・文化庁「在留支援のためのやさしい日本語ガイドライン」2020年8月)に準拠して書き換える。
meiseki(明晰化)との違いは対象読者にある。meiseki は日本語ネイティブの読解負荷を下げる。 yorisoi は目標語彙レベル(既定 N4 相当)の読者が理解できる語彙と構文に落とす。 どちらも「検出と採点は決定論層、書き換えは LLM 層」の二層構成をとる。
2. 動作モードと出力方針
- 変換モード(既定):やさしい日本語へ書き換え、本文のみを返す。分析・講評は付けない。
- 判定モード:「チェックだけ」「判定だけ」「スコアだけ」と指定されたら、書き換えずに 違反と語彙レベル超過を行位置つきで報告し、YLS(§7)を示す。
- 目標レベルは既定 N4。「N3 で」「N5 レベルで」のように指定されたら変える。
- 「どこを直したか教えて」と明示されたときだけ、本文に続けて変更点を添える。
3. 対象 / 対象外
- 対象:お知らせ・案内・行政手続きの説明・防災情報・マニュアル・社内周知など、 日本語に不慣れな読者にも読んでほしい説明文。
- 対象外:コード本体・法令や契約の条文そのもの・医療の厳密な記述・創作。 法的効力や厳密さが必要な文書は、やさしい日本語版を「参考訳」として併記し、原文を残す。
- 混在文書:本文だけを書き換え、コードブロック・引用・URL・連絡先は原文のまま残す。
- ふりがな・分かち書きの付与はスコープ外(v0.6.0 時点)。
4. ワークフロー(この順序で行う)
Step 1. 全文を読み、意味と読者の行動を把握する
この文書を読んだ人が何を知り、何をすべきかを確定させる。 やさしくした結果、条件・例外・期限・連絡先が落ちたら失敗である。
Step 2. textlint を実行する(決定論層)
原稿を一時ファイル(拡張子 .md)に書き出し、npx 経由で textlint を実行して JSON を読む。
npx --min-release-age=7 --yes --package textlint@14.8.4 --package textlint-rule-preset-ja-technical-writing@10.0.2 --package textlint-rule-prh@6.1.0 textlint -c "<SKILL_DIR>/references/textlint-yorisoi.config.json" -f json "<INPUT_MD>"
<SKILL_DIR>はこのSKILL.mdがあるディレクトリの実パスに置き換える。- 指摘があると終了コード 1 になるが、stdout の JSON を読んで処理を続ける。
Step 3. 語彙レベルを判定する(決定論層)
同梱スクリプトで目標レベル超過の語を洗い出す。
node "<SKILL_DIR>/scripts/vocab-check.js" --level N4 --format json "<INPUT_MD>"
--levelは目標レベル(N5〜N1)。初回実行は形態素解析器の取得で数十秒かかる(以後キャッシュ)。- 出力の
over(超過)は書き換え候補、unknown(リスト外)は参考。判定は推定値であり、 最終判断は文脈で行う(references/vocab/README.md参照)。
Step 4. YLS(before) を算出する
§7 の式で before スコアを出す。判定モードならここで報告して終わる。
Step 5. patterns-yorisoi.md の YA→YH に沿って書き換える
references/patterns-yorisoi.md を参照し、優先度 YA→YH の順で直す。
- YB(二重否定)は真偽を反転させずに畳む(meiseki の A と同じ基準)。
- prh の指摘(YC 受身・YD 推測・YE 敬語・YG 表記)は書き換えの起点。 近似検出のため誤検知(可能形の「される」等)は無視してよい。
- 語彙超過の語は、言い換えるか「余震<=後から来る地震>」形式で説明を付ける。 説明は原文と文脈から導けるものだけ。新しい情報を創作しない。
Step 6. 意味の検算(最重要のガード)
- 二重否定を畳んだ箇所は、論理の向きが原文と一致しているか確認する。
- 条件・例外・期限・数値・連絡先が原文とすべて一致しているか確認する。
- 「<=説明>」の説明が原文の意味とずれていないか確認する。
Step 7. textlint と vocab-check を再実行し、before→after を検算する
- after < before(YLS) になっていなければ直し残しがある。
- 二重否定は 0 件、語彙超過は 0 を目指す(固有名詞・説明付きで残した重要語は超過に数えない)。
Step 8. 本文だけ返す
§2 の方針どおり、変換モードでは書き換え後の本文のみを出力する。
5. ガードレール(やってはいけないこと)
- 意味・事実・数値・期限・連絡先を変えない。 やさしくするために情報を削らない。
- 新しい情報を足さない。 「<=説明>」も原文と文脈から導けるものだけ。
- 固有名詞(地名・組織名・人名・制度名)は変えない。読み方が難しい制度名は説明を付ける。
- 文末は「です・ます」で統一する。ぞんざいな常体には落とさない。
- 「〜かもしれません」は削らない(推測をぼかし表現から明確な形に直した結果である)。
- 法令・契約・医療の厳密文は書き換えの対象外。求められたら「参考訳」として位置づけを明示する。
- 元の文書がすでにやさしい場合は触らない。
6. 最終判断基準
目標レベルの語彙しか持たない読者が、一度読んで「何をすべきか」を正しく理解できるか。
7. やさしさ負荷スコア(YLS)の定義
textlint と vocab-check の指摘をカテゴリ別に重みづけし、本文の文数で正規化する。低いほどやさしい。
YLS = Σ(カテゴリ件数 × 重み) ÷ 本文の文数 × 100
| カテゴリ | 検出 | 重み |
|---|---|---|
| YB 二重否定 | no-double-negative-ja + prh A1 |
3 |
| YF 語彙超過 | vocab-check の over(unknown は数えない) |
2 |
| YA 文長・読点 | sentence-length, max-ten, no-doubled-conjunctive-particle-ga |
2 |
| YF 漢字連続・冗長 | max-kanji-continuous-len, ja-no-redundant-expression |
2 |
| YC/YD/YE/YG | prh(A1 以外), no-mix-dearu-desumasu |
1 |
| その他 | no-doubled-joshi, no-doubled-conjunction |
1 |
- prh A1(二重否定の補完)は YB に数え、YC〜YG と二重計上しない。
- 受け入れ基準:after < before を必須、二重否定 0 件、語彙超過 0 を目指す。
- 参考値として vocab-check が出す jReadability 近似値(高いほど易しい)も併記してよい。 近似値は判定に使わない。
8. 機械検出の分担(拾える / 拾えないもの)
- textlint が拾う:二重否定(分離型・丁寧形は prh A1)、一文長、読点過多、漢字連続、 冗長表現、文末の混在、受身・推測・敬語・表記の典型形(prh YC〜YG。近似)。
- vocab-check が拾う:目標レベルを超える語(同梱の推定リスト。JEV があれば最優先)。
- LLM が判断する:受身の誤検知の仕分け、言い換えと「<=説明>」の使い分け、 外来語の定着度、重要情報の先出し(YH)、文の分割位置、ローマ字表記の回避。
この分担は meiseki と同じ設計思想(検出は決定論層・書き換えは LLM 層)である。