【挑戦するべき?】気になっている言語とフレームワーク3選
ムンペイと申します。
30年以上、プログラミングをしています。
取り組めていないものの、個人的に現在注目しているプログラミング言語またはフレームワークを3つご紹介したいと思います。
1.Rust
私はかつてはC++を長くメイン言語として使っていましたが、それはOSすら記述できる汎用性とCPU命令にコンパイルされることによる高速性が魅力だったからでした。そのメリットを享受するにはメモリアクセス違反をしないよう細心の注意を払ってコーディングする必要がありますが、昔の非力なPCでゲームなどの高速性を要求するプログラムを書こうとするなら他に選択肢はなかったように思います。
しかし、コンピュータが高性能化してきた昨今では、少々のオーバーヘッドを許してガベージコレクション(GC)を実装し、メモリ操作を気楽に安全にできる言語が隆盛を誇っています。中間コード型のJavaや、インタプリタ型のPythonなどが代表的でしょうか。
そんな中、Rust言語が、C++と同様の汎用性と高速性を備えつつ、メモリ所有権を言語仕様に組み込むことによってメモリアクセスの安全性確保に挑戦するという意欲的な目的をもって2010年に登場しました。いよいよC/C++パイセンが未だに(ほぼ)唯一の現役で働いているシステムプログラミングも、新しい世代がやってくるのか!?と、なぜか直感的にワクワクしたものです。
Rustはパッケージマネージャも備えており、登場当時はC++はまだパッケージマネージメントも貧弱だったはずで、その点も魅力に見えました。
高速性を売りにする言語としては、Goも触ったことがあり実際に高速ですが、GoはGCベースでメモリ安全性を担保しています。RustはGCベースではないため実行時間が非常に予測しやすい(命令やメモリアクセスのタイミングを想像しながらプログラミングできる)のが、個人的にはピンときた理由です。
とはいえ、今はシステムプログラミングをする機会もなく、高速化は他の皆さんに任せていて、残ったウェブのフロントエンド/バックエンド開発ではPythonがちょうどいい、と言った感じでRustに触ることはできていません。
いよいよLinuxやWindowsも一部でRust化のトライアルを始めているようですし、いつかいつかと思い続けています。
2.Unity/C#
次は、Unityです。もともと趣味のゲームプログラミングから入ったクチですし、3次元グラフィックスの進化もリアルタイムで見てきた世代ですので、いまだにゲームっぽい技術には関心があります。
もちろん3D CG用のエンジンで考えるといくつか他の選択肢もあるものの、Unityならカジュアルにやってみられそうという印象ですし、かなり普及しているので情報も豊富ですね。
また、言語がC#というのもいいと思っています。C#は多少使ったことがありますが、もっとドップリ身に着けたいなぁと思う言語の一つであり、UnityのためについでにC#を覚えるというのはちょうどいいなと思います。(以前は3種類くらいの言語が選べましたがC#に一本化したのは英断だったと思います。)
基本的なゲームを作って学ぶというUdemyの講座をセールの時にいろいろ買いだめしてあって、多少は見ているのですが、そこそこ完成した何かを作ろうとすると時間も必要なので、ほとんど進行していません。
3.Vue3/Nuxt3
3番目はウェブフロントエンド開発用のフレームワークである Vue.js 3 と、典型的な手順を型にはめることで Vue.js を用いた開発をぐっと迅速化するためのフレームワークである Nuxt です。(以前はNuxt.js と言っていた気がしますが、.js はなくなったんですかね。)
別の記事で、Vue はやめて React 派に改宗したという話を書きましたが、最近どうやら Vue 3 も Nuxt 3 も TypeScript 化が完了し、愛用していた Vuetify も 3 になって TypeScript 完全対応した・・・ということで、一番の問題だった TypeScript 対応の不完全さが解消されたようだったので、再度気になっているところです。
実のところ、いまちょうどある開発で使ってみていますが、なかなか快適ですね。特に Vue 3 のウリでもある Vite というビルドツールは、これまで時間がかかるのに慣れきってしまったウェブ開発の常識にかなり波を立てるレベルですね。
Vue.js はバージョンが2から3に上がるときに API が大きく変わり、私は新規だからいいですが、移植する場合はほとんど書き換えになると思われます。TypeScript 化およびよりよい開発体験のために思い切ったということですね。この辺りは作者の Evan You が取り仕切っているプロジェクトである点が、React のようなコミュニティベースとは違う点かなと思い、好感が持てました。
慣れた言語か、新しい言語か
ウェブは特に多いですが、改良された新しい言語やフレームワークが次々登場しています。何か目的を果たすだけなら、慣れた言語を使い続けることでも十分ですが、新しい言語を学ぶ方が自分の生産性の改善にもつながるのかもしれないとも考えます。とはいえ、30年以上プログラミングをしていると慣れた言語と新しく学び始めた言語では、自分の生産性のギャップが相当あるので、追いつくまでのコストを払ってまでというのはなかなか踏み込めない昨今です。
その点、新しい領域向けのプログラミングならば、ついでにその領域の最適な言語を学ぶ機会としていいですね。これからはAI系も気になるところですし、モダンなウェブ開発もそうですね。最適化プログラマがなんでそんなにウェブ開発をしているのかという点については、またの機会に。
これにて御免!