Ren’Pyのドキュメント生成とコンパイル環境を整える

 最近のRen’Pyのバージョンではドキュメントの翻訳に必要なファイルを自分で生成する必要があります。だんだんドキュメント生成の条件が厳しくなっていて以前はnighty-buildのファイルを流用するのみで出来たのですが、今ではren’py本体のコンパイルに必要なファイルをすべて揃えないと出来なくなりました。ここではnightly-buildを利用したドキュメント生成環境作成のメモを残しますが、コンパイル時にエラーが出る可能性が減るだけなので普通に本体をコンパイルしてもいいと思います。各項目は検索すれば詳しい解説が出てくるので自分が躓いたところ中心の記事になります。

 取りあえずWindowsでのコンパイルは難易度高いので諦めてUbuntu使いましょう

VirtualBoxでUbuntuを準備

 まずはUbuntuを動くようにします。Virtualboxのサイトからダウンロードして本体をインストールしましょう。
https://www.virtualbox.org/wiki/Downloads

 新規ボタンからダイアログに従ってUbuntu用の仮想マシンを作成します。

 次にUbuntu.jpからインストールイメージをダウンロードします。http://www.ubuntulinux.jp/products/JA-Localized

 仮想マシンの光学ドライブにイメージを入れてメッセージに従いUbuntuをインストールします。デフォルトでは解像度が低いですが、仮想マシン->設定->ディスプレイの3Dアクセラレーション有効化で高くなります。また、デバイス->クリップボードの共有を有効化しておくと便利です。

共有ドライブを作成

 ホストとファイルをやりとりするために共有ドライブを作成します。仮想マシンのメニューからデバイス->Guest additions CDを選択すると共有用のソフトのインストーラーが起動するのでインストールします。デバイス->共有フォルダー->共有フォルダー設定から共有ドライブを設定し、以下のコマンドでアクセス権も設定します。

sudo gpasswd -a ユーザ名 vboxsf

環境作成

 ようやくRen’Pyのダウンロードです。次の順にコマンドを実行します。

sudo apt-get update -y
sudo apt-get install git
cd ~ git clone https://github.com/renpy/renpy #開発版のRen'Pyダウンロード

 ダウンロードした開発版からコンパイル出来るとよいですが、 コンパイル済みの nightly-buildのファイルを流用すると大分簡単になります。ただし開発版なので上手く動かないことが多いです。リリース前後のバージョンが狙い目です。以下のサイトからnightly-buildをダウンロードし、展開してホームフォルダにrenpy-nightlyとして保存します。

https://nightly.renpy.org/

以下のコマンドで開発版ren’pyからrenpy-nightlyのライブラリを使えるようにリンクを貼ります。

sudo apt-get install python-dev
cd ~/renpy
sudo ./after_checkout.sh ../renpy-nightly ./renpy.sh

 最後のコマンドで ren’pyが起動すればここまでは成功です。起動したren’pyは閉じましょう

cd ~
sudo apt-get install curl
curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py
sudo python2 get-pip.py
pip install virtualenvwrapper

 Ubuntu 20.04からはapt-getから直接pip2をインストールできないようなのでcurlでインストーラーを落とします。注意しなければならないのはapt-getからvirtualwrapperをインストールするとpython3用のものがインストールされてしまうのでpipからインストールし、ログインシェルに以下の設定を加えてvirtualwrapperを使用可能にします。設定はシェルを開き直すと反映されます。~/.local/binにvirtualenvwrapper.shがなければ/usr/local/binなり、ありそうなところを探しましょう

#Virtualenvwrapper
if [ -f ~/.local/bin/virtualenvwrapper.sh ]; then
export WORKON_HOME=$HOME/.virtualenvs
source ~/.local/bin/virtualenvwrapper.sh
fi

 renpy用の仮想環境を作成してそこに必要なpythonライブラリを入れます。用意されているスクリプトがvirtualenv前提なので直接入れないようにしましょう。

mkvirtualenv renpy #仮想環境renpyを作成
workon renpy #仮想環境renpyに入る
pip install -U cython future six

 次にpygame_sdl2をインストールします。これもコンパイルはせずにnightly-buildを流用します。先ほどnightly-buildをダウンロードしたのと同じページにpygame_sdl2のnightly-buildもあるのでダウンロードし、展開してpygame_sdl2-nightlyという名前でrenpyと同じフォルダに配置します。続いて以下のコマンドで必要なファイルをインストールします。

