弊社が提供しているあるお客様のシステムがかなりの年数経過をしており、またインフラ周りも古くなってきているので、リプレイスの提案を行うことにしました。
いざ何の言語で作ろう?となったときに思い浮かぶのは今まで扱ったことのある言語やフレームワークを踏襲するのが一番早いです。
ですが、弊社は新しいトレンドはどんどん取り入れていこう!という方針ですので、この機会に最新や流行の新しい形を取り入れたいと考えています。
では今現在(2022年11月)のトレンドは?ということで調べてみました。
目次
検索数から見るランキング
アメリカのRedMonk社が、2022年第3四半期のプログラミング言語ランキングを発表しています。
このランキングはプロジェクトホスティングサイト「GitHub」の利用状況と、開発者向けQ&Aサイト「Stack Overflow」で話題になった件数を調査した結果を基に作成されているそうです。
「Stack Overflow」は行き詰まってgoogleさんで検索すると、いつも検索結果に出てくるのでお世話になっていますw
順位 | 言語 | 順位 | 言語 |
---|---|---|---|
1 | JavaScript | 11 | Swift |
2 | Python | 12 | R |
3 | Java | 13 | Objective-C |
4 | PHP | 14 | Shell |
5 | C# | 14 | Scala |
6 | CSS | 16 | Go |
7 | C++ | 17 | PowerShell |
8 | TypeScript | 18 | Kotlin |
9 | Ruby | 19 | Rust |
10 | C | 19 | Dart |
今四半期の推移のストーリーは、これまでの数回の推移と同様に、安定性です。すぐに説明するいくつかの注目すべき例外を除けば、近年の言語運動のルールは、ほとんど運動がないということです。実際、ここにある 20 の言語のうち 17 は、3 四半期連続で安定しています。
https://redmonk.com/sogrady/2022/10/20/language-rankings-6-22/
考察にもあるように以前からある言語が上位を占めています。
自分的には11位以下にわりと新しめのものが入っていますが、世の中的にはそうではないのかもしれません。
Pythonが1位だと思っていたのですがね。JavaScriptだとは...
またPHPがこんなに上にあるとは思いませんでした。
開発者数から見るランキング
もう一つ、TIOBE Softwareが月次で発表する人気プログラミング言語ランキング「TIOBE Index」というものもあります。
プログラミング言語を使用する開発者数、コース数、サードパーティベンダー数、GoogleやWikipediaなどよく使われる検索エンジンの数値から、言語の人気度を割り出した月間のランキングです。
下記は最新の2022年11月発表のものです。
TIOBE Programming Community Indexの上位にランクインしているプログラミング言語は長期的に見るとそれほど変動していない。TIOBE SoftwareはこれまでKotlin、Dart、Juliaなどのプログラミング言語がトップ20位に常時ランクインする可能性は指摘してきたが、依然としてそれは実現していない状況にある。
こうした状況に対し、TIOBE Softwareは、Rustがそのポジションを確保するかもしれないとの見解を示した。Rustは2022年10月にトップ20に入り、そして2022年11月もトップ20に入っている。Rustは実行速度が高速であるにもかかわらず安全であるというという相反しやすい性能が備わっており、TIOBE Softwareはその特徴を「ユニーク」だと評価している。
https://news.mynavi.jp/techplus/article/20221110-2508215/
こちらは予想通りのPython1位でした。
シェアも伸びているようで17%はスゴイですね。Pythonが使われいない分野はなくなっているような状況になってきているのかもしれません。
2つのランキングから見えたトレンドは、どちらのランキングを見ても上位は変動しない安定期に入っているようです。
それでも上位の中ではPythonが伸びて、PHPが下落しているようです。
MATLAB?
私が知らない言語が入っていました。
どうやら分析やディープラーニングで使う言語のようです。
MATLAB(マットラブまたはマトラボ)は、アメリカ合衆国のMathWorks社が開発している数値解析ソフトウェアであり、その中で使うプログラミング言語の名称でもある。MATLABは、数値線形代数、関数とデータの可視化、アルゴリズム開発、グラフィカルインターフェイスや、他言語(C言語/C++/Java/Python)とのインターフェイスの機能を有している。MATLABは、主に、数値計算を扱う事ができるが、追加のオプションSymbolic Math Toolboxを使うことで、数式処理の能力を得ることができる。2019年時点でMATLABのユーザー数は400万人を超えており、100,000 以上の企業・政府・大学で、工学・理学・経済学など幅広い分野に利用されている。
https://ja.wikipedia.org/wiki/MATLAB
2つのランキングから見えたトレンド
どちらの結果を見ても安定期、変動していない、という文言から、直近では新しいものが一気に広がるということはないようです。
Java、Python、C、PHP
このあたりには一日の長があるということになりそうです。
その中でも検索数からは2位、利用者数では1位の
Python
機械学習や人工知能、AIといったところではまず名前が上がってきますからね。
今さらながらPythonとはどんな言語なんでしょう。
Pythonとは1991年にオランダ人のグイド・ヴァンロッサムというプログラマーによって開発され、オープンソースで運営されているプログラミング言語です。イギリスBBCのコメディ番組『空飛ぶモンティ・パイソン』がPythonという名前の由来であるようです。一括りにPythonといってもその用途は様々で、組み込み開発や、Webアプリケーション、デスクトップアプリケーション、さらには人工知能開発、ビッグデータ解析などと多岐に渡ります。
Pythonのプログラミング言語としての主な特徴は、少ないコードで簡潔にプログラムを書けること、専門的なライブラリが豊富にあることなどが挙げられます。
https://www.internetacademy.jp/it/programming/programming-basic/what-is-python.html
敷居も低い印象ですし、また読みやすさ、書きやすさを重視された言語ですよね。
私も勉強がてら触ったことはありますが、業務で導入したことはないですね。
また少し前に良く聞いた「Rust」や「Swift」「Kotlin」は伸びていないですね。
「Rsut」は
Rust(ラスト)は、性能、メモリ安全性、安全な並行性を目指して設計されたマルチパラダイムのプログラミング言語である。C言語、C++に代わるシステムプログラミング言語を目指しており[2]、構文的にはC++に似ているが[3]、「ボローチェッカー」(borrow checker) で参照の有効性を検証することによってメモリ安全性を保証できる。Rustはガベージコレクションなしでのメモリ安全性を達成しており、必要な場面で参照カウントを使うこともできる
https://ja.wikipedia.org/wiki/Rust_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)
「Swift」は
Swift(スウィフト)は、AppleのiOSおよびmacOS、Linux、Windowsで利用出来るプログラミング言語である。Worldwide Developers Conference (WWDC) 2014で発表された。Apple製OS上で動作するアプリケーションの開発に従来から用いられていたObjective-CやObjective-C++、C言語と共存できるように、共通のObjective-Cランタイムライブラリが使用されている。
https://ja.wikipedia.org/wiki/Swift_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)
「Kotlin」とは
Kotlinとは、Androidアプリを開発するための代表的なプログラミング言語です。Kotlinは2011年に登場したばかりの言語で、Kotlinが登場するまで、Androidアプリを開発するにはJavaが使用されていました。そのJavaを改良して、開発された言語がKotlinです。
https://hnavi.co.jp/knowledge/blog/kotlin-development/
フロント側ではJavascriptからtypescriptへ、その中でもReactJSやVewJSなどのライブらりやフレームワークを使ってのSAPになるでしょうか。
新しい言語の選択
上でも述べたように結局はフレームワーク次第ということもあります。
JavaのSpring FrameworkやRubyのRuby on Rails、PHPのLaravel
このあたりは鉄板ですかね。
で私が取り組もうとしているのは
Go言語を学んでみたい。
ですね。
何年か前にも話題となっていましたが、イマイチ伸びていないですよね。
でも弊社のメインであるWeb開発やアプリ開発でも利用できるので、まだまだ将来性があるのではないでしょうか。
Go言語のフレームワークとなれば
Echo
でしょうかね。
正直、年を取って覚えることにおっくうになってしまいがちですが、チャレンジ精神はいつまでも持ち続けたいと思います。
頑張れ自分!