『Ruby警官から警告を受けろ』環境準備奮闘記
はじめに
CodeIQの『Ruby警官から警告を受けろ』に挑戦しました。
今回は、解答の解説ではなく、問題を解き始める準備をするまでの経過について書きます。同じ感じで環境構築にハマっている人の参考になれば幸いです。こんなハマり方をする人が私以外にいればの話ですが…
ちなみに、私のマシン環境は次の通りです。
- TOSHIBA Dynabook AX/53D
- Celeron M 520
- Windows Vista Home Premium
- HDD空き 2GB弱
- ADSL 12Mbps
1日目
おっ、たべぷげらさん*1の新しい出題だ。ふむ、 Ruby でわざと警告を出すとな。 Ruby は全く触ったことがないけれど、いい機会かもしれないな。
(*1 出題者の tbpgr 様の、私の中での呼び名。関連:「おじいさん」「ばあさん」)
なになに、
ふむ。 rubocop も rspec も、聞いたことすらない。
あれだ、英文を読んでいるときに、知らない単語が1つ出てきても何とか推測できるが、4つも続くとお手上げだ。まさにその状態。
警告を出すために以下の情報をご活用ください。
RuboCopのGitHub URL
https://github.com/bbatsov/rubocopRuboCopのGemのURL
https://rubygems.org/gems/rubocop
やばい。鉄壁のディフェンスだ。俺を全く寄せ付けないぞ。 GitHub とか Git って、よく聞くけど何だろ。 subversion みたいなもんかな。 Gem って、まさか Game Programming Gems のことじゃないよな。でも他に知らんし。
何から手を付けていいかさっぱりわからんが、とりあえず GitHub というのを見てみるか。
RuboCop is a Ruby static code analyzer. Out of the box it will enforce many of the guidelines outlined in the community Ruby Style Guide. Most aspects of its behavior can be …
…うむ、さっぱりわからん。
この挑戦支援ツールというのはどうだろう。
環境構築用 Vagrant
環境構成
- OS : Ubuntu 1204 LTS 64bit
- ……
う、う、うぶんつ!?(って読むのか?)これって確か Linux の一派だよな? 下で ssh とかやってるし、間違いないな。そうか、どうりで、どれもこれも聞いたことがないわけだ。この Vagrant ってのも、 Ubuntu のアプリか*2。だめだ、ちょっと俺には無理。
(*2 後で誤りと判明する。)
2日目
Rubyの環境揃えるのと、Vagrant環境を揃えるのってどっちが敷居が高いのかな?とりあえずVagrant環境さえあればvagrant upして終わりだし、使い終わったらdestroyすれば容量とかも気になりません。 #CodeIQ #rubocop問題
— tbpgr|Programmer (@tbpgr) May 19, 2014
いや、高いも何も、 Ubuntu 限定って、ありえないっしょ! …いや、実際有り得ないよな、俺の勘違いか? っていうか、挑戦者少ないみたいだし、みんなわかってないのでは? 折角だから、ちょっくら聞いてみるか!
@tbpgr 多くの人を代表して、ずばり聞いてみましょう。まずはやはりこの質問から。 Q1.Windowsでもできますか?
— 齊藤 (tails) (@saito_ta) May 20, 2014
(…しばらくやり取り…)
@saito_ta ありがとうございます!QA記事作りました http://t.co/vWnfk0TOwe
— tbpgr|Programmer (@tbpgr) May 20, 2014
[CodeIQ]CodeIQ | 『Ruby警官から警告を受けろ』問題 環境構築について http://t.co/FHX5Zb7zvC
— tbpgr|Programmer (@tbpgr) May 20, 2014
うおぉ仕事はええ!
3日目 ~Vagrant編~
やっと週末だぜ。さて、折角書いてくれたドキュメントに素直に従ってみましょうかね。俺の場合は、この【ホストOSにVagrant+VirtualBox環境がないが、これから入れようとしている場合】になるのかな。ええと、
・Vagrant1.5.3をインストール
・VirtualBox4.3.10をインストール
・残りは、下記のREADMEの手順で環境構築できます。
https://github.com/tbpgr/codeiq_vagrant_for_rubocop
ふむ、まずは Vagrant ですな。ダウンロード…すげーでかいな!残り10分とか言ってやがる。やっと終わった。はい、同意します、はい、はい、…と。さて実行してみよう。va… va…(スタートメニューの中を探し中)…あれ、ないぞ? まあいいか。
次は VirtualBox か。うお、こっちもなかなかでかいな…やっと終わった、はいはい同意しますよ。うっ、何やらデバイスドライバがびしばしとインストールされるぞ。
次はREADMEか…って、これはいつぞやの挑戦支援ツールのページではないか! ふーむ、冷静に見ると、「動作確認済み:Windows 7」って書いてあるな。そうか、 VirtualBox を使って Windows 上で Ubuntu を動かすのか! ということは、 Vagrant は VirtualBox に環境を構築するツールなのか! ピカッチ!
でも、 vagrant は要するに仮想マシンに環境を構築するんだってことが(やっと)わかった! なんで Ubuntu が出てくるのか謎に思ってたw @tbpgr
— 齊藤 (tails) (@saito_ta) May 23, 2014
さてさて、手順通りに素直にやりますよ。今日の俺は素直だよ!
利用手順
- 当リポジトリをclone
ええと、git よくわからないし(早速素直じゃない)、ZIPをダウンロードして解凍するのでもいいみたいだから、そうしよう。
- cloneしたフォルダに移動
- VMを起動
vagrant up
え、なんだ、この VMを起動、vagrant up ってのは、何をどうするんだ? まだ Ubuntu の構築前なのにシェルが必要? 試しにコマンドプロンプトを開いてそこに打ってみるか。
C:\Users\saito\work\codeiq\q883\codeiq_vagrant_for_rubocop-master>vagrant up The provider 'virtualbox' that was requested to back the machine 'default' is reporting that it isn't usable on this system. The reason is shown below: Vagrant could not detect VirtualBox! Make sure VirtualBox is properly installed. Vagrant uses the `VBoxManage` binary that ships with VirtualBox, and requires this to be available on the PATH. If VirtualBox is installed, please find the `VBoxManage` binary and add it to the PATH environmental variable.
おっ、なんか出た! やった! …ってこれエラーメッセージじゃんか! ええとなんだ、PATHが通ってないのかな。よし、
C:\Users\saito\work\codeiq\q883\codeiq_vagrant_for_rubocop-master>PATH=%PATH%;C:\Program Files\Oracle\VirtualBox
(↑直接打ったもんだから、コマンドプロンプトを開くたびに毎回打つはめに…)
C:\Users\saito\work\codeiq\q883\codeiq_vagrant_for_rubocop-master>vagrant up
恐ろしく時間がかかるな…
数分~十数分程度かかると思いますので、こんなことをしながら待つ
- コーヒーを飲む
- トイレに行く
- CodeIQの即答系問題を解く
- 「rubocop vagrant up なう #CodeIQ #rubocop問題」とつぶやく
まじか。
Bringing machine 'default' up with 'virtualbox' provider... ==> default: Clearing any previously set forwarded ports... ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 22 => 2222 (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... The guest machine entered an invalid state while waiting for it to boot. Valid states are 'starting, running'. The machine is in the 'poweroff' state. Please verify everything is configured properly and try again. If the provider you're using has a GUI that comes with it, it is often helpful to open that and watch the machine, since the GUI often has more helpful error messages than Vagrant can retrieve. For example, if you're using VirtualBox, run `vagrant up` while the VirtualBox GUI is open.
やっと終わったけど、電源が入らないとか、 VirtualBox GUI を開いたままやってみそ、とか言ってるような。ためしに VirtualBox GUI から起動してみるか。
VT-x is not available. (VERR_VMX_NO_VMX).
ななな何ですと? よくわかんないので、ググってみるか。…おお、対処法がいっぱい出てくる。みんなもこのエラーで困ってるのか。なになに、
VBoxManage modifyvm vmname --longmode off
うむ、試してみるか… だめだな。
<HardwareVirtEx enabled=”false”/>
…これもだめか。
VBoxManage modifyvm (VM名) –hwvirtex off
VBoxManage modifyvm (VM名) –vtxvpid off
やっぱりだめ。
Make sure Virtualization is enabled in your BIOS
これだ!ていうか、BIOS以前にそもそも、俺の石 Celeron M だからVT機能ない!おわた\(^o^)/
vagrant up で作った VirtualBox 仮想マシン、 VT-x is not available. (VERR_VMX_NO_VMX) が出て、ググっていろいろ試したけど解決せず。どうやら Celeron M では動かないっぽい… @tbpgr
— 齊藤 (tails) (@saito_ta) May 23, 2014
@saito_ta なんと、動かない環境があるのですね。残念。となると、VirtualBox単体で使って、Ubuntuの環境を作ってからVagrantfile内に書いてあるシェルを実行すれば挑戦環境ができます。
— tbpgr|Programmer (@tbpgr) May 23, 2014
ぬほー! こうなったら、ぼくがんばっちゃう!
3日目 ~Ubuntu編~
「Ubuntuの環境を作ってから」。この一言がどのくらいの試練を意味するのか、正直判らない… さて、Ubuntuの環境を作るからには、まずは「Ubuntu」をググるか。
http://www.ubuntulinux.jp/download/ja-remix-vhd
おっ、ここでダウンロードできるらしいぞ。…って、1GBですか!ほげー!ADSL接続でダウンロードするのに何十分かかるんだ。しかもHDD空き2GBしかないのに、展開できるんかいな。…展開後3GB、むりじゃんか。
まあね、こんなこともあろうと、USB接続の外付けHDDがあるんですよフフン。この家のどこかにね!…あった。100GBほど空いてるし、ここに展開すれば完璧!
さて、 VirtualBox に VHD ファイルを設定して、いざ起動 ………動いた!動いたよ! デスクトップが表示された! 操作がさっぱりわからない! しかも、超もっさり! アイコンをクリックすると、数秒かけてゆっくり明滅した後で、20秒くらい経ってからウィンドウが開く!
っと、突然ソフトウェアのアップデートのウィンドウが開いたぞ。更新が707個あります、らしい。念のため更新しときますかね。ぽちっと。…… Disk full で仮想マシンが落ちたっ!なんで! 仮想ディスクの上限設定は60GBで、使ってるのはまだ4GBくらいだから、……はっ、4GB! もしや…やっぱり。この外付けHDD、FAT32だ!
仕方ない、外付けHDDのパーティションを切りなおすか。確かパーティション管理のソフトを持ってたような… あった、 Partition Wizard 4 だ。って、最新版は 8 か!メジャーバージョンが 4 つも上がってるとは。無料のようだし、折角だから更新しとくか。(激しく寄り道)
80GBほど確保して、NTFSでフォーマットして、VHDファイルを移動して、いざ起動!今度はアップデートもうまくいっているようだ。遅々として進まないが。
(3時間半経過)
やっとアップデート終わった!さて、ええと何だっけ、そうだ、「Vagrantfile内に書いてあるシェルを実行」だ。シェルということは、ターミナルか。ええと… これ Linux のくせにターミナルが見当たらないぞ! kterm どこだ(違) ファイラから /bin/bash をダブルクリック…何も起こらないな。ググるか。「Ubuntu terminal」と。なになに、
[アプリケーション] → [アクセサリ] → [端末]をクリックする。
ほほう… って、そもそも「アプリケーション」が見当たらないぞ。
1. デスクトップ画面左上のDashホームをクリック。
2. テキストボックスに「terminal」と入力する。
…何も一致しないらしい。「gnome-terminal」でもだめ。
[Ctrl] + [Alt] + [T]
…出た!素晴らしい!
さて、Vagrantfileの内容は… ほうほう。コピペの仕方がわからないから見ながら打つしかないけど、まあ順番に打つだけだ。おっと、カレントディレクトリが移動したことに気付かないで、Ruby のディレクトリ内に問題ファイルをばらまいてしまったぞ。まあいいや、できた!
一日がかりで、やっとここまでできた! pic.twitter.com/zpH5jreov3
— 齊藤 (tails) (@saito_ta) May 24, 2014
いやもう、達成感は十二分なので、あとはどれでもバッジがもらえればいいです。っていうか、警告以前に Ruby の文法さえわからないし! サンプルを(ネタバレ削除)すれば、6個くらいはすぐだね! 解答欄にコードを貼り付けて、「小悪党バッジください」と書いて、いざ提出! 今度こそおわた!\(^o^)/
RuboCop採点を開始するも、消さないで欲しかったラベルが消えている解答があったため自動採点ツールの修正からスタート。少し時間かかるかも。
— tbpgr|Programmer (@tbpgr) May 24, 2014
あっ… タイミグ的に、俺か! すみません! ごめんなさい! 本当申し訳ないです! もし俺なら誤答扱いしてくださって構いませんので…(フィードバックが来るまで自分の解答を確認するすべがない…)
(5/27追記)
@saito_ta 「フィードバックが来るまで自分の解答を確認するすべがない…」←ダウト。最近のCodeIQならマイページの挑戦済みの問題から確認できるのではないでしょうか?
— みけCAT (@mikecat_mixc) May 26, 2014
本当だ! 知らなかった~
自分の解答を確認してみたら、ちゃんとラベルあった。そ、そりゃそうだよね。俺がそんなヘマするわけないよねフフン…(←さっきまで青ざめてたやつ)
奮闘っぷりがすごく伝わりました。1問挑戦するのにこんなに頑張っていただけて感涙です~。同様に悩んでる方にぜひ読んでいただきたい! QT @saito_ta 『Ruby警官から警告を受けろ』環境準備奮闘記 - Tails の(仮) http://t.co/3CzEK7syn6
— CodeIQ [コードアイキュー] (@codeiq) May 27, 2014
まあ、こんなに頑張る羽目になったのは、全て俺の知識、技術、思い込みによるわけで…
出題者様としては、 Vagrant 一発で環境が整うようにばっちり準備したのに、こんなネタにされてしまって、さぞ不本意でしょうなぁ(←どの俺が言う)
(5/28追記)
この経験を踏まえて、超初心者(私程度)向けのチュートリアルを書きました。
http://tails.hatenablog.jp/entry/2014/05/29/022033