スクールでは教えてくれない!プログラミング言語の分類と選び方

ABOUTこの記事をかいた人

大学でプログラミングを学ぶ→経営に興味を持ち勉強→月2桁は稼ぐフリーランスに→プログラミング初心者向けのオンラインメンタリング Udemy講師もやってます→u0u1.net/MGfz

はじめに

はい、今回はプログラミング言語の分類と選び方について書きます。

プログラミングを学ばれている方で、言語選びが難しいと思った方は多いのではないでしょうか?何から始めればいいのか、何をやればいいのか、迷った結果なんとなくで決めてしまったなんて方もいるかと思います。

そこで、改めて現役エンジニアである僕が思う言語の種類と選び方をお伝えします。今回の記事では、技術的側面というよりは仕事の取りやすさや目的に合うかどうかなどちょっと違った側面から書いていきます。

(内容は先日のYouTube配信でも話したものですが、尺が長くてちょっと見づらい部分もあったのでまとめています。)

先日の配信はこちら

〜目次〜

概要

最初に全体の分類を載せます。これ以外にも言語はありますし分類法も様々ですが、今回は制作物別に分類しています。


Web系

まずはWeb系から紹介します。Web系の言語は最近特に人気になっているように感じますね。名前の通りWebページやWebサービスを構築する言語群です。分類としては、Web系の中でもさらにフロントエンドとバックエンドに分かれます。

フロントエンド

一言でいえばUIを担当するのがフロントエンドです。ユーザーから見える部分ですね。言語はHTML/CSS/JS以外は基本ないので迷う要素はほぼ無いですね。
ただし、JavaScriptのフレームワーク選びには迷う場面があるかもしれません。今はVue.jsとReact.jsが人気が高くよく使われています。
個人的にはこれまでのjQueryのように小規模でも使えるVue.jsがおすすめです。

バックエンド

こちらは言語によって特性に違いがあります。

PHP

使われている割合が多く、案件数が多い。特にWordPressの存在によりバックエンドの知識がそこまでなくとも一定レベルのシステムを構築できるのがメリット。

Ruby

PHPに比べると案件数は少ない。有名サービスでの採用例もある(Twitterやクックパッドなど)。とはいえ全体ではベンチャー企業での採用が多い印象。スクールなどでやたらとRubyを推され、学ばれている方が多い割には仕事が多くないのでその辺りが疑問点。(もし知見の深い方がいらっしゃればコメントで教えていただけると幸いです。)

Python

今回はWeb系に分類したが、機械学習やスクレイピングなどの領域に強い。そういった機能を組み込む場合はWeb構築もPythonでやってしまった方が楽。またYouTubeやInstagramなどでの採用例がある。注意点は、フリーで仕事をとる場合にはハードルが高いことで、それなりに技術力がないと難しい印象。

Java

ピークを過ぎてしまった言語のためか、新規の採用例はあまり見なくなった。今から学ぶには少々遅いという印象。

まとめると、フロントエンドはほぼ1択でバックエンドは状況に合わせて選ぶという形です。

スマホアプリ

スマホアプリはほぼ選択の余地がなく、iOSアプリならSwift、AndroidならJava、Kotlinに決定されます。さらにKotlinはJavaの100%互換かつエラーが出にくいなどメリットが多いので、今から始めるならわざわざJavaを選ぶ理由は薄いかと思います。

また近年はWebの技術でスマホアプリを作れるものが登場しています。(代表的なものを紹介します。)

PWA

Progressive Web Applicationの略で、Webアプリでありながらプッシュ通知やホーム画面へのアイコン追加などスマホアプリの特徴的な機能を持つものです。OSに左右されず利用できるので、サービス展開のハードルが低い。ただし完全にアプリ化しているわけではないのでストアに出すことはできない。審査を受ける必要がないというメリットがあるが、ユーザーのストアからの接触もないというデメリットもある。

React Native

こちらは先ほど紹介したReact.jsをベースにアプリを作ることができる技術。Reactを経験されているなら自然に開発できるため参入ハードルが低い。こちらもOSに左右されず開発が可能で、かつきちんとアプリ化したものを作るのでストアに出せる。

まとめると、ネイティブ開発であれば言語が決まりきっていますがWebの技術を流用するのであればそれまでやってきたものに合わせて選択するという感じですね。

デスクトップアプリ

これに関しては僕自身の知識が乏しいのもあり、言語ごとの状況はあまり語れませんm(__)m
MacアプリであればSwiftで開発できるので、iOSアプリと合わせて選択するのが良いでしょう。それ以外ではPythonでも開発ができ、すでにPythonでの開発経験があればそのまま参入可能です。また、デスクトップアプリにおいてもElectronというフレームワークによってWebの技術をほぼそのまま転用できます。
仕事という側面で見ると、デスクトップアプリは社内の業務効率化ツールとしての要求が他に比べて多く、セキュリティ面などをそこまで気にしなくても良い場合があるので地味ながら参入しやすい領域かもしれません。

まとめ

さて、ここまで読んできてお気付きの方もいらっしゃるかもしれませんが、僕としては今から学ぶならWeb系の言語をお勧めします。
今回見てきたように、Webの技術の汎用性がここ数年で非常に高まってきておりスマホ/デスクトップアプリの開発が可能になってきました。そうなると、わざわざswiftのようにそこまで汎用性の高くない言語を選ぶ必要性が低いです。せっかくWeb系の技術で色々作れるので試してみてはいかがでしょうか。学習の効率も高いですからね。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください