> Source: https://www.ymotongpoo.com/works/goblog-ja/go-cloud2019/


# Go Cloud Development Kit の新機能

[What's new in the Go Cloud Development Kit](https://go.dev/blog/go-cloud2019) by The Go Cloud Development Kit team at Google

## はじめに

私たちは昨年7月に[Go Cloud Development Kit](https://gocloud.dev)（それまでは単に「Go Cloud」と呼ばれていました）を[紹介しました](/blog/go-cloud)。これはGoを使ったクラウド向け開発の体験を向上させるためのライブラリとツールを構築するオープンソースプロジェクトです。それ以来、私たちは大きく前進してきました。初期の貢献者の皆様に感謝します。私たちはGo CDKのユーザーとコントリビューターのコミュニティを育てていくことを楽しみにしており、アーリーアダプターの皆様と密接に協力できることを嬉しく思っています。

## 移植可能なAPI

私たちの最初の取り組みは、一般的なクラウドサービス向けの移植可能なAPI群です。これらのAPIを使ってアプリケーションを書けば、AWS、GCP、Azure、オンプレミス、あるいはテスト用の単一の開発マシンなど、任意の組み合わせのプロバイダー上にデプロイできます。追加のプロバイダーは、インターフェースを実装することで対応できます。

次のいずれかに当てはまる場合、これらの移植可能なAPIはとても適しています。

* クラウドアプリケーションをローカルで開発している。
* オンプレミスのアプリケーションをクラウドで実行したい（恒久的に、あるいは移行の一環として）。
* 複数のクラウド間での移植性がほしい。
* クラウドサービスを使う新しいGoアプリケーションを作っている。

クラウドプロバイダーごとに新しいアプリケーションコードを書く必要がある従来のアプローチとは異なり、Go CDKでは以下に挙げるサービス群にアクセスするための移植可能なAPIを使ってアプリケーションコードを一度だけ書きます。そうすれば、最小限の設定変更で、サポートされているどのクラウド上でもアプリケーションを実行できます。

現在提供しているAPI群は次の通りです。

* [blob](https://godoc.org/gocloud.dev/blob)：Blobデータの永続化用。サポートしているプロバイダーは、AWS S3、Google Cloud Storage（GCS）、Azure Storage、ファイルシステム、インメモリです。
* [pubsub](https://godoc.org/gocloud.dev/pubsub)：トピックへのメッセージのパブリッシュとサブスクライブ用。サポートしているプロバイダーは、Amazon SNS/SQS、Google Pub/Sub、Azure Service Bus、RabbitMQ、インメモリです。
* [runtimevar](https://godoc.org/gocloud.dev/runtimevar)：外部の設定変数を監視するためのもの。サポートしているプロバイダーは、AWS Parameter Store、Google Runtime Configurator、etcd、ファイルシステムです。
* [secrets](https://godoc.org/gocloud.dev/secrets)：暗号化と復号のため。サポートしているプロバイダーは、AWS KMS、GCP KMS、Hashicorp Vault、ローカルの対称鍵です。
* クラウドSQLプロバイダーに接続するためのヘルパー。サポートしているプロバイダーはAWS RDSとGoogle Cloud SQLです。
* ドキュメントストレージAPI（MongoDB、DynamoDB、Firestoreなど）にも現在取り組んでいます。

## フィードバック

私たちと同じくらいGo CDKにわくわくしていただけたら幸いです。[godoc](https://godoc.org/gocloud.dev)をチェックし、[チュートリアル](https://github.com/google/go-cloud/tree/master/samples/tutorial)を一通り試して、ぜひご自身のアプリケーションでGo CDKを使ってみてください。他にほしいAPIやAPIプロバイダーのアイデアがあれば、ぜひ教えてください。

Go CDKを深く調べている方は、ぜひ経験を共有してください。

* うまくいった点は何ですか。
* APIを使う上でつらかった点はありましたか。
* 使用したAPIに欠けている機能はありますか。
* ドキュメントの改善案。

フィードバックを送るには、次の方法があります。

* 公開されている[GitHubリポジトリ](https://github.com/google/go-cloud/issues/new/choose)にissueを投稿する。
* [go-cdk-feedback@google.com](mailto:go-cdk-feedback@google.com)宛にメールを送る。
* [公開のGoogleグループ](https://groups.google.com/forum/#!forum/go-cloud)に投稿する。

ありがとうございます！

By The Go Cloud Development Kit team at Google

