最初のプログラミング言語の選び方(言語の特性)
Who(誰向けな記事か)
今からプログラミング学習を始めたいが何から始めたらいいのか?と悩まれてる方がいらっしゃると思います。インターネットで検索をかけても「○○は時代遅れ、これからの時代は☓☓」や「この言語を学習すれば稼げる!」と言った表現が多いです。プログラミング学習を始めるときは言語の選択が最初の関門かもしれません。
Why(なぜそうなるのか)
プログラミングの考え方で「プログラミング=言語であり、誰でも学べます」とあります。もっと噛み砕くと「プログラミングの考え方の基礎はほぼ共通です。こんにちは、なのか、Helloなのかの違いでしかない。使われる国(ITの領域)が異なる」というだけです。そのため、大別して今日はご紹介します。
「ちなみにすべての言語を完璧に理解したい!」は危険です。2020年現在、200語以上あります。
言語の選ばれ方から考える視点
一般的に下記のような要素から使用する言語は選ばれます。
- 言語の特性
- データベースとの連携
- 使用するフレームワークによる生産性
2と3については「ニーズによる」としか言いようがなく、普段から予測するのは難しいかもしれません。ですが、これから学ばれる方は1. の特性だけでも知っておくと、どこから学び始めればいいか、がわかるかもしれません。
→業務システム:お客さん(ユーザー)の業務の中で必要とされるシステム。汎用性ではなく、その会社に合わせた専用品を作ることが多いです。そのため、より自由度の高い言語が選ばれ、きめ細かい設定が可能な言語が選ばれます。
代表的な言語
Java : 大企業のシステム開発などに利用されている。最も大きな特徴は、“様々な環境で動く"という点。Windows、Mac、Linuxサーバ、組込コンピュータでも動く。特に銀行などの大企業システムで利用されているため、ここ20年に渡る信用度がとても高い。現時点では需要ある言語世界1位であり、世界の30億を超えるデバイスで稼働している。
C:組込システム(たとえば自動販売機など)に利用されている。取得難易度が非常に高いとされているが、メモリ・CPUなどハードウェアを意識したプログラムを書くため、言語の知識だけでは利用が難しいためである。大学では情報工学部などが専門で学んでいる。
SQL:データベースで使われる世界共通の言語。データベース設計者でなくとも基本的な文法は学んでいる。一度習得すれば様々な領域で使えるが、MVCモデル(Railsなど)のフレームワークでは自動でSQLが発行されるなど、学習の奥深さそのものはあまり深くない。効率的に情報を取り出すことのできるデータベース設計などは重宝される。
Web開発
→Webアプリケーション、Webサイト:インターネットを通じて利用できる(正確にいうとWebサーバーを利用した)システム。専用のプログラムを1から組むのではなく、毎度使う設定などは使いまわしたり、ある程度の型(フレームワーク)を用意します。インターネットに関わるシステムはウイルスセキュリティの観点から仕様の変更がとても早くて多いため、対応へのスピード感が重視されます。言語としてはわかりやすく、ある程度決まった型に当てはめれる=誰か書いても近くなる、言語が選ばれます。
代表的な言語~サーバーサイド~
Ruby:Web開発で主にサーバーサイドで利用される言語。書き方がシンプルであり直感的である点、開発者が日本人であるため、Q&Aも日本語で対応されている点などから、『日本人が、初めて、学習する言語』としてはよく選ばれます。初心者でもプログラムの実行やデバッグを行いやすい(インタプリタ)。
有名なサービス
クックパッド、Gunosy
Python:もとは機械学習やデータ分析に適した言語だが、最近はWebアプリ開発に使われるようになり、人気が上昇している。特徴としては「1つのやりたいこと」→「みんな同じ書き方で」という考えに基づき、初心者からプロまで扱える点や、標準及び外部のライブラリ(機能がひとまとまりになったパッケージのようなもの)が豊富である点から初学者にも人気が出ている。また様々なハードウェアで使える点も長所であり、様々なメーカーによるPC・スマートフォンへの適応能力が注目されている。
有名なサービス
YouTube、Dropbox
PHP:Webサービス、Webアプリ開発のサーバーサイドにおける最も使われている言語。ブログやホームページづくりで使われるWordpressはPHPで制作されており、世界中のホームページの30%以上がWordpressによりできている以上、PHPの人気は続く可能性が高い。Webサイトであれば、ほぼすべて作れる。
有名なサービス
ぐるなび、facebook
サーバーサイド言語まとめ
Rubyは汎用性がとても高いですが、突出した機能がありません。そのため案件シェアトップクラスのPHPや、今流行ってきている、機械学習には専用のライブラリの多いPythonなどが人気になってきています。
代表的な言語~フロントエンド~
→Web開発における、見た目を司る言語のこと。
正確にいうとプログラミングには含まない言語(コード)も含めて紹介。
HTML:ホームページの骨組みを作るコード。Web開発の人々にとっては必ず触れるため、一般教養的な側面がある。
CSS:HTMLで作成したページに装飾するコード。これも一般教養的な側面がある。
JavaScript:HTMLやCSSと合わせ、クライアント側(要はPCでのブラウザ)で動くプログラムや変数を組み合わせることができ、Webサイトに動きを付け加えることができる。近年はWebサイトやアプリ開発には必要不可欠な言語となっている。実はサーバーサイド側の開発も可能。世界中で使われている言語の1位を取得しており、フロントエンドエンジニアには必須となる。
フロントエンドまとめ
HTMLやCSSは特に演算や処理などが動いていないスライドを作成するレベルであり、独学で学べるレベルである。またフレームワークや、前述のWordpressのようなCMSの浸透により、近年のWeb制作ではHTML、CSSが扱えるのみではあまり評価されない風潮がある。そのため、JavaScriptやJavaScriptを用いたライブラリが用いるレベルが求められる。
まとめ
※筆者はRubyからはじめることをオススメします。特化をしていない分、まずはプログラミングそのものの考え方を学べます。ただRubyのみで案件を獲得しようとするのではなく、ニーズのある案件や自分の適性、やりたいことに対して必要となる言語を自分で選び、そちらにコンバートしていくのが良いでしょう。