仮想サーファーの波乗り

仮想サーファーの日常

プログラミング・エンジニアのスキルアップ・ブログ運営などに関してよく書く雑記ブログ

【要保存】どのプログラミング言語を学べば何が作れるようになるのかまとめ


f:id:virtual-surfer:20191212184951p:plain

「どのプログラミング言語を学べば、何が作れるようになるのか?」

「どのプログラミング言語を学べば、どんなエンジニアとして働くことができるのか?」

など、プログラミング初心者の方にとってはよく分からないですよね。


今回は、どのプログラミング言語を学べば何が作れるようになるのか、どのプログラミング言語を書けるようになればどんなエンジニアとして働くことができるのかについてまとめておきます。

これからエンジニアになろうと考えているけど、どのプログラミング言語を選べばいいのか分からない...という方の参考になればと思います。


どのプログラミング言語を学べば、何が作れるようになるのか?

まずは、どのプログラミング言語で何が作れるようになるのかまとめた図を貼っておきます。

f:id:virtual-surfer:20191212212615p:plain

それぞれのプログラミング言語と、何ができるのかについてもう少し詳しく見ていきましょう。


Webフロントエンド開発とは?フロントエンド開発ができる言語

f:id:virtual-surfer:20191212201729p:plain

(画像:はてなブックマーク)

Webアプリケーションを開発するときには、画面のデザインやページやボタンの表示の制御をするプログラミングをするフロントエンド開発と、検索の処理条件やデータベースとのデータやり取りを制御するプログラミングをするサーバーサイド開発の2つの役割があります。

そのうちの画面の制御を行うフロントエンド開発に用いられるプログラミング言語が、HTML、CSS、JavaScriptです。

HTMLが文字や画像など、Webページにどんなデータを表示するのかを決める言語で、CSSは表示されるデータを装飾する言語で、JavaScriptはボタンやリンクが押されたときに色を変えるという制御をしたり、ボタンが押されてデータが書き換わる場合や新たなデータが必要になったときにサーバーサイドにデータとのやりとりを依頼する役割を持ちます。


JavaScriptのフレームワークとは?その種類は?

JavaScriptはボタンの制御やポップアップアラートの表示や、画面の操作までさまざまな処理をすることができますが、その処理を全てゼロからプログラミングしていくのは大変ですよね。

Webアプリケーションを開発するのであれば、入力フォームや、ボタンの制御や、ポップアップ表示の処理などはある程度共通になるので、そのようなJavaScriptでよくある処理をまとめて用意してくれていると便利ですよね。

そんな便利な処理をまとめてくれていて、使いやすくしてくれているのがJavaScriptのフレームワークであるReactやAngularやVue.jsです。


プログラミングの文法やどんな処理が得意かはそれぞれ異なるものの、どのフレームワークも根本的にはJavaScriptの文法に従っているので、どれか一つのフレームワークでの開発ができるようになれば、他のJavaScriptフレームワークでの開発も比較的かんたんにできるようになるでしょう。


f:id:virtual-surfer:20191212202821p:plain

Googleトレンドでの検索トレンドを確認すると、近年Reactの人気が上昇しつつあり、AngularもVue.jsもゆるやかに検索数は増加傾向にあることがわかりますね。


Webサーバーサイド開発とは?サーバーサイド開発ができる言語

f:id:virtual-surfer:20191212203039p:plain

Webサービス開発で必要になる技術のもうひとつがサーバーサイド開発です。

サーバーサイド開発では、データベースとのデータやりとりをしたり、フロントエンドから要求されたデータをフロントエンドに渡したりといった処理を行います。

プログラミング言語としては、JavaやRubyやPythonやPHPのような主流のプログラミング言語から、近年大規模サービスでの高負荷処理をさばくときに重宝されつつあるGo言語やScalaやRustという言語もあります。


サーバーサイド開発はフロントエンド開発と比較すると多様なプログラミング言語があるように感じますが、多くのWebアプリケーション開発の場合ではJavaかRubyかPythonが選択されることが多い印象です。

サーバーサイド開発でも、データベースとのやりとりや、フロントエンドとのゲータやり取りの処理やセキュリティなど、どのようなWebアプリケーションでも共通的に必要となる処理は、各言語に用意されたフレームワークが提供してくれている場合が多いです。

たとえば、PythonであればDjangoやFlaskというフレームワークが有名ですし、RubyだとRuby on Railsというフレームワークが使われてWebアプリケーション開発がされることが多いです。


