SIerの仕事

【2021年版】プログラム初心者におすすめのプログラミング言語と勉強方法を現役エンジニアが解説

プログラミング経験はないけどエンジニアになりたい!技術力を身に付けたい!という人のために、2021年から勉強するのにおすすめのプログラミング言語と勉強方法を紹介します。

「なぜおすすめなのか?」という理由も説明するので、納得しながら読んでいただければと思います。

まずは結論からです。

一番のおすすめは JavaScript

これからプログラミングを始める方は、まず JavaScript から学びましょう。

プログラミングの学習には様々な目的があります。どんなエンジニアを目指すかによっても学習すべき内容は変わってきます。

インフラエンジニアを目指したい!という人にJavaScriptを学べ!というと無理があるかもしれませんが、個人でITに入門したい人はまず JavaScript から勉強するのが良いです。

その理由はいくつかあります。

JavaScript を学べば個人でのアプリ開発につなげやすい

いわゆる「個人開発」です。

個人でアプリケーションを作ってリリースすることで、収益につなげたり就職活動のアピールに使えます。

プログラミング言語はあくまで手段なので、SwiftUIを使おうとRuby on Rails を使おうと何でもいいのですが、JavaScriptには明確なメリットがあります。

JavaScript だけでサーバーもクライアントも作れてしまうのです。

Node.js とか React Native とか言っても初学者のうちは意味がわからないと思います。

ですが、

「JavaScript を勉強しておけば、サーバー側のプログラムも作れるし、ブラウザで作るプログラムも作れるし、スマホアプリも作れる」

と覚えておきましょう。

Ruby on Rails を勉強して、それとは別に JavaScript を勉強して、スマホアプリ開発のために SwiftUI を勉強して…と色々と言語を分けて勉強するよりもはるかに効率的です。

ちなみに Ruby on Rails は JavaScript をなるべく使わない方向に進化しようとしていますが、迷走していると言えるでしょう。

将来的には COBOL や Perl のように負債として残り続けるでしょうが、これからは確実に廃れていくフレームワークです。今から勉強するのはやめましょう。

コンパイラが警告してくれる安心感

TypeScript で開発していると、何らかの都合で型を変更したときに、プログラム内で矛盾があるときはコンパイラが警告を出してくれます。

動かさなくても問題を検出してくれるのです。

実際にコードを書くまでは実感できませんが、コンパイラがしっかりと型をチェックしてくれる安心感は非常に大きいです。

型がある方が生産性が高い

これが Ruby on Rails だといちいちテストを書かなければいけないですし、動かさないと問題がわからなかったりするのです。ものすごく面倒くさく、そしてわかりづらいです。

Ruby on Rails が生産性が高い、などという人もいますが、それは最初だけです。

全部込みで色々と作れるので、Rails Way に沿っているときだけ生産性が高いですが、開発していくうちに Rails の生産性は落ちていきます。

特にリリース後数年経って、大規模になったコードを保守するとき、Rails は本当に辛いです。

メソッドが何を返すかも IDE が教えてくれないのでいちいちそのコードを読みにいかなければいけません。

Model がどんなプロパティを持つかは Rails によって抽象化されているので、その Model が何をしているのかよくわかりません。

Ruby も Rails もクソです。将来的には必ず廃れていくと確信しています。こんなものに大切な時間を費やすのは業務中だけにして、自分の時間は JavaScript に使ってください。

Rails チュートリアルなんてやるな

一昔前は、 Rails チュートリアルをやれば現場で使えるエンジニアになれる!みたいに言われていました。

Rails チュートリアルは本当に優れたチュートリアルでした。

テスト駆動開発の大切さに触れ、Rails だけでツイッターのようなアプリケーションを完成させるまで体験できるチュートリアルで、私も最初は感動しました。

ですが、時代は変わります。

現場で使われている RSpec を無視していつまでも minitest でユニットテストを書くのもいまいちです。

erb と呼ばれる HTML に Ruby を埋め込むスタイルでコードを書くのも時代に合っていません。

erb のファイルは現代では負債として剥がされ続けています。にも関わらず、Rails のリードエンジニアは相変わらず 、Railsを JavaScript を使わない方向に進化させようとしているのです。

Rails は2021年から触るようなものではありません。DHH(Rails の開発者) はもう時代に合ってないので、距離を置きましょう。

センスない人と心中する必要はありません。

「プログラミングが楽しいことを重視している」などと言いながら IDE の開発体験が悪く、Ruby3に至るまでまともな静的型システムを導入しなかった まつもとゆきひろ 氏の姿勢にも疑問を感じます。

Quora にこんなこと書いてます。

TypeScriptのような静的型システムと型アノテーションをRubyに追加するような言語は存在しうると思いますし、それはそれである種の人に魅力的に見えるだろうとは思います。また、最近はTypeScript(JavaScript)に限らずPHPやPython3など、もともとは動的型言語として設計された言語に型アノテーションを追加するものも登場しています。となるとRubyも、と思うのは自然なことかもしれませんが、言語デザイナーとしての私は、そうはしたくないと感じています。

したくない理由は複数あるのですが、最大のものは、型アノテーションを加えることで言語の性質が変化してしまいそうだということです。Rubyのプログラムを書いていて一番魅力的なのは簡潔にすばやく記述できることだと思うのですが、型アノテーションはそれを阻害しそうです。もちろん、オプショナルなので書かなければよいというのもひとつの主張ですが、言語に型アノテーションが加わると、コミュニティとして「型を書くのは必須」のような動きが出てくるのが容易に予想できます。それはRubyの一番のこだわりである「書き味」を変えてしまいそうです。

Ruby は書くのも読むのも苦痛で、自分には正直何が魅力なのか全くわかりません。

言語作成者がこだわっている「書き味」が不味すぎるのです。Ruby で書かれたシステムに触れると、まずいラーメンを食ったときのような怒りに似た感情が湧いてきます。

そういう意味で、Rubyが好きな人はいるかと思いますが、個人的には1ミリもおすすめできません。

静的型付けが Ruby に浸透する前に言語として廃れていくでしょう。今から学習する価値があるとは思えません。

これから学習する人は軽く触れるくらいにして、Rubyにコミットする価値があるかは慎重に見極めましょう。

私はないと思います。

Ruby の開発者たちが自分たちの「気持ち良いプログラミング」を追求し続けて外からの声を無視し続けた結果、Vagrant や Sass にも見放されて、誰からも歓迎されない忌まわしき負債になっているのでしょう。

Ruby はオワコンです。初心者はできる限り Ruby に時間を使わないようにしましょう。