今後も目が離せない技術【RustやWebAssemblyなど】

Uncategorized

期待される技術

2021年も、色々な考え方や技術が広がって、多様なサービスが生まれ続けます。

今後、ますます注目されると予想されるものについて、紹介します。

  • 言葉は聞いたことがあった
  • 最近よく見かける
  • そういう流れがあったのか

など、何か気になる技術が見つかるかもしれません。

可能性が未知数なものから、すでに広く用いられ始めているものなど様々あります。

プログラミング言語から4つその他の視点から2つ紹介します。

プログラミング言語編

Go

まずは、Go言語です。

Googleが2009年に初めて公開したGo言語は、今では色々な場面で使われるようになってきています

Go言語は、

  • 分かりやすい文法
  • 並行処理に優れている
  • 高速なコンパイル
  • ライブラリが豊富

などの点が強みと言われています。

学習コストがそれほど高くない、プログラミングコードの可読性が高くなるなどの点から、個人でのプログラミング学習から大規模プロジェクトまで広く使われるようになってきています

今後も、この流れはしばらく続くのではないでしょうか。

Rust

Rustも、以前として注目を集めています。

広く使われているWebブラウザFirefoxで知られているMozillaが2010年に初めて公開したRustは、着実に浸透してきています

  • メモリの使用に関して安全性が高い
  • 実行速度が早い

などの特徴に注目され、色々な場面で使われるようになっています。システムプログラミング言語としても、長く使われてきたC / C++言語の代わりに導入されるケースが見られます。

Rustは、一般に学習コストが高めだと言われています。同時期に登場して、同じように人気が出てきているGo言語とは、その点が対照的です

TypeScript

TypeScriptは、GoやRustよりもさらに新しく、2012年にMicrosoftによって初めて公開されました

  • JavaScriptのスーパーセット
  • 型定義がある
  • クラスが使える

などの特徴があります。

スーパーセットというのは、簡単に言うと上位互換です。JavaScriptのスーパーセットというのは、JavaScriptの機能を持ちつつ、さらに追加の機能が使えるということです。

広く使われているJavaScriptとの相性が良く、TypeScriptは急速に広がっています。

JavaScriptがWeb開発の領域で浸透していることから、その領域で特に、今後ますますTypeScriptが使われるケースが増えると考えられます

V

V言語は、

先に紹介した3つのプログラミング言語に比べるとまだまだ知名度は低いですが、今後数年で広く使われるようになる可能性を持っています。

2019年に公開されたV言語は、2020年12月で、バージョンが0.2です

バージョン1.0になるまでまだしばらく時間はかかりそうですが、注目を集めている理由として以下のような特徴があると言われています。

  • Go言語に似ている
  • Rust、Swift、Kotlin、Pythonなどの影響を受けている

2019年に初めて公開された言語のため、これまでのプログラミング言語のデメリットを少しずつ改善しているという印象を持たれることが多いようです。

開発はとても活発なようです。

GitHubでは、約21,000のStar(SNSのいいね!のようなもの)を集めています。

今後の動きが注目されるV言語です。

その他の技術など

WebAssembly (Wasm)

WebAssembly (Wasm)

も今後、広く使われる可能性があると思います。

WebAssembly (Wasm)は、

Webブラウザ上でコードを高速で動かすための新しいフォーマット(バイナリコードのフォーマット)です。バイナリコードとは、簡単に言うと、コンピュータが直接読み取って実行できる形式のコードのことです。

凄くかみ砕いて言えば、Wasmの技術は、Webブラウザ上でハイパフォーマンスなアプリケーションを動かすための仕組みです。

Wasmの考え方は、2015年にMozillaによって初めて提唱されました。その後、W3Cにより2019年に、Web標準としてアナウンスされました (W3C勧告)。

W3Cというのは、World Wide Web Consortiumのことです。

W3Cは、World Wide Webで使われる様々な技術の標準化を進めている国際団体です。様々な新技術が生まれるインターネット業界で、標準化技術の認定とその推進を担っている団体と言えます。

W3Cは、これまでにWeb技術の根幹であるHTML / CSSやJavaScriptについて技術仕様や標準化に取り組んでいて、正式にWasmもこれらの重要なWeb技術に並ぶものとして認識されたと取ることができます

