読者です 読者をやめる 読者になる 読者になる

RubyのRもわからない自分が、Railsチュートリアルをやってみる - 1章

RubyのRもわからない自分が、Railsチュートリアルをやってみる

仕事が忙しい+低気圧に寄る眠気でダウンしそうですが少しずつ進めてます。

コンビニのスープが上手くて、お昼ごはんはいつもこれとパン、あと野菜生活。

 

第一章 ゼロからデプロイまで

railstutorial.jp

 

学習方式

1.とりあえず読む。
2.理解したところやすごいと思ったところを、このブログにメモする。
3.わからないところも、このブログにメモする。
4.後日調べて解答を書く。
5.テストはできるだけ解く。

Ruby on Railsはなんぞや」という問を解決するために学習しているので、開発技法やバージョン管理方法はある程度噛み砕きます。 あくまでも主題はRuby on Railsの学習です。なお、演習に必要な環境構築については、少しメモを取ります。

 

第一章の大まかな流れ

Ⅰ.開発環境の用意

  • IDEの用意(Cloud9への登録)
  • Railsのインストール

Ⅱ.Hello, worldの動かし方

  • rails newで新しいアプリケーションの生成
  • Bundlerで必要なgemをインストール、インクルード
  • rails serverでWebAPサーバの起動
  • Hello, worldの表示(+MVCモデルについての解説)

 Ⅲ.Gitによるバージョン管理

  • Git

Ⅳ.Herokuを使ったデプロイ

  • デプロイ
  • Heroku

V.最後に

 

勉強メモ

Ⅰ.開発環境の用意

  • IDEの用意(Cloud9への登録)

c9.io

 海外サイトですが、有名なクラウドIDE環境です。

 日本語には対応していませんが、ブラウザ上で起動するため、場所やPCのスペックを問いません。見た目はSublime Text 2に似た感じで、個人的には好きなデザインです。

 今回は、Cloud9にあるRailsチュートリアル専用のワークスペースを使用して、今後学習を進めていきます。

 

  • Railsのインストール

weblog.rubyonrails.org

 Cloud9上の開発環境に、Ruby on Railsをインストールします。

 コマンドラインでgem installコマンドを叩く。

$ gem install rails -v 5.0.0.1

 このあたりはUNIXライクでまだとっかかりやすい印象。

 言い忘れましたが、Ruby on Railsで開発を行う場合、Windows環境だと結構不便っぽいです(UNIX環境が一番捗るらしい)。

 どうしてもWindowsで、という場合は「Ubuntuの仮想環境を作って、そこにRuby on Railsをインストールする」か、「cygwinを使用して疑似UNIX環境を作る」などするといいかもしれませんね。

 

 cygwinってなんぞやという方は、以下を参照して下さい。要するに、「windows環境でUNIXコマンドを叩けるようにするツール」です。WIndows上でgrepできたりするので、普段使いでも便利ですよ。

news.mynavi.jp

 

Ⅱ.Hello, worldの動かし方

  • rails newで新しいアプリケーションの生成
$ rails _5.0.0.1_ new hello_app

 Ruby on Railsは、rails newコマンドを使用することで、Webアプリケーションに必要最低限の資材を生成してくれる。ここがすごいと思った。こいつは、コマンド一つだけでMVCアーキテクチャに必要な資材をすべて揃えてくる。

 Webアプリケーション開発の学習でまずつまずくのは、ファイルの構造を理解するところにあると思う。Model、Controller?なんぞや?ってなる方を、今までどれだけ見たことだろうか。いわゆるMVCアーキテクチャを理解できるかどうかが、最初のターニングポイントとなる。

 その点、rails newコマンドは素晴らしい。まず作ってから、どう動くか見れるからだ。学習の基本は、まず動くものを見て、出来るものを見てからそれを真似る。そしてそこから自発的に改造する。最後に、自分で作る。つまり、「見る、真似る、変える」これに限る。これを簡単にできるのだから、こいつ(Ruby on Rails)はきっとイケメンに違いない

 

  • Bundlerで必要なgemをインストール、インクルード
//sourceコマンドで、ダウンロード元を指定する。
source
'https://rubygems.org'
//どのgem(Javaでいうところのライブラリ)を使うか
//バージョンも指定できるみたい gem 'rails', '5.0.0.1'
//groupで囲うと、テスト用のgem、本番だけに使うgemなど分けられるらしい
//卑怯である。 group :development, :test do gem 'sqlite3', '1.3.11' end

 Javaでいうところのライブラリ管理、C/C++で言うところのInclude文のことである。要するになんてことのないAPI管理方法である。Javaを使ってきた身としては、AntやMavenの使用感覚に似ている。まあそれでも、標準で実装されていることは助かる

  依存関係の解決とかはどうするんだろうか(JavaだとApache Ivyとかがうまいことやってくれていた印象)。そもそもRuby on Railsには依存関係なるものが存在するのか?課題が一つ出来た。

 

  •  rails serverでWebAPサーバの起動
