アプリケーション開発・管理・運用

Quarkusとは?登場した背景や特徴を徹底解説!

Quarkusは、Javaを先進的なプラットフォームにすることを目的に、Red Hatより発表されたJavaフレームワークです。開発環境のコンテナ化・マイクロサービス化によって「近頃、Javaが利用しにくくなった」と感じている方に最適のツールと言えます。そこで本記事では、Quarkusの概要や登場した背景、特徴を解説します。

アプリケーション開発における課題別の解決方法とは? 〜Azureを導入するメリットも紹介〜

Quarkusとは

「Quarkus(クォーカス)」は、GraalVMやHotSpotに向けて設計された、オープンソースのJavaフレームワークです。IBMの子会社であり、クラウド技術サービスを開発・販売している「Red Hat」が2019年3月に公開しました。Quarkusを利用するには、Red Hatが提供するサブスクリプションサービス「Red Hat Runtimes」の契約が必要です。

詳しくは後述しますが、Quarkusは「メモリ消費量の最適化」と「初回応答時間の高速化」によって、Javaのコンテナ・クラウド・サーバーレス環境への対応をサポートします。すなわち、Quarkusを使用することで、現行のシステムを大きく変更することなく、ソフトウェア開発のマイクロサービス化、サーバーレス・アプリケーション構築の高速化・軽量化が実現します。

GraalVMとは

「GraalVM(グラール バーチャルマシン)」は、Javaなどのプログラミング言語で書かれたソースコードを、機械語に変換するのに用いられるプログラムです。データベース管理サービスの大手である「Oracle」が、2018年4月にオープンソースで公開しました。「Community Edition(CE)」と、セキュリティ・スケーラビリティを高めた「Enterprise Edition(EE)」の2種類が提供されています。CEはGitHubにソースコードが公開されており、無料で利用できます。

その特徴は、Java・JavaScript・Ruby・Pythonなどの多言語を、単一ランタイム上で実現できる点にあります。これまでプログラムの実行は言語ごとに行う必要があり、それぞれにデバッガーやプロファイラーが必要でした。

しかしGraalVMを用いれば、組織内でさまざまな言語が混在していても、一度にプログラムを実行できます。統合開発環境が重要とされる、これからのアプリケーション開発・運用に適していると言えるでしょう。GraalVMの開発者ブログでは、Twitter社がGraalVMをすでに本番投入していると公表されており、利用実績も信頼できます。

Quarkusが登場した背景

近年、Docker・Kubernetesの普及やサーバーレス化の流れにより、アプリケーションのコンテナ化が急速に進んでいます。また、ビジネス課題にいち早く対応するため、マイクロサービスも広く導入されてきています。そうした中で、ほかの言語と比較して起動が遅いというJavaの課題が顕在化してきました。

しかし、主流の開発言語であるJavaを放棄し、一から開発環境を構築、人材を募集するのは得策ではありません。そこで、Java開発者の知識やノウハウを活かしつつ、現状に対応するために登場したのが「Quarkus」です。「メモリ消費量の最適化」と「初回応答時間の高速化」によって、Javaをコンテナ環境に最適化します。

Quarkusの特徴

Javaでのクラウドネイティブ・アプリケーション構築を最適化するQuarkus。具体的には、どのような特徴をもったツールなのでしょうか。ここからは3つの特徴を確認しながら、Quarkusの魅力に迫っていきましょう。

両モデル対応のプログラミングが可能

Quarkusは、インペラティブ(Imperative)とリアクティブ(Reactive)の両モデルでの設計に対応しています。インペラティブなモデルとは、命令型(手続き型)のプログラミングをいいます。こちらは、プログラムを実行する手続きを1つずつ記述する伝統的なモデルです。

一方、リアクティブなモデルとは、あらかじめ入/出力の関係性を定義しておくことで、データの変化が起きた際に自動で更新処理が行われるプログラミングです。詳しく解説すると本筋から外れますが、「従来の命令型よりシンプルなコードでありながら、スケーラブルなアプリケーション構築が可能となる設計手法」、と簡単に把握しておいてください。

Quarkusを使えば、双方の開発モデルをシームレスに統合させられます。また、1つのアプリケーションにインペラティブ/リアクティブを混在させることも可能です。アプリケーションや状況に合わせた柔軟なアプローチを選択することで、効率的な開発が行えます。

メモリ消費量の少ない実行形式

前述の通り、Quarkusの最たる特徴は、「メモリ消費量の最適化」と「初回応答時間の高速化」です。まずメモリ消費量については、メモリに常駐するアプリ・機能のサイズを削減することで、必要なメモリを従来の1/10に抑えています。また、プログラム実行時においてもハードウェア、およびクラウドコンピューティングのメモリ消費量の削減を実現しています。

応答時間については、従来では10秒を要するところが、数ミリ秒に抑えられています。これは、Javaから機械語への変換にGraalVMを用いており、かつ変換後に高速でプログラムを起動できるアプローチを使用しているためです。

これは、Kubernetes環境やサーバーレス環境に最適化された実行形式であり、これまで軽量なコンテナ環境を活かしきるのが困難とされていたJavaフレームワークにおいて革新的です。事実、日本人で2人目の「Java Champion(Javaコミュニティのリーダー)」である寺田佳央氏も、2019年3月、自身のブログで“まさにこれを待っていた”、“注目の技術の一つ”と評しています。

タスクの自動化

Quarkusには、繰り返しタスクを自動化するための機能が組み込まれています。前述の応答時間の高速化と合わせて、作業時間の大幅な削減が実現するでしょう。また、Javaから機械語への変換も、1行のコマンドで実行可能です。こうした極力まで無駄を排した構成により、生産性の向上や Javaの最適化に貢献します。

まとめ

Quarkusとは、コンテナ化・サーバレス化した開発環境に最適化されたJavaフレームワークです。柔軟な開発モデル、省メモリ、高速起動や繰り返しタスクの自動化により、Javaでのアプリケーション開発をサポートします。Quarkusは「Red Hat Runtimes」に含まれ、サブスクリプションにて提供されています。

  • fb-button
  • line-button
  • linkedin-button

無料メルマガ

RELATED SITES

関連サイト

CONTACT

サイト掲載の
お問い合わせ

TOP