LoginSignup
1069
1118

More than 3 years have passed since last update.

2020年現在 Web系企業で採用されてる技術についてまとめてみた

Last updated at Posted at 2020-01-22

はじめに

2020年も始まりましたね!
タイトル通りですが、2020年現在スタートアップや大手のWeb系IT企業で採用されている、トレンドとなっている技術についてそれぞれのジャンル毎に求人や採用ページ、ブログを元にまとめてみました。
いくつかピックアップしている形になるので、記述できてないものもありますが、ご了承くださいm(_ _)m
(適宜アップデートしていきたいと思います。)
(自分のメイン領域がバックエンドなので、そちらに偏っていると思います)

言語編

Ruby

サーバーサイドのスクリプト言語、動的型付け言語です。
まつもとゆきひろさん(Matzさん)により開発されたオブジェクト指向スクリプト言語。
日本生まれの言語です。
整数や文字列なども含めデータ型はすべてがオブジェクトであり、純粋なオブジェクト指向言語です。
有名なフレームワークである Ruby on Rails を使うと開発スピードが早く、
スタートアップで採用されやすい言語だと思います。
https://github.com/ruby/ruby

代表的なフレームワーク

  • Ruby on Rails
     言わずと知れた有名フルスタックフレームワーク。
     Model View Controller(MVC)アーキテクチャに基づいています。
     Rubyのフレームワークの中でも、採用事例が多いのでは無いでしょうか。
     https://github.com/rails/rails

  • Sinatra
     こちらは Ruby on Rails に比べて、MVCアーキテクチャに基づかない設計で作成されており、
     全体のサイズも小さく、シンプルです。
     Ruby on Rails を採用するほどでも無い場合に是非。
     https://github.com/sinatra/sinatra

PHP

サーバーサイドのスクリプト言語、動的型付け言語です。
WEBアプリ・サービス開発に特化した言語と言われており、
比較的初心者に優しい?言語と言われています。
(型が無いので個人的には優しいのか微妙な気がしますが・・・。)
一応PHP7.Xから、declare(strict_types=1);で型付けができるようにはなっています。
開発スピードが早く、こちらも Ruby と同じくスタートアップで採用されやすい言語だと思います。
https://github.com/php/php-src

代表的なフレームワーク

  • Laravel
     Model View Controller(MVC)アーキテクチャに基づいた、フルスタックフレームワークです。
     フレームワークに要求される機能がほとんど実装されており、
     こちらもPHPでの採用事例が多いのでは無いでしょうか。
     https://github.com/laravel/laravel

  • Symfony
     こちらも Laravel と同じく、
    Model View Controller(MVC)アーキテクチャに基づいた、フルスタックフレームワークです。
    バージョン1.0のリリースが 2007年1月と比較的古く、息の長いフレームワークです。
    (今はバージョン4.X系です。)
    https://github.com/symfony/symfony

Python

 サーバーサイドのスクリプト言語、動的型付け言語です。
 同じ数の空白でインデントされたまとまりを一つのブロックと認識します。
 Webアプリケーションやデスクトップアプリケーションといった様々なシステムの開発が行えます。
 科学計算、機械学習の分野において採用されるケースが多いです。
 https://github.com/python

代表的なフレームワーク

  • Django(ジャンゴ)
     Model-Template-View(MTV)アーキテクチャに基づいた、フルスタックフレームワークです。
     フレームワークに要求される機能がほとんど実装されています。
     PythonでWebアプリケーションを作る場合に、採用されることが多いです。
     https://github.com/django/django

  • Flask(フラスク)
     Django に比べて、軽量なマイクロフレームワークです。
     標準で提供する機能を最小限に保っているようで、拡張性が高く、シンプルなフレームワークです。
     Django だとオーバースペックな場合に是非。

Go(Golang)

