542 Views
May 15, 24
スライド概要
toranoana.deno #16で発表したLT資料です。
bidという、IMEユーザー辞書を統一するプロジェクトについて話しています。
TypeScriptとTSXとDenoと煎茶が好き。
で ユーザー辞書を統一 的に出力するツールを作った Deno IME toranoana.deno #16 (2024/05/15)
自己紹介 と言います。 WhyK 普段 色んな会社でフロントエンドを書く仕事をしています。 休日はコードを書いたりお茶を飲んでいます。 最近嬉しかったこと 『狼と香辛料』が再アニメ化したこと。
はじめに で作ったものの紹介なのですが、Denoらしい話はあんまり出てきません 以降のスライドで会社的にIMEと呼んでいないものも、ここではIMEとしてまとめて呼びます Deno
アジェンダ 作ろうと思った動機 2. IMEユーザー辞書の現況 3. 作ったもの 4. 想定利用者 5. 出力の構造 6. 今後の展望 1.
作ろうと思った動機 個人的に所属している小規模グループが、大量の造語を抱えている 誤字しやすい造語もあるので、それを誤字しない仕組みが欲しかった 誤字検知ツールも提供しているが、あまり普及していない 文字変換の段階で介入すれば、誤字がしにくくなると考えた を使った理由 環境が既に整えられているので、そこに悩む必要がない Deno 標準ライブラリが豊富
ユーザー辞書の現況 IME 辞書フォーマットは統一されていない テキストファイルのデータが か か TSV CSV 項目の順番や、品詞が登録できるかどうか 特に品詞が統一されていない 日本語入力は、設定変更も品詞に組み込んでいる Google 普通名詞だけでも、Googleは名詞でmacOS日本語入力システムは普通名詞とバラバラ 各IMEの品詞がどれくらい統一できるか表を作る必要があった
作ったもの (ビド) bid の略 build IME dictionary 対応している IME 日本語入力 Google Microsoft IME 現状ではCLIのみ macOS日本語入力システム(iCloud経由でiOSなど GitHub ActionsなどCI/CDツールを使って半自動化 も含む) できる GBoard CSV / JSONファイルでの入力に対応 ATOK(Microsoft IMEのユーザー辞書取り込み) 統一された品詞 各IMEに適した辞書ファイルを出力 リポジトリ内にExcelテンプレートもある
想定利用者 造語を多く持つ組織 複数のIMEを使う人 ユーザー辞書をエイリアス代わりにしている人
出力の構造 ユーザー コア機能 CLI ないしCSVをファイルで渡す JSON ファイルからデータを抜き出して渡す ファイル拡張子を確認 break ファイルが.jsonや.csv以外の場合] [ を返却 `FileTypeError` ファイル形式エラーとして表示 ファイルデータをJSONに変換 break データに想定外のプロパティが含まれていた場合] [JSON を返却 `DataPropertyError` データ形式エラーとして表示 loop データを各IMEのテキストデータに整形 JSON テキストデータをファイルに出力 ファイルを圧縮し、圧縮ファイルを返却 実行時のディレクトリに圧縮ファイルを作成 ユーザー CLI コア機能 コア機能には一部を除いてCLIに依存しない機能群 が入っている CSVのJSON変換は std/csv/parse を利用 ファイルの作成には Deno.writeFile と node:buffer を利用 Microsoft IMEの辞書ファイルのエンコーディン グがUTF-16LEのため
今後の展望 サイトを作りたい Webアプリを作りたい Googleスプレッドシートと直接連携できればもっと良い 他のIMEへの対応 日本で使われているすべてのIMEに対応したい データが足りないので、Issueお待ちしています JSRへの公開 Web
ありがとうございました