Angular日本語化プロジェクトへの参加と、翻訳時に意識したこと

nozomi yonezawa
nextbeat-engineering
8 min readMar 16, 2021

はじめに

ネクストビートのエンジニアの米澤です。宿泊業界特化の人材紹介サービス「おもてなしHR」の開発に携わっています。

突然ですが、先日Angular日本語化プロジェクトに参加し、OSSコントリビューターデビューしました 🎉

Angular日本語化プロジェクトとは、Angular公式ドキュメント(英語)を日本語に翻訳する取り組みです。
今回私は、「OSSにコントリビュートしてみたい!」「英語力を鍛えたい!」「自分がよくみるページを日本語化したい!」という、一石三鳥を狙って参加しました。

そこでこの記事では、プロジェクトへの参加方法と、翻訳時に意識したことを紹介したいと思います。

Angular日本語化プロジェクトへのコントリビュート方法

大まかな作業の流れを、実際にやってみた所感を交えて紹介します。 最新の手順は、angular-jaの「angular-jaへのコントリビューション」を参照してください。

1. Issue作成

Issuesページから、同じページを翻訳しようとしている人が他にいないか確認します。問題なければ、Issueを立てて翻訳宣言をします。

未翻訳ドキュメントの翻訳する場合は、以下からページを選ぶことができます。

今回私は、翻訳者募集中ページの中だった「フォームバリデーション」のページを翻訳しました。選んだ理由は、フォームバリデーションは重要そうなセクションだと思ったのと、私自身が今後もまだまだこのページを参照すると思ったからです。

Angularドキュメント内の未翻訳ページを訳す場合は、ドキュメントのローカルナビゲーションからも対象ページを探すことができます。「🇯🇵」マークがついていないものが、未翻訳ページです。

2. ローカル環境構築・翻訳

angular-jaリポジトリをcloneして、ローカル環境を構築します。このリポジトリは、翻訳元リポジトリのサブディレクトリとしてsubmodule管理されていて、ローカルで画面表示を確認しながら翻訳作業をすることができます。

Pull Request提出時にGitHub Actionsで表記揺れのチェックが入るので、あらかじめ表記ルールに目を通しておくと作業がスムーズかと思います。私は数ヵ所チェックに引っかかったので修正が必要でした。

4. Pull Request提出

angular-jaリポジトリをforkして、Pull Requestを提出します。

初めてGoogleのオープンソースプロジェクトに参加する場合は、Contributor License Agreement (CLA)へのサインが必要です。これは、ざっくり言うと「Googleがコミッターのコントリビュートを利用・配布する許可をする」目的のドキュメントです。
あらかじめ登録しておくか、Pull Request時にGoogleのbotから送られてくるコメントから登録できます。よく読んでからサインしましょう。

Pull Requestの内容は、運営の方がレビューをしてくださいます。必要があれば、指示にしたがって修正していきます。

5. Mergeされる

レビュー後問題なければ、運営の方がPull Requestをマージしてくださいます。

angular-jaリポジトリの「クレジット」や「Insight」に自分のGitHubアイコンが表示されます。自分の作業が役に立ったと思うと嬉しいですね!

翻訳時に意識したこと

ここからは、私が翻訳時に意識したことを紹介します。

「英語力を鍛えたい!」という目的もあったので、機械翻訳にはなるべく頼らずに翻訳をしました。そこで意識したのは、「1. 直訳して文の大枠を掴む」「2. 前後の流れにあった日本語に直す」という2工程に分けて作業することです。

詳細を、入力フォームのバリデーションページの原文に登場する以下の文を例にして説明します。

In the following example, an async validator ensures that heroes pick an alter ego that is not already taken.
引用元:
https://angular.io/guide/form-validation

1. 直訳して文の大枠を掴む

はじめに、文章の大枠を掴むためにざっと直訳します。慣れないうちは、文節で区切って訳した後に、日本語として意味の通る文章に並び替えるとスムーズかもしれません。

// 文節に区切りを入れる
In the following example, / an async validator / ensures that
/ heroes / pick / an alter ego / that is not already taken.
// 文節ごとに訳す
次のサンプルでは / 非同期バリデーターは / 保証する
/ ヒーロー達 / 選ぶ / 分身 / まだ取得されていない
// 意味の通る日本語に並び替える
次のサンプルでは、非同期バリデーターはヒーロー達がまだ取得されていない分身を選ぶことを保証します。

ちなみに、私は英文を読むときもたいていこの文節ごとに意味を捉える方法で読んでいます。 知らない単語は都度調べますが、覚えていないかつ頻出単語ほど繰り返し調べることになるので、「あっ!これ見たことある😊」という単語が増えて自然と覚えていきます。

単語や短い文を調べる時には、Chrome Extensionの「Google翻訳」がササッと使えてお勧めです。調べたい箇所をマウスで選択すると、以下のように訳がポップアップ表示されます。

2. 前後の流れに合った日本語に直す

何となく意味が掴めたら、次はより日本語らしい自然な文章に直します。

先程の文章の違和感の主な原因は「分身」の部分かと思います。

まず、今回は文章の一部を切り出しているので、この文章に関連する流れを説明します。 この文章の前段階で、「フォーム入力されるヒーロー名の値が、あるプロパティと同じ値になってはいけない場合のバリデーション」の説明がありました。この説明部分のサンプルコードで、「あるプロパティ」は「alterEgo(分身)」と表現されています。 「In the following example」は、この文章の続きにあるサンプルコードを指しています。このコード内でも、「isAlterEgoTaken」「uniqueAlterEgo」として「alterEgo」が登場します。

これで「分身」の意味がわかりました。コード内で使用されているので、日本語やカタカナに直すよりも、そのまま「alter ego」とした方が、わかりやすそうです。

次のサンプルでは、非同期バリデーターはヒーロー達がまだ取得されていないalter egoを選ぶことを保証します。

これにもう少し手を加えて、最終的に私は以下のように訳しました。

次のサンプルでは、非同期バリデーターはヒーローがまだ選ばれていないalter egoを選択するようにしています。

慣れてきたら

文節で区切る工程を飛ばして意味の通る日本語に直す、初めから前後の流れに合った文章に訳す、というように、徐々に工程をスキップすると、無理なくスピードアップできるかと思います。

おわりに

OSSコントリビュートというとバグ修正のイメージがあり、敷居が高く感じていました。しかし今回で、ドキュメント整備やOpen Issueの質問に答えたりと、色々な形のコントリビュート方法があると知り、色々挑戦してみたくなりました。
また、翻訳はインプット(読む)とアウトプット(書く)を同時に行うので、ボキャブラリーを増やすには良い方法だな、と思いました。英語の技術記事を英語のまま理解できるようになりたいな〜と密かに思っているので、今後もゆるく技術英語の語彙を増やしていきたいです。

最後まで読んでいただきありがとうございました!

--

--