生産性向上を実現しよう! Google Cloud (GCP)を活用した Java 開発を徹底解説

生産性向上を実現しよう! Google Cloud (GCP)を活用した Java 開発を徹底解説

本記事は、2021年5月25日に開催された Google の公式イベント「 Google Cloud Day : Digital ’21 」において、 Google Cloud アプリケーションモダナイゼーションスペシャリストの柳原伸弥氏が講演された「 Google Cloud でモダンに Java 開発」のレポート記事となります。

今回は Google Cloud (GCP)を活用した Java 開発の流れや Google Cloud (GCP)と Java との連携について詳しく解説しています。

なお、本記事内で使用している画像に関しては Google Cloud Day : Digital ’21 「 Google Cloud でモダンに Java 開発」を出典元として参照しております。

それでは、早速内容を見ていきましょう。

Java とは?

Java は代表的なプログラミング言語の一つであり、1995年に登場して以降、今もなお根強い人気を誇っています。環境に依存することなく利用できる点が Java の大きな特徴であり、様々な開発シーンで幅広く使われています。

Java と似たプログラミング言語に JavaScript がありますが、これは Java とはまったく異なる言語です。 Java は主にシステム、 web 、アプリケーションの開発に利用されるのに対して、 JavaScript は動きを伴う web ページの開発(ポップアップ表示など )に利用されるケースが多くなっています。

Java は2020年に誕生25周年を迎えましたが、これまでに15回ものアップデートが施されてきました。2021年3月に直近のアップデートが行われており、最新バージョンは Java 16 となっていますが、現在も古いバージョンの Java を利用している企業は一定数存在しています。

Java

古い Java で昔ながらの開発手法を実践している場合、当然ながら生産性は低下してしまいます。開発をスムーズに進めていくためには、最新バージョンの Java を使用するとともに、適切なツールで開発プロセスを効率化する必要があります。

そして、モダンな Java 開発を実現するためには Google Cloud (GCP)が有効なソリューションになります。 Google Cloud (GCP)については、次章以降で詳しくご説明します。

Google Cloud (GCP)とは?

Google Cloud (GCP) は Google が提供しているパブリッククラウドサービスです。同じ種別のサービスとしては、 Microsoft 提供の Azure や Amazon 提供の AWS などが挙げられます。

Google Cloud (GCP) は 「 Gmail 」や「 YouTube 」などの有名サービスで実際に動いているプラットフォーム技術をそのまま使用でき、非常に高いインフラ性能を誇ります。コンピューティングやストレージをはじめ、様々な機能が搭載されています。

この Google Cloud (GCP)に内包されている機能をうまく活用することで、モダンで効率的な Java 開発が実現可能になります。

Google Cloud (GCP)については、以下の記事で詳しく解説しています。
Google Cloud Platform™ (GCP) とは

Google Cloud (GCP)を活用した Java 開発の流れ

一般的に Java 開発は、以下4つのフェーズで進めていきます。

また、アプリケーションの実行という観点では、従来はアプリケーションサーバーの上に各種ファイルをデプロイして動作させていました。しかし、最近では Java のアプリケーションをコンテナ化して、それを Kubernetes 環境やサーバレス環境で動かすような運用がトレンドになっています。

流れ

Google Cloud (GCP)では、上記に挙げた4つのフェーズに対してそれぞれ有効なソリューションを展開しており、アプリケーションの実行環境も同時に提供しています。

では、各フェーズにおいて Google Cloud (GCP)がどのように機能するのでしょうか。以下、フェーズごとに分けて順番にご説明します。なお、ここでは Google Cloud (GCP)のサービス詳細は割愛しますので、全体の流れをざっくりと捉えてください。

設計

設計段階では、従来通りに人間が全体設計を行います。開発するアプリケーションの目的や予算を踏まえながら、適切な開発計画を策定します。開発作業を円滑に進めるためには、開発チームの発足も有効な手段になります。

設計はアプリケーションの骨子を固めるための大切な要素であり、うまく設計できない場合は有効なアプリケーションを開発することはできません。後続の開発をスムーズに進めるためにも、様々な要素を考慮して設計を行うことが大切です。

開発

コード開発はローカル環境で行うのが一般的ですが、 Google Cloud (GCP)の Cloud Shell Online Editor という機能を活用することで、ブラウザ上でのコード開発が可能になります。そのため、時間や場所を問わずにコード開発を行うことができます。

一方、ローカル環境でコードを開発したい場合は Cloud Code という機能を使います。 Cloud Code は PC 上の開発環境に対してプラグインを提供して、 Google Cloud (GCP)と親和性高くコードを開発することが可能です。

その後、完成したソースコードは Cloud Source Repositories に入れてバージョン管理を行います。

テスト・デプロイ

コードが出来上がったら、 Cloud Build で自動テスト・自動ビルドをして最終的な成果物を作り、 Artifact Registry に格納します。

Artifact Registry はコンテナレジストリとしてコンテナイメージを格納することもできますし、 Maven のレポジトリとしてアプリケーションのライブラリを管理することも可能です。

実行・運用監視

完成したアプリケーションは Kubernetes Engine や Cloud Run の上で実行します。

また、動き始めたアプリケーションは Cloud Logging で記録・蓄積し、 Cloud Monitoring で監視し、 Cloud Profiler で統合的に分析することが可能です。

まとめ

以下、本章で取り上げた各種機能を表でまとめます。

名称 概要
Cloud Shell Online Editor ブラウザ上でコード開発が可能
Cloud Code ローカル環境で Google Cloud (GCP)との親和性を保ちつつコード開発が可能
Cloud Source Repositories ソースコードのバージョン管理が可能
Cloud Build ソースコードの自動テスト・自動ビルドが可能
Artifact Registry コンテナイメージの格納やライブラリの管理が可能
Kubernetes Engine Kubernetes 環境を利用するためのコンピューティング
Cloud Run コンテナをサーバーレスで提供しているコンピューティング
Cloud Logging アプリケーションの記録・蓄積
Cloud Monitoring アプリケーションの監視
Cloud Profiler アプリケーションの統合分析

このように、 Google Cloud (GCP)は Java 開発に必要なあらゆる機能を提供しています。開発やテスト、デプロイ、実行、運用監視まで、すべてのフェーズにおいて Google Cloud (GCP)を活用した一気通貫の対応が可能になります。

Google Cloud (GCP)が提供する Java の API

ここまでは Java 開発に役立つ Google Cloud (GCP)の機能をご紹介しましたが、一方で Java のアプリケーションの観点では「 Google Cloud (GCP)の様々なサービスを利用したい」というニーズも存在します。

a

そこで、 Google Cloud (GCP)の各サービスでは Java の API を提供しており、これらを活用することで Google Cloud (GCP)が提供する多種多様なサービスを Java のアプリケーションで利用可能になります。

以下、 Java の API を提供している Google Cloud (GCP)のサービス一覧です。(一部抜粋)

このように、 Java の API を多く提供している点も Google Cloud (GCP)の大きな特徴だと言えます。

Google Cloud (GCP)上での Java フレームワークの活用

Java のアプリケーション開発はコードの利用が一般的ですが、生産性向上を目的として Java のフレームワークを活用することも少なくありません。

代表的な Java のフレームワークとしては以下の3つが挙げられ、それぞれのフレームワークが Google Cloud (GCP)の機能をうまく使うためのコンポーネントを提供しています。

名称 特徴 対応するコンポーネント
Spring Boot ・スタンドアロンアプリケーション開発
・組み込みサーバーエンジン( Tomcat / Jetty / Undertow )
・シンプルなビルド構成( Starter 依存セット)
・自動コンフィグレーション
・プロダクションレディの設定(ヘルスチェック、メトリクス、設定外部化)
・クラウド / Kubernetes 対応
Spring Cloud GCP
Quarkus ・ネイティブバイナリの生成
・Quarkus Extension によるエコシステム
・Java の最適化
・高い開発生産性
・命令型コードとリアクティブ型コードの統合
・コンテナネイティブフレームワーク
Quarkus Google Cloud Services
Micronaut ・ポリグロット(多言語)フレームワーク
・クラウド標準対応
・容易な単体テスト
・アスペクト指向 API
・Open API サポート
・AOT ( Ahead-of-Time )コンパイル
Micronaut GCP

以下、それぞれのコンポーネントについて詳しくご紹介します。

Spring Cloud GCP

Spring Cloud GCP が対応している Google Cloud (GCP)のサービスは以下の通りです。

SCG

このように、 Spring Cloud GCP は多くの API を提供しており、データベースやセキュリティ、 AI / ML まで幅広い範囲をカバーしています。

Quarkus Google Cloud Services

Quarkus Google Cloud Services が対応している Google Cloud (GCP)のサービスは以下の通りです。

QGCS

このように、 Quarkus Google Cloud Services は主にデータベース関連の API を多く提供しています。

Micronaut GCP

Micronaut GCP が対応している Google Cloud (GCP)のサービスは以下の通りです。

MG

このように、 Micronaut GCP は主に監視やオペレーション関連の API を多く提供しています。

まとめ

Java のフレームワークには、 Google Cloud (GCP)の機能を使うための各種コンポーネントが用意されています。

フレームワークを活用することで、簡易な設定のみで Google Cloud (GCP)のサービスをアプリケーションのバックエンドとして利用できるようになり、結果として開発生産性の向上に繋がります。

フレームワーク

例えば、 Micronaut GCP で Pub / Sub を利用する場合、アノテーションを使うことで Pub / Sub の利用に必要なコード記述を省略でき、トピック名を指定するだけで簡単にそのトピックを利用できるようになります。

PS

このように、フレームワークを使えば、様々なシーンの業務効率化を実現することが可能です。

Google Cloud (GCP)と Spring Cloud GCP

最後に、 Spring Cloud GCP に関して、もう少しだけ深掘りしてご説明します。

