Cygwin環境作成、その５(javac、文字化け対策にcocot、rubyとrails）

ではこつこつ続けていきます。
# javac
これはCygwinだから特別になにかするというわけではありません。PleiadesというEclipse日本語化版みたいなものを使えば良いのです。
### Pleiades
PleiadesはEclipse日本語化版プロジェクトの総称です。日本語化してるだけでなくあれこれとプラグインを追加してくれてます。便利なことにJREとJDKも入っています。管理者権限がない人（例えば僕とか）にとってこれはとても便利。

インストールも簡単。[Pleiades配布サイト](http://mergedoc.osdn.jp/)にいって、最新版のUltimateのFull Editionのzipをダウンロード→どこかに展開するだけです。JDKポータブルインストールに比べ手間いらずです。

版はPlatform、Ultimate、Javaその他あるけど、容量が許すのであればUltimateがオススメ。Java、C/C++、PHP、Pythonに始めから対応し、Marketplaceも入ってます。Platformで最低限動くようにして必要な分だけプラグインを追加していけば容量は稼げるけど、いまどき1.5G程度でカツカツということは無いのでは。それよりも時間が大切です。

### javacをCygwinから使えるようにする手順
正しい流儀かわかりませんが、以下のようにしました。
1. Pleiades 4.6（Neon)のUltimate Full Editionを```C:\apps\pleiades```に展開
2. ```c:\apps\pleiades\java\8```のシンボリックリンクをCygwinの```/usr/local/lib/java```に貼る
3. /etc/profile.d/java.shにて```/usr/local/lib```をJAVA_HOMEに設定
4. 同様に```${JAVA_HOME}/bin```をPATHに追加
5. .bash_profileから/etc/profile.d/java.shを呼ぶ
6. javacが呼べるか試す

```bash
# シンボリックリンクを貼る
$ mkdir -p /usr/local/lib # /usr/local/libをまだ作ってない場合
$ ln -s /c/apps/pleiades/java/8 /usr/local/lib

# JAVA_HOMEとPATHの設定をjava.shに記述
cat <<EOL >> /etc/profile.d/java.sh
#!/usr/bin/env bash

export JAVA_HOME=/usr/local/lib/java
export PATH=\${PATH}:\${JAVA_HOME}/bin
EOL

# 実行権限追加
chmod a+x /etc/profile.d/java.sh

# .bash_profileから上記java.shを呼ぶ
cat <<EOL >> ~/.bash_profile
source /etc/profile.d/java.sh
EOL

# 設定反映
source ~/.bash_profile
```

ではjavacを試してみましょう。

```bash
$ javac
gp@: javac <options> <source files>
gp\ȃIvVɂ͎̂B
  -g                         ׂẴfobO𐶐
  -g:none                    fobOȂ
  -g:{lines,vars,source}     ̃fobÔ݂𐶐
  -nowarn                    xȂ
  -verbose                   RpC̓ăbZ[W͂
```

あれあれ、化け化けですね。これはjavacの出力がCP932に対して、cygwinがUnicode表示しようとしているからです。cocotという便利な文字コード変換ツールがあるのでそれを通して実行するようにしましょう。

# cocot
cocotはCygwin標準ではなく、ソースコードからビルドしないと使えません。敷居が高いように思えますが、幾つか必須パッケージをダウンロードした後、git cloneして、bashスクリプトを実行するだけです。
参考：[転職先でWindowsしか支給されなかったのでCygwinでLinux化してみた - Qiita](http://qiita.com/dtlabo/items/23e133b6e2ef8f2cec51)

以下手順。

```bash
# 必須パッケージをapt-cygでインストール
$ apt-cyg install libiconv libiconv-devel

# cocotのソースをgit cloneする
$ git clone http://github.com/vmi/cocot

# ディレクトリに入ってビルド、インストール
$ cd cocot
$ ./cygwin-build.sh
$ ./cygwin-install.sh

# 動作チェック
$ cocot
Usage: cocot [OPTIONS] [--] COMMAND ARG1 ARG2 ...

Options:
    -o LOGFILE     logging all output of command.
    -a             append log file.
    -t TERM_CODE
（略）
```

良さそうなのでjavacをcocotから呼び出します。

```bash
$ cocot javac
使用方法: javac <options> <source files>
使用可能なオプションには次のものがあります。
  -g                         すべてのデバッグ情報を生成する
  -g:none                    デバッグ情報を生成しない
  -g:{lines,vars,source}     いくつかのデバッグ情報のみを生成する
  -nowarn                    警告を発生させない
```

動いてます。都度cocot入れるのは面倒なので```alias javac="cocot javac"```としておくと楽です。

# RubyとRails
Railsの勉強を始めたので入れてみます。Rubyはapt-cygで簡単インストールなのですが、RailsはGemで入れるとハマります。nokogiriなるものを動かすプラットフォーム上でビルドする必要があるんですがこれが大変。「cygwin nokogiri」で検索すると山ほど出てきます。2年ほど前msys2を使ってたときになんらかの方法でnokogiriをビルドできた記憶もあるんですが、さっぱり覚えてないです。

手順と言うほどのものでもないので、そのまま。

```bash
# apt-cygでRubyを入れる
$ apt-cyg install ruby
$ ruby -v
ruby 2.2.5p319 (2016-04-26 revision 54774) [x86_64-cygwin]

# Gem自体のアップデート
$ gem update --system
$ gem --version
2.6.9

# apt-cygでRailsを入れる。4系だが目をつぶる。
$ apt-cyg install ruby-rails
$ rails --version
Rails 4.2.5.2
```

# 今後の予定
1. じつはtmux、vimの設定もやったのでそれを書く
2. sbtも入れたのでそれも書く
3. Cygwinの環境、ついついあれこれ入れすぎてしまう→いつでも前の状態に戻せる方法ってないものか。ファイルが大量だけどbitbucketなどでバージョン管理でしょうか？