公開
遊戯王カード名辞書を毎日自動生成する仕組み(部分読み、IME、ATOK対応)
遊戯王カード名を「@ぶらっく」や「@りとる」から変換できるyugi-dictについて、単語境界を使った部分読みの生成、Microsoft IMEとATOK向けの出力、毎日の自動更新と全件検証の仕組みを解説します。
デッキレシピや対戦メモへ遊戯王カード名を書くたびに、長い正式名称と中点や記号を正確に入力するのは手間がかかります。yugi-dictは、日本語入力を有効にしたまま「@」とカード名の読みを入力し、Microsoft IMEまたはATOKの通常の変換操作で正式名称を呼び出すユーザー辞書です。 最新のカード情報を取り込むため、辞書ファイルを毎日自動生成してGitHub Releasesで公開しています。
辞書へ正式な読みだけを登録すると、「@ぶらっくまじしゃん」からは変換できても「@ぶらっく」からは変換できません。 一方、読みの全位置と全長を無条件に登録すると、意味のない断片が大量に生まれます。 yugi-dictはカード名の単語境界を求め、単語の途中で切れない部分読みだけを生成します。
変換できる入力例
入力の先頭には、日本語入力中に@キーを押したときの全角文字「@」を付けます。 変換候補はカード名だと識別しやすいように二重山括弧で囲みます。 同じ読みに複数のカードが一致する場合は、候補を削らずIMEの変換候補として並べます。
| 入力 | 変換候補 | 読みの作り方 |
|---|---|---|
| @ぶらっくまじしゃん | 《ブラック・マジシャン》 | 正式な読み |
| @ぶらっく | 《ブラック・マジシャン》など | 単語先頭の部分読み |
| @りとる | 《S:Pリトルナイト》など | ローマ字の単語境界 |
| @おろかな | 《おろかな埋葬》《おろかな副葬》など | 共通する前方読み |
| @224 | 《カラクリ小町 弐弐四》 | 数字の別名 |
「S:Pリトルナイト」の表記には「リトル」の前に中点がありませんが、「@りとる」から変換できます。 表記上の記号だけに頼らず、カードデータのローマ字表記に含まれる空白も単語境界として使っているためです。
正式な読みとローマ字を単語ごとに対応させる
生成元には、yaml-yugiの日本語カード名、ルビ、ローマ字表記を使います。 日本語の正式な読みは一続きですが、ローマ字表記には単語ごとの空白があります。 例えば「えすぴーりとるないと」と、空白で区切られたローマ字を照合できれば、「えすぴー」「りとる」「ないと」の境界を得られます。
yugi-dictは日本語の読みを前から区切り、各区間をローマ字へ変換して、元データの単語と一致する組合せを探します。 長音、拗音、外来語に現れる「うぃ」などの表記差は、境界照合のときだけ正規化します。 辞書へ出力する読み自体は正式な日本語表記を保ちます。
区切り方の探索には同じ位置を繰り返し調べる分岐があります。 そこで「何番目のローマ字単語を、読みの何文字目から照合するか」を記録し、すでに調べた状態の結果を再利用します。 これにより、総当たりの分岐を抑えながら単語列全体が一致する境界を探せます。
部分読みを増やしすぎない条件
単語境界が得られた後は、正式な読み、各単語の開始位置から末尾までの読み、単語単位で終わる前方読みを辞書候補にします。 前方読みは3文字以上とし、単語の途中では終わらせません。 促音の「っ」で終わる読みも、入力として不自然になりやすいため除外します。
例えば「ブラック・マジシャン」では「@ぶらっく」を登録しますが、単語の途中で止まる「@ぶらっ」は登録しません。 「罪宝」の途中で止まる「@ざいほ」も登録せず、単位の終端に一致する「@ざいほう」を登録します。 短い入力を許しながら、偶然一致する候補の増加を抑えるための境界です。
数字は別の規則で扱います。 算用数字、ローマ数字、カラクリカードなどに含まれる連続した数字漢字を全角数字へ揃え、1文字以上の連続部分を数字の別名として登録します。 この規則によって「@224」から「《カラクリ小町 弐弐四》」を変換できます。
2026年8月8日の生成結果
2026年8月8日3時54分に公開したReleaseでは、yaml-yugiの14,236ファイルを読み込み、Microsoft IME向けに77,127件、ATOK向けに77,126件の辞書エントリを生成しました。 正式名称に対応する基本エントリは14,210件で、残りは構造、前方読み、単語境界、数字などから作った別名です。
異なる読みは47,716件あり、6,220件の読みには複数の変換候補があります。 ローマ字の単語境界へ対応付けられたカードは14,081件で、対応付けに失敗した132件はルビや記号から得られる境界だけを使います。 一部を安全に照合できない場合でも、誤った単語境界を推測して登録しない設計です。

Microsoft IMEとATOKへ同じデータを出力する
Microsoft IME向けのファイルはDictionary ToolのWORDLIST形式で、文字コードをBOM付きUTF-16LE、改行をCRLFとして出力します。 読み、変換候補、品詞をタブで区切り、品詞には「短縮よみ」を指定します。 WindowsではMicrosoft IMEのユーザー辞書ツールから「テキスト ファイルからの登録」を選び、Releaseの「yugi-dict-msime.txt」を指定します。
ATOK向けもBOM付きUTF-16LEとCRLFで出力しますが、先頭行と品詞はATOKの形式に合わせます。 ATOKの読みは32文字以内という制約があるため、超過する読みだけを先頭32文字へ短縮します。 2026年8月8日の生成では6件が短縮対象でした。
毎日の生成と全件検証
GitHub Actionsは毎日3時(JST)にyaml-yugiのmasterブランチを取得し、その時点のcommitから辞書を作ります。 mainブランチへのpush、手動実行でも同じ処理を開始でき、pull requestでは公開せずartifactだけを生成します。 辞書を作った実行では、生成日時を含む新しいReleaseを公開します。
配布物と一緒に置くmanifest.jsonには、生成元commit、形式、文字コード、改行、SHA-256、エントリ件数、境界照合の件数を記録します。 検証処理はサンプルだけでなく全エントリを読み直し、文字コード、改行、接頭辞「@」、二重山括弧、重複、ファイルのハッシュを確認します。 Microsoft IME用とATOK用のファイルが、それぞれの形式上の制約を満たさなければRelease処理へ進みません。
最新辞書のダウンロード
最新版はGitHub ReleasesのLatestからダウンロードできます。 WindowsのMicrosoft IMEでは「yugi-dict-msime.txt」、ATOK for Macでは「yugi-dict-atok.txt」を選びます。 同梱のmanifest.jsonを使うと、生成元commitとダウンロードしたファイルのSHA-256を確認できます。
yugi-dictはyaml-yugiのカード名とルビを変換して配布する非公式の辞書です。 生成物に対応する出典commitはmanifest.jsonへ記録し、カード情報の出典と権利に関する注記はリポジトリのNOTICE.mdで公開しています。
参考情報
記事内容に誤りを見つけた場合は お問い合わせ から報告してください。