株式会社リクルートスタッフィング(以下ITSTAFFING)は、TECH::CAMPを運営する株式会社div(以下TECH::CAMP)と共同で、2016年12月14日にイベントを開催しました。
今回で2回目となるTECH::CAMPとのコラボレーションイベントは、「新言語にチャレンジ!Ruby・Ruby on Railsハンズオン」がテーマです。“新言語のキャッチアップが必要” “キャリアアップには新言語を学ぶ必要がある”といった皆さまの思いを、ITSTAFFINGとして何かサポートできればと考え、再び勉強会イベントを開催しました。
このイベントレポートを通して、「新しい言語に挑戦してみよう」「イベントに参加してみよう」と思っていただけましたら幸いです。
TECH::CAMPは「人生を変える1ヶ月」をコンセプトにした、短期集中型のプログラミングスクールです。プログラミング初心者であっても、つまずかないための万全なサポートが特徴で、
・授業中はいつでも分からないことをメンターに質問できる
・教材について出た意見があれば、取り入れて改善し、最高の学習教材を提供する
ことが徹底されています。
今回のイベントは、この日のためにTECH::CAMPが用意してくださったオリジナル教材を使って、実際に手を動かすハンズオン形式で、Ruby on Railsを学習していただきました。
Ruby on Railsを学ぶことで広がる可能性
Rubyは今とても人気があるプログラミング言語で、初心者にもわかりやすいシンプルな文法が特徴です。
今回のイベントでは、そのRuby言語を用いて作られた、Ruby on Rails(以下、Rails)という「Webアプリケーションフレームワーク」を使って学習していただきました。フレームワークとは、Webアプリケーションにとって必須の共通基盤を、誰でも利用できる形でまとめたものです。開発者はそのアプリケーション独自のフレームワークを記述するだけで、高い生産性でアプリケーションを開発することができます。
そして、今回作っていただくのは、NekotterというTwitter風のマイクロブログ。
このアプリケーションを作成するには、
・Railsを使って任意のURLでビューを表示
・データベースからデータを取得し、ビューに反映する
という2工程が必要ですが、これらが今回の教材で多くの人がつまずく点であり、重要なポイントです。
実際に手を動かしてみよう!疑問点はメンターがすぐ解決
ハンズオンが始まると参加者は完全に集中モード。教材につまずいたとしても、メンターの方が常に巡回しているので、気軽に相談出来ているようでした。
ここからは、Railsを利用してNokotterを作成するまでの、大まかな要点をお伝えします。
Railsを利用してNekotterを開発するために必要なことを列挙すると、以下の順番で作業を進める必要があります。
1.Railsで新しいプロジェクトを作成する
2.Railsでデータを保存するデータベースを作成する
3.Railsで任意のURLにページを作成する
4.Railsでデータベースからデータを取得し、画面に表示する
まずは、新しいプロジェクトを作成 & データベースを作成していきましょう。
アプリケーションを作成するためには、ターミナルから
・rails new <プロジェクト名>
というコマンドを入力し、Railsのひな形を作成。
・rails new nekotter # 新規でアプリケーションを作成
このコマンド1つで新しいRailsアプリケーションが作成されますが、これだけではRailsを動かすための準備が整っていないので、Railsに依存しているライブラリ(gem)をインストールし、このアプリケーション専用のデータベースを作成していきます。
・cd nekotter # プロジェクトの中に移動
・bundle install # gemをプロジェクト内にダウンロード
・rake db:create # データベースを作成
上記3つのコマンドを実行することで、Railsを立ち上げる準備が整いました。Railsでは作成したアプリケーションを、手元のローカル環境で実行し、ブラウザで閲覧することができます。そのために、ローカル用のサーバーを立ち上げてみましょう。
rails server #ローカル用のサーバーを立ち上げる
ブラウザで localhost:3000のURLへ移動すると、デフォルトで以下の画面が表示されます。
Railsで任意のURLにページを作成する
デフォルトのページを表示することができたところで、新しいページを作成してみましょう。 たとえば、localhost:3000/tweets/indexというURLに、つぶやきのリストを並べるとします。RailsではURLへのリクエストがあった際に、最初にルーティングという処理を行い、そのパスに応じてどのアクション(実際にはメソッド)が処理を担当するか仕分けを行います。
アクションが記述されているのは、コントローラと呼ばれるファイルです。コントローラを作成するためには以下のコマンドを入力。
・rails generate controller tweets index
これは、indexというアクションのあるTweetsControllerを作成せよ、というコマンドです。それと同時にルーティングの設定をして、localhost:3000/tweets/indexのURLに飛ぶとデフォルトで表示されるビューも自動生成してくれます。
▼新規作成されるファイル
app/controllers/tweets_controller.rb
app/views/tweets/index.html
▼変更されるファイル
config/routes.rb
tweets_controller.rbは以下のような中身です。
```
class TweetsController < ApplicationController
def index
end
end
```
データベースからデータを取得して、画面に表示する
静的なページを全て完成させたあとは、データベースからデータを取得して、画面に表示できるようにしましょう。
まずモデルを作成します。
・rails generate model tweet
このコマンドを実行すると、
・app/models/tweet.rb
・db/migrate/2016xxxxxxxxxx_create_tweets.rb
というファイルが作成されます。上のファイルは、モデルファイルといって、データベースのアクセスを始めとする情報のやり取りに関する処理を行います。
```
class Tweet < ActiveRecord::Base
end
下のファイルは、マイグレーションファイルといって、新しいテーブル作成や、カラムの追加・削除などデータベースに変更を加えるためのファイルです。このマイグレーションファイルを下記のように書き換え、textというカラムを作成しましょう。
class CreateTweets < ActiveRecord::Migration
def change
create_table :tweets do |t|
t.text :text # text型のカラムをtextという名前で作成する
t.timestamps
end
end
end
ターミナルで、
rake db:migrate
というコマンドを実行することで、Tweetモデルに対応したテーブルが自動的に作成され、Tweetモデルを通じてデータベースの操作ができるようになりました。その上で、データベースに表示用のレコードを新規で追加するのですが、今回は割愛します。
次に、コントローラでデータを取得し、ビューに受け渡します。
app/controllers/tweets_controller.rb
```
class TweetsController < ApplicationController
def index
@tweet = Tweet.find(1) # idが1のレコードを取得する
end
end
```
アクション内で定義されたインスタンス変数(@tweet)は、このビュー側で展開することが出来ます。そのためには、ビューの中で`<%= %>`の中にインスタンス変数を指定します。
app/views/tweets/index.html のツイートの内容を記述している箇所を、
<%= @tweet.text %>
に置き換えることで、データベースから取得したデータを画面に反映し、完成させることが出来ます。
Railsを0から学んでいただく方が今回の教材を最後まで完成させるには、1週間程かかる内容でしたが、なんと1名の方が、このイベント内でNekotterを全て完成させることができました。
「本格的に学びたい」ときっかけになった、今回のハンズオン学習
ハンズオンの時間が終わり一息ついた後は、参加者の皆さまと懇親会を開きました。
「Rubyを学んだことはあるがRailsは初めて。派遣なので仕事の幅を広げていきたい」とのご感想も
参加者の方にお話を伺うと、時間は足りなかったものの、「分からなくて困った」といったことはなかったようです。また、「今はインフラの仕事だけど、開発側の理解も必要だと感じていた。学び方を教えてもらい参考になったので、仕事に活かしたい」の声や、「分からないことはすぐメンターに質問することできたので、疑問をスムーズに解消できた」と好評でした。これをきっかけに本格的にRailsを学びたい、という方も多くいらっしゃいました。
皆さまのために、ITSTAFFINGができること
今回のイベントを開催するにあたり事前にアンケートを取ったところ、
・キャリアアップのために新しい言語を学ぶことが必要
・技術のキャッチアップのために新しい言語を学ぶことが必要
という声を多くいただいており、新しい言語を学ぶことへの関心があることがわかりました。
ITSTAFFINGもまた、皆さまにより多くの案件をご紹介させていただくために、新しい言語を学び、スキルの幅を広げていただくことをおすすめしています。たとえば言語を1つだけ取得されているよりも、複数の言語を取得いただいている方が、ご紹介できる案件の幅が広がる可能性が高まります。
エンジニアとして働き続けるためには、出来ることを広げ、新しい領域にも踏み込み、新言語や新技術をキャッチアップして、学び続ける必要があります。ITSTAFFINGではその機会をご提供するため、「エンジニアスタイル」での情報発信や、今回のようなイベントを定期的に開催しています。また、イベントの開催情報も、「エンジニアスタイル」や「メールマガジン」で随時ご案内していますので、ぜひご応募ください!お待ちしております。