sci

最果て風呂

翻訳プロジェクトとの関わり

日課

とまれ、まずはわたしのルーチンワーク (創意工夫の必要ないつまらない作業という意味もあるらしいけど) を紹介します。

0. ブラムさんの活動をチェック

本物の Vimmer は毎朝ビルドするらしいのですが、わたしはにわかなので気が向いた時に git pull するだけです (日課ですらない)。runtime の更新はまとめてアップデートされるため、修正個所が多くなる傾向になり正直キツイです。

1. 差分の確認

まずはターミナルにて原文との差分を確認します make diffja

f:id:nakinor:20171202221105j:plain

2. 修正部分のコピー

原文に変更がある場合はその部分を修正していきます。例えば今回は insert.txt に変更がありましたので、MacVim で対象のファイルを開き、変更個所に移動し 1299G、必要な部分をコピーします Vjy。簡単な変更であってもコピペが必須です。なぜなら Vim のマニュアルでは TAB が多用されているからです。 (Emacs では TAB 入力を SPACE に変更するように設定しているので、C-q C-i を押すのが面倒なのです。写し間違いも防げますしね)

f:id:nakinor:20171202221452j:plain

3. 編集

Emacs をアクティブにして ⌘-TAB、対象のファイルを開いて移動し M-g g 3618、先程コピーした内容をヤンクして C-y、適宜編集します。これを変更のあったファイルに対して繰り返します。

例えば原文 (@ifset EN, @end ifset で囲まれている部分) を修正し、それに対応する訳文 (@ifset JA, @end ifset で囲まれている部分) を修正し、さらに訳文を texinfo 形式でタグ付けしていきます。

かなり面倒なのですが、原文と訳文が上下すぐ近くにあるというのが自分にとってわかりやすいのです。

f:id:nakinor:20171202221513j:plain

f:id:nakinor:20171202221530j:plain

4. 差分の再確認

すべての変更が反映されたことを確認します。ALL GREEN!

f:id:nakinor:20171202221541j:plain

5. 表記ゆれの確認

今回は日本語に関係する変更はありませんでしたが、nvcheck で表記のゆれを確認します make nvcheck。問題はないようですね。

f:id:nakinor:20171202221556j:plain

6. HTML を出力

texinfo を使って HTML に出力します make refhtml。いまどき C から Perl で実装され直したというのだから驚きです!速度はめっちゃ遅くなりましたが、出力されるタグがかなりマトモになりましたのでグーです。

今回の例では、リンクの変更や原文の Typo 修正ばかりでしたので楽でした。

f:id:nakinor:20171202221617j:plain

7. ブラウザで確認します

texinfo 用のタグ付けをミスすることがあるので目視確認をします。見てわかるようにブラウザの Responsive Design Mode で閲覧しています。

f:id:nakinor:20171202221737j:plain

8. 英文が追加された場合の例

い. 編集

この文章を記述している時点で runtime のアップデートがありませんので、仮定の話として説明してみたいと思います。

作業ファイルの spell.texi を例にしましょう。"Normally Vim ... lots of errors." の文章が追加されたとして、これを上記の 2. 3. の手順に従い、原文から所定の場所にコピペします。そして "Normally Vim ... " の段落をリージョン設定してから M-x my-attach-tag を実行すると、下記のようなタグが挿入された状態になります (ちょっと訳しちゃってますが)。

翻訳をしながら英文を消していきます。すぐ上に原文が残っているので再考するときに便利です (画面の分割は好きではないのです)。

たったのひと段落なのですが、訳すのにものすごく時間がかかってしまいます。英語力もそうなのですが、解説されている内容が (たとえ日本語であったとしても) 理解し難いので辛いです。あぁ〜あの事ね!とならない。雲をつかむような作業。五里霧中。最低限、情報学の勉強をした人でないとダメちゃう?というか、ブラムさんさぁ〜、自分でスペルチェックを Vim に実装しとんのに typo 多いのなんでなん?つこうてないんちゃう?

f:id:nakinor:20171202221631j:plain

ろ. 表記ゆれの確認

愚痴はこのくらいにして、自分なりに精一杯翻訳をしました。表記のゆれをチェックしてみると「エントリ」でなければならないところを「エントリー」にしちゃってました。これ、本当に便利なんですよ!

f:id:nakinor:20171202221649j:plain

は. 修正

nvcheck は行番号を表示してくれるので移動もラクラク M-g g 3051

f:id:nakinor:20171202221703j:plain

に. 再確認

表記のゆれを修正して OK になりました。追加された文章についてコピペをし、い.〜は. を繰り返していくのです。削除された文章については削除するだけですね!

f:id:nakinor:20171202221721j:plain

何かおかしくありませんか?

そう、Vim のマニュアルを Emacs で編集しているのです。なぜこんなことになってしまったのでしょう?

発端

Vim のマニュアルは Vim 内で閲覧することに特化されています。わずかな記号 ("|", ">", "<", "*", "'" など) で装飾するだけで、リンクや色付けなど閲覧に便利な機能が使えるのです。20 数年の歴史が重いッ(>_<)

