Help us understand the problem. What is going on with this article?

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

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

さぼ_ギークハウス沖縄さんのツイート___未経験から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じゃないの?

Webアプリケーション開発はPHPでLaravelも流行って来ているのでPHPで学ぶ方法もありますが、LaravelがRuby on Railsを参考にして作ってるのもありそれらの往復はそんなに学習コストなく移行できるので、実際にLaravelを使うシーンが出てきたら学べばいいかなというスタンスです。PHPはWebに特化した言語なので、Web以外のものを作ろうと思うと候補から外れます。その点Rubyを学ぶとWeb以外でも利用の範囲が広いので最初に学ぶをオススメしてます。すでに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ページを作成するのが最初の100時間。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時間の学習を作れる意味でも効率がいいからです。これから学ぶかたはまずここを目指してがんばりましょう!

その他の参考文献

RubyとRailsの学習ガイド2019年版 - るびま

https://magazine.rubyist.net/articles/0059/0059-Ruby-Rails-Beginners-Guide.html

RubyそしてRailsをこれから勉強したい方に、どんな技術を勉強すればいいかと、それらの技術全体のガイドマップを図示します。そしてそれを学ぶための資料(書籍、Web記事ほか)を紹介していきます。

こちらの記事にもRuby, Rails, Webアプリケーションを学ぶために必要な知識のガイドラインがあるので合わせて読むといいと思います。

RubyとRailsの学習ガイド

RubyとRailsの学習ガイド 2019 技術書典6 拡大版 - igaiga.rb - BOOTH

本書はRubyist Magazineに掲載され、はてなブックマーク数1000を獲得した「RubyとRailsの学習ガイド2019年版」の加筆、改訂版です。地図は構成を見直して再設計、さらにRuby超入門のイラストレーターである べこさん の手による描き下ろしになっています。技術要素も増量し、それらを学ぶための資料や書籍の情報を加筆しています。そして、掲載以降の3ヶ月間で発売、改訂された書籍を加えるなど、最新の情報へ更新しています。

推奨環境

OS - macOS

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

エディタ - VSCode

Visual Studio Codeが使いやすくてまずおすすめです。基本的なエディタ機能が十分扱えることとVSCode上でターミナル、Gitの操作、デバック等、開発のほとんどをVSCode上で操作することが出来ます。またプラグインが豊富でプラグインを入れることにより更に便利になります。

Webブラウザ - Google Chrome

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

ターミナル - Terminal or iTerm2

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

DB - PostgreSQL

オープンソースで一般的に使われるRDBMSとしてPostgreSQLMySQLがメジャーです。Railsを使う観点でいえばどちらでも問題なく使用できます。しかし、いくつかの理由からこれから学ぶ人に取ってはPostgreSQLがオススメです。

おわり

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

最後に宣伝😎

CODEBASE プログラミング講座

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

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

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

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

ギークハウス沖縄

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

Okinawa.rb

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

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

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

saboyutaka
株式会社EBILAB Tech Lead・Architect/ギークハウス沖縄オーナー/CODEBASEプログラミング教室オーガナイザー Azure/Serverless/Ruby/Rails/PHP/Laravel/Python/Go/JavaScript/Vue.js/Nuxt.js/Performance/
ebilab
飲食業・サービス業の経営支援サービスを提供しています。
https://ebilab.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした