Open2

Copilot Workspace でドキュメントを翻訳するのと継続的にアップデートする

まちゅけんまちゅけん

Copilot Workspace でドキュメントを翻訳する

astral-sh/uv のドキュメントを日本語に翻訳してみました。

https://mtkn1.github.io/uv/

テクニカルプレビューのアクセス権を付与された Copilot Workspace に指示をして Markdown ファイルを翻訳して貰いました。

https://githubnext.com/projects/copilot-workspace/

Copilot はプログラミングの副操縦士だけではなく、翻訳タスクまでこなしてくれるんです!

指示のやり方は至って簡単で、対象のプロジェクトを Fork して Copilot Workspace に自然言語で「docs 配下の Markdown ファイルを日本語に翻訳して」と言う旨のタスクを投げるだけです。 私は以下のプロンプトを使いました:

Translate Markdown files under the `docs` directory into Japanese.

タスクを実行するとどんどんファイルが翻訳されていきます:

日本語訳版サイトを公開するには、GitHub Pages にデプロイする GitHub Actions のワークフローを追加します。 今回の UV はドキュメントは Mkdocs によって書かれているので、Mkdocs のやり方に則った CI を追加することで自分の GitHub Pages に公開できます。 一連の作業はこちらのリポジトリにあります:

https://github.com/MtkN1/uv/tree/japanese

翻訳は Copilot 本来の (?) タスクではないのかもしれないのですが、Copilot Workspace は凄まじい仕事能力がある感じました...! 従来の GitHub Copilot は「ファイル内の数行 (クラスや関数など)」に対して自然言語による指示が可能だったのですが、Copilot Workspace は「ファイル単位、リポジトリ全体」に対して指示が可能です。 いよいよプログラマーだけでなく簡単な翻訳の仕事もなくなっていくのでは...? と感じた次第です。

まちゅけんまちゅけん

ドキュメントを継続的にアップデートする

UV は開発が活発で、ドキュメントも頻繁に更新されます。 翻訳版も One-shot なものではなく、できれば本家に併せて更新したいと思っています。 つまるところは Markdown ファイルの更新を本家とマージして変更部分を追加翻訳する必要があり、それは中々面倒です。

ちょうどそのようなワークフローに対するソリューションを解説している Zenn 記事がありました。 React の日本語訳チームの方が書かれていて、人気を博している記事です:

https://zenn.dev/smikitky/articles/0d250f7367eda9

記事では BOT で定期的にチェックアウトした upstream に日本語訳をマージして、ドキュメントのコンフリクトがあればコンフリクトマーカーごとコミットして Pull Request を出す、という戦略をとっているようです。

ただ、手作業で行っている翻訳には良さそうなソリューションなものの、Copilot Workspace の力を借りている場合であれば 変更があったファイルを再度全文翻訳する 方が手っ取り早いかもしれません。 既存の訳が再生成によってズレてしまうかもしれないけど、個人的には AI 翻訳した公開物にはそこまで厳密には考えていないので良しとします。

なのでワークフローを整理すると:

  1. UV の新しいリリースが発行される
  2. 最新リリースと翻訳済みリリースの docs 配下のファイル差分を調べる
  3. 最新リリースに翻訳済みリリースをマージする
  4. マージ後、調べた差分で Add か Modify があったファイルを原文にリストアする
  5. リストアしたファイルを対象に Copilot Workspace で翻訳する

これで行単位のマージとかを考える必要なく、ファイル単位で翻訳指示するだけになります。

これを GitHub Actions で BOT 化するのを検討したいです。