📃

習作 UTX viewer

2021/12/29に公開
3

習作 UTX viewer

Github のpageを利用し, UTX viewer として公開中.

結果

UTX 1.20仕様に従ったUTX用語集ファイルから, 原語(src:XXX)と訳語(tgt:YYY)もしくは序列のない語群(term:ZZZ)を抜き出して表示するWebアプリケーションを作成した. PWAに対応し, ローカル環境でも動作は可能である.

UTX補足

Universal Terminology eXchangeの略称であり, 用語集形式の共通規格. 2009年にUTX-Simpleとして仕様原型が生まれ, 2019年に仕様許諾がCC0 1.0になった. 以下にUTX 1.20仕様の目的から一部を引用する.

UTXの目的は, 非専門家を含む幅広い層のユーザーに, 簡単に作成でき, 簡単に使える用語集を
作成するための一連のルールを提供することである. UTXは, 高度な管理性や可逆変換よりも, 使
いやすさと簡潔さを重視している. UTX用語集は, 人間にとっても読みやすい形式であるため, 翻
訳ソフト用途以外の一般的な用語集として使うこともできる.
翻訳ソフトの個人ユーザーがユーザー辞書を作成するとき, 精度向上に役立つ辞書を作成するに
は多大の労力を要する. また, 辞書形式が標準化されていないと, 単純なプレーンテキストファ
イルであっても, 共有や再利用が難しい. しかし, 複数のユーザーがUTXのような単一の規格に基
づくユーザー辞書を作成すれば, 辞書を簡単に共有できる. これらの辞書は, さまざまなメーカー
の翻訳ソフトなど, 多様なツールで使える.

その実態は1行1レコードのタブ区切りテキストファイルである. 実データのレコードが始まる1行前のフィールド定義の読取りに難点はあるものの, 1行1レコード形式は機械的処理がしやすい. 個人的にはLinuxのgrep, sed, cut, でほぼ不足はないし, awkも使ってしまえばフィールド定義にも対応可能であろうファイル形式である.

使い方

設定画面の表示

  1. 上部左,ハンバーガーメニュー押下でConfigure画面になる.
  2. 再度ハンバーガーメニュー押下でもとの用語の閲覧画面へ戻る.
  • 閲覧では250項目ごとでページ分割される.

用語集の登録

  1. Configure画面中段GrossaryのLoadへUTXファイルを読ませる.
  • 下段SampleにUTXファイルのサンプルを用意している.
  1. Loadの下に読み込んだUTXファイルが出現すれば, 読み込み成功.
  • ちょっと時間がかかることがある.
  1. Grossaryの下段のsaveでブラウザへ読み込んだ用語集の保存が可能.
  • 裏を返せば, これをしないといちいちファイル読み込みしないとならない.
  • local storageを利用しているため, 全量で5MBまで. サンプルの特許庁用語データは一発アウトである.
  • clearでブラウザのlocal storage保存分を削除する.

用語集の登録削除

  • Configure画面中段Grossaryの各用語集の右のボタンで削除.

閲覧設定

  • Configure画面上段のsource langで言語を指定すると, それを閲覧見出し語とする.
    • 仕様ではIETF-BCP47言語タグに則らないとならないが, 現状英数字の9文字入力である.
  • Configure画面上段のtarget langで言語を指定すると, それを訳語の先頭とする.
    • 仕様ではIETF-BCP47言語タグに則らないとならないが, 現状英数字の9文字入力である.
  • Configure画面上段のShow explainをチェックインすると, 語に"x-exp", "x-comment", "comment", "explain", "用例"フィールドがあった場合, 表示する.
  • Configure画面上段のShow glossaryをチェックインすると, その語の登録されているUTXファイルのidを表示する.
  • Configure画面中段Grossaryの各用語集の左にチェックインすると, 用語閲覧から除外する.
  • 上部検索ボックスに文字列を入力し, 右のボタンを押下すると, その文字列を含む用語のみの表示へ絞り込む.
    • Regexpに直結しているため, たぶんこれバリデーション効かせないとアカンやつや.