Googleによって開発された、静的型付け言語になります。
Go といった言語名がググりにくいためか、 Golang の呼び方が親しまれています。
並行処理が言語レベルでサポートしており( goroutine )、
コンパイルの速さ、メモリ安全性、パフォーマンスの良さから、ここ数年採用されるケースが増えている気がします。
また、フレームワークを使わないケースが増えている言語です。
https://github.com/golang/go

代表的なフレームワーク

  • Gin
    Webフレームワークです。
    比較的軽量で、シンプルなフレームワークだと思います。
    他のフレームワークに比べて、速いらしいです。
    https://github.com/gin-gonic/gin

  • Revel
    Gin に比べて、フルスタックなフレームワークです。
    webアプリケーション開発に必要な機能は揃っているようです。
    (まだ触ったことがなく・・。すみません・・・。)
    https://github.com/revel/revel

Java

オブジェクト指向型のサーバーサイドの言語です。
有名な言語なので、IT業界にいれば聞いたことがない方はあまりいないのでは無いでしょうか。
静的型付け言語として有名で、業務システムの開発に用いられているケースが多いです。
事前にコンパイルするため、比較的実行速度が速く、様々なシステムで用いられています。
https://java.com/ja/download/mac_download.jsp

代表的なフレームワーク

  • Spring Boot
    Spring FrameworkベースのWebフレームワークです。
    アノテーション(annotation)を使って機能を実装することができ、
    コーディング量が減る印象があります。
    また、 Spring Framework に比べてXMLの記述量も少なく、
    わかりやすい構成にすることができます。
    https://spring.io/projects/spring-boot

  • Play Framework
    ScalaJava で書かれたWebアプリケーションフレームワークです。
    Model View Controller (MVC) アーキテクチャを採用しています。
    Ruby on RailsDjango から大きな影響を受けたフレームワークらしいです。
    https://www.playframework.com/

Scala

オブジェクト指向言語と関数型言語の特徴を統合したマルチパラダイムのプログラミング言語です。
Java と同様のプラットフォーム(Java仮想マシン)で動きます。
Java 等のようなオブジェクト指向な書き方もできるし、関数型言語の書き方もできる言語です。
個人的には、少し玄人向きな言語なイメージです。
https://github.com/scala/scala

代表的なフレームワーク

  • Play Framework
    ScalaJava で書かれたWebアプリケーションフレームワークです。
    Model View Controller (MVC) アーキテクチャを採用しています。
    Ruby on RailsDjango から大きな影響を受けたフレームワークらしいです。
    https://www.playframework.com/

Kotlin

IntelliJ IDEAを開発している、JetBrains社が開発している言語です。
Java をもっと簡潔・安全になるように改良した言語らしいです。
Java仮想マシン上で動くため、Java言語と互換性があります。
Androidアプリでの開発に用いられるケースが多く、
最近ではサーバーサイドでの採用例も増えてきているように思えます。
https://developer.android.com/kotlin?hl=ja

代表的なフレームワーク

  • Spring Boot
    Spring FrameworkベースのWebフレームワークです。
    アノテーション(annotation)を使って機能を実装することができ、
    コーディング量が減る印象があります。
    また、 Spring Framework に比べてXMLの記述量も少なく、
    わかりやすい構成にすることができます。
    https://spring.io/projects/spring-boot

  • Ktor
    Kotlin 純正のWebフレームワークです。
    Spring Bootに比べてサイズも比較的小さく、
    ちょっとしたものやマイクロサービスを作るならこちらを使ってみるのも良いのかと思います。
    https://github.com/ktorio/ktor

Swift

AppleのiOSおよびmacOS、Linuxで利用出来るプログラミング言語です。
iOSアプリの開発に用いられることがほとんどです。
自分がバックエンドエンジニアなので、あまり詳しくなくてすみません・・・。
https://www.apple.com/jp/swift/

JavaScript

JavaScriptはウェブブラウザ上で動作するスクリプト言語です。
最近では Node.js といったサーバーサイドの実行環境も出てきており、
Web開発の全領域で使用されています。