パソコンが仕事の道具である人はいつでも Vim でヘルプを開けますが、わたしはスコップなので、スマホで見るしかありません。HTML 版も公開されていますが固定幅のためスマホでの閲覧がとても厳しいのです (スワイプ☜☞)。

現場やトイレやお風呂でマニュアルを読みたい!その願いを叶えるためにスマホ対応の HTML を生成することにしました。

書式の選択

ではどんなフォーマットにすれば良いのでしょう?vimdoc-ja の翻訳ファイルを HTML タグでベタ書きする?更新はどうする?gettext のような翻訳支援ソフトを使う?ファイルが分れているのは嫌だよ?などと思案した結果、texi を採用することにしました。

カズヒコ・ヤマモトさん、もしくはシロウ・カワイさんの書かれたマニュアルで、同じファイル内に日文・英文が仲良く同居しているの見ていて「これいいなぁ」と思っていたのです。

試行錯誤した結果、運用できる見通しが立ちましたので、ユーザーマニュアルの部分に取掛りました。作業は単純そのもので、原文と訳文をコピペしてタグ付けをしていくだけです。頭はなにも使いません!

運用してから

良い点

  • 原文と訳文が上下で存在するので確認が簡単です。原文にはあるのに訳文にはない段落や、その逆のものを発見しやすくなりました (タブや画面の分割は把握できないので嫌いなのです)。
  • 訳文を無改行にできるため、自作の仮名変換スクリプトを適用しやすくなりました。
  • PDF 出力ができること?

悪い点

  • 日文と英文とタグが同居しているので、ひとつのファイルサイズが大きくなりました。
  • ユーザーマニュアルだけの頃は気にならなかったのですが、リファレンスマニュアルまで作業を進めてくると、texi2any の処理速度が気になるようになりました。
  • .texi の修正だけで満足してしまい .jax へ反映する作業が面倒になってしまいました。
  • 生成されるファイルの数が膨大に。7000 近くになっています。

なぜ "Emacs で" なのか

Texinfo 形式を採用したので Emacs での作業が楽だと思いました。Vim scripting language のことは良く知らないので、例えば上で出てきた my-attach-tag のようなちょっとした手続も作成することができず、編集の環境を整えることができませんでした。

また、テキストエディタとして長く Emacs を使ってきましたので、こちらの方が慣れているというのもあります。Slackware 3.1.0 をインストールしてからの付き合いなので、かなり長くなってきました (リリース日を調べちゃイヤ)。

なぜ "Vim のマニュアル" なのか

Vim を触ってみようかな?と思い、ヘルプを読みながら練習をしていました。この時に typo についてまとめてブログに書いたのか、つぶやいたりしたのか記憶が曖昧なのですが、シンカさんか誰かにキャッチされたのです。当時は vim-jp が発足した頃で、運良くメンバーにしてもらえたのでした (今でもコメントしただけでメンバー入りです)。

たった一文字のタイポであるとか、そういう簡単な報告をしつつ、先達はなんて地味で面倒な作業を成してくれたのだろう?と日本語訳が存在していることに感謝したのです。ナカダイラさんにはお世話になったなぁ……元気かなぁ……。

マッツンさんとシンカさんが「この中に Two-factor Authentication にしてない人がいま〜すチラッ」と雑談していて、穴になったらいけないので逃げ出したのです。しかしこれが良い方に転んで、プルリクの方法を身に付けることができたのでした(^^)

まぁ何といいますか、Vim と関りがあるからなんですね。英語の苦手なひとにとって、日本語訳は大切な道標なのです。自分がこの道標に導かれて助かったように、続く人達が迷ってしまわないようにメンテナンスのお手伝いをしたかったのです。文字が消えていたり、倒れていたり、ルートが変わったりしていたら困りますもの。プログラミングはわかりませんがタイポの発見程度なら、ね。 (Emacs にもお世話になっているのですけれど、マニュアルの更新活動をしている所が存在しませんし)

今後

リファレンスマニュアルの道半ばなのですが、上記の "悪い点" にあげたように、処理速度とファイル数が問題になっているため「高度な編集」カテゴリの fold までで終了しています。

ユーザーマニュアルの部分は「読み物」としてスマホで読んでも楽しいのですが、リファレンスマニュアルは「読んで実際に試す」部分が強いため、Vim 上で読まないと意味がないというのもあります。

(syntax の 2html.vim を熟読すれば、オプション設定で自分が望んでいるスマホ向けのページが出力できそうな予感)

誰かがつぶやいていましたが「コンパイルが必要なフォーマットってクズだよね」という言葉が頭をよぎります。確かにそうかもしれません。余計なことに手間がかかってしまいますもの。そういう意味では失敗プロジェクトになってしまいました。翻訳支援サイト・プログラムの決定版!というのはないのでしょうか?

おまけ

このまま終ってしまったのでは愚痴ばかりになるので一言だけ。

タイポ等を発見したら issue に書き込むのです!

これだけです。プログラミングがわからなくても、プルリクエストがわからなくても関わることができます。あなたの目がプロジェクトに必要なのです!