はじめに
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
Scala
とJava
で書かれたWebアプリケーションフレームワークです。
Model View Controller (MVC) アーキテクチャを採用しています。
Ruby on Rails
、Django
から大きな影響を受けたフレームワークらしいです。
https://www.playframework.com/
Scala
オブジェクト指向言語と関数型言語の特徴を統合したマルチパラダイムのプログラミング言語です。
Java
と同様のプラットフォーム(Java仮想マシン)で動きます。
Java
等のようなオブジェクト指向な書き方もできるし、関数型言語の書き方もできる言語です。
個人的には、少し玄人向きな言語なイメージです。
https://github.com/scala/scala
代表的なフレームワーク
- Play Framework
Scala
とJava
で書かれたWebアプリケーションフレームワークです。
Model View Controller (MVC) アーキテクチャを採用しています。
Ruby on Rails
、Django
から大きな影響を受けたフレームワークらしいです。
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を記述し、チームに展開することができます。
アトラシアン製なので、 Jira
、 Bitbucket
との相性が良いです。
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からお問い合わせください。