Cloud Workstationsで開発をやってみて
初めに
こんにちは。クラウドエースバックエンドディビジョンの王です。
待望のCloud Workstationsがついに2023年5月11日に一般提供(General Availability)になりました。この記事では、私が実際にCloud Workstationsを使用して開発を行った経験について紹介します。
Cloud Workstationsとは
Cloud Workstationsの概要については下記の記事で紹介していますので、リンク先をご参照ください。
実は、私は今Visual Studio Code(以下、VSCode)を使って開発を行うことが多いです。また、Stack Overflow's Developer Surveyによると、ますます多くの人がVSCodeをメインの開発IDEとして使用しています。Cloud Workstationsをブラウザで開かれたIDEはCODE-OSS
(VSCodeのオープンソース版)であるということですが、ローカルのVSCodeで開発することに慣れている人もいると考えています。そのため、以下では、ローカルのVSCodeを使用してクラウドワークステーションに接続する方法を詳しく説明します。
ローカルの VSCode エディターからCloud Workstationsに接続する
はじめる前に、ワークステーションを作成し、起動していることを確認してください(まだの場合はワークステーションの使い方に参照ください)。ローカルマシンから、gcloud CLIをインストールしてください。
その後、Remote - SSH 拡張機能をローカルのVSCodeにインストールする必要があります。
Remote - SSH 拡張機能は、開発者がVSCodeの使い慣れたインターフェースを通じてリモートサーバーや仮想マシンと直接連携することを可能にする強力なツールです。この拡張機能を使用すると、シームレスにローカル開発環境からリモート環境上のファイルを編集したり、コマンドを実行したり、アプリケーションのデバッグを行ったりすることができます。
次に、gcloud beta workstations start-tcp-tunnel
コマンドを使用して、ローカルマシンからワークステーションへのSSHトンネルを開きます。これにより、ローカルプロセスがTCPトラフィックをワークステーションに転送するためのトンネルが開始されます。--local-host-port
の値をローカルマシンが空いているportを入力してください。
gcloud beta workstations start-tcp-tunnel \
--project=プロジェクトID \
--cluster=クラスタ名 \
--config=構成名 \
--region=クラスタのリージョン \
ワークステーション名 22 \
--local-host-port=:2222
SSHトンネルを開いた後は、以下の手順に従ってCloud Workstationsホストに接続できます。VSCodeの左下の「Open a Remote Window」をクリックし、「Connect to Host」を選択して、user@localhost:$LOCAL_PORT
と入力してください。$LOCAL_PORT
は先ほど--local-host-port
の値を書き換えてください。
GitHubからソースコードをクローンする
Cloud WorkstationsをローカルVSCodeに接続した後は、プロジェクトをクローンし、開発を開始することができます。Cloud WorkstationsインスタンスにはGit、gcloud CLI、そしてDockerまでもがインストールされていることに気づくでしょう。これにより、開発者は自分自身でこれらのツールをインストールする必要がなく、直接Cloud Workstations内で開発を始めることができます。これは非常に便利で、開発環境を構築するために時間を節約することができます。
また、Workstationsを使用すれば、環境構成を統一できるので、チームメンバーは同じ開発環境を共有することができます。これにより、チーム内の協力がスムーズになります。同じバージョンのツールの使用、設定の一貫性、および共通の作業フローにより、コードの共有や問題の追跡が容易になります。これにより、チームの効率性やコラボレーションの品質が向上し、プロジェクトの成功につながるでしょう。
mkdir work
cd work
git clone $YOUR_PROJECT_LINK
(もし、これがはじめてCloud WorkstationsでGitHubを使用する場合は、まずGitHubに認証を求められるはずです。)
Cloud Workstations から ほかのクラウドサービス にアクセスする
Cloud Workstationsは、開発者にクラウドベースの開発環境を提供する強力なツールです。Cloud Workstationsを使用する際の主要な利点の1つは、Virtual Private Cloud(VPC)内にあるため、より安全にクラウドリソースに簡単にアクセスできます。
例えば、Cloud SQLにアクセスする際には、ローカルのように認証情報を設定する必要がなく、VPC内でのプライベートIPを使用して直接アクセスすることができます。これにより、より安全な通信経路が確立され、外部からのアクセスを制御しやすくなります。また、同じVPC内に配置された他のクラウドサービスとの通信も高速でスムーズに行うことができます。
Cloud WorkstationsはVPC内で動作するため、デフォルトの認証情報漏洩の心配がなく、安心して利用することができます。今回、私はプロジェクトでFirestoreを使用しました。Firestoreを初期化する際、Cloud Workstationsのインスタンスで、gcloud auth application-default login
コマンドを実行し、指示に従って自分のGoogleアカウントでログインし、要求された権限を確認しアクセスを許可すると、デフォルトの認証情報を直接使用できました。また、Firestoreを初期化するのようにGoogle Cloudで初期化すると、最終的にコードをクラウドサービスにデプロイする際にコードを書き直す必要がないため、より効率的です。
// Google Cloud で初期化する
// Use the application default credentials
ctx := context.Background()
conf := &firebase.Config{ProjectID: projectID}
app, err := firebase.NewApp(ctx, conf)
if err != nil {
log.Fatalln(err)
}
client, err := app.Firestore(ctx)
if err != nil {
log.Fatalln(err)
}
// 各自のサーバーで初期化する
// Use a service account
ctx := context.Background()
sa := option.WithCredentialsFile("path/to/serviceAccount.json")
app, err := firebase.NewApp(ctx, nil, sa)
if err != nil {
log.Fatalln(err)
}
client, err := app.Firestore(ctx)
if err != nil {
log.Fatalln(err)
}
最後に
この記事では、Cloud Workstationsを使用した開発環境の構築と活用について解説しました。Cloud Workstationsを使うことで、ローカル環境とは異なる新しい開発体験を得ることができます。クラウド上での作業は、リソースへのアクセスやセキュリティの管理など、多くの面で利点をもたらします。
Cloud Workstationsを使った開発に興味がある方は、ぜひこの記事で紹介した手順やヒントを参考にしてみてください。
Discussion