TypeScript

マイクロソフトによって開発された、 JavaScript のスーパーセットです。
JavaScript に対して、静的型付けとクラスベースオブジェクト指向を加えた言語です。
JavaScript に比べて型があるため、入力補完により、エラーの発見や防止が容易になります。

代表的なフレームワーク

  • Vue.js
    JavaScriptのフレームワークで流行っている御三家です。
    コミュニティによって開発されています。
    他フレームワークに比べて部分的に採用可能な印象があります。
    https://github.com/vuejs/vue

  • React
    JavaScriptのフレームワークで流行っている御三家です。
    Facebookとコミュニティによって開発されています。
    Webアプリケーションのみならず、 React Native という
    スマホアプリを開発することができるモバイルアプリケーションフレームワークにも使用されています。
    https://github.com/facebook/react

  • Angular
    JavaScriptのフレームワークで流行っている御三家です。
    Googleとコミュニティによって開発されています。
    フルスタックフレームワークな印象があります。
    https://angular.jp/

インフラ

クラウドコンピューティングサービス

AWS(Amazon Web Services)

Amazon Web Servicesとは、Amazon.comにより提供されているクラウドコンピューティングサービスです。
本当に多機能なので、ここでは詳細を割愛させてください・・・。
他の方が紹介されている記事が下記になります。
「AWS is 何」を3行でまとめてみるよ

GCP(Google Cloud Platform)

Google Cloud Platformとは、Googleが提供しているクラウドコンピューティングサービスです。
本当に多機能なので、ここでは詳細を割愛させてください・・・。
他の方が紹介されている記事が下記になります。
[GCP] GCPサービスを勝手にまとめてみた

Azure(Microsoft Azure)