$ rails server
=> Booting Puma
=> Rails application starting on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server

  第一章中で、これが一番「は?」ってなった。

  Javaで同じことしようと思うと、ApacheやらApache Tomcatやら用意でめんどかった印象だが、なんとこいつは標準コマンドでやってのける。今までの苦労は何だったのだろうかという印象。Webアプリケーション開発において、Rubyの開発速度が早い一端がわかったような気がする(パフォーマンス差についてはまだツッコまない)

 

  •  Hello, worldの表示(+MVCモデルについての解説) 

  Hello,world自体、Contollerファイルをちょちょいといじって、またrails serverコマンドを叩いて表示させるという単純なものである。Tomcatを触っている人にとっては余裕だろう。

 MVCモデルについては、ある程度の知識があるため、特別ここでは書かない。しかし、何も書かないとあれなので一応例えだけ書いておくが、MVCモデル全体がレストランだとすると、Viewは「テーブル・皿」、Modelは「冷蔵庫」、Controllerは「シェフ」である。ViewとControllerの間にHTTP通信とかいう「ウェイトレス」がいるわけだが、これ以上書くとボロが出るのでやめる

 

 Ⅲ.Gitによるバージョン管理

  • Git

 バージョン管理って何?って言う質問は怖いからやめて欲しい。

 JavaでいうApache Subversion(SVN)や、WindowsでいうTortoiseSVN(亀)だったり、VisualStudioを使ってるとよく使うMicrosoft Visual SourceSafe(VSS)だったりも、バージョン管理手法の一つである。

 詰まるところの、これまでの開発履歴を貯めておくものである。リポジトリと呼ばれるデータベースにこれまでのソースの変更履歴やらを貯めておいて、いつでも過去バージョンに戻せるものであり、とても便利。ソフトウェア開発を行うときは絶対に導入しないと、取り返しがつかないこととなる

 Gitは、その中でもLinuxライクに作られたバージョン管理システムらしい。なので、Ruby on Railsととても親和性が高い。UNIXカーネル上で、コマンドを叩けば使えるから、特別用意するものがないのである(本来であれば、yumコマンド使ってgitをインストール必要があるのは黙っておく)。

 

 話が外れるが、最近良く聞くGitHubは、Gitを使用した共有ウェブサービスである。

github.com

 端的にいうと、「Gitでリポジトリ使っていいぞ!ただし、リポジトリ使わせてやる代わりに、お前らのソースを公開・共有してやるぜ!ヒャッハー!」と言ったサービスである。なんともありがた迷惑な話である。語弊があるとも思うが、間違ってもないと思う。ちなみに、GitHubRubyでできている(しゅごい)

 Final Fantasy XIVで猛威を奮っている非公式ツール「Advanced Combat Tracker (通称ACT)」で使用するプラグインなども、GitHubで公開されたりしていて、ソースを見ると勉強になったりする(だいたい趣味でコードを書く人は、綺麗なコードを書く印象)。

 

  • Bitbucket

 本題に入るが、Railsチュートリアル内でのバージョン管理ではGitを使用するのだが、今回リポジトリGitHubではなく、Bitbucketを使用する。

bitbucket.org

 GitHubと何が違うの?と、言われるとちょっと解答に詰まるのだが、見た感じGUIベースのなので初心者にも取り回しやすい感じはする。個人的には、今やステータスとなったGitHubでのソース公開を行いながら(初心者が汚いソースを晒したいと思うか?)、チュートリアルを進めるのは少し恥ずかしかったので助かる。

 これも、登録して使う。

 SSHキーを登録する段階で少し詰まると思うが、なんてこともない(そんなことのもないので後日ここは追記する)。

 

Ⅳ.Herokuを使ったデプロイ

  • デプロイ

 さすがにデプロイって何?って言う人は回れ右。

 そんなことは言わない。デプロイとは「Webアプリケーションを利用可能状態にすること」であり、要するに公開である。晒し上げである。

 

  • Heroku

 Railsチュートリアルでのデプロイは「Heroku」を使用するらしい。

