半年間WebGL系の翻訳作業してみた

この記事は[Web グラフィックス Advent Calendar 2020](https://qiita.com/advent-calendar/2020/webgraphics)の23日目の記事です。
以前からWebGL系のOSS活動を何かしたいと思っていたので、英語スキルUPも兼ねて翻訳作業に取り組んでみました。

# 何を翻訳したの？
Three.js Fundamentalsの記事を21ページ、WebGL2 Fundamentalsの記事を7ページ翻訳しました。

- [Three.js Fundamentals](https://threejsfundamentals.org/threejs/lessons/ja/) (全部で42ページ。27ページ翻訳済み）
![スクリーンショット 2020-12-22 9.59.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15028/4e97c7cc-dbdb-f47c-5d78-e1e9c1eef64b.png)

- [WebGL2 Fundamentals](https://webgl2fundamentals.org/webgl/lessons/ja/)（全部で77ページ。7ページ翻訳済み）
![スクリーンショット 2020-12-22 9.59.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15028/9d366caf-3997-9078-8d33-f5da45efd480.png)


翻訳作業はほぼ週末だけですが、毎週1ページを目標に半年ぐらい続けてます。
![スクリーンショット 2020-12-20 19.57.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15028/5b1fe756-5ed9-2a5c-3a50-bd009a6c35fb.png)
1ページのボリュームが結構多いので最初は1ページ8hぐらいかかってましたが、最近は4hぐらいでPRできるようになりました。
始めは1人でやろうと思ってましたが、基礎編の翻訳を手伝ってくれた[NayuTS](https://github.com/tasotasoso)さん、ありがとうございます！

## Three.js Fundamentalsを選んだ理由
#### Three.jsの最新バージョンに追随してる

[threejsfundamentalsのpackage.json](https://github.com/gfxfundamentals/threejsfundamentals/blob/master/package.json)を見ると分かりますが、最新のThree.jsバージョンを追随しており最新版でも動作するように定期的に更新されてます（Three.jsの最新はr123で、今はr122で止まってますが）


#### 連載が完了しており、今後は大きな修正が少ない
始めは[Three.jsの本家ドキュメントのintroduction](https://github.com/mrdoob/three.js/tree/dev/docs/manual/en)を翻訳しようかと思いましたが、更新が少し頻繁なので変更が少ない所で始めたかった。


#### 内容が初級〜中級向け。失敗例や応用事例もあって学びが多そう
今年の始めはモダンなThree.js環境を把握したかったので、チュートリアルをいくつかやっていました。
自分の場合は日本語版はics.mediaとwatabo_shiさんの記事がとても分かりやすかったです。
Three.js Tutorialsは英語ですが、Three.js & TypeScriptでこれも良いチュートリアルだと思います（一部node_modulesの内部を変更していて「まじか！？」と思いましたが）

- [ics.media Three.js入門サイト](https://ics.media/tutorial-three/)
- [three.js超入門 第1回 レンダリングまでの流れ](https://qiita.com/watabo_shi/items/bf9bcd4569b6d480c608)
- [Three.js Tutorials](https://sbcode.net/threejs/dat-gui/)

そしてある日、Three.jsフォーラムでThree.js Fundamentalsも知りました。
基礎やTips、最適化やWebVRのノウハウが載っていて学びが多そうに感じました。

## Three.js Fundamentalsから一部ページを紹介
基礎編の[プリミティブのページ](https://threejsfundamentals.org/threejs/lessons/ja/threejs-primitives.html)では、プリミティブが一覧表示で見れたりライブ編集できたり凄く分かりやすいページになっています。
Three.jsのdocsページでもライブ編集できますが、プリミティブ一覧はなかったと思います。
![Dec-22-2020 22-32-54-min.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15028/f0ff0181-585c-a06e-b3df-0e2a0ebca6c3.gif)

[GLTFファイルを読み込むページ](https://threejsfundamentals.org/threejs/lessons/ja/threejs-load-gltf.html)では、blenderを活用したり街を走らせるために失敗例からの試行錯誤の解決策があったりで楽しんで翻訳できました（画像は車を道路の角で曲がろうとして3Dモデルの作りが微妙で失敗した例）
![Dec-22-2020 22-32-45-min.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15028/52a3be2f-047d-cb1d-9607-b1d066a7a0d5.gif)



## 翻訳の仕方
全文をスラスラと訳せるスキルはないので、翻訳は[DeepL](https://www.deepl.com/ja/translator)を使ってます。
Three.js Fundamentalsは1ページごとのMarkDownファイルで、以下のような手順でローカルのWebサーバーで翻訳したサイトが見れます。
1. [Three.js Fundamentals](https://github.com/gfxfundamentals/threejsfundamentals)を`git pull`
2.  `npm install` 
3.  `npm run watch` 
4.  `npm run start` 

DeepLで訳された日本語と原文の英語を見比べて、自分の解釈を含めて何度か見直して翻訳してます。
3D用語の翻訳は、materialは材質、varyingは変幻自在、uniformは一様や一定に翻訳されて意味がわからないので、日本訳が難しいものはカタカナ（英語）にしてます。
日本語のレビューアーはいないのでセルフチェックです。PRすると1日以内にマージされます。

## 最後に
WebGLを学ぶ誰かの役に立つと思い続けてるので、気になる記事があればぜひ読んでみて下さい😄
意味が分からない所があれば、ぜひ気軽に翻訳PRを出してもらえると助かります！

### 2021/12/06追記
翻訳した記事はthreejs.orgの方に統合されてました（タイトルの翻訳がバグってますが）
https://threejs.org/manual/#ja/fundamentals