App Engine および Cloud Functions の Java 17、Ruby 3、Python 3.10、PHP 8.1 の一般提供 / プレビュー版提供を開始
Google Cloud Japan Team
※この投稿は米国時間 2022 年 4 月 14 日に、Google Cloud blog に投稿されたものの抄訳です。
豆(Java)、宝石(Ruby)、ヘビ(Python)、象(PHP)をお使いのサーバーレス デベロッパーの皆様に朗報をお届けいたします。Google App Engine と Cloud Functions に最新のランタイムが追加され、これらのプログラミング言語のメジャー バージョンのリリース トレインを更新できるようになりました。
最新情報を要約すると以下のとおりです。
Java 11/17、Python 3、Go 1.12+ ランタイム向け App Engine レガシー バンドル サービスへのアクセスの一般提供を開始
Java 17、Ruby 3.0、Python 3.10、PHP 8.1 ランタイムの App Engine および Cloud Functions でのプレビュー版提供開始
では、詳しく見ていきましょう。まず、Java、Python、Go の第 2 世代ランタイム向け App Engine のレガシー バンドル サービスへのアクセスの一般提供を開始しました。これまでは、たとえば Java プラットフォームの場合、Java 8(第 1 世代ランタイム)のみが Memcache、画像検索、メール、タスクキューなどの組み込み API にアクセスできました。今後は、Java 11 ランタイム(第 2 世代ランタイム)を使用している場合、これらのサービスや Google Cloud APIs にアクセスできます。たとえば、キャッシュに保存された一時データを Memcache に保存したり、第 2 世代ランタイムにあるアプリケーションのユーザーにメールを送信したりできます。Python や Go のデベロッパーも同様にバンドル サービスを利用できます。まだ古いランタイム バージョンを使用している場合は、これにより新しいバージョンへの移行がさらに簡単になります。ぜひご確認いただき、アップグレードしてください。
次に、App Engine および Cloud Functions 両方の Java 17、Ruby 3.0、Python 3.10、PHP 8.1 ランタイムのプレビュー版について説明します。それぞれのプログラム言語ごとの最新情報は以下のとおりです。
Java
Java 11 および 17 の 2 つの長期サポート バージョンの間に新しい機能が数多く加わりました。Java デベロッパーは、複数の文字列を手動で連結することなく、複数行にまたがる文字列のテキスト ブロックを記述できるようになりました。switch コンストラクトが進化して式になり、break キーワードから脱却し、より高度なパターン マッチング機能が可能になります。また、instanceof キーワードでは、明らかに無駄なキャストを避けるために、いくつかのパターン マッチングが進化しました。record を使用すると、適切な hashCode()、equals()、toString() メソッドを使用して独自の JavaBeans を記述することなく、より合理的な不変データクラスを作成できます。クラス階層をより細かく制御したい場合、シールクラスを使用することでクラスの拡張をさらに制御できます。
Ruby
Ruby 3.0 の大きな注目ポイントは、パフォーマンス、静的な型チェック、同時実行でした。Ruby 3.0 は一部のベンチマークにおいて Ruby 2.0 の 3 倍高速で動作する目標を達成し、コードをより迅速に実行できるようになりました。また、Ruby プログラムは一部の型情報を使用してアノテーションを付加できるため、型チェッカーはそれらの型情報を利用して静的な型チェックを行い、コードの品質を向上させることができます。同時実行と並列処理に関しては、Ractor と呼ばれるアクターモデルに着想を得た新しい同時実行プリミティブが、要求の高いワークロードに対して複数のコアを並列で処理できるようにします。さらに、ブロッキング オペレーションをインターセプトするための Fiber Scheduler が導入されました。今回ご紹介した以外にも、さまざまな Ruby API に多くの改善が行われました。
Python
Python 3.10 では、パーサーが構文エラーに対しエラーの場所がより正確なエラー メッセージを、またインデント、属性、名前のエラーに対してもさらに明確なエラー メッセージを表示するため、デベロッパーがコード内の問題を見つけるのに非常に役立ちます。構造的パターン マッチングには、新しい match と case のステートメント コンストラクトが導入されました。PEP をさらに改善するため、静的な型チェッカー用のより堅牢な型ヒントの充実を進めています。かっこで囲まれたコンテキスト マネージャーが追加され、複数の行にまたがる長いコンテキスト マネージャーのコレクションをよりわかりやすくコード化できるようになりました。
PHP
PHP は、バージョン 8.1 でかなりメジャーなアップデートが行われました。まず、クラスで定数を作成する代わりに、新しい enum 構文コンストラクトですぐに検証できるようになりました。また、クラスで final クラス定数を定義できるようになりました。新しい readonly プロパティは初期化後は変更できないため、値オブジェクトや DTO に最適です。第一級 callable 構文が導入され、短い構文で任意の関数への参照を取得できるようになりました。また、イニシャライザの改良により、デベロッパーはオブジェクトをデフォルトのパラメータ値、静的変数、グローバル定数として使用し、ネストされた属性も取得できるようになりました。また、素晴らしいことに、軽量の協調同時実行を実装するためのファイバーも導入されました。
実際に試してみましょう
すべてのデベロッパーの役に立つ素晴らしい機能が、それぞれの言語の新バージョンに追加されました。その結果、Java、Ruby、Python、PHP のデベロッパーは、これらの新しいランタイムのプレビュー版で、お気に入りの言語の最新の優れたバージョンを使用して、新しい App Engine アプリや Cloud Functions を更新および開発できるようになります。App Engine(Java、Ruby、Python、PHP)および Cloud Functions(Java、Ruby、Python、PHP)のドキュメントをぜひご確認ください。これらの言語の新しいランタイムの活用方法について皆さまのご意見をお待ちしております。
- Cloud デベロッパー アドボケイト Guillaume Laforge
- App Engine Java ランタイム テックリード Ludovic Champenois