「ゼロからプログラミングを学びたいけど、言語が多すぎて何を選べばいいかわからない…」
「なんかC?ってのをやらないと基礎が身につかないとか聞いた…」
これからエンジニアとして頑張っていこうとしている人のなかで、こういった悩みを抱えている人も多いと思います。
一体何を基準にプログラミング言語を選ぶべきなのでしょうか?
結論から行ってしまうと、「やりたい仕事」から言語を選びましょう。
仮にこれが趣味だったら適当に触ってみて手触り感がいい言語を使ってみるのはよいでしょう。
しかし、現実のシステム開発では「こういう言語はこういう案件に使われやすい」という傾向があるのも現実です。
なので、その現実に逆らわず利用し、やりたい仕事・案件からプログラミング言語を決めてしまいましょう。
Contents
やりたい仕事から導くプログラミング言語
Web系のスタートアップで高速開発したいならRuby
いわゆるスタートアップ・ベンチャー企業でのWeb開発の仕事がやりたいのであれば、Rubyを勉強するのが最短で目標にたどり着く方法です。
RubyにはWeb開発のフレームワークとして爆発的な人気を誇っている「Ruby on Rails」があり、スタートアップなどリソースを十分に確保できない状況であっても高速に「動くものが作れる」環境が整っています。少人数であってもプロダクトを作ることができるので、将来的に起業や独立を目指している方にもおすすめできる言語です。
RubyはProgateやドットインストール、公式のリファレンスなど、オンライン上に教材が提供されているだけでなく、最近ではRuby on Railsを対面でプロのエンジニアから教えてもらうことができるプログラミングスクールも出てきていて、未経験からエンジニアとしてスタートダッシュを切りやすい仕組みが急速に発展してきています。
ECサイトやブログメディアを作りたいならPHP
ECショッピングサイトやメディアなどを開発していくことに関心があるのであれば、PHPを習得しましょう。
ECサイトの構築では、日本産のフレームワークである「EC-CUBE」が国内では人気であり、運用実績もあるためフレームワーク自体も安定してきています。ECサイトを作りたいのであればPHPの基本とEC-CUBEを覚えるのが最短経路です。
メディアの開発では「WordPress」というPHPで作られたフレームワークのシェアが圧倒的です。セットアップ時に自動的にWordPressをインストールしてくれるレンタルサーバーも多くあり、個人でも高機能なブログをすぐに立ち上げることができます。(余談ですが、このメディアもWordPressを使って制作されています)
EC-CUBEもWordPressもカスタマイズ案件が豊富にあり、仕組みを覚えてしまえば仕事を取りやすいのもメリットの一つです。
また、EC-CUBEはEC、Wordpressはメディア運営というふうに特定の用途に特化したフレームワークですが、Laravelは汎用的なフレームワークとして設計され、昨今注目を集めています。新しくオリジナルのサービスを立ち上げたりする場合は、Laravelを学習するのが良いでしょう。
大規模開発・高度な業務システムを開発するならJava
大規模開発や、企業内部で動作する業務システムを開発するのであれば、Javaを勉強するのが良い選択です。
JavaはRubyやPHPと違って、データ構造を厳密に記述しなくてはならない「静的型付け言語」であり、この特性が大人数で開発をするときに役に立ちます。
Javaは官公庁や銀行のシステム、大企業の給与計算ソフトや会計ソフトでも使われるほど、大規模・業務システム開発で実績がある言語です。
「Write once, run anywhere」(一度かけばどこでも動く)のスローガンの通り、Javaさえインストールされていればその外部環境にかかわらず動かすことができるのもJavaが選択されている理由です。
フレームワークとしては、長年使用されている「Apache Struts」や大量データのバッチ処理からWeb開発まで幅広くサポートしている「Spring Framework」などが有力候補です。最近ではSpring Frameworkを使う案件が増えてきていますので、初学者はまずSpring Frameworkからチャレンジしてみると良いでしょう。
Webシステムのフロントを突き詰めたいならJavaScript
Web系システムの中でも、ユーザーが直接触る部分のUIの開発をとことん極めたいならJavaScriptを学ぶと良いでしょう。必然的にHTML+CSSも学ぶことになります。
実務では、JavaScriptを標準のまま使うことはあまりなく、何らかのライブラリを必ずと言っていいほど使用します。
簡単にWebページのボタンを押したときの動きなどを書くことができる「jQuery」、シングルページアプリケーションでよく使われる「React」「Vue」のどれか一つでも良いので集中的に覚えておくと良いでしょう。Reactは三年ほど前から増えてきたライブラリで、Vueは近日急激に発展してきたライブラリです。
最近では、フロントエンドを体系立てて理解でき、設計できる人材が不足しているという話をよく聞きます。学習を続けさえすれば、希少で市場価値の高いエンジニアになることが期待できますね。
機械学習・IoTシステムを開発するならPython
流行りの「機械学習、ディープラーニング、IoT」を勉強したいならばPythonを覚えましょう。
Pythonでは機械学習・ディープラーニングのライブラリが充実しており、データを整形してメソッドを呼び出すだけで学習ができます。
ほかの機械学習ライブラリがない状態の言語だと、まず計算数式を実装することから始めなければいけないことを考えるとこれは大きなアドバンテージです。
また、Raspberry PI上でもpythonは動かすことができますし、PythonにはFlaskという簡単なWebサーバーを作れるフレームワークがあります。IoT開発案件でもpythonだけである程度は対応できてしまいます。
広告に関する仕事(アドテク)がしたいならScala
ScalaはJVMで動き、一部ではBetter Javaとも評される言語ですが、実務ではアドテク関連の開発に用いられていることが多いようです。Javaのような官公庁システム・企業の基幹業務システムでは今の所使われていないのが現状です。
アドテクは高速で広告を表示したり、広告から間違いなく送客されなければならない分、速度と品質を両立させる必要があるため技術的チャレンジポイントは高いかと思います。ただし、少数精鋭で開発チームを組む場合が多いため、初学者がいきなりScalaの仕事を取れるかと言うと微妙なところです。
iOSアプリが作りたいならSwift
iPhoneアプリが作りたいならSwiftを選択するのが良い選択です。
Objective-Cという選択もありますが、これからのiOSアプリはどんどんswiftに移行していくでしょう。新しく学ぶならばswiftをオススメします。
iOS・Android開発はクロスプラットフォーム開発(異なる環境をまたぐプラットフォーム)としてReact Nativeのような存在も開発選択肢に入ります。
Androidアプリが作りたいならKotlin
Androidアプリを作るときには、JavaとKotlinの2つの選択肢があるのですが、トレンドに乗っているのはKotlinなので、まずはKotlinの学習を検討するべきでしょう。
理由はSwiftの項で述べたときと同じように、これからはどんどんKotlinベースでの開発になっていくからです。
VTuberを作りたいならC#
今話題のバーチャルユーチューバーを作りたいなら、「Unity」が使えるC#を選択しましょう。
他にも3D系のゲームやポリゴン操作などができます。
ハードウェア・組み込み開発ならC
近年「Rasberry Pi(ラズパイ)」という安価で小型の組み込みに使用できるPCが注目されており、ラズパイはPythonやJavaScriptなどで動かすことができますが、現実に企業で運用されているかどうかと言われるとまだまだ発展途上です。
ハードウェアに近い仕事がやりたかったり、組み込み開発と呼ばれる領域の仕事がやりたいのであればこれはC言語を学習するのが良いでしょう。
自分が信じる言語をやりきろう
本記事ではやりたい仕事内容からあなたが今学ぶべきプログラミング言語を逆算してみました。
よくSNSなんかで「Rubyはもうダメ」「Javaはオワコン」みたいなことを言っている人がいますが、話半分に聞き流しておけば良いと思っています。実際に実務で使われ、実際にシステムは動いているのだから。
そんな言葉に惑わされず、自分のやりたい仕事を決めて、言語を決めてやりきる。
すると、いい結果が出ると思いますよ。