www.heroku.com

 HerokuとはPaaSであり、PaaSとはソフトウェアを構築・運用するための土台を提供するサービスである。よく言うクラウドとかいうやつはこれである。環境構築済みの環境を借りて、そこにRuby on Railsで書いたアプリケーションをコミットする。そして起動すれば、あら不思議「Webアプリケーションの完成」である。

 ちなみにHerokuにコミットするときもGitを使用する(もうコミットではなく、デプロイというべきだが)。Gitはバージョン管理も、デプロイも出来るとても優秀な子なので、是非とも今後とも仲良くしていきたい。そして、使い倒してうまい飯を食いたい

 Heroku自体もすごく、チーフアーキテクトにRubyの生みの親であるまつもとゆきひと氏が参画していたこともあったという。しゅごい。

 Railsチュートリアル場で注意することと言えば、HerokuではSQLLiteが動かない、という点である。本性でも触れられているが、gem管理ファイルに「SQLLiteはテスト用」、「デプロイ用にはPostgreSQLを使う」と言ったような書き方をする必要がある。

 

V.最後に

 今回の章では、Ruby on Railsの便利なところを紹介しつつ、うまく開発の一連の流れを学べたようにも思える。ある程度の経験者でも、今後の学習意欲をガツンと沸き立たせる当たりが良く出来たテキストであると感じた。

 ただし、読み飛ばした部分も数点あるため、Railsチュートリアルを一通り呼んだあとは、もう一度読み返したいと思う。

 あと、ブログとしてもう少し章構成を見直したほうが良いと感じた。ここも学習していく過程で見えてくるものも変わってくるので、一旦終えてから見直すのもありと思う。

RubyのRもわからない自分が、Railsチュートリアルをやってみる - 序章

RubyのRもわからない自分が、Railsチュートリアルをやってみる

 今更ながら、Ruby on Railsの学習のため、Railsチュートリアルを触っていこうと思う。その過程で、初心者の自分がなにか残せないかということで、メモをしていきたい。とりあえずは現在の心境をメモ。

 

Railsチュートリアルを触ろうと思った理由

1.昨今のWeb開発の熱に危機感を感じた

普段の業務(システムエンジニアとして在職)で、Web開発業務にあまり携わることが出来ず、昨今のWeb開発の熱の高さからも、自身のスキル習熟度に危機感を感じた。

なので、ここで一念発起してやってやろうじゃんという理由。

 

2.Ruby on RailsのWebアプリケーション開発の容易さ

 何を勉強するか、一度考え直そうかと思い調べた。結果、個人でWeb開発を行う場合にはRuby on Railsを使うのが良さそうという考えに至った。

 まず、サーバサイドアプリケーションを開発する際にネックとなる、環境構築が容易に行える点がいい。Ruby on Railsさえインストールしてしまえば、とりあえずはブラウザに「Hello, world!」を表示できるところが大きい。

例えると、

$ rails new アプリケーション名

で、アプリケーションに最低限必要なファイルを生成して、Controllerファイルにいろいろ書いた後(いろいろと言ってもC言語で言うprintfレベルである)、

$ rails server

これだけで「Hello, world!」を表示するWebサーバの完成。

この手軽さが自身の性格上で致命的な欠陥として残っている、めんどくさがりに響いた。

 

 また、Ruby on Railsが日本国内でダントツに大人気であることから、各方面でハックされたり、初心者用のドキュメント等の公開がとても多い。これは自分みたいな自学自習でハックしながら勉強していくスタイルを持った人間には、すごくアドバンテージがある。

 正直、今からJavaを始めると思うのであれば、Ruby on Railsを学習したほうが絶対楽だし、飯を食っていくにも困らなさそうだと思った。地方には、Rubyを使った仕事があまりないのが欠点として挙げられるが、Web開発の仕事であれば、がんばりようで取ってくることが出来るだろう。

 

3.今までネトゲをプレイしていた時間で何か勉強したかった

 恥ずかしながら、自分はネトゲ廃人である。

 最近は、Final Fantasy XIVをプレイしていたのだが、エンドコンテンツを一通り攻略してしまい、やることがなくなってしまった(あるにはあるのだが、それで遊ぶと人生を狂わせそうで自重している)。

 ネトゲをしていると、他のゲームをしなくなるもので、現に手元にあるゲームが出来るハードはPCとNintendo 3DS、あとはPlayStation Vita TVしかない。なので、新しくゲームを何かやろうと思ってもなかなか手を出しにくい。であるならば、PCだけは高スペックのものを持っているわけだし、何かネトゲ用のツールでも開発してみようと思ってしまったことは否定できない。

 空き時間でも手を出しやすかったRubyはその点でも優秀だと思う。

 

とりあえずの目標

目の先の課題として、まずはRailsチュートリアルを終わらせる

その後、一つWebサービスを作ってみようと思う。現在考えているのはFinal Fantasy XIV専用の固定PT管理ツールやはり考えることはネトゲのそればかりである)。

三日坊主になりやすい性格だが、最終的にはこれで飯を食っていけるようなスキルまでは身につけたいと思う。