全7678文字
PR

Rust、Elixir、Go――。21世紀に生まれた新しいプログラミング言語を採用する企業が日本でも少しずつだが増えている。手軽にアプリケーションを開発する用途には不向きだが、システムプログラミングにおいては抜群の適性を発揮する。新世代プログラミング言語の使いどころを、先進企業の実例を通してみていこう。

 プログラミング言語の人気に変化が生じている。JavaやC#、C/C++、Rubyなど主流の言語に加えて、RustやGo、Elixirといった次代を担う新言語を利用する企業が増えているのだ。これらは2000年以降に登場した比較的新しいプログラミング言語である。

図 システム開発に利用される言語の変遷
図 システム開発に利用される言語の変遷
並行処理と安全なメモリー管理を実現する言語が台頭
[画像のクリックで拡大表示]

 RustとGoはC++を代替するために開発された言語で、Elixirは関数型言語のErlangをベースにする。PythonやRubyなどのスクリプト言語のように手軽にアプリケーションを開発できるわけではないが、OSやミドルウエアなどを開発するシステムプログラミングにおいて抜群の適性を発揮する。

 新世代言語が得意とするのは、大量のトラフィックを多数のプロセッサコアを活用して並行処理したり、高速な処理を実現しつつメモリーを安全に管理したりするプログラムの開発だ。こうしたプログラムの開発は近年、重要性が増している一方で、従来の定番言語であるJavaやC#、Rubyでは実装しづらいという問題点があった。

 Rustは安全にメモリーを管理する「所有権」という新しい概念を取り入れており、C/C++では手間になりがちだったメモリー管理の手間を軽減できる。GoはJavaやC#、Rubyなどが備える例外処理の機能が無く仕様はシンプルだが、その分高速に動作する。

 Goはメモリー管理にガベージコレクション(GC)を使っている。一方のRustはGCを使っておらず、プログラマーが厳格にメモリーを管理できる。そのためRustはOSやデバイスドライバーといった低レイヤーのシステム開発に、GoはWebシステムの高速化といった用途に使われる傾向がある。

 米グーグルは2021年4月、AndroidOSの開発言語にRustを追加したと発表した。これまでは主にC/C++を使っていた。Rustであればバッファーオーバーランなどメモリー管理に起因するセキュリティー脆弱性が生まれにくくなる点を考慮して採用したという。グーグルはLinuxカーネルの開発にRustを適用しようともしている。米マイクロソフトも2019年、RustをWindows OSの開発に使用する研究を始めたことを明らかにしている。

 Goはグーグルが開発を始めたプログラミング言語で、動画配信サービスのYouTubeやコンテナ管理ツールであるKubernetesの開発に使っている。

 日本でも新世代言語の採用が少しずつだが増えている。日本の事例に基づいて、使いどころを見ていこう。