更新情報

こんにちは。タイムシフトの野呂です。

私は、34歳で約2ヶ月間集中して自習してWebアプリケーションの開発を行い、Rails3技術者認定ブロンズを一発合格した経験があります。本業では、初心者向けのプログラミング・スクール「Dive into Code」の講師を務めています。

最近は、プログラミング学習の人気が高まっており、はじめてのプログラミングがRuby/Ruby on Railsという方が増えています。

Rubyは文法がシンプルで書きやすく、Ruby on Railsはアッと言う間に簡単なアプリケーションを開発できます。アプリケーション開発に必要なファイルやそれを整理するディレクトリを自動生成する仕組みが入っているためです。そのため、プログラミングを身近に感じながら、学びはじめることができます。

しかし、その一方でRuby on Railsはその仕組みが複雑です。仕組みの背景や全貌を理解することが難しく、学び始めると詰まってしまうことがあります。

本来であれば、Ruby on Railsだけでなく開発言語のRubyの書き方を覚える必要がありますが、Ruby on Railsの仕組みを理解することに詰まってしまい、Rubyの学習まで辿り着かない人が続出しています。中には、RubyとRuby on Railsの違いがよくわからないまま、独学を進めてしまう人もいます。

初心者が最初につまずくポイントはRuby on Railsの電気信号の流れです。

本コラムでは、複雑な仕組みをもつRuby on Railsについて、学びはじめた初心者がつまずきやすいポイントについて解説をします。効果的に学習を進めるためのお役に立つことができましたら、幸いです。

Ruby on Railsの電気信号の流れ

Ruby on Rails は、開発言語Rubyのフレームワークです。フレームワークとは、Webアプリケーションを開発する際に必ず開発する仕組みの”テンプレート”です。

フレームワークは、日常的に使っているツールのある機能の仕組みとソックリです。それは、メールの”テンプレート”文です。

毎回、メール文をゼロから書き起こす人はほとんどいません。”署名”や「お世話になっております。」「お疲れ様です。」の文章は、”テンプレート”化して最初からメール文章として自動的に記載されている状態から、その他の必要な内容を書きます。

Webアプリケーション開発では、Rubyでゼロから書き起こすのではなく、”テンプレート”をRuby on Railsで自動生成して、その他の必要な内容を書きます。そのために、Ruby on Railsは存在しています。

インターネットの世界では、Webブラウザ上で画面が表示されるまでに2つの流れがあります。

任意のURLで指定のコンピュータへアクセスする流れ(HTTPリクエスト)とアクセス先のコンピュータからWebブラウザに表示するための元になるファイルを送り返す流れ(レスポンス)です。

noro2-2-1

フレームワークでは、コンピュータがWebブラウザからHTTPリクエストを受け付けて、レスポンスを返すまで、の中の仕組みを自動的につくることができます。

HTTPリクエストは通信の一種です。そのため、私はこの流れを初学者の人でもイメージをしやすいように「電気信号の流れ」と呼び、解説しています。

初心者が最初につまずくのは、「電気信号の流れ」を理解することです。

Ruby on Railsは、Webブラウザから送られてきたリクエストを10の動作を経由して、レスポンスとして返します。

noro2-2-2

①コンピュータのブラウザがURLにアクセスしてHTTP通信が発生する

②HTTP ServerがHTTP通信を受け取りルータに引き渡す

③ルータがURLとHTTP通信の種類の組み合わせで送り先コントローラを判定する

④コントローラ内アクションがモデルにデータを取得する指令を出す

⑤モデルが指令をRubyからSQLに翻訳してデータベースにアクセスする

⑥データベースがSQLの指令を実行してモデルに結果を返す

⑦モデルがSQLの結果をRubyに翻訳してコントローラに受け渡す

⑧コントローラが受け取ったデータをビューに引き渡す

⑨ビューがブラウザに表示する元となるerbファイルからHTMLを生成する

⑩レスポンスがHTML、CSSとしてパソコンのブラウザ上に表示される

この流れを理解する必要があります。

※詳細な解説は、私が公開している「【サマリー版】Dive into Code 【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座」をご覧ください。

http://www.slideshare.net/norotime/rubyonrails-42709667

しかし、初心者にはなぜこのような流れになっているのかが、よくわかりません。このよう構造になっている背景を知らないからです。

その場合は、誰でも経験したことがあるであろうことに例えて理解するとよいでしょう。

それは、「銀行」です。銀行のオペレーションの流れが電気信号の流れとソックリです。

電気信号の流れは銀行のオペレーションと同じ

銀行では、一般的に次のような流れでオペレーションが実行されます。

①あなたが、預けた100万円をおろしに銀行へ到着する

②銀行の入り口の自動ドアが開き、あなたが銀行の中に入る

③銀行内の案内係があなたの用件を聞き、預金窓口を案内する

④預金窓口係があなたの用件を聞き、出金係に100万円をおろすように指示を出す

⑤出金係が100万円を引き出すために自動出金機を操作する

⑥自動出金機が100万円を出金する

⑦出金係が100万円を預金窓口係に渡す

⑧預金窓口係が受け取った金額の詳細を伝票作成担当に伝える

⑨伝票作成担当がお客様が確認するための明細書や通帳の記帳をする

⑩窓口担当者からあなたに100万円と明細書や通帳が渡され、あなたは銀行から出る

この流れです。案内係や預金窓口係、出金係、伝票作成担当などが分業するオペレーションになっています。

なぜ銀行は、分業をしているのでしょうか。

業務効率化のためです。

日本で最も来店者数が多い銀行の1日あたりの来店者数は、約1,000人と言われています。

効率化しても行列ができるほどです。

では、インターネットの世界では1日あたり何人がWebサイトにアクセスするでしょうか。

1日に1,000人以上の人がアクセスするWebサイトがたくさん存在します。効率化しなければ、行列ができてしまいます。効率化するためには分業が必要です。

MVC構造で分業

その分業の仕組みは、1980年代後半から「MVC構造」という名前で考えられてきました。MVCとは、Modelというデータを引き出す役割、Viewという画面に表示する役割、Controllerというそれらを管理する役割、の3つの頭文字から由来しています。このMVCで分業した構造が最も効率的である、という構造の考え方です。

この構造は、どのようなWebアプリケーションにも共通して必要です。そのため、ゼロから都度つくるのではなく、テンプレート化できれば何度も同じ作業をしなくても済みます。そのためにRuby on Railsは生まれました。

Ruby on Railsは、このMVC構造を取り入れています。「電気信号の流れ」は、このような背景があり、つくられています。

初心者がRuby on Railsを使う場合は、フレームワークが使われる背景をしっかり理解しましょう。

私のコラムでは、Ruby on Railsの初心者がつまずきやすいポイントを補う内容をお伝えしていきます。お読みくださり、ありがとうございます。

それでは、また!