Ruby
Rails
Beginner

未経験からRuby on Railsを学んで仕事につなげるまでの1000時間メニュー

Rails使って仕事してて、最近はRubyを使って初学者の方たちにプログラミング教えてます、@saboyutakaです。

この記事はOkinawa.rb Advent Calendar 2018の9日目の記事です。
昨日は @fullkawaさんのプログラムにおける起承転結でした。
明日は @kou-sy さんの「プロを目指す人のためのRuby入門」を6週間かけて写経して学んだことです。

さぼ_ギークハウス沖縄さんのツイート___未経験からRailsで仕事するまで。_HTML__CSS__JS_100h_HTTP__Sinatra_100h_RailsGirls_10h_Railsの教科書_40h_Progate_Rails_2周_100h_Railsチュートリアル_200h_現場Rails_100h_自作Railsアプリ_200h_インターン_or_バイト_200h_で1050h。早い人で800h__時間掛かる人で1500h_くらい_.png

https://twitter.com/saboyutaka/status/1061817948661153792

をツイートしたところ、イベントの事かと思った、書籍がないと思ったと言われたのでちゃんとまとめようと思って書くことにしました。

まずなんで1000時間か

これからWebアプリケーションを作るエンジニアになりたい人がこれを読んでくれていると思って書きます。そもそもなぜエンジニアとして働けるかというと、作りたいものがある人が居て、それを作ることができる技能に対して給与や報酬がが発生します。そして技術職として仕事で対価を得られる最低限のスタートラインに立つための学習期間が1000時間だと想定しています。

技術は投資時間に比例して身につくので向き不向きはここでは考えません。向き不向きはむしろ時間投資を続けれるかどうかであって、楽しめるかどうかやなぜやるかの動機、決意などに依存します。これに関してはまたどこかで書きます。

1000時間のスケジュール感

  • 会社員であれば業務時間でだいたい8-12ヶ月
  • 日々の時間を使いながら1日3時間積み重ねれば約10ヶ月
  • 時間に余裕があって毎日5時間できるなら6ヶ月
  • 時間に余裕があって毎日10時間できるなら3ヶ月
  • 1日1時間で約3年

ぐらいのスケジュール感です

自分がどこまでに達成していたいかなどを考慮してプランニングするといいです。シリコンバレーの授業料200万円のガチプログラミングスクールは3ヶ月で1000時間達成するメニューになっています。200万払って必死でジョブチェンジしようとしてる人たちなので納得ですね。逆に1日1時間だと3年かかってしまい、Webの業界で3年は技術が1サイクル次に行ってしまうぐらい変化の早い業界なので仕事にするのは難しそうです。

なんでRuby

今流行っててWebアプリケーションを作ることが言語はたくさんあるなかでなんでRubyを使って学ぶかというと、日本語のドキュメントが充実している、コミュニティが多い(聞ける人が多い)、書籍が揃っている、ProgateがRuby推し、Ruby on RailsチュートリアルRuby on Rails ガイドのような実践的かつ濃い教材がある、実際の業務でRuby on Railsを使ってる、Web以外でも使える範囲が広い、などの点でRubyを選択してます。

基礎中の基礎のコテコテなWebアプリケーションの仕組みを学ぶにおいてはRubyが秀でてるなという印象です。初学者の方が3年間やり通すための総合的なハードルが低いのはRubyじゃないかなという気持ちです。

PHPじゃないの?

2018年現在、Webアプリケーション開発はPHPでLaravelも流行って来ているのでPHPで学ぶ方法もありますが、LaravelがRuby on Railsを参考にして作ってるのもありそれらの往復はそんなに学習コストなく移行できるので、実際にLaravelを使うシーンが出てきたら学べばいいかなというスタンスです。Web以外の物をさわろうとなると候補から外れるので、その点Rubyがいいかなと思ってます。すでにJavaやPHPを経験している人とかにはLaravelをオススメしてます。

Pythonじゃないの?

PythonはIoTや機械学習で幅広く使われていてRubyとも似た言語です。世界を見渡せばPython優勢なのですが、日本に限って言えばRubyとポジションが似ているのでWebアプリケーション開発にはあまり使われてない、日本語のドキュメントが少ないなんかがあって選択肢から外してます。

JavaScriptじゃないの?