Spring Cloud には「 Spring Cloud プロジェクト」というプロジェクトが存在します。同プロジェクトにおいて Spring Cloud のリリースは「 Spring Cloud リリーストレイン」という事前に決められた計画に沿って、進められていました。

しかし、2021年1月に Spring Cloud GCP のメジャーバージョンが2.0系に上がったタイミングでリリーストレインから独立し、 Google に移管される形になりました。つまり、今後の Spring Cloud GCP のリリースはリリーストレインに沿うのではなく、 Google サービスの機能拡充のタイミングと合わせてリリースされるように変更されています。

トレイン

これにより、 Spring Cloud のリリーストレインによるリリースサイクルと Google Cloud (GCP)が提供する機能拡張のサイクルとのギャップをなくし、ユーザーが迅速に各種機能を使えるようになりました。

なお、 Spring Cloud GCP のバージョンが2.0系に上がったことによる大きな機能追加や機能廃棄はありません。変わった点としては、一部の命名規則が変更されたことや、それに伴うパッケージ名の変更、また一部のメソッドが Deprecated (非推奨)になりました。

1から2

このように、 Spring Cloud GCP のリリースサイクルが Google に移管されたことで、ユーザーの利便性は大きく向上しました。自社の生産性向上を実現する上で、 Spring Cloud GCP はとても有効なソリューションになると言えるでしょう。

sp

Google Cloud (GCP)に関する質問

Q . GKE や Cloud Run では Java のどのバージョンがサポートされていますか?

A . GKE 、 Cloud Run ともに コンテナ化したイメージを動かす環境です。そのため、プラットフォーム側で Java を提供するものではないです。ただし、 Google Cloud Buildpacks を使用してコンテナイメージを生成する場合は 8 と 11 を提供しています。

Q .各フレームワーク用の API は Google Cloud (GCP)に接続しなくてもローカルでの単体テストは可能ですか?

A .はい、すべてのサービスではないですがテスト可能です。テストの仕方は Testcontainers で提供している単体テスト用のコンテナを使用したテストを実施してみてください。

Q . GraalVM を使用した Java アプリケーションは動作しますか?

A .はい、 GraalVM で作成した Java アプリケーションの Cloud Run や GKE で動作可能です。 Spring Boot や Quakus などのフレームワークでは GraalVM 化をサポートしているので使用してみてください。

まとめ

本記事では、 Google Cloud (GCP)を活用した効率的かつモダンな Java 開発の方法と、 Google Cloud (GCP)と Java との連携について詳しくご紹介しました。

Google Cloud (GCP) は Java の API を多く提供していますし、 Java のフレームワークは Google Cloud (GCP)の機能をうまく使うためのコンポーネントを提供しています。これらをうまく組み合わせることで、モダンな Java 開発を実現でき、自社の生産性向上を実現できます。

Google Cloud (GCP)を契約する際は、 Google との直接契約も可能ですが、弊社トップゲートで契約することで様々なメリットを享受できます。

Google との直接契約では営業担当が付かず、サービス契約後に細かい運用面の相談を行うことができません。一方トップゲートでは、専任の営業担当がアサインされるため、 Google Cloud (GCP)導入後のサポート体制も万全です。

弊社トップゲートは、2017年に Google Cloud (GCP)のプレミアサービスパートナー認定を取得しました。これは、 Google Cloud (GCP)のサービスパートナー制度の中で上位の位置付けとなる認定であり、豊富な実績と専門的な知識を有していることの証明になります。

Google Cloud (GCP)を活用した Java 開発を進めるためには 入念に全体設計を行い、様々な観点から Google Cloud (GCP)の活用を検討する必要があります。そのため、トップゲートのように専門性の高いパートナーと契約し、プロ目線の様々なアドバイスを受けることで開発工数を最小限に抑えることができます。

また、トップゲート経由で契約することで

など、様々なメリットを享受できます。

さらに、トップゲート自身が Google のサービスを自社で活用しているため、エンドユーザーの目線から、お客様の状況に合わせた最適な運用方法をご提案できます。 Google Cloud (GCP)を検討する際は、ぜひトップゲートへお気軽にお声がけください。

お問い合わせする



弊社トップゲートでは、専門的な知見を活かし、

など幅広くあなたのビジネスを加速させるためにサポートをワンストップで対応することが可能です。

Google Workspace(旧G Suite)に関しても、実績に裏付けられた技術力やさまざまな導入支援実績があります。あなたの状況に最適な利用方法の提案から運用のサポートまでのあなたに寄り添ったサポートを実現します!

Google Cloud (GCP)、またはGoogle Workspace(旧G Suite)の導入をご検討をされている方はお気軽にお問い合わせください。

お問合せはこちら

メール登録者数3万件!TOPGATE MAGAZINE大好評配信中!
Google Cloud(GCP)、Google Workspace(旧G Suite) 、TOPGATEの最新情報が満載!

メルマガ登録はこちら

関連記事

Contactお問い合わせ

Google Cloud / Google Workspace導入に関するお問い合わせ

03-6387-9250 10:00〜19:00(土日祝は除く)
Top