CakePHP3の公式ドキュメントをVagrant環境で翻訳する方法

2015年の CakeFest in New York に参加して、オープンソースの素晴らしさを感じました。そこで、普段利用しているCakePHPに対して何か貢献できないかと思い、CakePHPの公式ドキュメントの翻訳を始めました。
以下は翻訳素人の私が、CakePHPの翻訳をされていた方たちの力を借りてまとめたものになります。また、翻訳のメンバーは積極的に募集中ですので、ご興味のある方はお問い合わせよりご連絡ください。

翻訳する環境の準備

以下はMacでの環境準備になります。Windowsの場合はよく分かりませんが、翻訳会のメンバーであり、いつも助けてくれる方はWindowsで翻訳していますので、不明点はご連絡ください。相談してみます。

github.comでフォークする

以下のリポジトリから自分のアカウントにフォークします。フォークすることで翻訳をした時に管理する自分のリポジトリが準備できました。

CakePHP3公式リポジトリ

フォークしたリポジトリと作成済みのVagrantファイルを clone する

自分が翻訳用に使用するディレクトリを作成し、そこに clone します。こちらのREADME.mdで説明されていますが、念のため手順を記します。

mkdir ~/htdocs/cakephp3doc
cd ~/htdocs/cakephp3doc
git clone 'https://github.com/自分のアカウント/docs'
git clone 'https://github.com/waterada/cakephp_docs_vagrant'

Vagrantfileの内容を修正して vagrant up する

cakephp_docs_vagrantディレクトリが作成されるので、その中の Vagrantfile の内容を修正します。私は Finder から該当のファイルを見つけ、ダブルクリックして標準のエディタで編集をしました。

#修正する箇所
config.vm.synced_folder "/path/to/your/cakephp/docs", "/forked_docs"

#修正内容
config.vm.synced_folder "/Users/ユーザ名/htdocs/cakephp3doc/docs", "/forked_docs"

パスの指定に ~/htdocs/cakephp3doc/docs とした場合はうまく動きませんでした。念のため絶対パスで記述されることをお勧めします。修正が完了したら以下ディレクトリに移動して vagrant up してください。

cd ~/htdocs/cakephp3doc/cakephp_docs_vagrant
vagrant up

vagrant up で vbguest に関するエラーが発生した場合、ゲスト側とホスト側のバージョンの差が原因として挙げられます。VagrantFile 内、vbguest の auto update を有効化して試してみてください。

# config.vbguest.auto_update = false

コミュニティーへの連絡

まだまだ CakePHP3 は未着手のものが多いので、まずは翻訳前のものを着手いただけると助かります。以下のグループと公式リポジトリを参考にして、翻訳未着手でこれから翻訳したいものを決めます。

CakePHP Slack グループ: https://cakesf.slack.com/archives/C1FT02VQA
翻訳会グループ: https://www.facebook.com/groups/transcake/

翻訳するページが確定すれば、それをCakePHP の Slack グループか Facebook 翻訳会グループに宣言してください。これをしないと複数人が同時で翻訳を行ってしまい、気づけば本家に反映されてせっかくの貢献が無駄になることがあります。

翻訳の開始

ブランチの作成

フォーク & clone してきたリポジトリから、翻訳用にブランチを作成します。 master で作業しないようにご注意ください。気持ちがはやると忘れてしまうので、ブランチを作成したことを確認してから翻訳を開始します。なお、2015年12月2日の時点で CakePHP3 系は 3.0 ブランチで進められています。私はこれをチェックアウトして、 3.0 ブランチで翻訳をおこなっています。

翻訳対象ファイルを見つける

翻訳ファイルの拡張子は .rst です。例えば以下はページ URL に該当するファイルになります。テキストエディタ等でファイルを開き、思う存分翻訳を行ってください。

# 翻訳対象 URL
'http://book.cakephp.org/3.0/ja/orm.html'

# 該当ファイル
~/htdocs/cakephp3doc/docs/ja/orm.rst

翻訳中のTips

こまめに commit / push

最低でも1日の作業の終わりには commit と自分のフォークしたリポジトリへ push した方がいいです。翻訳が終わり、ビールを飲みに行った場で PC が壊れると非常に虚しくなります。こまめに github へバックアップを取る感覚で push されると無難です。

不明な構文は過去を参考

初めての翻訳の場合、構文に慣れないかもしれません。私が今まで翻訳してきたファイルの一つを以下に挙げますので、内容を確認して本家にマージされた結果と見比べながら参考にしていただければと思います。私はまだまだ慣れていないので、いつもこのファイルを参考に翻訳を行っています。

生ファイル
公開済ページ

生ファイルを見ると分かりますが、コメント内に原文を残し、次回の本家英文が更新されたタイミングですぐに差分が分かるようにしています。これはCakePHP2 系の時に本家コミッターとやり取りした中で確定させた方法のようです。

関係なさそうで重要なもの

改行や :: などが意味を持ちます。英文の最後に「::」があったりするので、見落とさないように慎重に翻訳を進めます。

翻訳後の html ファイルの作成

翻訳ファイルを build する

翻訳に区切りがついたら build します。慣れないうちは 2 パラグラフ程度翻訳したら build すると無難です。思わぬ構文間違いに早めに気づけますので、積極的に build します。仮想サーバに接続して build を実行してください。

cd ~/htdocs/cakephp3doc/cakephp_docs_vagrant
vagrant ssh

cd /forked_docs
make html-ja

html ファイルの場所

下記ファイルを build すると html ファイルが作成されます。

# build の対象ファイル
~/htdocs/cakephp3doc/docs/build/html/ja/orm.rst

# 作成されるファイル
/Users/ユーザ名/htdocs/CakePHPDocs/docs/ja/orm.html

翻訳完了し、本家に反映

github.com の操作で本家に pull request を投げます。私の場合はメッセージに挨拶や今の気分を書いて送っていますが、最低限どのファイルを翻訳したかを記述します。何事もなければすぐに反映されます。

終わりに

今まで、オープンソースは自分以外の誰かが支えるものと思っていました。現に私は CakePHP の開発に携わっていませんし、またプラグインも公開していません。しかし、冒頭で触れたように本家開発者と交流するうちに、彼らは日常業務の合間をぬって開発していることを知りました。
例えばコアコミッターのリーダーは、朝の7時に起きてメッセージややり取りの確認、日中は日常業務をこなして夜7時ごろ帰宅、夜の9時から寝るまで CakePHP にコミットしているとのことでした。まさかオープンソースの開発が余暇の合間とは知らず、自分も何かやりたくなって翻訳を始めました。

翻訳を始めると CakePHP について詳しくなりますし、また、 CakePHP の下層で動いているソフトウェアやアルゴリズムに詳しくなります。すると面白いもので、 CakePHP を通じて言語やフレームワークに縛られない知識が身につきます。これは非常に私にとってプラスでした。

現在、渋谷で毎週集まって翻訳会を行っています。ご興味のある方はお問い合わせよりご連絡ください。