近年急速に認知されてきているWasmには、

  • JavaScriptとともに動く、シナジーを生み出す
  • JavaScriptと敵対する概念ではない
  • Webブラウザ上でのパフォーマンスが予想しやすい
  • AssemblyScript
  • Emscripten
  • WASI (WebAssembly System Interface)

などの、多数の面白い考え方、技術と関連しています。

HTML、CSS、JavaScriptと、Webの技術は時間をかけて発展してきました。Webの技術進化の上に成り立つWasmは、これらの技術の代替ではなく、既存のWeb技術と組み合わせることでさらにWeb開発をスムーズに行うための、正統な技術進化と言えるのではないでしょうか

Wasmを使うことで、プログラムのWebブラウザ上のパフォーマンスを予想しやすくなると言われています。JavaScriptでの実装に比べ、Webブラウザ上での実行速度が早い、という点が何かと注目されるWasmですが、パフォーマンスのばらつきが少ない=毎回の実行速度を概ね同じにできる、という点もメリットだと言われています。

AssemblyScriptという、Wasmのためのプログラミング言語も開発されています

AssemblyScriptは、全くの新しいプログラミング言語というわけではなく、TypeScriptに影響を受けて開発された言語です。そのため、TypeScriptに似ています。

Wasmは、C / C++やRustで使われることが多いようですが、今後AssemblyScriptやGo言語といった様々なプログラミング言語で、Wasmを使った開発が広がるかもしれません。

Emscriptenは、2012年に、C++で書いたソースコードをコンパイルしてJavaScriptを作るために開発されました

簡単に言うと、C++で書いたコードをJavaScriptに変換するということです。

その後、Emscriptenは、Wasmに対応しました。つまり、C++でWasmを活用する方法として、Emscriptenという変換機構(コンパイラ)がある、ということです。

WASI (WebAssembly System Interface)は、

Mozillaによって提唱された新しい考え方です。WASIでは、Wasmをさらに多様な環境で実行できるようにすることを目指しています

WASI を利用することで、WasmをWebブラウザ以外の環境で動かすことができるようになります。

MLOps

MLOpsについては、今後も目が離せません。

MLOpsというのは、多少の捉え方の違いはありますが、簡単に言えば

機械学習やAIの開発と活用、運用

のことです。

MLOpsは、machine learningとoperationsを合わせた造語です。

近年、機械学習やAIの開発への導入や機械学習の幅広い導入が試みられていると思います。

その時に、重視されるのが、MLOpsの考え方です。

MLOpsでは、データサイエンティストやソフトウェア開発者など様々な専門家同士がプロジェクト内でうまくコラボレーションできるような仕組みを作ることの重要性が指摘されています。

などの企業から、MLOpsの活用が提案されています。

似たような文脈で、

という考え方も登場します。

DevOpsは、DevelopmentとOperationsを合わせた造語です。

MLOpsのように様々な専門家同士のコラボレーションに注目していますが、特に、Development=開発担当者とOperations=運用担当者の協調や融合に焦点が当てられています

DataOpsは、DevOpsの開発環境に、さらにデータ分析の工程が加わったイメージです。

データ分析の過程も含め、多様な専門家同士が協調して開発することで、開発効率を上げることを目指しています。

Artificial Intelligence for IT Operations (AIOps)は、一見するとMLOpsと似ていますが、

異なります。

MLOpsは、DevOpsと同じような文脈で、機械学習やAIの開発環境をうまく整備して、機械学習やAIなどの開発の効率化や可能性を広げる取り組みです。

一方で、AIOpsは、文字通り、IT運用にAIを活用して、業務を効率化する、という方向性です。機械学習やAIなどの開発、運用環境整備というのではなくて、より広い範囲、ビジネスシーンでIT運用をAIで行うというイメージが近いと思います。

今後のさらなる活躍に期待!

今後も、今日紹介したプログラミング言語、技術は、広く使われるかもしれません。

中には、まだ発展途上の技術もあるので、使われなくなるものもあるでしょう。

いくつかは、分野限定的ではあるものの、その可能性が受け入れられ、開発が急速に進んでいます

変化の激しい領域だからこそ、今後の新しい道を切り開いていくのは、

まだあまり知られていない技術かもしれません。

10年前には、あまり知られていなかった技術が世界を席巻している、ということはあります。

今日、紹介した言語や技術が、今後、スタンダードになる日が来るかもしれませんね

コメント

タイトルとURLをコピーしました