見出し画像

Ruby on Railsの勉強を始める前に知っておいて欲しいこと

もうすっかり春ですね!
僕の会社の近くには桜の名所の一つである目黒川がありますが、目黒川沿いには早くも沢山の花見客がいました!
まだ二分咲き程度ですが屋台も出ていて、満開になるのが楽しみです!

今日はプログラミング初心者向けにRuby on Railsの学習を進める前に知っておくと得することを伝えようと思い立ち、記事を書くことにしました!

自己紹介

松田信介@有言大実行の人 (@xhack20)
株式会社 X-HACK(クロスハック) 代表取締役 エンジニア
実務で使ったことある言語/フレームワーク - Unity(C#)、Ruby on Rails、fuelPHP、iOSアプリ(objective-c, swift)、Androidアプリ(Java) VB, C, C++など
エンジニア歴7年ほどのひよっこエンジニアです

プログラミングを書ける人(情報技術で問題解決できる人を増やしたい)と思って色々と事業をやってます

イベントのお知らせ(宣伝です)

読み飛ばし可能

このたび、X-HACKではプログラミング初学者向けの実践的なプログラミング教育カリキュラムを作成しましたのでご案内させて頂きます

このカリキュラムは、最短でウェブサービス開発に必要とされる知識を身につけることを目的とした超・実践的なカリキュラムです

初心者向けのプログラミング学習イベントを100回以上重ねてきた中で得られた知見を凝縮して全7回の講義+実習に盛り込んでいます

二ヶ月間の講義に出席し課題を全てクリアすれば、簡単なウェブサービスなら一人で作れるだけの基礎知識が習得できていることを保証します

もちろんこの短い期間の講習でプログラミングの学習が終わることはありません、あくまでも入り口です

プログラマとして働くために必要な「武器」の使い方を教えるにすぎません

しかし、この勉強会で実践での戦い方が分かり、今後自力で技術を身に着けるための土台は盤石なものになるはずです

興味があれば是非こちらから詳細をご確認ください

X-HACK勉強会 RubyとVue.jsで「ゼロから」ウェブサービスを作る

---

「Railsチュートリアル 進め方」でググるとトップヒットする某ブログに登場する図・・・

この図には明らかに、どう考えても足りないものがあります


データベースがない!

JavaScriptがない!

http通信がない!


あかん、これじゃ初心者がプログラミングの楽しさを知る前に挫折してしまう・・・

今日は、挫折しないための(本当の) Ruby on Rails 学習のステップを紹介します!!


Ruby on Railsの学習を平行しながら基礎を学んでもいいですが、、、
あまりにもRailsの学習で行き詰まることが多い場合はしっかり基本に立ち返りましょう


コンピュター/インターネットをしっかり学ぶ

基本情報技術者試験

- 基本情報技術者試験の勉強は網羅的に学べるので、後のことを考えると効率が良い
- 試験に合格する必要はないが、書いてある内容は必須知識
- マネジメント系の勉強はしなくてもいい
- プログラミングする上でメモリ、CPU、OS、ブラウザなどコンピュータやネットワークに関する最低限の知識は必要

http通信について学ぶ

- インターネットに関すること、URLの仕組み、サーバーの仕組み、暗号化などの理解の基礎になる
- どこかのタイミングで体系的に学ぶ必要がでるので、最初に少しでいいので見ておくと良い

---

HTML/CSSをしっかり学ぶ

サーバー(バックエンド)とフロントは一旦区別

- tag / class / id を理解できればまずは十分
- HTMLのリンクやフォームについて理解する
- デザイナーさんと分業することが多いので、デザイン能力は一旦おいておく

見た目をどうにかしたい場合はBootstrap(CSSフレームワーク)を学ぶ

- BootstrapなどのCSSフレームワークを学べば苦手でもそれなりのものが作れる
- Bootstrapのグリッドシステムだけしっかり目に学ぶ
- CSSの細かいルールは必要になった時に調べればOK。優先度低めで良い

---

JavaScriptをしっかり学ぶ

実はなんでもできるJavaScript

- JavaScriptは環境構築不要
- JavaScriptはブラウザとテキストエディタさえあればすぐに勉強が始められる
- ユーザの操作によって動的にHTMLの見た目を変更できる

JavaScriptは初心者が学ぶのに最適な言語

- すぐに動かせて試せるので楽しい
- Node.jsを学べばサーバサイドもJavaScriptで書けるのでとてもお得
- 3D(webGL)もできる!ゲームも作れる!なんでもできる!すごい!

---

データベースをしっかり学ぶ

SQL

- SQL(データベースからデータを取得するための命令)
- 外部キー制約とは何か?などの理解は必須(理解してないとActiveRecordのアソシエーションで詰む)

テーブル設計

- テーブル設計、正規化について学ぶ
- テーブル設計はアプリケーション開発の核で非常に重要
- 何が必要なデータかを洗い出す練習もアプリ開発には必須
- データベース設計ができないとオリジナルアプリを開発できない

しっかり時間をとって勉強してもデータベースの知識は普遍的なので役に立ちます!

---

Rubyをしっかり学ぶ

Rubyの基本文法、オブジェクト指向

- Rubyの基本文法は知らないと話にならない

Rubyでスクレイピングを試してみる

- Rubyでウェブスクレイピングをやってみる
- 特定のサイトから画像URLだけ抜き出したりできる
- 簡単にRubyの基礎が学べるのでオススメ

require 'nokogiri'
require 'open-uri'

url = 'https://qiita.com/search?q=ruby'

charset = nil

html = open(url) do |f|
    charset = f.charset
    f.read
end

doc = Nokogiri::HTML.parse(html, nil, charset)
doc.xpath('//h1[@class="searchResult_itemTitle"]').each do |node|
  p node.css('a').inner_text
end


- Railsを勉強してもRubyに詳しくならない
- Rubyを勉強してもRailsに詳しくならない

Rubyのオブジェクト指向のかなりしっかりした理解がないとRailsの機能のほとんどは理解できません

---

さあ、いよいよRailsを[ちょっぴり]学ぼう

簡単なアプリケーションを作る vs 簡単にアプリケーションを作る

- Railsは「簡単」にアプリが作れるけど、「難しい」ということを理解する
- 簡単だけど複雑?誰にとっての簡単か理解する
- 初心者にとって、記述量が少ない=簡単ではない
- 記述が極端に省略されていて前提知識を大量に覚える必要はある
- ベストプラクティスの集合だが、知らない人にとっては理解が難しい
- OR/M周り、routerなど
- 初学者にとってRailsの規約なのか、世界のルールなのか理解が難しい

---

Rubyでアプリ開発したいならsinatraから入るのがベスト!(だと思う)

sinatra(Ruby製の超軽量フレームワーク)

- ドットインストールでsinatra(Ruby製の超軽量フレームワーク)を体験しよう
- まずは小さなプロジェクトから初めて、自分でプログラムを書くことで感覚を身につける
- sinatraからの勉強を初心者に勧めているRailsエンジニアは結構多い

---

以下の前提知識がある人がラクをするために使うツールが「Ruby on Rails」

- 通信の基礎(http/https)に関する基礎知識
- HTML/CSS/JavaScriptに関する基礎知識
- ブラウザの仕組みに関する基礎知識
- JSON/XML/CSVなどのデータフォーマット
- データベースに関する知識、操作方法の知識
- SQLの構文に関する基礎知識
- コンピュータ・プログラム・インターネット全般に関する理解
- サーバーソフトウェアに関する知識(Apache/Nginx)
- URLの仕組み
- DNS/ipアドレスなど

---

アプリ開発にはプログラミング以外のシステム開発の知識も必須

- 画面遷移
- テーブル設計
- URL設計
- インフラに関する知識(AWS/heroku/GCPなど)
- ターミナルコマンド
- GIt/GItHub(ソースコードのバージョン管理ツール)
- 他にもいっぱい

基礎を固めつつ、Railsを使いこなすための本当の実力を身につけよう

1. railsチュートリアルがサクサク進められる
2. rails guideを読むのが簡単に思える

この状態になったら、こっちのもんです!!
では、みなさん、基礎知識もしっかりやりつつ楽しくプログラミングの勉強を進めて行きましょう!!

おやすみ!!

この記事が気に入ったらサポートをしてみませんか?