こんにちは、みーまです。
最近、Ruby on Rails教材の「Take off Rails」を購入したのですが、この教材はmacOS向けに作成されています。私自身はMacBookProを同時購入したので差し支えないのですが、元々は「Windows10でもやろうと思えばできるのでは?」と考えていましたので、今回はWSLを使った構築にトライしてみました。
- Take off Railsの環境構築部分をWindows10(WSL)で進めた結果
- 若干の工夫は必要だが、結論としては問題なく同じコマンドも使える
Take off Rails自体はmacOS以外をサポートしていません。教材自体のサポートに影響はありませんが、この環境特有である場合は、自分で検索して調べたりする必要がありますので注意しましょう。
でもこれで学習できたらトラブル解決力も含めてかなりスキル上がりますし、「macOS向け教材をWindows10上のLinuxでやりました」ってのはレアかもしれないです。そういう個人レベルの努力量って以外と評価されると思います。
(2019.11更新) 限定公開から通常公開にしました。
環境設定編は本ページの手順と教材を併用してWindows10で進められます。まだ購入に迷うかたは次の「購入前の方へ」ポイントまで、PCを操作しながら読み進めてください。
今すぐ購入する方はこちら
WSLとは?
Windows10のバージョン1709から利用可能になった、「Windows Subsystem for Linux」という機能で、Windows10上でLinux系統の各コマンドが扱えるようにしたものです。
VirtualBOXやVMWareなどは完全にコンピュータを再現(エミュレート)していますが、WSLはLinuxOSの基本部を再現して、Windowsとの橋渡しをするような感じです。
それでは早速構築に進みます。
Take off Rails前の準備(WSL有効化~bash起動まで)
WSLを有効化する
まず、Take off Rails教材を開く前に環境を整えます。
WSLは標準で無効になっていますので、有効にします。
「スタートメニュー」「Windowsシステムツール」「コントロールパネル」を選択して、右上の「表示方法」をカテゴリ以外に変更します。
「プログラムと機能」がありますので、開きます。「Windowsの機能の有効化または無効化」を選択し、「Windows Subsystem for Linux」をチェックし、「OK」します。
Windows Subsystem for Linuxの有効処理が始まります。正常に終了したら再起動してください。
ここで0x????????のようなエラーコードが出た場合、恐らくWindows側の構成ファイルに異常があります。私がこのパターンに該当しました。
直し方は、
- マイクロソフト提供のツールでWindows10のUSBメモリを作成し、Windows上からsetup.exeを実行する
- 環境、アプリを維持したままWindowsの上書きインストール
- システムファイルチェッカで治ったパターンもあるようです
- 私の環境では上書きインストールのみでしか治りませんでした。
この手順は間違えるとデータロストの可能性もありますし、わざわざこの為にリスクを冒すことはオススメしない為、記載しません。MacBookProの購入を検討しましょう。
「Windowsのインストールし直しはちょっと無理かな」と思われた方は残念ながらここで終了です。うまく機能を有効化できた方はパソコンを再起動後、次へ進みます。
Linuxディストリビューションをインストールする
うまくWSLの有効化ができたら、Linuxディストリビューション(WSLのOS部分)を入手します。Microsoft Storeに無料公開されていますので、ストアアプリを起動して入手しましょう。本手順ではUbuntuを使いますので、バージョンは自由で構いませんが、Ubuntuにしてください。
検索から「Ubuntu」と検索し、表示されたアプリを入手しましょう。ボタンが「入手」「インストール」「起動」のように変化するはずです。「起動」しましょう。
英語でメッセージが表示されます。「take a few minutes」と出ていますので、数分待ちましょう。
次に、Ubuntu上でのユーザー名を作らなくてはいけないので、入力します。Windowsユーザ名と別でも同じでも構いません。
パスワードも聞かれます。間違い防止の為に2回聞かれますので、入力しましょう。後はインストールを待ちます。パスワードは時々使いますので、忘れないようにしてください。
「作成したユーザ名@貴方のPC名~$」と出たらインストールできています。おめでとうございます。次からはスタートメニューのUbuntuから起動できます。
環境設定の前の環境設定
準備
Ubuntuのウィンドウバーを右クリックして、「プロパティ」を選択します。「編集オプション」から、「Ctrl+Shift+C/Vをコピー・貼り付けとして使用する」をチェックしてください。これが無いとコードのコピペ(貼り付け)は左上アイコンを右クリックして、「編集」「貼り付け」になり、大変手間がかかります。
次にHomebrewを入れる為の準備です。まず、下記をコピペしましょう。これでUbuntuがアプリをDLする先が日本(JAIST)になります。初めてのsudoのときはパスワードを聞かれます。あなたが決めたパスワードです。
sudo sed -i -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list
次に、今のアプリケーションを最新に更新します。コマンドは下記です。「libssl」についてサービスを再起動するか質問が出ますので、Yesにしておいてください。
sudo apt-get update -y sudo apt-get upgrade -y
Homebrew(Linuxbrew)のインストール
次は、開発環境のインストールが簡単になる、Homebrewをインストールしていきます。これはTake off Railsのカリキュラムに含まれていますが、教材のHomebrewとインストール時の作業が異なりますので、Homebrew開発元がLinux/WSL向けに用意した「Linuxbrew」のインストール手順を解説していきます。
必要アプリケーションの準備
linuxbrewの前に必要なコンポーネントをインストールしておきます。
sudo apt-get install build-essential curl file git zlib1g-dev -y
上記にはLinuxbrewに直接は不要なものが1つありますが、後に教材の項目でエラーにならないよう、先に入れています。(zlib1g-dev)
Linuxbrewのインストール
公式で提供されているスクリプトを実行します。「Press RETURN to continue」と出ますので、Enterで進めます。インストールは長いですので、しばらく待ちましょう。
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
環境設定をします。下記を貼り付けしてください。
touch ~/.bash_profile echo '# Homebrew on WSL' >>~/.bash_profile test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv) test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) test -r ~/.bash_profile && echo "eval $($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile echo "eval $($(brew --prefix)/bin/brew shellenv)" >>~/.profile echo 'umask 002' >> ~/.bash_profile sudo mkdir -p /home/linuxbrew/.linuxbrew/var/homebrew/linked sudo chown -R $(whoami) /home/linuxbrew/.linuxbrew/var/homebrew/linked
いったんUbuntuを終了し、下記コマンドで正しく動作しているか確認します。
brew doctor
「Your system is ready to brew.」で完了です。お疲れ様でした!
ひとまず「基本的なUNIXコマンドを覚えよう」を読んで、また戻ってきてください!
WSLとWindows10では直接ファイルのやりとりが可能
インストールするディストリビューションによって変わりますが、WSLの構成ディレクトリはWindowsからでも確認できます。WSLからはWindowsのCドライブが/mnt/cでアクセスできますので、cpやmvで受け渡しが可能です。
Macよりインストール待ち時間が長い?
WSLはWindowsのファイル構造でLinuxが対応できるように、再現(エミュレート)されている為、そこがボトルネックになるようです。インストール以外の動作は気になりませんので、学習への影響は無いと思います。
続き(教材差分情報・随時更新)
ここからは、教材とUbuntu環境でちょくちょく違うところがありますので、本記事を見つつ構築を進めてください。
Ubuntuに用意されているプログラム(apt)とHomebrew経由について
プログラムに差異はありませんが、brewで更新するような指示も教材にあったりしますので、元々入っているほうを消してbrewで入れ直した方が教材とのアンマッチが減るのですが、PATHの追加設定なども発生する為、こちらでは推奨していません。本記事で詳細手順は説明しませんので、個々の判断で都度入れ直し、リンクの張り直しなどを行ってください。
sudo apt remove [program_name] brew install [program_name]
Ruby のバージョン管理
Rubyのバージョンについて
Rubyは最初からは入っていませんので、「ruby -v」でエラーが出ても大丈夫です。
rbenvの導入方法
rbenvのインストールは時間がかかりますので、気長にすすめてください。
次にターミナルで入れるとされる「rbenv init」はWSL環境だとオプションが必要なようです。rbenv-doctorの実行は省略して、下記コマンドで「rbenv init」の代わりがUbuntu(bash)起動時に行われるようにします。特に何もエラーが返ってこないなら正しく入力されています。
echo '# rbenv init on zsh' >>~/.bash_profile echo 'eval "$(rbenv init -)"' >>~/.bash_profile
一度Ubuntuを終了して、起動したときにエラーが出ないのを確認してください。そのままRubyのインストールに進みましょう。
エディター【VSCode】の導入
VSCodeの導入
公式サイトからWindows向けを入手してインストールしましょう。インストールの途中でオプション(チェックボックス)がありますが、PATHへの追加は必ず入れておいてください。Windowsの再起動が必要ですので行いましょう。
インストールが完了したら、拡張機能の「japanese」を入れます。VSCodeの再起動がかかって、教材通りの日本語環境で使えるようになります。
VSCodeのおすすめ設定
1は既にできていると思います。下記を実行してみましょう。(スペースやピリオドも含めてください。
code .
VSCodeがフォルダを開いた状態で起動したら成功です。
VIMを最低限使えるようにする
Ubuntuでのvimtutorはデフォルトが英語ですので、言語を指定して起動すると、教材通りになります。
vimtutor ja
Ubuntuでのvimはapt経由な為brewで入れ直したいかもしれませんが、ただ削除するとsudoから呼出するときにエラーになりますので、無理に入れ直す必要はありません。
どうしても入れ直したい場合は下記が例になります。viが使いたい場合は、3行目をマネしてviも登録してください。
sudo apt remove vim -y brew install vim sudo ln -s /home/linuxbrew/.linuxbrew/bin/vim /usr/local/bin/vim
zshのインストール
1.shellの変更
brewでインストールした後、/etc/shellsの修正前に、下記のコマンドを追加してください。zshインストーラが表示している追加作業と、linuxbrewとhomebrewのディレクトリ違いを解決するコマンドです。この作業をしておくと教材通りにzshへ切替えできます。
touch ~/.zshrc echo '# zsh on WSL' >>~/.zshrc echo "fpath=(/home/linuxbrew/.linuxbrew/share/zsh-completions $fpath)" >>~/.zshrc chmod go-w '/home/linuxbrew/.linuxbrew/share' sudo ln -s /home/linuxbrew/.linuxbrew/bin/zsh /usr/local/bin/zsh
WSLではタイトルにzshとは出ませんが、プロンプトが「コンピューター名」だけになっていればOKです。(bashはユーザー名@コンピューター名)
2.Pathの登録
Mac向けHomebrewと構成が変わりますので、Pathの登録は下記コマンドで実施したことにしてください。実行後は一度WSLを終了します。
echo '# Homebrew on WSL' >>~/.zshrc test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv) test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) test -r ~/.bash_profile && echo "eval $($(brew --prefix)/bin/brew shellenv)" >>~/.zshrc echo 'umask 002' >> ~/.zshrc echo '# rbenv init on zsh' >>~/.zshrc echo 'eval "$(rbenv init - zsh)"' >>~/.zshrc
zshへの切替えとHomebrewのパス設定、rbenv設定までは完了です。お疲れさまでした。
バージョン管理ツール Git の解説と導入
Gitの導入方法
gitはHomebrewを導入する為に必要でしたので、apt経由で既にインストールされています。Homebrew管理にしたい場合は、先に下記のコマンドで削除しましょう。
sudo apt remove git
Git の基本的な使い方 vol.1
git commit
Macでは不要なのですが、Ubuntu環境では投稿者名とメールアドレスを定義しないとcommitができません。先にやっておきましょう。(Amazon Linuxなどでも必要ですので、macOSが特別なのかもしれません)
git config --global user.name yourname git config --global user.email yourmail
GitHub との連携
公開鍵と秘密鍵の作成
「.ssh」ディレクトリがありませんので、mkdirで作成してアクセス権を付与しましょう。
sudo mkdir ~/.ssh sudo chown -R $(whoami):staff ~/.ssh
秘密鍵の登録
そのまま教材通りにssh-addしてもエラーで登録できませんので、まず下記でssh-agetを起こします。Agent PIDだけ帰ってくれば起動していますので次に進めます。
eval `ssh-agent`
「ssh-add」の「-K」はmacOS独自ですので、-Kは付けられません。それだけに、どこかに情報を保存しておくのが難しいです。
後の講座にある「コマンドのショートカットの登録」などで操作を簡易化する等検討してみてください。特に学習には困らないかと思います。
最後に
お疲れさまでした。
この先はRailsに入るまで、特に教材と異なるところはないと思います。引き続き頑張りましょう!