CursorにHAProxyのマニュアルを翻訳してもらう
HAProxyの設定マニュアルを、Cursorに日本語翻訳してもらいました。
背景
お仕事でHAProxyを使うことにしたので、設定マニュアルを探したら33万行のHTMLファイルが見つかりました。長い……。
英語が不自由なので、LLMに日本語翻訳してもらおうと思います。
作業には Cursor を利用します。このところは、Java開発、Typescript開発、Python開発、文書作成をCursorで片付けています。技術領域ごとにProfileを分け、拡張やMCPを分けると混乱が少なくて便利です。Proプランを契約していますが、十二分に元が取れています。Github Copilotも年間契約していますが、素のVSCodeはほとんど使わなくなりました。
方針
当然、この膨大なドキュメントはLLMのコンテキストに収まりません。分割して作業してもらいます。
まず分割ツールを作成してもらい、入力ファイルを分割します。
分割したファイル毎に翻訳作業をLLMに依頼し、章、節毎にMarkdownファイルに出力してもらいます。
最後にMarkdownファイルを結合したら出来上がりです。
この手順では、他の文書との相関や整合性は考慮できません。項目ごとに独立した技術文書だから成立する手法かも知れません。
分割ツール開発
以下のような requirements.md
を作成します。
自分で考えたのは、この区切りを識別する正規表現くらいです。
# 要求
## 機能要求
- 1つのHTMLファイルを `/" href="#([0-9][0-9]*\.*[0-9]*)"/` という正規表現のキーワードがある行を境に、複数のHTMLに分割する
- 分割したファイルは、元のファイル名に正規表現中の `([0-9][0-9]*\.*[0-9]*)"` の部分を付加したファイル名のHTMLファイルに出力する
- ファイル先頭から最初のキーワードの行が現れるまでは `.0` を付加したHTMLファイルに出力する
- 分割したファイルは HTML としてのバリデーションは行わず、単純に行単位で分割する
## 非機能要件
- Spring bootアプリケーションとして実装する
- AppricationRunnerとして作成し、引数でファイル名を指定する
## サンプルデータ
- data/configuration.html
74ファイルに分割される想定
Cursorにチャットから以下のように依頼します。
@requirements.md
を確認してアプリケーションを作成してください。
数分でプログラムが作成されます。簡単なプログラムなので直すところもありません。
このプログラムでHTMLファイルを74分割しました。
翻訳作業
各章の先頭ファイルについて、Cursorに以下のように依頼します。
@configuration.1.html
このファイルの内容を日本語に翻訳し、Markdown形式で configuration-ja.xx.00.md に出力してください。xの部分はファイル名末尾の数字をゼロサプレスしない2桁で作成してください。先頭行の見出しは## x.
に続けて章タイトルを出力してください。省タイトルの数字はゼロサプレスしてください。要約せず、すべての内容を翻訳してください。である調で統一してください。元のHTML文書が100行を超える場合は、100行ごとに分割して読み取り、訳文を追記していってください。
configuration-ja.01.00.md
というファイルを作ってくれました。
続いて、各節のファイルについて、Cursorに以下のように依頼します。
@configuration.1.1.html
@configuration.1.2.html
@configuration.1.3.html
@configuration.1.4.html
これらのファイルの内容を日本語に翻訳し、Markdown形式で configuration-ja.xx.xx.md に出力してください。xx.xxの部分はファイル名末尾の数字をゼロサプレスしない2桁で作成してください。先頭行の見出しは### x.x
に続けて章タイトルを出力してください。省タイトルの数字はゼロサプレスしてください。要約せず、すべての内容を翻訳してください。である調で統一してください。元のHTML文書が100行を超える場合は、100行ごとに分割して読み取り、訳文を追記していってください。
configuration-ja.01.01.md
configuration-ja.01.02.md
configuration-ja.01.03.md
configuration-ja.01.04.md
というファイルを作ってくれました。ゼロサプレスしないよう指示しているのは後のCATで手抜きするためです。
作業結果に間違いがないか確認しながら、14章まで繰り返します。各作業は独立しているので、チャットも分ければ負荷が減ります。
結合
Markdown形式はネスト構造がないので、単純に結合するだけで完成します。
> cat configuration-ja.*.md > configuration-ja.md
HAProxyのプロジェクトはGNU v2ライセンスなので、先頭にその旨のライセンス標記をつけたら完成です。半日で完了しました。
成果物
まとめ
‐ 技術マニュアルは内容の独立性が高く、章ごとに分割しても整合性は高いので、大きなファイルでも分割してLLMに翻訳させられます。