cd ~/pygame_sdl2-nightly
sudo apt-get install virtualenvwrapper python-dev libavcodec-dev libavformat-dev libavresample-dev libswresample-dev libswscale-dev libfreetype6-dev libglew1.6-dev libfribidi-dev libsdl2-dev libsdl2-image-dev libsdl2-gfx-dev libsdl2-mixer-dev libsdl2-ttf-dev libjpeg-dev
python fix_virtualenv.py $VIRTUAL_ENV
python setup.py install
python setup.py install_headers
export RENPY_DEPS_INSTALL="/usr:/usr/lib/$(uname -m)-linux-gnu/"
export RENPY_CYTHON=cython

 これでpygame_sdl2の準備は完了のはずですが、install_headersのところでエラーが出て先に進めませんでした。なので試しに開発版のpygame_sd2をダウンロードして同じようにすると出来ました(*gccがないと言われたらgccをインストールしましょう、というないと言われたらそれをインストールしましょう)。

git clone https://www.github.com/renpy/pygame_sdl2

いよいよドキュメントの生成を始めます。

cd ~/renpy/sphinx
#source/incファイルを生成します。
./build.sh
cd ~
#既存の翻訳ファイルをダウンロードしてsphinx/localeにコピー
git clone https://github.com/kyouryuukunn/renpy-doc-translation
mkdir ~/renpy/sphinx/locale
cp renpy-doc-translation/* renpy/sphinx/locale -r
#update-po-from-potはrenpy直下に配置
mv renpy-doc-translation/update-po-from-pot renpy
sudo apt install make gettext
pip install sphinx-bootstrap-theme==0.4.11
pip install sphinx==1.4.4
cd renpy/sphinx
make gettext

最後のコマンドでsphinx/localeフォルダにpotファイルが生成されます。このファイルは原語と翻訳語の対をまとめたファイルであり、翻訳文を書いてja.poにリネームするとjaに翻訳するときに使用されます。続いて以下のコマンドにより既存の翻訳に開発版の変更分をマージします。 既存の翻訳にja.poファイルがないとja.poは作ってくれないのでlocaleに新しいフォルダーが追加されたら手動でリネームしましょう。忘れがちです。

cd ..
./update-po-from-pot

最後に以下のコマンドでsphinx/build内に日本語ドキュメントが生成されます。

cd sphinx
make compile-po #このコマンドの最中に現在の翻訳状況が表示されます。
LANGUAGE=ja make html

 コマンド毎回打ち込むのも面倒なのでエイリアスを定義しておきましょう。以下のようにログインシェルにエイリアスを定義します。次に翻訳するときはrenpy_updateでrenpyの更新、renpy_readyでrenpyからpoファイルの生成、renpy_buildで日本語ドキュメントを生成出来るようにします。これでようやく翻訳を進められる段階になります。始める前からハードル高すぎ。

*これで次からも更新出来ると思いきやバイナリに互換がないとか言われちゃいます。Ubuntuのインストールからやり直すと成功しましたが、毎回最初からやるのが確実ですね(白目)

alias renpy_update='cd ~/renpy/sphinx && git pull && workon renpy &&  export RENPY_DEPS_INSTALL="/usr:/usr/lib/$(uname -m)-linux-gnu/" && export RENPY_CYTHON=cython && ./build.sh'
alias renpy_ready='cd ~/renpy/sphinx && workon renpy && export RENPY_DEPS_INSTALL="/usr:/usr/lib/$(uname -m)-linux-gnu/" && export RENPY_CYTHON=cython && make gettext && cd ../ && ./update-po-from-pot'
alias renpy_build='cd ~/renpy/sphinx && workon renpy && export RENPY_DEPS_INSTALL="/usr:/usr/lib/$(uname -m)-linux-gnu/" && export RENPY_CYTHON=cython && make compile-po && LANGUAGE=ja make html'

  ドキュメント生成だけならコンパイルする必要はないですが、ここまでやればそのまま開発版ren’pyのコンパイルもできます。以下のようにrenpyのバイナリをコンパイルすれば初めに落としたnightly-buildを削除してもren’pyが起動しますしバイナリ部分の改造ができるようになります。他のプラットフォーム用のバイナリ作成は今のところ成功していません。

cd ~/renpy/module
python setup.py install
python -O renpy.py
Pocket