マニュアルは、Vim の中で読むことに特化されているため、電車やお風呂の中で読むのには不便です。HTML 版がありますが、わたしの格安スマホの解像度は 360x640 なので、固定幅のサイトの閲覧は厳しいものがあります。
可変幅のページが欲しい!そう思って日本語訳版をコピペしてマーク付けをはじめたのは、ちょうど 1 年前 (2016.02.17) のことでした。まだ Vim のバージョンが 7.4 の頃ですね。実はちょっとだけ作業をしてから面倒臭くなってしまい、ずっと放置をしていました。なにせ単調な作業なものですから……
最近になってこの存在を思いだしたのは、Texinfo 6.3 で直接日本語の PDF を生成することができるようになったとのニュースを見たからでした。自分が唯一続けているプロジェクトのマニュアルは Texinfo 形式から HTML を出力しているのですが、書式がいまいち良くわからないまま書いています。そこでこの機会に Texinfo を勉強しようかな?という気持ちが高まり、新たに書くネタも無いので、昔に放り出してしまったこのプロジェクトを有効活用しようと思いついたのです。
ユーザーマニュアルの部分で飽きてしまいましたが、node や section、anchor などの動きがなんとなくわかるようになってきました。一段落ついたので目立たない Heroku でページを公開して電車やお風呂の中で読んでいます。
作業をしていて思ったことは「翻訳作業をした人達はすごいな」ということでした。興味のない部分もあったでしょうが我慢強く続けてこられたのですよね。英語で読んで理解できるのに、わざわざ日本語訳にするという手間をかけてくれたのです。ありがとうございます。
文章は旧字旧仮名使いに変更してあります。旧字体はスマホで閲覧すると一部のフォントが無いために文字化け (トーフ化) してしまいますが、なんとなく読めるので旧字体のままにしてあります。
リファレンスマニュアルの部分も少しずつ作業してきましたが、options.txt の部分で気力が尽きてしまいました。単調な作業なので楽しくないのです。
前回から放置すること半年。Texinfo 6.4 がリリースされ、このプロジェクトを再開することにしました。タグ付けの法則を忘れてしまった部分もありますが、作業を続けるにつれて思い出してきました。こんどはどれだけ続くかなぁ……。ちなみにファイル数は 4170 になり、PDF にすると 800 ページを超えました。重いっ (>_<)
spell.txt はほとんど未訳であることがわかりました。が、英訳の能力は自分にはないので、スルーして次のページへ。今は eval.txt に取掛っていますが、これもかなりの大物。PDF にして 1000 ページを超えました。辛いっ (>_<)
eval.txt の部分はひと月以上もかかって終了しました。目次の「高度な編集」の部分までが終了し、区切りが良いこともあり、一旦ここで終了します。Texinfo が 6.5 になり、時間の流れを実感します。PDF のページ数は 1300 を超えるほどになり、処理時間がとてつもなくかかるようにもなりました。
ユーザーマニュアルは読み物のようでそのまま読んでいても楽しいのですが、リファレンスマニュアルはスマホで読むことができても、あまり嬉しくないことがわかりました。「エディタの中でコマンドを試しながら読む」というのが本来のあり方なのでしょうね。
Heroku 上の Go 環境で動かしていたのですが、Dyno というものが無料枠の限界に近くなったので、他のアプリを生かすためにこのマニュアルを GitHub Pages で動かすようにしました。
取り掛かってからどのくらいの時間が経ってしまったのだろう?spell.txt の翻訳作業がやっと終了しました (調べてみると、およそ半年でした)。日本語で読み返しても意味がわからないので、自己満足でしかありません。それでも時間を無駄にしたとは思いません!誰かが訳したものと比べて添削したいなぁ。
特定機能カテゴリの部分まで終了しました!気がつけば、作業をはじめてから 2 年が過ぎていました。何度も挫折しそうになりましたが、ここまでくると最後までやり通してしまいたいと思うようになりました。まだ先は長いのですが……。
一気に GUI カテゴリの部分を終えてしまおうと思ったのですが、gui_x11.txt が原文に追い付いておらず、日本語訳をしなければならない部分がありました。ちょびちょび進めます!
なんだかんだで拡張インターフェイスの部分に取り掛りました。これらのインターフェイスって使っているひとは存在するのだろうか?
拡張インターフェイスの部分が終って一段落。ここでふと、Texinfo で HTML を出力する際に作成される「リンクをリダイレクトするだけのファイル」って不要なんじゃないの?と思いました。ということで削除しました!8600 ほどあったファイルが 100 程度に減りました。.git の objects に無駄なファイルを残してしまった……。区切りがついたところで init し直そう……。
バージョン情報の項目は vi_diff だけを作業して終了。システムに関する説明も、Mac と Unix だけにしました。他のプラットフォームは必要ないので。あとは標準プラグインの項目を作業して完了になります。ぼちぼちやっていきます。
やっと終りが見えてきて、残るファイルは 1 つとなりました。しかしこの pi_netrw.txt なのですが、かなりの大物であることがわかりました。usr_41.txt よりも大きいので、相当な時間がかかることが予見されます。つらい (>_<)
作業が完了しました。まだリンク張り等が残っているので完了とは言えないのですが、とりあえずは終了ということで!texi ファイルは 117 個、13MB の容量になりました。ここから出力した HTML ファイルは 9.3MB、PDF ファイルは 1707 ページ、16.3MB でした。
2 年間、あっという間だったなぁ……
アンカー (|@ref{hoge}|
というやつ) を付けるのを忘れていないか確認するスクリプトを作成して、今度こそ本当に作業が完了しました。ついでに MacVim にある gui_mac.txt も翻訳して含めてしまいました。
翻訳作業といえば、本家のアップデートをキャッチアップしつつ、spell.txt からはじめて hebrew.txt, ft_rust.txt, gui_mac.txt とやってきました。この作業の中でだいぶ英文に慣れたような気がします。
当初は 5 分も続けていられなかったものが次第に長くなってきて、現在では 1 時間見ていても大丈夫なようになりました。分からない個所が出てきてもすぐに諦めてしまうということもなくなりました。中高生の時よりも長く英文に触れているんじゃないかな?
翻訳の品質に関してはお察しの通りで、意訳と言う名の逃げをしていますので読めたものではありません。しかし、何か知らんけど自信になってしまいました。点と点が繋がるというのか、ちょっとずつ引っ掛る部分が増えてきて、強くなって折れにくくなる、そんな気がしました。筋肉と同じで負荷をかけ続けないとすぐに戻ってしまうでしょうから、ここで英文と接するのを止めてしまってはいけませんね (^_^;)
以前に書いたように .git の objects に無駄に記録してしまったリダイレクト専用ファイルを削除するため、init からやり直しました。また、よくよく考えてみると .texi ファイルも不要でしたので tracking するのを止めました。どれだけ容量が小さくなるかな?
ちょっとした小細工をモバイル向けにしていたのですが、HTML 本体に手を加えずに CSS 側で対応できることがわかりました。見た目はセンスが必要なのでつらいです。
GNU sed で i オプションを使っていて、何か知らないけれど二重に置換されてしまう……と悩んでいました。原因は与える引数にあって、
sed -i -e 's/foo/bar/' hoge hoge
のように、inputfile, outputfile の感覚で引数を渡していたのでした。これだと同じファイルに対して 2 回処理しろ!ということになってしまいますよね?引数を 1 つだけにして解決しました。
Texinfo のインデックス要素には、コンセプト、関数、キーストローク、プログラム、データ型、変数の種類があるみたいです。マークアップを優先していたのですべてをコンセプトタグにしていたのですけれど、少しずつ分類をしていこうと思います。
それぞれどの分類にするのかは難しいものがあります。例えば 'e' は キーボードそのものなのか、キー入力のことなのか、edit コマンドのことなのか。各ページに方針的なものは書いたのですけれど、いまいちよくわからない。ぼちぼち進めていきます。
texi2any のオプションに --no-node-files
を渡すとリダイレクト専用ファイルは作られないことがわかりました!英文のマニュアルを読むのが苦痛にならなくなったのは、この作業をしてきたおかげだと思います。今でも苦手ですけど…… こちらも訳していこうかな?
エラーとワーニング用のタグを定義して分類するようにしました。マニュアルでは 2 桁と 3 桁の番号が振ってあるのですが、例えば E010 のように桁を揃えて欲しかったなと思います。Vim のパッチも以前は 1000 を超えることがなかったのに、ここ最近は余裕で超えているので、将来を見越して 4 桁で。
このメモ書きですが、当初は単純に「♪~~~♡」で区切っていました。しかし、文中に「1 年前」などの表現が出ているにもかかわらず、日付がないために時系列がよくわからないことになっていました。そのため、日付を書くことにしたのですが……
git log
の結果を参照しながら直していけばいいやと気軽に考えていたのですが、つい先日に git init
をし直したので、歴史が失われていたのでした (>_<) .objects の容量なんて気にしないでそのまま続けていれば良かったです。
このようなわけで、ここにある日付は日記を元に推定して付けられたものになります。それにしても、<dl> タグを使うのはいかがなものかと。
タグ付けの分類が面倒になり、原文の更新を反映するだけになっている昨今。更新があったので久しぶりに作業をすると、termguicolors で問題が……。
Vim のヘルプでは、|termguicolors| は 'termguicolors' に飛ぶようになっています。しかし Texinfo は融通が利かなくて、termguicolors ではなく 'termguicolors' と正しく指定しないとエラーになってしまうのでした。
アンカーにはビルドオプションの +termguicolors もあり、どちらに修正すれば良いのか考えましたが、上記にあるように 'termguicolors' とするのが妥当なようです。
3 日空けるとダメですね。毎日英文に触れないと♪
options.txt でテーブルを使って表現していた部分を、全角空白 (U+3000) と改行を使って表現することにしました (主に、文字列 (hoge の場合〜 fuga の場合〜) という部分で)。こういう形で整形することになり、正直悔しいです。
issue の件で思い出したことがあります。
このパクリマニュアルを作成する時に Note: や 'Note that' は気づく範囲ですべて quotation するようにしました。HTML では blockquote で出力されていると思います。Warning、Careful、警告、注意も同様にしましたが、特に統一することなくそのままマーク付けしてしまいました (優先順位が低かったこともあります)。
かつての自分は「できるだけ日本語を使おう!」という立場だったのですが、最近になって目印 (標語) になるようなものは英語そのままでも良い、いや逆にそちらの方が良いのではないかと思うようになりました。
理由は単純で「目立つから」です。今回のような場合ですと、ほとんどのものが文頭に置かれるので目立ちますが、例えば文中に警告や注意がある場合には文字の修飾が無ければ見過してしまいます。PDF 出力した際にこれを実感しました。白黒なんですもの。
英語が苦手で敵対意識が強かったのだと思います。殲滅してやるッ!それが作業を続けているうちに「うわっ…私の日本語の語彙力低すぎ…?」という認識になってしまうのですから面白いものです。
"earch" は "each" の typo かな?
eval.txt にあった option_restore({list}) と option_save({list}) が todo.txt に移動した関係で、リンクが動作しなくなってしまいました。というのも、todo.txt は作業していないため、アンカー (こういうやつ *option_restore()* ね) が存在せず、エラーになってしまうのです。そのためリンクを削除しました。
'termkey' は 'termwinkey' に変更されたのですが、windows.txt に 1 つ残っているのです。
本家の更新に追随するのは面倒ですね。
久しぶりに本家の更新があったので更新。いや本当に読み難い英語でつらいです。想定する読者が初心者ではないんですよね。
prompt_addtext() の被リンクが無くてエラーになる。
prompt_addtext() の被リンクは追加されず、deletebufline() というものが追加されました。
作業をしてくれる人が増えて良かった。
Vim 本家のものを vim ブランチにして、MacVim のものを master で管理することにしました。ここのページに表示されるのは MacVim 版のドキュメントということに。情報量が減っているわけではないので良いでしょう。
diff 先を MacVim の runtime/doc にして差分を翻訳。タイポを発見したので PR するかも。あと、|gui_macvim| のリンク先 (*gui_macvim*) が存在しないので texi2any をかけるとエラーになってしまうのですが……
os_win32.txt と os_dos.txt を追加したので、リンクすることのできないものが i_CTRL-B-gone と os_msdos.txt と qnx-terminal と gui_macvim だけになりました。先の 3 つは被リンクが他のファイルにあるからなのですが、最後のものは被リンクが存在していないのです。
コロンさんが hiwa 翻訳と言って茶化しているのを見て、これを思い出しました。
spell.txt と hebrew.txt に関する issue が 2012-08-16 に立ってから 6 年にもなろうとしています。コミュニティには 100 人以上が所属しているハズ (メンバーを抜けたので今は隠れていない 46 人しかわからない) なのですが、誰も手を付けていないのでした。
英語バリバリの環境で働いている人も居るので、その人達が作業をすればあっという間に終了してしまうのではないか?と思っていたのですが、誰しも興味がない・時間がないということでスルーしているというのが実際のところなのでしょう。
そもそも他者の時間の使い方について期待してはいけないでしょうし、得てして給与レベルも高いでしょうから、数万円/時もありそうな高価な時間を無償で振り分けてもらうなんて都合が良すぎるというものです。
となりますと、自分でやりなはれということになります。しかし、残念ながら自分にはその能力がない。出来る人を炊き付けて獲物を得ようとするしかないのです。釣りをしても坊主ばかりの自分なのに。
そびえ立つクソの山を提示すれば、それに感化された誰かが (・ω・)=つ≡つ シュバババッと……という計画は見通しが甘かったようです。呼び水にすらなっていない (´・ω・`)
また、なんだかんだでタカタさんに時間を使わせてしまうことになります。本家の人でもあるので、彼の時間を浪費させてしまうことは大きな損失になるのです。
でもまぁ、そういったことを計算できないコミュニティではないので、理由を添えて即座に斬り捨ててくれます (で先に進まないと)。やるだけのことはやりましょうということなのです。
なんだかいろいろと面倒になってしまい、投げ出してしまいました。
このプロジェクト自身の本家に対する更新作業は続けていたものの、Vim-jp による正しい日本語訳を取り込む作業、MacVim に対する更新作業、いろいろとあるので、間違ったブランチにコミットしてしまったりするのでした。もう手がまわりません。
複雑なことは続きません。単純であればこそ長く続けることができるのです。
Dyno 不足のため、一時的に GitHub Pages で運用をしていましたが、Traffic を見ても訪問者がいないことがわかり、また、自身が外出先で閲覧することがなくなったこともあり、再び Heroku での運用に切り替えることにしました。
半年ぶりかな?と思ったら 8 カ月も経っていました。
Vim 本家を追うのを止めて MacVim 一本に絞ることで作業の簡略化をはかることにしました。基本的に MacVim の方が本家よりも遅れて更新され、またこの間に日本語訳の作業が完了しているため、この成果をコピペするだけで良いのです。
上流に還元することもないため、gui_mac.txt のコミットもブランチを分ける必要がなくなりました。やはり単純化していないと継続することが困難ですよね。
5 月に大幅な更新があったようで、farsi や workshop が消え、「Vi にはない」という文言が削除されていました。もう Vi との違いを意識する時代ではないという判断なのかな?
更新量が膨大なため一気に最新版にできず、とりあえず Texinfo をかけた時に出てくる、リンク関係のエラーがなくなる程度まで更新しました。
やっと MacVim の最新ドキュメントに追い付くことができました。
MacVim のドキュメントの更新は常に Vim 本家のものよりも遅く、かつ Vim-jp のものよりも遅い、という状態でしたので、日本語訳は Vim-jp のものを写せば良かったのですが、ここにきて MacVim の方が先行するという状態になってしまいました。
仕方がないのでとりあえずの訳を自分でやりましたが、こうしてしまうと Vim-jp が更新された時に、再度日本語訳を修正しなければならなくなります。これは辛い。
実は現時点でも、わたし独自の訳になったままの部分が多数 (spell.txt とか) あるのです。これはマズい。
texi ファイル群と html ファイル群をひとつのプロジェクトにまとめることにしました。タグ付けが違うだけで、内容的にはほぼ同じものを .git/objects に入れるのはどうなの?って感じはしますが。
「内容的にはほぼ同じもの」というのは、元となる texis/、html の出力先である htmls/、旧字旧仮名に変換して GitHub で公開する docs/ の 3 ディレクトリのことなのですが、tracking しているのは texis/ と docs/ の 2 つです。旧字旧仮名に変換をしないのであれば html の出力先を docs/ にして簡潔にできるのですが、そこは趣味ということで...(いずれは消えゆく表記への哀愁)
これで何度目だ?という感じですが、GitHub で公開するにあたり、Heroku での公開を終了することにしました。理由は Dyno 不足です。デプロイすると起動時間が加算されるようで、頻繁にデプロイをしていたら現時点で「80% 使っちゃってるよ」とのメールが来てしまったのです。
終活の一環で残せそうなものは表に出しておこうかなという心境の変化もあります。もしかしたら興味を持つ人がいるかもしれませんから。
example でタグ付けしている部分を verbatim に変更しています。Texinfo では '@', '{', '}' が特別な文字でして、本文中にこれらが出てくる場合は '@' でエスケープしないといけないのです。Vim は '@' や '{' などがコマンドであったり、引数を表わす一部 ({expr} とか) として頻繁に出てくるので、タグ付けとの相性が悪いのでした。verbatim でタグ付けをすると HTML には pre として出力されるので、'@' でエスケープする作業が若干減るのです (パースする時に Texinfo が無視してくれるようになるのかな?)。ちなみに example は div。
リポジトリを GitHub に置きました。
index.texi の文体を常体から敬体に変更しました。
オフトピですが macvim-dev に投げた typo の PR が merge されたので、とても嬉しいのです!
message.texi の文体を常体から敬体に変更しました。
usr_41.texi の @verbatim タグ内に残っていた '@{' を '{' に修正しました。これは他の texi に残っていそうですが、気づいた時に都度修正していく方針で。
コンビネーションによるキー入力を @kbd タグにしていて、これは CSS でピンク色にしていました。これを @key タグと同じように border で囲むようにしました。デザイン力が乏しいので辛いです。
デザイン力ということで、texi2any が出力するタグで良く使うものを抜き出してみました。
@chapter | <h2 class="chapter"> |
@section | <h3 class="section"> |
@subsection | <h4 class="subsection"> |
@subsubsection | <h4 class="subsubsection"> |
@quotation | <blockquote><p> |
@verbatim | <pre class="verbatim"> |
@display | <div class="display"><pre class="display"> |
@example | <div class="example"><pre class="example"> |
@format | <div class="format"><pre class="format"> |
@flushleft | <p align="left"> |
@flushright | <p align="right"> |
quotation
verbatim
display
example
format
left
right
@code{} | <code> | code |
@env{} | <code> | env |
@command{} | <code> | command |
@kbd{} | <kbd> | kbd |
@key{} | <tt class="key"> <code class="tt-key"> |
key |
@samp{} | <samp> | samp |
@option{} | <samp> | option |
@file{} | <samp> | file |
@var{} | <var> | var |
@strong{} | <strong> | strong |
@display, @example, @format については div + pre タグなので指定するのが面倒な感じ。実質 @display しか使っていないので、これだけに集中すると。
@code, @env, @command が code へ、@samp, @option, @file が samp へと同じタグに出力されてしまうのが何とも。細かく分けることができればそれだけ装飾も凝ることができますが、それだと逆に面倒かもしれません。
quotes.texi の文体を常体から敬体に変更しました。
starting.texi の文体を常体から敬体に変更しました。
クイックフィックスを quickfix に、EX を Ex に変更しました。
editing.texi の文体を常体から敬体に変更しました。
scroll.texi の文体を常体から敬体に変更しました。
insert.texi の文体を常体から敬体に変更しました。
Vim 8.2 がリリースされたとのことでマニュアルを本家に追随する作業をはじめました。本家といっても自分が見ているのは MacVim なのですが、こちらはまだ 8.2 にはアップデートされていない様子。
4 カ月くらい放置していたので変更個所が多くて大変です。
土日に作業をして残りは eval.texi になりました。毎回 eval が最後まで残っているような気がします。ざっと見て変更量が多いので後回しにしてしまうのでしょうね。これが仕事であったのなら「大変なものから先に片付ける」のですけど、誰の目にも入らない自己満足なものなので好きにやっています。モチベーションが長く続かないタイプなので、やる気のあるうちに数(ファイル数)をこなしておきたいのです。
やっと eval.texi が終わりました。なんだかんだで一週間もかかってしまいました。単なるパクリのコピペだと単調な作業が続くので、たまにある未訳や不整合部分がでてくると気分転換になって良いですね。
作業中に気づいた不整合部分は紙にメモしているのですけれど、Git に慣れていないのでプルリクの作成とか面倒ですし、上流に還元できていないのでいけませんね。本家に Reduction しなくちゃ、利用ではなく単なる窃盗になってしまう。
若い子たちがいろいろと活動しているのを見て、おっちゃんもまだまだやれるんやでって刺激を受けてもうたわ。
repeat.texi の文体を常体から敬体に変更しました。