f:id:virtual-surfer:20191212203937p:plain

メジャーなサーバーサイド開発言語の中では、JavaとPHPは2010年ごろには圧倒的な人気を誇っていましたが、Pythonがここ数年一気に人気を伸ばしてきていますね。


f:id:virtual-surfer:20191212204520p:plain

大規模・高トラフィックなリクエストをさばく必要があるWebアプリケーションで利用されることが多いサーバーサイド言語の中ではScalaが当初は人気でしたが、近年はGo言語やKotlinやRustの人気が上昇してきていることがわかりますね。


スマホアプリ開発とは?スマホアプリ開発ができる言語

f:id:virtual-surfer:20191212213940p:plain

次に、iPhoneアプリとAndroidアプリに代表されるスマホアプリ開発ができる言語を紹介していきます。

スマホアプリ開発は、iPhoneアプリならSwiftというプログラミング言語を利用して、AndroidアプリならJavaやKotlinを利用して開発するというように、スマホのOSに依存したプログラミング言語の選択をすることが一般的でした。

しかし、2015年にFacebook社が開発したReact NativeというAndroidアプリもiPhoneアプリも開発できるスマホアプリの開発フレームワークが発表されたことから、特定のスマホOSに依存しないネイティブアプリ開発が選択肢として生まれてきました。

ここ最近では、アプリの開発者が十分にいるエンジニア組織ではKotlinというサーバーサイド開発でも利用される言語でAndroidアプリを開発し、iPhoneアプリはSwiftで開発するというようにOSごとに開発言語を分けて開発するパターンを選択し、アプリ開発ができるメンバーが限られているけど両OS向けのアプリを開発することが求められる組織ではReact NativeやFlutterのようなネイティブ開発ができる技術で両方のOS向けのスマホアプリを開発するケースが選択されている印象です。


f:id:virtual-surfer:20191212210049p:plain

最近ではObjective-Cでの開発事例はほとんどなくてSwiftとKotlinでの開発が主流なのかなと思っていましたが、Objective-Cの検索もまだまだありますね。React NativeやFlutterは検索数がまだまだ少ないのか有意な結果にならなかったので比較対象から外しました。


ゲーム開発とは?ゲーム開発ができる言語

f:id:virtual-surfer:20191212215054p:plain

WebブラウザでできるWebのゲームから、スマホアプリでのゲーム、VRアプリケーションのゲームなど、ゲーム開発といっても様々な種類のものがあります。

ゲーム開発ができるプログラミング言語は多いですが、C#がメインで利用されることが多いです。

Unityというゲームを開発する上で便利なゲーム開発エンジンがあるのですが、そのUnityでもC#が利用されることが多く、ゲームを開発したい方はC#を勉強してUnityでのゲーム開発をしてみるのがよいでしょう。


また、スマホアプリを開発したい場合は、上で紹介したスマホアプリ開発ができるプログラミング言語を学んでいれば開発することができます。

スマホアプリの開発を学べば、スマホゲームも開発できるようになるのは嬉しいですね。


機械学習と統計分析とは?機械学習と統計分析ができる言語

f:id:virtual-surfer:20191212214746p:plain

Amazonで何か買い物をしたときに、「この商品もどうですか?」と関連商品をレコメンドする機能や、自動でアニメのキャラクターの画像を生成する技術や、自動運転技術など、これからの社会で需要が急拡大していくと予想されている技術のひとつである機械学習。

また、ツイッターの膨大なツイートデータの中から消費者の購買行動やトレンド情報を分析するなど、データの統計分析の技術も注目されています。

そんな機械学習や統計分析の分野で活躍しているプログラミング言語は、PythonとRです。


Pythonは機械学習関連の便利な処理を提供してくれるライブラリが数多く公開されていることから、機械学習の領域で利用されることが多く、Rはデータを分析することに特化しているので、より統計分析の分野で利用されることが多いプログラミング言語です。


まとめ

以上、どのプログラミング言語を学べば何が作れるようになるのかまとめでした。

これからプログラミングを学習してエンジニアとして働くことも視野に入れている方は、まずはどんなものを開発することができるようになりたいのかを考えて、それを開発するために必要なプログラミング言語ってなんだっけ?と考えていくことが大事です。

学びたい目的別にプログラミング学習ができるオンライン学習サイトUdemyでのオススメコースを紹介している記事もあるので、そちらも読んでみてください。

www.virtual-surfer.com


では。