Microsoft Azureは、マイクロソフトのクラウドプラットフォームです。
こちらも本当に多機能なので、ここでは詳細を割愛させてください・・・。
他の方が紹介されている記事が下記になります。
[PublicCloud対比表(AWS/Azure/GCP/Softlayer)

アプリケーションプラットフォーム

Firebase

現在Googleが管理・開発しているBaaS(Backend as a service)です。
バックエンド(サービスの内、表立って見えない部分。データの処理や保存等々の処理)を意識せずにサービスを開発することができます。
モバイルアプリ開発に使われることも多いので、mBaaS(mobile backend as a Service)と呼ばれたりもします。
https://firebase.google.com/?hl=ja

Heroku

少し前にSalesforceが買収した、PaaS(Platform as a Service)です。
ユーザーのインフラ管理が不要で、 git push を行うだけでリリースが行えたり、
各種アドオンの追加で、ミドルウェアのインストールを行うことができます。
https://jp.heroku.com/

仮想化技術

仮想環境を作る技術になります。
一旦作成してしまったら、それを他者に共有したり、その環境をサーバーに配置したりすることができます。
近年のホットワードだと思います。

Docker

コンテナと呼ばれるOSレベルの仮想化環境を提供するオープンソースソフトウェアです。
仮想化を行うツールの中ではディスク使用量は少なく、仮想環境作成や起動は速いです。
最近かなり採用事例の多い、キャッチアップすべき技術だと思います。
https://www.docker.com/

Kubernetes(k8s)

コンテナ化したアプリケーションのデプロイ、スケーリング、および管理を行うための、
コンテナオーケストレーションシステムです。
Docker等で構築されたコンテナの管理を行うことができます。
こちらもかなり採用事例の多い、キャッチアップすべき技術だと思います。
https://kubernetes.io/ja/

マイクロサービス関連技術

Istio

マイクロサービスとネットワークの間に、「サービスメッシュ」と呼ばれるレイヤを挟み、
マイクロサービス間を接続するネットワークのルーティング、ロードバランシング、
通信の暗号化等々を行なってくれるプラットフォームです。
https://istio.io/

構成管理ツール

あらかじめ設定ファイルを作成することで、
それを元にミドルウェアやリソースの配置を行う技術です。
一つ設定ファイルを作っておけば、同様の環境を複数立ち上げることができます。

Terraform

クラウド上のリソース(AWSのインスタンス等々)を定義ファイルに沿った形になるように生成・配置してくれるツールです。
構築手順を書くのではなく、完成系を定義ファイルに宣言することで、その構成にしてくれます。
https://www.terraform.io/

Ansible

レッドハットが開発するオープンソースの構成管理ツールです。
あらかじめ用意した設定ファイルに従って、ソフトウェアのインストールや設定を自動的に実行する事が出来ます。
Python で作成されています。エージェントレス(設定先サーバーにエージェントを入れる必要がない)なことが特徴です。
https://github.com/ansible/ansible

Chef

Ruby Erlang で記述された構成管理ツールです。
Ansibleとは異なり、設定先サーバーにエージェントを入れる必要があります。
Ruby で記述するため、 Ruby が好きな方にはぴったりです。
https://github.com/chef/chef

インフラ監視・分析

Datadog

クラウド型の監視アプリケーションサービスです。
SaaSベースのデータ分析プラットフォームを介して
サーバー、データベース、ツール、およびサービスの監視を提供します。
https://www.datadoghq.com/ja/

Mackerel

はてなが開発したサーバー管理・監視サービスです。
仮想サーバーなどクラウドサービスをMackerelで統合管理および監視することができます。
https://mackerel.io/ja/

Prometheus

SoundCloudが中心になって開発しているプル型のリソース監視ツールです。
サーバー管理・監視や、しきい値を超えた場合のアラート等を行うことができます。
UIがかっこいいです。
https://prometheus.io/

Zabbix

ネットワーク管理のソフトウェアです。
こちらもサーバー管理・監視や、しきい値を超えた場合のアラート等を行うことができます。
C言語、PHP、JavaScriptで記述されてるらしいです。
2004年に初版がリリースされ、比較的歴史が長いツールです。
https://www.zabbix.com/jp

Sentry

イベントログ収集(エラー検知)のSaaSサービスになります。
バックエンドのエラーのみならず、フロントエンドのエラーを収集して、可視化することができます。
https://sentry.io/

New Relic

インフラからアプリケーションまで監視・分析してくれるSaaSサービスになります。
https://newrelic.co.jp/

可視化ツール

Looker

シリコンバレーで開発された、データ探索のプラットフォームです。
GitHubと連携して定義のバージョン管理が可能なため、
エンジニアライクなツールだと思います。
https://www.ksk-anl.com/product/looker/

Redash

オープンソースで提供されているダッシュボードツールです。
RDBのみならず、TreasureDataやBigQueryをデータソースとして、
グラフ等の可視化を行うことができます。
無料は正義。
https://github.com/getredash/redash

バージョン管理

バージョン管理は現状ほぼ Git 一択だと思いますので、
プラットフォームをいくつか紹介したいと思います。

GitHub

もう説明不要かと思いますが、 GitHub です。
ソース共有を行えたり、プルリクエストベースでレビューを行うことができたり、
Issuesを使って課題管理を行うことができます。
https://github.co.jp/

GitLab

GitLab Inc.が開発したウェブ型のGitリポジトリマネージャーです。
ローカル環境にインストールすることもできます。
海外からの人気が高い?気がします。
https://about.gitlab.com/

Bitbucket

アトラシアンが開発、運営しているGitリポジトリマネージャーです。
こちらは使ったことがないですが、 Jira Confluence といった
他のアトラシアン製品と相性が良いのでしょうか。
だいぶ太っ腹で、無料でプライベートリポジトリを無制限に持てたりもします。
https://www.atlassian.com/ja

GitBucket

オープンソースのGitHubのクローンアプリです。
個人が所有する環境に自由にインストール可能です。
無料は正義。
https://github.com/gitbucket/gitbucket

CIツール

GitHub等へのpushをトリガーとして、
テスト・コード解析・ビルド・デプロイを自動化することができます。

CircleCI

クラウド型のCIツールです。
CIツールの中でも、国内の採用事例が最も多いサービスだと思います。
https://circleci.com/ja/

Travis CI

クラウド型のCIツールです。
ごめんなさい。使ったことないので特に記述できませんでした・・・・。
https://travis-ci.org/

Jenkins

Javaで書かれたオープンソースのCIツールです。
オープンソースなため、好きな環境にインストール可能です。
無料は正義。
https://jenkins.io/

GitHub Actions

今注目の、GitHubが公式でリリースしたCIツールです。
GitHubとの親和性は高いのではないでしょうか。
(他のツールも十分ですが・・・。)
https://github.com/features/actions

コミュニケーションツール

他社とのコミュニケーション用のツールです。
現在はチャット形式が主です。

Slack

もう説明不要かと思いますが、 Slack です。チャット形式でコミュニケーションをとることができます。
Slackという名前は Searchable Log of All Conversation and Knowledge から取ったらしいです。
(知りませんでした。。。)
各種クラウドサービスとの連携が豊富です。
https://slack.com/

Chatwork

Chatwork株式会社が開発した、ビジネスチャットツールです。
テキストメッセージだけでなく、PDF・画像ファイル・ドキュメントなど、
様々なもののアップロード・共有が可能です。
https://go.chatwork.com/ja/index.html

情報共有ツール

いわゆる社内wikiです。

Confluence

アトラシアンによって開発された、Webベースの企業向けwikiのSaasです。
web上でwikiを記述し、チームに展開することができます。
アトラシアン製なので、 JiraBitbucket との相性が良いです。
https://www.atlassian.com/ja/software/confluence

esa

「情報を育てる」という視点で作られた、自律的なチームのための情報共有のSaasです。
Markdown形式で書くことができます。
アイコン・デザインが可愛らしいです。
https://esa.io/

プロジェクト管理ツール

プロジェクトを進めていく上で必要な、プロジェクト管理ツール(タスク管理ツール)です。

Asana

タスク管理ツールのためのSaasです。
UIがシンプルで見やすく、直感的な操作が可能です。
https://app.asana.com/

Trello

ふせんのような形でタスクの管理を行うことのできるSaasです。
こちらもUIがシンプルで見やすく、直感的な操作が可能です。
https://trello.com/

Jira

アトラシアンによって開発されたプロジェクト管理ツールで、
バグトラッキングや課題管理、プロジェクト管理に用いられます。
https://www.atlassian.com/ja/software/jira

Redmine

Webベースのプロジェクト管理ツールです。
オープンソースなため無料で使うことが出来、
各種プラグインも豊富に揃っています。
http://redmine.jp/overview/

最後に

各種技術・ツールだけでもかなり量が多く、ここでは紹介し切れていないけど採用事例の多い要素や技術がまだまだたくさんあります。
(書ききれずにすみません・・・。特にAWS/GCP/Azureは多い・・・。)

いづれの技術もそれぞれメリット・デメリットがあるかと思いますので、
会社のフェーズ・人員・サービスの特性を考慮した上で、最適な選択をしていきたいものです。
それぞれの技術、どんなものなのかを知っておくことで、いざ選定するときに役立ってくると思います。
ここで紹介した技術はいづれも採用事例もあり、比較的トレンドなものなので、技術選定時にご参考にして頂き、
気になるものがあれば詳しい内容はググって頂けたら良いかと思います。
長い記事になりましたが、読んで頂きありがとうございました!

共に働くWebエンジニアを募集しています!

不動産SHOPナカジツでは自社サービスを作っていく仲間を募集しています。
詳しくはWantedlyからお問い合わせください。

1069
1118
16

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1069
1118