21 Predictions about the Software Development Trends in 2021 (2021年のソフトウェア開発トレンド予測) という海外記事のつまみぐい。Roadmapは有名な https://roadmap.sh/ がありますが、これも概要レベル (プラス自分の調べた日本語情報の追記) ですので、興味を持った方はぜひ原文へお進みください。また原文記事中では触れられていませんがリンクされている内容の先で https://www.openrefactory.com/, https://twitter.com/openrefactory 等という「自動的にバグを直す」物があるらしいことが書かれていた... こちらも近いうちに調べてみたい。
2021/1/19 追記: 2021年、最近のJavaに浮いた話題がない (ポエム)
お品書き
- Centralized Infrastructure: Cloud, cloud everywhere 集中型インフラ: クラウド
- Decentralised Infrastructure: Edge Computing will see exponential growth 分散型インフラストラクチャ: エッジコンピューティングの飛躍的な成長
- Cloud: AWS is leading, but Multi-Cloud will be the future AWSがリードしているが、マルチクラウドという将来
- Containerization: Kubernetes is the Emperor, and Docker will slip away コンテナ化:皇帝Kubernetes、脱落するDocker
- Computing: Quantum Computing will get momentum コンピューティング:量子コンピューティングが勢いを増す
- Blockchain: The roller coaster ride will continue ローラーコースターの旅が続く
- Artificial Intelligence: AI will be for all みんなのためのAI
- Deep Learning Library: It will be TensorFlow 2.0 and PyTorch ディープラーニングライブラリ
- Data Store: One size will not fill all 1サイズではすべてを満たせない
- Data-Intensive Computation: Spark will remain the leader Sparkはリーダーの座に残る
- Real-Time Streaming: Flink will be the obvious choice リアルタイムストリーミング: Flinkが当然の選択
- Data Platform: Others will follow Snowflake データプラットフォーム: 他がSnowflakeを追従
- Rapid Application Development: Low Code/No-Code will expand 迅速なアプリケーション開発: ローコード/ノーコードで展開
- Software Architecture: Microservices, Monoliths, Serverless will co-exist ソフトウェアアーキテクチャ: マイクロサービス、モノリス、サーバーレスが共存
- Programming (mainstream): Python and JavaScript will lead the roost プログラミング(main):PythonとJavaScriptがリード
- Programming (modern): Rust will finally arrive プログラミング(modern):Rustがついに来る
- Client-Side Web Frameworks: React will continue to Rule クライアントサイドWebフレームワーク: React
- Server-Side Web Frameworks: Spring and ASP.NET Core for Enterprises 67 / 5000 サーバーサイドWebフレームワーク: SpringおよびASP.NET Core for Enterprises
- App Development: Native App will continue to dominate アプリ開発:ネイティブアプリが引き続き優勢
- Cross-Platform App Development: React Native will dominate, but Flutter will catch up クロスプラットフォームアプリ開発:React Nativeが優勢だが、Flutterが追従
- API: REST for Business Applications API:ビジネスアプリケーション向けREST
1. Centralized Infrastructure: Cloud, cloud everywhere 集中型インフラ: クラウド
世界全体がクラウドに移行するのは早晩のことなので、クラウド移行を計画すべし。2021年以降、クラウドネイティブのエンジニアは膨大な不足と高い需要が見込まれる。MOOC (Massive Online Open Course) で、クラウド資格を取得するのが良いとのこと。
コロナ禍中に無料で数ヶ月間受講できるサービスを提供しているところが多いらしい。最大手パブリッククラウドプロバイダー、アマゾンが、2021年から2025年の間に2900万人に無料でクラウドコンピューティングのトレーニングを提供すると宣言している。
2. Decentralised Infrastructure: Edge Computing will see exponential growth 分散型インフラストラクチャ: エッジコンピューティングの飛躍的な成長
エッジコンピューティング:
「利用者のスマートフォンなどのインターネットにつながるIoT機器において情報を処理したり、利用者に近いエリアのネットワークにサーバを分散配置して処理を行ったりする」、コンピューティングモデル。
ここでもAmazonがAWS Snow、AWS IoT Greengrassなど多くのサービスを提供している。MicrosoftもAzure Stack Edge、Azure Edge ZoneでEdgeサービスを提供している。GoogleもGoogle Anthosでデータセンターのサービスを移行している。
もう一つのグループは、通信会社、データセンタープロバイダー、ネットワークプロバイダーのように、インフラを持っている企業。これらの企業が既存のインフラを活用できれば、ここをリードするチャンスがある。ハイブリッドクラウドプロバイダー RedHat (IBM) は、そのプラットフォームOpenShiftとOpenStackへの取り組みで、重要なプレーヤーとなると予測。サムスンはIBMと提携し、エッジコンピューティングソリューションを開発している。
Samsung, IBM to Develop Edge Computing, 5G and Hybrid Cloud Solutions for Industry 4.0 (サムスン、IBM、Industory 4.0向けのエッジコンピューティング、5G、ハイブリッドクラウドソリューションを開発)
他、https://stateoftheedge.com/
このState of the Edgeはエッジコンピューティングのためのオープンスタンダードを作ろうという取り組み。最近、Linux Foundationの一部になったようだ。
3. Cloud: AWS is leading, but Multi-Cloud will be the future AWSがリードしているが、マルチクラウドという将来
パンデミックがクラウドの消費量を押し上げる。
Global cloud infrastructure market Q3 2020
Amazon, Microsoft, Google健在。
一方でマルチクラウドという動き。
https://www.cncf.io/
このクラウドネイティブコンピューティング財団(CNCF)は、マルチクラウドの動きの中で重要な役割を果たしており、Linux財団を凌駕している。2021年にはさらなる成長が見られるだろうと予測。また、HashiCorp のようなマルチクラウドサービスプロバイダも2021年にはより重要になるとのこと。
4. Containerization: Kubernetes is the Emperor, and Docker will slip away コンテナ化:皇帝Kubernetes、脱落するDocker
Kubernetes、v1.22でDockerコンテナランタイムを非推奨に、の話題に触れている。
Kubernetes to deprecate Docker container runtime in v1.22
Kubernetes 1.20からDockerが非推奨になる理由 を参考のこと。
5. Computing: Quantum Computing will get momentum コンピューティング:量子コンピューティングが勢いを増す
「量子コンピューティングは一連の中でも最も革新的な技術で、あらゆる分野に影響を与える可能性を秘める」。「2030年代に向けた最もホットなテクノロジー」のリスト中、量子コンピューティングはナンバーワンの座。
以下が、2030年代におけるソフトウェア開発予測10。
10 Predictions about the Software Development trends in the 2030s
6. Blockchain: The roller coaster ride will continue ローラーコースターの旅が続く
ブロックチェーン、分散型台帳。
2021年には、Blockchainが「スマートコントラクト」の仕組みとしてより活用されるようになる。
7. Artificial Intelligence: AI will be for all みんなのためのAI
AI for All、みんなのためのAI がスローガンになるとのこと。
記事では、フィーチャーエンジニアリングの自動化を可能にする「AutoML 2.0」の開発が興味深く、2021年には、フルサイクルAI化の大きな進展、AIの民主化がさらに進むと予測。
AutoMLについては https://dotdata.com/products/
8. Deep Learning Library: It will be TensorFlow 2.0 and PyTorch ディープラーニングライブラリ
https://pytorch.org/
PyTorch入門 等参照。
Google Colabでも使えるらしい。
https://colab.research.google.com/notebooks/intro.ipynb
9. Data Store: One size will not fill all 1サイズではすべてを満たせない
データベースの世界は、選択肢が豊富でバリエーションに富む。古典的なSQLデータベース、主に4大データベースはMySQL、Oracle、MS-SQL、PostgreSQL。また、NoSQLデータベース等。
最近ではNewSQLデータベースが急増しているという。
NewSQLは、新しい形のSQLデータベースで、スケーラブル・分散アーキテクチャなど、過去のRDBMSにはない特徴を持つ。NoSQL(Not Only SQL)を連想させるものだが、アーキテクチャやトランザクションの考え方などはモノリシックなRDBMSとNoSQLの良いとこどりとして設計されている。
Googleは、水平方向に読み書きできるスケーラブルなACID準拠の Google Spanner でリード。また、Amazonも水平方向に拡張可能なACID準拠データベースAmazon Auroraを持っており、これはほぼすべてのSQL機能を提供しているが、水平方向の書き込みスケーリングはない。それ以外では、CockroachDBをDocker環境上で動かしてみる にあるCockroachDBも非常に目立つNewSQLや分散SQLデータベースだと触れている。
2021年も、適切なデータベースを選択することは、慎重に検討しなければならない非常に困難な作業、という。
10. Data-Intensive Computation: Spark will remain the leader Sparkはリーダーの座に残る
Hadoop: https://hadoop.apache.org/
Spark: https://spark.apache.org/
Hadoopは分散バッチジョブのデフォルトとも言える選択肢だったが、現在はApache Sparkがベンダーニュートラルな分散バッチジョブのプラットフォームとして選ばれ、Hadoopに取って代わっている。
11. Real-Time Streaming: Flink will be the obvious choice リアルタイムストリーミング: Flinkが当然の選択
https://flink.apache.org/
Apache Flink とは?
Apache Flinkは分散ストリーム処理プラットフォームのOSSのひとつ。同類としては Apache Storm や Apache Spark Streaming など。
近年、企業は従来のラムダアーキテクチャを捨て、リアルタイムストリーム処理フレームワークを採用しているとのこと。
12. Data Platform: Others will follow Snowflake データプラットフォーム: 他がSnowflakeを追従
Snowflake: https://www.snowflake.com/
Snowflakeはクラウドデータプラットフォーム。アドベントカレンダーも発見。
https://adventar.org/calendars/5085
以下の図はエンタープライズデータプラットフォームの使用例。
引用: https://medium.com/abn-amro-developer/abn-amros-data-integration-architecture-f33506a211c3
13. Rapid Application Development: Low Code/No-Code will expand 迅速なアプリケーション開発: ローコード/ノーコードで展開
急速なデジタルトランスフォーメーションにより、ソフトウェアエンジニアの需要と供給に大きなギャップが生じている。新しい開発者がどんどん業界に参入するが、十分ではない。そこで近年、ローコード/ノーコード が勢いを増していると指摘。
中でも https://bubble.io/ 。
パブリッククラウドプロバイダーは、昨年予測したようにこの「LCNC」(Low Code, No Code) サービスを提供している。 MicrosoftはPowerApps を、Googleは[AppSheet] (https://cloud.google.com/appsheet?hl=ja) を、AWSはアプリを迅速に構築するためのプラットフォームとしてHoneycode を提供。
14. Software Architecture: Microservices, Monoliths, Serverless will co-exist ソフトウェアアーキテクチャ: マイクロサービス、モノリス、サーバーレスが共存
近年では浸透したマイクロサービスアーキテクチャ (Microservice Architecture) 。
Effective Microservices: 10 Best Practices (効果的なマイクロサービス:10のベストプラクティス)
一方、そのマイクロサービスアーキテクチャが複雑であることや、あるユースケースでは失敗することを理由に、マイクロサービスアーキテクチャに対する反発が起きている。あるツイートに、マイクロサービスへの批判がまとめられている。
https://twitter.com/kelseyhightower/status/1283107285741404160?s=20
For all those making their journey from monoliths to microservices, good luck, and take this with you: "A Note on Distributed Systems".
モノリスからマイクロサービスへの旅をする皆、こちらを査収ください:「分散システムに関するメモ」。
モノリシックが批判されていた数年前のトレンドとは対照的なエピソード。
また話題になっているもう一つは、サーバーレスアーキテクチャ。Amazonは、開発者がコードを書くだけで、サービスプロバイダがサーバーを管理するという画期的なAWS Lambdaサービスで、サーバーレスサービスの先駆者となった。モノリスやマイクロサービスのように、このサーバーレスも銀の弾丸ではなく、適所で使うべきだとしている。
2021年には、このすべてのソフトウェアアーキテクチャ(モノリス、マイクロサービス、サーバーレス)が共存することになるだろうとの予測。
15. Programming (mainstream): Python and JavaScript will lead the roost プログラミング(main):PythonとJavaScriptがリード
オランダのTIOBE Softwareは、プログラミング言語の人気の度合いを表す指標として知られる「TIOBE Index」を公表している。
https://www.tiobe.com/tiobe-index/
Top 10 In-Demand programming languages to learn in 2020 (2020年に学ぶべきプログラミング言語トップ10) より、2021年も開発者に優しいプログラミング言語の人気が高まると予測。
- Python...データサイエンスでNo.1のプログラミング言語。多くの分野でもNo.2またはNo.3。
- JavaScript...Web開発において誰もが認めるNo.1の言語であり、バックエンド開発を含む他のドメインでますます人気が高まっている。初心者にも最適。
- Java...人気を徐々に失っているが、その伝説的な下位互換性とリリースサイクル 等などにより、エンタープライズソフトウェア開発における第1の選択肢。
- C++...近年大きな変化を遂げている。 C++ 20は近年最も破壊的なリリースの1つであり、2021年以降の人気に大きな影響を与える可能性がある 。
16. Programming (modern): Rust will finally arrive プログラミング(modern):Rustがついに来る
Rust, Go, Kotlin, Swift, TypeScriptに代表される「モダン」なプログラミング言語。
Top 7 Modern programming languages to learn now (今すぐ学ぶべき現代のプログラミング言語トップ7)、Rust, Go, Kotlin, TypeScript, Swift, Dart, Juliaがあなたのキャリアとソフトウェア開発スキルを向上させる、と書かれている。
この傾向は2021年も継続、急成長の中でも、ようやく注目されているRustは2021年に躍進するだろうとの予想。Stack Overflowの開発者調査によると、過去5年間、最も愛されているプログラミング言語。
出典: https://insights.stackoverflow.com/survey/2020
17. Client-Side Web Frameworks: React will continue to Rule クライアントサイドWebフレームワーク: React
React: https://reactjs.org/
Web 開発では、ここ数年、JavaScript/TypeScript ベースのフレームワークが主流となっている。中でもFacebookのReactは、クライアントサイドのWebフレームワークの中でリーダー的存在。
Top 5 In-Demand JavaScript Frameworks for Front-End Development in 2020 (2020年のフロントエンド開発のためのJavaScriptフレームワークトップ5)
18. Server-Side Web Frameworks: Spring and ASP.NET Core for Enterprises 67 / 5000 サーバーサイドWebフレームワーク: SpringおよびASP.NET Core for Enterprises
JVMベースのSpringフレームワークは、エンタープライズ開発におけるNo.1のサーバーサイドフレームワークで、また、大小の複雑なアプリケーションを開発するために必要な機能をすべて備えている。依存性注入、クラウドネイティブ開発、リアクティブ、イベント駆動型アプリケーション開発など。2021年もSpringは企業向けバックエンドフレームワークのNo.1。
Top 10 In-Demand Web Development Frameworks in 2021 (2021年のWeb開発フレームワークトップ10)
19. App Development: Native App will continue to dominate アプリ開発:ネイティブアプリが引き続き優勢
ネイティブアプリ 開発は、最高のパフォーマンスとユーザーエクスペリエンスを提供する。しかし、企業は2つのチームに分かれて開発する必要があるため、開発コストが高くなる。
一方クロスプラットフォームアプリ開発は、iOSとAndroidの両方のアプリ開発にほぼ同じコードベースを使用できるため、ますます人気。ただ開発コストは低いが、柔軟性に乏しく、ネイティブアプリほどのパフォーマンスはない。2021年には、企業はネイティブアプリ開発を、スタートアップや小規模企業はクロスプラットフォームアプリ開発を好むようになると予想。
20. Cross-Platform App Development: React Native will dominate, but Flutter will catch up クロスプラットフォームアプリ開発:React Nativeが優勢だが、Flutterが追従
クロスプラットフォームのアプリ開発プラットフォームは数多く存在するが、FlutterとReact Nativeがそのリーダー的存在。
FacebookのReact Nativeは、最も人気のあるJavaScriptベースのWeb開発フレームワークであるReactをベースにしている。つまり27億人のFacebookユーザーでその機能をテストしているということ。現在は以下、React Nativeの方がFlutterよりも人気。
出典: https://insights.stackoverflow.com/survey/2020
2021年にはReactがクロスプラットフォームアプリ開発を席巻することになる。
一方、モバイルアプリ開発は、Flutter一択なのか?-2021版-、クロスプラットフォームフレームワーク比較 2021(Flutter, React Native, Xamarin, Unity) も参考になる。
GoogleのFlutterは比較的新しいフレームワークだが、ここ数年で絶大な人気を得、美しいモバイル、デスクトップ、ウェブアプリケーションを構築するための強力なUIツールキットを提供している。Flutterは、最も成長が早く、生産性の高い最新のプログラミング言語の1つであるDartを使用している。パフォーマンスの面では、React NativeよりもFlutterが優れている。また、開発者の人間工学にも優れる。
21. API: REST for Business Applications API:ビジネスアプリケーション向けREST
近年、マイクロサービスアーキテクチャやサーバーレスの普及が進んでいる。伴い、マイクロサービスやナノサービスは通信を行うが、通常、イベント駆動型の非同期通信ではなく、同期通信が用いられる。従来のモノリスでさえも同期通信を介する。
2020年最も支配的なAPI技術はREST。RESTはWeb技術をベースにした通信規格で、業界ではかなり前(20年前)から存在している。RestfulAPI 参照。
一方GoogleのgRPC。これはRESTとは異なり、gRPCはSOAPのようなRPCプロトコルである。Googleは古いRPCプロトコルから学び、現代のソフトウェア開発のニーズに適したgRPCを作った。gRPCはJSONの代わりに、Googleが開発したプロトコルバッファを使用する。結果、RESTに比べてパフォーマンスが高く、可読性に優れる。
もう一つ、特にUI開発者に人気が、FacebookのGraphQL。多くの場合、UIは必要なデータを取得するためにバックエンドへのAPIコールを何度も行うが、GraphQLはAPIを集約することで、UIとバックエンドの間のコミュニケーションを減らすことができる。一方、セキュリティに配慮した開発には適していないのが大きな欠点。
3つとも別々のユースケースを持っており、お互いに補完し合うことができるため、この傾向は続くという。
おわりに
以上、概要のみですが、情報は鮮度が命、ということで紹介まで。2021年もう1月も半ばですが少しでも、皆様の知的好奇心の刺激になれば幸いです。改めて原文: 21 Predictions about the Software Development Trends in 2021 をお楽しみいただいてはというピックアップでした。