この記事を書いた動機
就活用のポートフォリオをひとまず作り終え、ここ数日間はエントリーする企業を探したり、面接対策の勉強に時間を使っているところです。
去年にRailsチュートリアルの自分用まとめを投稿し、先月CicleCIについてのメモを残した以外は、ほとんど投稿をしていない状態でしたが、やはりアウトプットは大事ということで、手書きのノートの内容をQiitaにも残しておこうと思った次第。
とりあえずWeb系の言語について書くことにします。
Web系の言語
Web業界で使用される言語には様々な種類があり、それぞれに特徴や向き不向きがある。
その中には、現在エンジニア界隈で人気があって積極的に使用されているものもあれば、徐々にレガシー化して使用されなくなってきているものもある。
人気が高く、コミュニティも活発な言語を使用することはアプリケーションの性能や開発効率、使い勝手に貢献し、エンジニアとしての能力向上にも繋がるため、実際にその言語を使用しない場合であっても、その特徴について知っておくことは有用である。
なお、動的型付け、静的型付けについてはこちらの記事が参考になった。
動的型付けと静的型付け
動的型付け言語
Ruby
- 分野を問わず使用される言語で、特にスタートアップ企業やメディア系企業に多い。 なお、ソーシャルゲームやEC系では伝統的な理由からPHP、アドテク系ではJavaが使用されることが多い。
- Ruby on RailsというWebフレームワークの存在
- 多数の便利なライブラリ(gem)が使用可能
- 日本語情報が豊富で学習コストが低い(開発者が日本人)
- 以上の理由から人気が高く、コミュニティが活発で、将来的にも使い続けられる可能性が高い。
とはいえ、ここ数年は下り坂傾向にあるもよう。
PHP
-
Wordpressの存在が大きい
PHPを使って作られた、CMS(Content Management System, コンテンツ管理システム)用アプリケーション(ブログなどのWebサイトを作成するためのアプリ) - LaravelやCakePHPなどのWebフレームワークの存在
- 日本語情報が豊富で学習コストが低い
- ソーシャルゲーム開発のデファクトスタンダードだった。 そのため、PHPを使用できるエンジニアが多く、開発者を集めやすいという利点がある(ソシャゲ自体の衰退を考えると、需要に対して供給が多いという欠点があるともいえる)。
Python
- 日本よりも海外での人気が高い(Google社内の標準言語)
- DjangoやFlaskなどのWebフレームワークの存在
-
機械学習におけるデファクトスタンダード
サーバーサイド用の言語としてはRubyやPHPに対する優位点があるわけではないが、機械学習系のサービスを開発している企業が、機械学習用の言語とサーバーサイド用の言語を統一する目的で使用している - バージョン2.7系と3系の混在問題がある
JavaScript
- サーバーサイドの実行環境であるNode.jsと合わせて、フロントエンド開発で必須
- AltJS(JavaScriptを静的型付け言語として扱う代替言語)のTypescriptが人気で、今後の主流に
-
SPA(Single Page Application)が流行
一つのページから遷移せずにデータ通信を行うアプリケーション。 vue.jsやReactなどのSPAフレームワークの人気が高い -
Electronなどのツールを使ったデスクトップアプリやスマホアプリの開発でも使用
静的型付け言語
Go(Golang)
- 近年かなり人気の言語で、マイクロサービスとの組み合わせで使用されることが多い(メルカリなど)
- 主に高速なAPIサーバーの開発に使用される
シンプルな機能のみを備えるAPIサーバーの開発においては、RailsやLaravelのような高機能のWebフレームワークが不要であり、リクエストを高速に捌ける言語としてGoの適性が高い - DockerやTerraformでも使用
イメージを小さくできることからDockerと好相性 -
GCPのサービスと相性が良い
PaaSであるGAEで使用されている - 学習コストが低く、導入が容易
JVM系言語
JVM系の言語はコンパイル型の言語であり、コンパイル後に生成されるバイトコードがJVM(Java Virtual Machine)と呼ばれる仮想マシン上で動作する。
元はJavaのみであったが、生成されるバイトコードが同様の形式であればJVM上で動作するため、Java以外にもScalaやKotlinといった言語が使用されており、これらはJVM系言語と呼ばれる。
Java
- SIerでの使用率が高い
Web系ではKotlinに主流の座を譲っている状況。Web系企業においてサービスの新規開発に使用されることはない。 - アドテク系企業での使用が多い
- レガシーな言語であるが、それゆえに蓄積されたノウハウが多い
Kotlin
- better Java(Javaの上位互換となる言語)におけるファーストチョイス
-
Androidの公式開発言語
人気が高く、サーバーサイドでの使用も多い - Scalaに比べると学習コストが低い
- 静的型付け言語としてはGoと競合関係にある
JVM系言語として、Javaのノウハウや資産を活用できる点で差別化される