最近JavaScriptがどんどん進化してて使える箇所も増えているので確実に世の中のトレンドはJavaScriptに移行してきてる感じがあります。Webアプリケーションを構築せずにフロントエンド + FirebaseなんかのMBaaSの組み合わせでWebアプリが作れる時代にもなってきてます。が、最近のトレンドすぎるのと、ドキュメントが少ない、一部の最先端を追う技術者が使ってるのが現状、となってるので選択肢から外してます。多種多様な人が使う言語なのでコミュニティやライブラリがきちんとオーガナイズされていない印象で、混沌とした中から正しい技術や学び方を理解するのには、優れたメンターがそばにいないとちょっとむずかしいなぁと思ってます。

メニュー

このメニューはぼくが沖縄に移住して、エンジニアとして働きたいという学生や社会人の人たちに教えながら作っていったメニューになってます。それを達成して東京でエンジニアとして就職した学生や、転職できた方などがいるのでそれなりの実績はあるんじゃないかなと思ったりします。

Progateや書籍を使った方法を個人的にはおすすめしています。Progateをやる時のやり方なのですが基本的に2周やること、1周目はProgate上で学びながら行う。2周目はProgateを進めながら同時に自分の手元のPCでエディタとターミナル、ブラウザなどを利用して1からファイルを作って書いていくことを推奨しています。俗に言う写経という学習方法です。

0-100h HTML, CSS, JS, Webページ作成

まずPCブラウザでWebページが動く仕組みを理解するためにHTML, CSS, JSを学び、3つのファイルのそれぞれの仕組みや役割を理解します。それに付随してWebブラウザの役割や動作、Finderの使い方、Terminalの使い方を学ぶ。

Progateで学び、HTML, CSS, JS, jQuery, Bootstrap4でWebページを作成するのが最初の200時間。HTML, CSS, JSのほぼ正式相当の情報はMDNなのでここを確認しましょう。学ぶ時にいろんな情報がありますが1次ソースを意識して見に行く習慣は大切です。

やること

学ぶこと

  • HTML
  • CSS
  • JavaScript ES5
  • jQuery
  • Bootstrap4
  • Finderの使い方, ディレクトリの構造など
  • Terminalの使い方、簡単なCLIコマンド

100h-200h SinatraでHTTP、Webアプリケーションを学ぶ

Ruby、Sinatra、HTTPの基礎を学び小さいWebアプリケーションを作成する事をゴールにします。プログラミングの基礎知識、Webアプリケーションの役割と動作原理、HTTPやTCP/IPへの理解を深めます。目安としてDBのテーブル数4-10。

やること

学ぶこと

  • Ruby
  • HTTP
    • routing
    • GETとPOST
    • sessionとcookie
  • Webアプリケーションの仕組み
  • DB, SQL
  • Sinatra

200-250h Railsを学ぶ下準備

Rails Girls ガイドRailsの教科書を使って、Webアプリケーションの仕組みの復習とRuby on Railsのすごさをここで実感します。Sinatraでシンプルに作って来たからこそ、Ruby on Railsのすごさに気づくことができると思います。Rails Girlsでサクサク実装できる楽しみを知り、Railsの教科書でRuby on Railsの仕組みの基礎を学びます。またこの辺りからGitを使えるようになるといいです。今後の進捗とともにGitを使っていきましょう。Rubyを更に理解したい方はプロを目指す人のためのRuby入門をオススメしてます。この辺りは明日の @kou-sy さんの記事を参考にしてください。Railsの教科書はPDF, Epubでも販売しているので、電子書籍として読みたい方はこちらからぜひ。

やること

学ぶこと

  • Ruby on Railsの基本的な仕組み
  • Git

250-500h Ruby on Rails入門

ここでようやくRuby on Railsの入門に入ります。今まで積み上げてきた250h時間でWebの仕組み、Webアプリケーションの仕組みを理解していれば、ある程度はすんなり入れると思います。前工程をスキップしていきなりここに来るとかなり躓くと思うので250hくらいがちょうどいいかなと感じてます。Railsの世界に踏み込みましょう。

やること

学ぶこと

  • Ruby on Railsの基本操作、仕組み
  • 本格的なWebアプリケーション構築法
  • MVCモデル

500-600h Ruby on Rails 中級

