- Published on
Ruby on Railsで挫折しないための学習の進め方
- Authors
- Name
- Shou Arisaka nyapp.buzz/shou
- short bio
- Z世代の情報技術者。Next.jsで自作SNSを個人開発中。
Ruby on Railsを4、5年前から触っています。最近はPythonのウェブアプリフレームワークであるDjangoを使っていますが、その前はRailsをかなりやっていました。私自身Railsはその難易度から3,4度挫折しています。それの原因はRails特有の意味不明なバグでだったり、自分の英語力と問題解決力だったり、ウィルパワーだったり色々ですが、そこで少しRailsの挫折しないための学習の進め方について私の考えをメモしたいと思います。
いきなり全部理解しようとしない
Railsは僕や皆さんが思っている通り、実際のところ、かなり複雑で難しいです。 Railsに限った話ではないですがDjangoとかLaravelとかウェブアプリフレームワークの類は敷居が高いと思います。node.jsのExpress.jsとかRubyのsinatraとかライトウェイト系のウェブライブラリは機能にしても潜在するバグにしても覚えることは特に多くないので比較になりませんが、ウェブアプリフレームワークに関しては始めるなら覚悟が必要です。
そして、それらをすぐに理解しようとしないことです。 具体的には、例えばRailsで覚えておくべきコマンドは、以下だけです。
- rails g controller dev
- rails g model user name:text
- rails c
そして、Railsを触る上で、見るべきファイルは、この3つだけです。
- app/controllers/dev_controller.rb
- app/views/dev/index.html.erb
- config/routes.rb
まずはここからです。いきなりCRUD実装しようとか考えない方が懸命です。
あとは、最初のアプリ作成で使用する、rails new
ですが、これもたくさんオプションがあります。 詳しい人は、「どうしてもMysql(postgres)でやりたい」と思うかもしれません。しかし、それはNG。 SqliteとMysqlで違うのが、config\database.yml
を書き換えるかどうか、だけだと思っていたら大間違いで、他にも違いはありますし、何かあったときの対処も違います。
モデルを使う上で、データベースが孤立しているとどうしても学習しづらいです。僕も最初からMysqlでやろうとして、挫折しました。 SQLは使えましたし、RubyでMysqlのマッパーを使ったりもしてたので、できるだろうと考えていたのですが、実際には…
この3つのファイルだけでも、ユーザーからデータを受け取り、それをRubyで加工して出力する、っていうウェブアプリの基本はできます。 いわゆるシングルページアプリケーションです。
これだけで、Ruby自体でできることは全て可能ですので。どんな複雑なスクリプトでも、ウェブアプリとしてユーザーに操作してもらうことができます。
ここからは、Ruby関係なしに、ウェブサイトの構成の問題、つまり、Railsの問題になります。
Railsチュートリアルをやろうとしない
Railsチュートリアルを初心者に勧める人は結構います。
しかし、僕は敢えておすすめしません。僕も3章まで初心者の頃に読み進めていますが、とにかく冗長な説明が多い。 あったら便利な知識だし、後に必要におそらくなるものだと思います。けれど、それをいちいち読んで理解してから進んでたら疲れます。結果、進捗が遅くなり、モチベーションが続かなくなります。(これについてはウィルパワーや事前知識の個人差とかあると思います。会う合わないはあると思いますのでそこは私の意見の同意できそうなところだけ参考にする検討をしてみてください。ちなみに自分はINTPです。)
プログラミングにしてもRubyにしてもRailsにしても、いきなり網羅的に、一気に全てを理解するには、内容が多すぎます。 こういうものは、自分でやりたいことや必要であることをやっていって、分からないことが出てきたらそこで初めて調べていく、それの積み重ねなんだと思います。
(免責と追記)
この記事は半年以上前に書かれたものをそのまま少し編集して投稿したものです。矛盾したこととか変な事を言っている場合がありますが、全く参考にならないということはないだろうという考えのもと投稿を決めた記事になります。
15歳でWordPressサイトを立ち上げ、ウェブ領域に足を踏み入れる。翌年にはRuby on Railsを用いたマイクロサービス開発に着手し、現在はデジタル庁を支えたNext.jsによるHP作成やSaaS開発のプロジェクトに携わりながら、React.js・Node.js・TypeScriptによるモダンなウェブアプリの個人開発を趣味でも行う。
フロントエンドからバックエンドまで一貫したアジャイルなフルスタック開発を得意とし、ウェブマーケティングや広告デザインも必要に応じて担当、広告運用・SEO対策・データ分析まで行う低コストかつ高品質な顧客体験の提供が好評。
国内外から200万人を超える人々に支えられ、9周年を迎えるITブログ「yuipro」の開発者、デザイナーでありライター。現在ベータ段階の自作SNS「nyapp.buzz」を日本一の国産SNSとするべく奮闘中。