16
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TensorFlow2.0Advent Calendar 2019

Day 16

TensorFlow2.0ドキュメントを翻訳してTF2.0Contributorになろう

Last updated at Posted at 2019-12-15

はじめに

Tensorflow2.0では誰しもがお世話になるであろうこの公式TutorialGuide
実はこれらもOSSで作られたドキュメントで、
本家英語のGuideもそうですが、
たまに日本語の文章が出てくるものもOSSで作られたGuideだったりします。
みなさんも参加してみてはいかがでしょうか?

参加方法

TFUGSlackに参加する

logo_big.png

まず、TFUGコミュニティに参加しましょう!!
基本的にそこで情報交換されるため、参加して色々と教えてもらいましょう。

READMEとCONTRIBUTINGを読む

翻訳する前にはこちら
README.mdとCONTRIBUTING.mdを必ず読むようにお願いします。

基本的なPullRequest手順

DocsをForkする

スクリーンショット 2019-12-14 15.16.32.png

TensorFlow/docsをForkして自分の配下のレポジトリにします。

翻訳されていない物を探す

TensorFlow/docsをgit cloneして、以下のコマンドを叩くと何が足りてないかわかります。

diff ~/docs/site/en/guide ~/docs/site/ja/guide | grep en
結果
en/guide のみに存在: _graph_optimization.ipynb
en/guide のみに存在: _index.yaml
en/guide のみに存在: _toc.yaml
en/guide のみに存在: checkpoint.ipynb
en/guide のみに存在: create_op.md
en/guide のみに存在: data.ipynb
en/guide のみに存在: data_performance.ipynb
en/guide のみに存在: distributed_training.ipynb
ファイル en/guide/eager.ipynb と ja/guide/eager.ipynb は異なります
en/guide のみに存在: effective_tf2.md
en/guide のみに存在: estimator.ipynb
ファイル en/guide/function.ipynb と ja/guide/function.ipynb は異なります
en/guide のみに存在: gpu.ipynb
en/guide のみに存在: images
en/guide のみに存在: keras
en/guide のみに存在: migrate.ipynb
en/guide のみに存在: ragged_tensor.ipynb
en/guide のみに存在: saved_model.ipynb
en/guide のみに存在: tensor.md
en/guide のみに存在: upgrade.ipynb
en/guide のみに存在: variable.md
en/guide のみに存在: versions.md

それでいてかつ、PullRequestが出ていない物をみていきます。

PullRequests

これで、まだ誰も翻訳していない物がわかるはずです。

手をつけることをSlackに報告しましょう

Slack報告

ここで、誰かやっているなら、声をあげてくれますし、ダブって同じところをやってた...みたいなことはないはずです。
(過去のSlackをみて、やっている人が発言しているのもみるのもいいですね。)

ブランチを切る

まずはブランチを切りましょう。
Forkしたレポジトリのbranchをクリックします

Branchボタン

これをクリックして、検索欄に新しく作成するブランチ名を書き込むと、ブランチ作成ボタンが出現します。

createBranchボタン

命名規則的には、[Auther]_[folder_name]_[filename]と行った感じで書けば大丈夫です。
今回は[shamoji]が[ja_guide]の[ragged_tensor]っていう.ipynbファイルを編集するのでこう書きます。

Forkしたレポジトリで、jaフォルダに.ipynbデータを写す

単純なことですがやりがちなのが、en/フォルダにあるデータを直で書き込んでしまうことです。
これだと差分が分かりにくくなるので、まず先にja/フォルダの同じ場所にコピーしましょう。

移動方法には二つ方法があって、

  • enフォルダにある翻訳対象の.ipynbファイルをダウンロードし、jaフォルダの同じ場所にアップロード&commitする
  • ForkしたレポジトリをCloneしてcpしてCommitする(めんどい)
    があります。後者は面倒なのでおすすめしません。

移動先のjaフォルダの.ipynbをColab上でみる

Commitが済みました段階で、.ipynbをColabで読んでみます。
GoogleColabratoryは差分もよくみれるので、翻訳では基本これを使って翻訳していきますし、レビューもします。

まず、Colabを開きます。
そのあと、「ファイル」から、「ノートブックを開く」を選択しましょう。

ノートブックを開く

すると、直近でみてたNotebookたちの一覧が出てきます。ここで、右上のGitHubを選択します。

GitHubボタンを選択

GitHubのURLの入力を求められるので、ForkしたレポジトリTopのURLを載せましょう。

URLを選択

それで、先ほど作成したブランチを選択して、頑張って翻訳対象のファイルを探して見つけます。

ブランチの選択

クリックすることで、ページが開けて編集できる状態になりました。
これで、翻訳の準備は完了しました。

翻訳する

どんどん翻訳していきましょう。

翻訳後

PullRequestを出す

全て翻訳し終わったら、PullRequestを出してReviewをしてもらいましょう。
誰かが言ってましたが、翻訳Reviewは再翻訳するのとほとんど同じくらい大変な作業なので、
それを踏まえて、ちゃんとしっかりした物を作ってReviewをお願いしましょう。
(自分もやらかしました、ごめんなさい)

実際にPullRequestを出してみましょう。
GitHubのWebUI上に、PullRequest出してみませんか?っていう黄色い物が出てきます。
それを押して、PullRequest発行画面に移ります。
(画像が出せなくて申し訳ない...)

tensorflow/docs master← [自分のID]/docs [自分の作ったブランチ]であることを確かめ、
タイトルには先人たちに習って、先頭にJA: Addをつけて、ファイルパス全てを書きます。
とりあえず検索用にJA:が付いていれば検索できるので、
それだけ忘れなければ分かるように書いていただければと思います。

CLAサイン

PullRequestが出されると、GoogleからContributingに必要な法的サインを求めてきます。
内容は著作権に関すること、再配布、修正などに関すること、何かまずいことがあった時のこと(訴訟関連)
などなど、様々な法的なことに関しての承諾サインを求めてきます。
詳しくは本文をじっっくり読んでサインすることをおすすめします。
これにサインしないと基本的にContributeは認められないので、注意が必要です。(CIで自動で❌がつきます)

ここまでがPullRequestまでの流れです。

あとはreviewを英語ベースでじっくりしてもらったあと、
LGTMが出ればマージ可能となりますので、マージしましょう。
(不用意にLGTMは打たないようにしましょう。
reviewer以外でもすぐにマージ可能になってしまいますので、気をつけてください)

翻訳する上での注意点

基本的に自由な翻訳活動ですが、結構翻訳にもルールが存在していて、結構罠にハマります。

翻訳せずにそのまま使う単語

こちらを参考にしてもらえると、翻訳しないでそのままにすべき単語がいくつか載っています

校正ツール

TFUGではRedpenを使用して校正に取り組んでいます。
PullRequestではRedpenを使用して校正してから出しましょう。
こちらにあります

項ごとにCommitを心がける

こうするとぱっと見でなにを訳したのかわかりやすいです。

Colabで差分を見やすくしておく。

基本的にMarkDownでは ダブルスペースが改行扱いになります。
Colab上で勝手に改行されるからとダラダラ長い文章を\nなしで投稿するとColab上、差分が見辛いです。
そこらへんもReviewerに配慮して翻訳してみましょう。

基本的に全てを翻訳すること。

意訳で書いて、ここも伝わるっしょ〜ってすっぽ抜かすと、reviewerはちゃんと指摘してきます。
本文に書いてあることは全て翻訳するのが原則です。

なにここわからん。って思ったらreviewerに投げてみるのも手

結局100%完璧な翻訳を目指そうとすると時間だけが溶けていきますので、自分は(??)マークをつけて
Reviewerの方に相談しちゃいます。そうすると途中で心が折れるなんてことは無くなります。
雑な仕事は嫌われますが、パーフェクトまでも求められてはいません。
Done is better than perfectでいきましょう。

迷ったらとりあえずSlackに投げてみよう!

ここどうすればいいかわからない...といった時はSlackに聞いてみるのも手です。
様々に情報を持ってきてくれます。
ただし、その度に負担がかかっているというのは承知の上で聞きましょう。

Contributorになるといい事

###俺、TF2.0Contributorなんだぜ!!

って言えます。(若林:「でもそれ翻訳なんですけどね」)
ただそれだけですけども、結構自慢できるんじゃないでしょうか。

それ以外にいい事

基本的に翻訳した分野はめっちゃ詳しくなります。
翻訳は読むことよりもさらに深く読み込むことになりますので、
わからない分野ほどチャレンジして翻訳をしてみるということが大事だったりします。
それに、解釈がわからない部分をreviewerに教えてもらえるチャンスもあります。
そうすることで、理解が一層深まるため、おすすめです。

おわりに

自分が翻訳すれば、TFワ"ガ"ラ"ン"となってる人も自分の力で解決できると思うと素敵じゃないですか?
自分は翻訳することで、レベルが上がるしContributorになれるのでハッピー!
Reviewerさんもそこまで労力かけずとも内容理解が深まる+Contributeできるのでハッピー!
翻訳されたDocumentを読んでTF完全理解した人が増えてハッピー!
みんなTFを使い始めてGoogleもハッピー!といいこと尽くしでしょう。

ぜひ、翻訳やってみませんか?人手は足りない一方なので、何卒よろしくお願いします!
Enjoy翻訳Life!

16
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?