動機

もろもろあるが, javascriptの学習がしたかった. それも, できるだけ純粋領域のものを. そして, javascriptをつかうなら, それはやっぱりwebページだろうという偏見から, 少しばかりのGUI操作要素を持つアプリケーションを作りたかった. 作るからにはできるだけ他に類を見ないものにしたいし, スマフォでもまぁまぁ動くようにしたかった.

Maquetteの利用

Maquetteを利用した理由は, 極めて軽量な純粋javascriptのGUI(Virtual DOM)ライブラリだからである. 今回の目的はjavascriptの学習であり, 華美な広告でも, インテリジェンスな提案ツールでもないし, そもそも仕事じゃない. 歪んだ陶芸作品でも良いから, できるだけ自力でコーディングをしたかった.

しかし, 世にあるのはNPMを前提とした, ある何かしらのパッケージの利用方法がほとんどであり, 純粋なjavascriptはほぼMDN Web docs と幾ばくかのコードスニペット解説しか見受けられなかった. 別段, パッケージの利用自体は先人の知識の集積を利用するとてもまっとうなコーディングのアプローチである. だが, こっちは普段カリカリに0.1us単位の動作時間と4byte単位でRAM使用量を削り, そのために周囲回路まで口出しするC/C++の組込みプログラマーである. 言語仕様標準ならともかく, ライブラリの安易な取り込みより必要な分の自力実装を考えるのが先にくる.

GUI操作要素のために何かしらのパッケージをつかうこと, これ自体は私のjavascriptの技量からして仕方ない. しかし, できるだけ過剰な要素が少ないものを使いたかった. javascriptでGUIといえば, jQueryがまずhitしたが, どうやらもうそれに頼らずともよい時代になったようだ(あと単純にでかい). 近況でGUIのほぼ安定した開発の屋台骨はvueかreactになるらしかった. だが, これらも今回の私の要求を満たすには, 親切に過ぎる. そして, この2つに共通するのがVirtual DOMという概念であり, それだけを取り扱うMaquetteを選んだ.

UTX選択

アプリケーションを作るからには何か役目が必要であり, 正直それを探すほうが時間がかかった. UTXはそんなときに思い当たったものである.

そもそもUTXを知ったのは 別の調べものをしてる最中に翻訳絡みで見かけたからである. ただ, 検索のかけやすさはpdicとかstardictとかのほうが上だった. 個人に負けていいのか国際規格.

他のアプリケーション案としてTodoリストも検討したが, 習作のアイテムとしてはありきたりで全くモチベーションがでなかった. "なんで人が作ったものまた作るねん", がどうしても払拭できなかった. その点, UTXは(たぶん実際にはちゃんとしたアプリが業界では流通してるのだろうけど,) 類似品を容易に発見できなかったので, "なら作ってやるべ" を維持できた.

PWAの導入

Webアプリをググってたら出てきたワードだった. 実際にはあまり流行って無いらしいけど, スマフォのローカルで動かせるようになるなら, このアプリと相性は悪くないと思い導入した.

改善点

  • 異常処理 :: 特にUTXの解釈はもっと厳密なバリデーション処理が必要なのではないだろうか?
  • 保存容量の拡張 :: ブラウザへの保存はlocal storageを利用しているため, 5MB制約がある. 大本サンプルの特許用語が軽くそれを超えてしまう. とはいえ, 安易にcacheで良いのだろうか, cacheはhttps下でしか許可されない.
  • "品詞"を扱う機能 :: 名詞(可算, 非可算を含む)や形容詞と副詞の別などは用語集として欲しい機能だと思う.
  • ユーザーによる語の追加 :: 今回は見ることに絞ったため落とされた機能.
  • ユーザーによる用語のUTX書き出し :: 上に同じ.
  • UTXファイル事例の少なさ :: 公式ですらリンク切れてるのおいてあるのなんなん.

参考

Discussion