2021年にプログラミング初心者が身につけるのは、本当にRailsでいいのか?という話

ウサギ
ウサギ

ふむふむ。

イヌ
イヌ

ちょっと頭の中を吐き出してみようかと。

ウサギ
ウサギ

聞かせて〜。

どうも、イヌです。ブログ100記事に向けて爆走中です。

今日はプログラミングを学ぶにあたって、どんな方針でやるのがいいのかという吐き出しです。


イヌは10年前、Ruby on Rails(以下、Rails)でWebサービスを開発し、そのWebサービスを運営する会社を立ち上げ、Webエンジニアのキャリアを始めました。

そのWebサービスは鳴かず飛ばずだったので、1年半ほどで会社を閉じ、Webエンジニアとして、会社員として働き始めた経緯があったりします。

Railsは、はじめて利用したWebアプリケーションフレームワークですし、Ruby自体も比較的好きなプログラミング言語です。

この記事は、

Railsを学ぶ前に、Rubyを学べ。

Sinatraから学んで、Webの仕組みをきちんと理解してから、Railsを利用し始めよう。

という主旨ではありません。

そもそも、2020年代に突入した現代、Webアプリケーション・Webサービスを作る。という選択肢において、Railsなのか?という話です。

現実問題としては、Rubyは日本生まれのプログラミング言語なのも手伝い、日本でとても人気があります。プログラミング言語の実装者・コミッターに、直接日本語という母国語でアクセスできる言語というのも、唯一Rubyだけだと思います。

また、DHHが、Rubyという柔軟性の富んだ、楽しい言語に魅了されて、Ruby on Railsというフレームワークが生まれました。

Railsが世に出てきたときには、10分でブログサービスが作れる。という謳い文句が掲げられていました。本当に魔法のようにあっという間にWebアプリケーションが作れていたわけです。

ただ、Railsは究極のモノリシックアプリケーションのフレームワークです。

MVCが密結合になっていて、フロントエンド部分もRubyに縛られた構成になっています。

Railsは密結合になっているからこそ、開発速後が上がり、Webアプリケーションの更新をドンドン進められるわけですが、今日のリッチなUIを提供するWebサービスが増えてきた環境だと、諸刃の剣だったりもするわけです。


と、Railsについて話してきましたが、2021年はJavaScript(というかほぼTypeScript)がどんどんWebアプリケーション開発の領域に入ってきます。

いまもだいぶ増えては来てますが、そのキラーフレームワークがNext.jsです。

簡単にいうと、JSのViewライブラリであるReactをめちゃめちゃ便利に使えるフレームワークがNext,jsです。

Next.js単体では、Railsを置き換える話にはならないのですが、これまで以上にNext.jsの名前は聞くようになると思います。

Next.jsまでにたどり着くには

JavaScript → HTML → CSS → React → TypeScript → Next.js

のような進路をたどると良いかなと思います。

この進路のほかにも学ぶ知識はあるものの、基本的にはNext.jsを目指して、プログラミングを学ぶのがよいかなと思います。

イヌはフロントエンドエンジニアなので、ポジショントークではありますが、プログラミング初心者として、Railsなどを利用したバックエンドエンジニアを目指すには、正直なかなかハードルが高いです。

フロントエンドエンジニアというのは、この職種自体が生まれてあまり時間が経っていないこともあり、どの企業でもフロントエンドエンジニアが足りないという話をよく聞きます(慢性的にフロントエンドもバックエンドも足りないと言っている企業がほとんどではありますが)。

バックエンドでどっぷりソフトウェアエンジニアリングをやっている人は、意外とフロントエンドが苦手な人が多かったりします(最低限HTML / CSS / JavaScriptは書けるが、ReactやNext.jsなどモダンなフロントエンド技術はキャッチアップしていないなど)。

これからフロントエンドスタックは、トレンドとして伸びていくので、伸びる可能性のあるところに投資するのは、懸命な判断だと思います。


ということで、

バックエンドのRailsもよいけど、

フロントエンドのNext.jsを検討材料に入れてみてはどうでしょうか。

という吐き出しでした。

イヌ
イヌ

そこそこ吐き出せた気がする〜

ウサギ
ウサギ

引き続きやってこ〜

またね〜

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です