1. fukuramikake

    Posted

    fukuramikake
Changes in title
+Bash on Ubuntu on Windows + VcXsrv + RubyMine でWindowsでも快適なRails開発環境を作ろう
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,134 @@
+以前からWindowsでのRailsアプリケーション開発は、Rubyのバージョンやnative extensionに悩まされることが多く、WindowsにVirtualBoxやHyper-VでLinuxの仮想環境を構築して開発しているという方も多いんじゃないでしょうか。
+しかしここに来て、Windows 10 Creators Updateにより、Bash on Ubuntu on WindowsとVcXsrv(あるいはXming)、そしてRubyMineを使った簡単かつ快適なRailsアプリケーション開発の環境が現実的になってきました。
+# Bash on Ubuntu on Windows のインストール
+## Windows 10 Creators Updateの適用
+Windows 10にCreators Updateを適用していない場合は、先にWindowsを更新しましょう。
+以下のURLを開き、「今すぐアップデート」ボタンをクリックすると、アップデートツールをダウンロードすることが出来ます。
+https://www.microsoft.com/ja-jp/software-download/windows10
+Windowsの更新は再起動後にかなり時間がかかりますので、お出かけの前に再起動をかけておくと良いです。
+
+## Windows Subsystem for Linux (Beta)の有効化
+[Windows の機能] を立ち上げ、[Windows Subsystem for Linux (Beta)] にチェックをつけ、OKをクリックします。この操作には再起動が必要となります。
+![01.wsl_install.png](https://qiita-image-store.s3.amazonaws.com/0/28321/284ded2f-2254-2d1d-5b56-eeeaeceebbb6.png)
+もし、既にインストール済みのBash on Ubuntu on Windowsの環境を綺麗に初期化したいのであれば、lxrunコマンドを利用することで、初期化や再インストールを行うことが出来ます。
+[Windows 10のBash on Ubuntu on Windows環境を初期化/再インストールする](http://www.atmarkit.co.jp/ait/articles/1610/05/news033.html)
+
+再起動が終わったら、スタートメニューを[bash]で検索することで、bashコマンドが見つかります。
+![03.bash_install.png](https://qiita-image-store.s3.amazonaws.com/0/28321/9fd845a2-d460-672d-1f87-51bb21ed14dc.png)
+この時点ではまだUbuntuはセットアップされていません。プロンプトに従ってUbuntuをセットアップします。
+![04.bash_install_prompt.png](https://qiita-image-store.s3.amazonaws.com/0/28321/8f9cffc5-28e3-19d0-995c-d7259c8e5d9b.png)
+ロケールをja-JPにするか聞かれたり(オススメのままyにします)、UNIXユーザ名やパスワードを聞かれますので、入力します。
+![07.bash_on_windows.png](https://qiita-image-store.s3.amazonaws.com/0/28321/c0027b57-86ff-8d7c-a700-0664f3b58ae1.png)
+ちょっと時間がかかりますが、しばらくするとUbuntuのセットアップが終わります。ここに限りませんが、反応が無い場合はちょこちょこEnterを押して突っついてみると動いたりします。
+セットアップ後は、アイコンがUbuntuのアイコンになり、スタートメニューから[Bash]や[Ubuntu]といったワードで検索して起動できるようになります。
+# VcXsrvのインストール
+SourceForgeからVcXsrvをダウンロードしてインストールしておきましょう。
+https://sourceforge.net/projects/vcxsrv/
+Windows用のX ServerとしてはXmingが有名かもしれませんが、こちらは64bit版がダウンロードでき、どうやらパフォーマンスも良いらしいので、今回はVcXsrvを利用しました。
+インストール後は、スタートメニューにて[vcxsrv]で検索すれば出てきますので、起動しておきます。タスクバーの通知領域を開くことで、VcXsrvが常駐していることが確認できます。
+![08.xming_launch.png](https://qiita-image-store.s3.amazonaws.com/0/28321/635c9331-f447-552c-6461-1056972c5a3e.png)
+
+# Ubuntu側の設定
+Bash on Ubuntu on Windowsを起動したら、まずはOSの更新をしておきましょう。
+`$ sudo apt-get update`
+`$ sudo apt-get upgrade`
+sudoによりパスワードを聞かれますが、現在ログインしているユーザ(Bash on Ubuntu on Windowsの初期化時に入力したもの)のパスワードを入力します。
+## 必要なライブラリ、パッケージ等のインストール
+続いて、必要なパッケージをインストールします。
+`$ sudo apt-get install git build-essential libssl-dev libreadline-dev zlib1g-dev x11-apps x11-utils x11-xserver-utils libsqlite3-dev nodejs fonts-ipafont`
+x11-apps x11-utils x11-xserver-utilsはX Window Systemの動作、動作確認およびRubyMineの起動のため、build-essential、libssl-dev、libreadline-dev、zlib1g-devはRubyのビルドに必要となります。
+libsqlite3-devはrails newコマンドを実行したときに必要なのでとりあえず入れておきます。
+また、assets:precompileで使うのでnodejsも先に入れておきましょう。
+fonts-ipafontも日本語文字列を表示するためにインストールしておきます。
+## Rubyのインストール
+rbenvを利用し、サクッとRubyをインストールします。
+`$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv`
+`$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build`
+`$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc`
+`$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc`
+なお、Creators Updateを適用した最新のBash on Ubuntu on Windowsは、相互運用のためかWindows側の環境変数PATHがBash側の$PATHにマージされるという、有り難いのか迷惑なのか微妙な仕様になっています。
+筆者の場合、bundleコマンドがWindows側のコマンドを叩きに行ってしまい、上手く行かないケースがあったため、.bashrcで書き換えるという対策をしました。
+Ubuntu側の環境変数を
+`$ echo $PATH`
+とコマンドを叩いてPATHを表示すると、Windows側ファイルシステムにアクセスするための /mnt 配下のパスがずらずらと並んでいるのがわかります。
+とくに、Windows側にRubyをインストールしてPATHを通している場合などは、.bashrcの最後に以下のような記述をしてPATHを綺麗にしておくとよいでしょう。({user}の部分は適宜読み替えてください)
+> export PATH=/home/{user}/.rbenv/shims:/home/{user}/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
+
+忘れずに.bashrcの再読込もしておきます。
+`$ source ~/.bashrc`
+
+rbenvの導入が出来たら、Rubyをインストールします。
+`$ rbenv install -l`
+でインストール可能なRubyの一覧を表示し、インストールしたRubyのバージョンを指定してインストールします。
+今回は2017年4月時点での最新安定版の2.4.1を選択しました。
+`$ rbenv install 2.4.1`
+かなり時間がかかるのでのんびり待ちましょう。インストールが終わったら確認しておきます。
+`$ rbenv versions
+2.4.1`
+インストール済みのRubyが表示されるので、標準のRubyとして登録しておきます。
+`$ rbenv global 2.4.1`
+`$ ruby -v
+ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]`
+これでRubyの導入まで完了しました。
+# X11アプリケーションの動作確認とRubyMineのインストール
+.bashrcで環境変数$DISPLAYの設定をします。
+`$ echo 'export DISPLAY=localhost:0.0' >> ~/.bashrc`
+`$ source ~/.bashrc`
+0.0の部分は、VcXsrvのアイコンにマウスオーバーすることで確認できますが、ほとんどの場合は0.0になっているはずです。
+Windows側でVcXsrvが常駐していることを確認したら、動作確認をしましょう。X11appsがインストールされていますので、
+`$ xeyes &`
+でxeyesの目玉のGUIアプリケーションがWindowsで開かれるはずです。
+![09.xeyes.png](https://qiita-image-store.s3.amazonaws.com/0/28321/a9b6ad54-f1fa-ccbf-83e7-001eecdff1ac.png)
+
+正常にxeyesのウィンドウがVcXsrvでWindowsに表示されていることが確認できたら、JetBrainsのページからLinux版RubyMineをダウンロードしましょう。
+https://www.jetbrains.com/ruby/download/#section=linux
+[DOWNLOAD]をクリックした次の画面でダウンロードをキャンセルし、[direct link]のURLをコピーしてBash側でwgetするのが簡単です。
+ダウンロードが完了したら、任意のフォルダにサクッと展開しておしまいです。
+`$ tar zxvf RubyMine-2017.1.1.tar.gz`
+起動用のシェルスクリプトを実行すればRubyMineが立ち上がってきます。
+`$ RubyMine-2017.1.1/bin/rubymine.sh &`
+![10.rubymine_activate.png](https://qiita-image-store.s3.amazonaws.com/0/28321/fb122887-9e4e-cf19-db52-ced4fa683489.png)
+アクティベーションの画面が表示されますので、お手持ちの認証情報を入力の上、初期設定を行えば、無事RubyMineが起動してくれます。
+![12.welcome_to_rybymine.png](https://qiita-image-store.s3.amazonaws.com/0/28321/ad8b0e13-f7aa-5f7b-9281-333a7e8bfa7e.png)
+ここまで読んでいただいた方であれば、JetBrainsのAll Products PackサブスクリプションあるいはRubyMine単独のライセンスを持っておらず、Emacsやvi、あるいはAtomやSublimeTextのようなエディタでRuby開発をされているような方はいらっしゃらないとは思いますが、もし万が一お持ちで無い場合は、[JetBrains様](https://www.jetbrains.com/ruby/buy/#edition=personal)あるいは[サムライズム様](http://samuraism.com/products/jetbrains/rubymine)で購入できますので、今すぐにお買い求めください。
+
+# サンプルRailsアプリケーションの作成
+RubyMineの機能でプロジェクトを作成することも可能ですが、ここは分かりやすくgemでRailsのインストールとRailsアプリの作成をしてみます。
+bashにて、以下のようにコマンドを実行します。
+`$ gem update --system`
+`$ gem install bundler rails`
+必要なパッケージが正しくインストールされていれば、しばらく待った後に、
+`Done installing documentation for i18n, thread_safe, tzinfo, concurrent-ruby, activesupport, rack, rack-test, mini_portile2, nokogiri, loofah, rails-html-sanitizer, rails-dom-testing, builder, erubis, actionview, actionpack, activemodel, arel, activerecord, globalid, activejob, mime-types-data, mime-types, mail, actionmailer, nio4r, websocket-extensions, websocket-driver, actioncable, thor, method_source, railties, sprockets, sprockets-rails, rails after 94 seconds
+36 gems installed`
+みたいな感じで表示されるはずです。
+Windowsではあれほど苦しめられた数々のnative extensionや悪名高いnokogiriも何の苦も無くインストールが出来たかと思います。
+では、Railsアプリの雛形を作ってみましょう。
+`$ rails new sample`
+とrailsコマンドを実行します。いくつかのnative extensionがインストールされるため、少しだけ時間がかかりますが、問題無くsampleアプリケーションが作成されるでしょう。
+RubyMineで作成されたsampleフォルダを指定して開けば、無事Railsアプリケーションとしてプロジェクトを開くことが出来ます。
+![15.project_opened.png](https://qiita-image-store.s3.amazonaws.com/0/28321/9207ba96-8b70-3b66-95b6-efb33461fb13.png)
+警告ツールチップに
+> **External file changes sync may be slow**
+> File watcher gave up to operate
+
+とWarningが表示されていますが、おそらくBash on Ubuntu on Windowsではファイル更新チェックまわりのAPIの対応が完全では無いのではないかと考えられます。
+とはいえ、この状態でもデバッグ実行は出来ますので、デバッグのアイコンをクリックして動かしてみましょう。
+なお、Bashでifconfigを実行してみるとわかりやすいですが、ネットワークはWindowsと共用のような状態になるため、Windows側ブラウザからローカルループバックでアクセスすることももちろん可能です。
+![17.Open_Browser.png](https://qiita-image-store.s3.amazonaws.com/0/28321/e83dece4-4373-5afc-9b28-6330f2a473cb.png)
+やったぜ。
+
+# 参考にさせていただいたページなど
+- [Bash on Ubuntu on Windows とX Windowの組み合わせで日本語表示と日本語入力(その2): tonopぶらり)](http://tonop.cocolog-nifty.com/blog/2016/12/bash-on-ubuntu-.html)
+- [WSL その78 - Windows 10 Creators Updateで何が変わったのか?・Bash/WSLとWindows Consoleの新機能と変更点(前編) - kledgeb](https://kledgeb.blogspot.jp/2017/04/wsl-78-windows-10-creators.html)
+- [Bash on Ubuntu on Windows + XmingによるGUI - Qiita](http://qiita.com/makky0620/items/e31edc90f22340d791ff)
+- [俺の Bash on Windows10 環境 - Qiita](http://qiita.com/shima_529/items/9e818af727fb936771b6)
+- [bash on Ubuntu on Windowsを試してみる - kashiの日記](http://verifiedby.me/adiary/0101)
+- [Windows 10のBash on Ubuntu on Windows環境を初期化/再インストールする](http://www.atmarkit.co.jp/ait/articles/1610/05/news033.html)
+- [rbenv を利用した Ruby 環境の構築 | Developers.IO](http://dev.classmethod.jp/server-side/language/build-ruby-environment-by-rbenv/)
+
+
+
+
+
+
+