現場で使える Ruby on Rails 5速習実践ガイド, 俗に言う現場Railsを読んでRuby on Railsの仕組みの復習と実際の現場でどう使われているかのイメージをつけます。特に9章, 10章は実際に業務している人でもためになる内容なのでぜひ読んでみてください。

やること

学ぶこと

  • 実際の開発でのRails開発、Webアプリケーション開発をイメージできるようにする

600-800h Ruby on RailsでWebアプリケーションを自作する

ここまでで勉強した内容を使って自分が作りたいWebアプリケーションをRuby on Railsを使って作成します。目安としてDBのテーブル数10-20。

やること

  • Ruby on Railsを使ってWebアプリケーションを作成する

学ぶこと

  • 実際の開発で出てくるエラーやHeroku, AWSの仕組みなどの理解
  • アプリケーションの作成に必要なテーブル設計や画面設計

800-1000h インターン or アルバイト

自作アプリを1から作って人に見せることができるレベルになれば最低限仕事にできるレベルになります。ただ実際の業務の進め方や人とコミュニケーションを取りながら作るスキルはまた別なので最低限の報酬をいただきながら学ばせてもらえる環境を見つけるといいです。

やること

  • アルバイト or インターン

学ぶこと

  • 実際の業務の進め方
  • 人とコミュニケーションを取りながら開発する方法

就職または自分のサービス開発 1000h-

早い人で800h、時間のかかる人で1500hくらいの幅はあると思いますが、ここまで来ると最低限開発のチームメンバーとして戦力になるレベルになってると思います。もし仕事をしながらスキマ時間で学習してきた方、スクールなどで1000時間積み重ねてきた方は、ここからはどこかの会社に所属して仕事をしながらスキルを身につけるフェーズになります。やはり仕事をしながら学べる環境に属する方が、お金をもらいながら年間1000時間の学習を作れる意味でも効率がいいからです。これから学ぶかたはまずここを目指してがんばりましょう!

推奨環境

macOS

macOSはもともとUnixから派生したOSなので、Linux系のOSと似たファイル構造、コマンド、挙動などが多くあります。実際の業務でWebアプリケーションを作る時はLinux系のOSで作ることが多いので、シームレスに移行しやすいです。Windows OSも昨今だいぶ良くなってますが、macOS, Linux系のOSとの挙動の差分でいちいち躓くので初学者のうちはつまづきポイントを出来るだけ減らしたほうが継続しやすいとの思いでmacOSオススメしてます。

エディタ - Atom, VSCode, RubyMine

AtomVisual Studio Codeが使いやすくてまずおすすめです。実際の業務になるとRubyMineが個人的に超絶オススメなので、Railsに入ったあたりから使い始めるといいんじゃないかなと思います。RubyMineは複雑なのと英語なので初学者の人がいきなり触るとむずかしいのかなと思ってまずAtomなどをおすすめしてる感じです。

Webブラウザ - Google Chrome

開発に必要な機能が一式入っていて、世の中の解説記事なんかもだいたいChromeで書いてるのでChromeで良いと思います。macOSでもWindowsでも使えますし。

Terminal or iTerm2

Terminal がmacOS標準のターミナルで、iTerm2がターミナルに更に便利な機能を付け加えたアプリみたいな感じです、分割表示出来たりショートカットキーで呼び出せたりするので興味があれば。Terminalでもいいです。

おわり

普段スクールや学生に教えている方法を共有することで他のこれから学習する方、これから人に教えようとしている方に参考になるのかなと思ってまとめてみました!参考になれば幸いです!

最後に宣伝😎

CODEBASE プログラミング講座

沖縄に住んでる、または一時的にでも来れる方はぼくが関わっているプログラミングスクール、 CODEBASE プログラミング講座があるので興味ある方はリンクを参照ください🙌

さぼ_ギークハウス沖縄さんのツイート___オブジェクト指向を教えるのにポケモン以外でいい例え知らない…__.png

https://twitter.com/saboyutaka/status/1059454226995142656

オブジェクト指向をポケモンに例えて教えてたりします😊

ギークハウス沖縄

僕が運営しているエンジニア向けシェアハウス、ギークハウス沖縄ではプログラミングに興味のある住民を募集してます🏠

Okinawa.rb

沖縄のRubyコミュニティとしてOkinawa.rbが定期開催されているので遊びにきてください💎

Twitterやってるのでよかったらフォローしてください🙋‍♀️ @saboyutaka