Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

PyCharm×Google Cloudでリモート開発

By Gad BenramJul 28, 20214 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

1 bdxltaqkftyo6rue7gd6wa

SSHリモートインタープリターを使ってPyCharmをGCPインスタンス上で動かす方法を、ステップごとに解説するクイックチュートリアルです。

このチュートリアルのゴール

コードは手元のノートPCで書きながら、実行はRAMもCPUも潤沢なGoogle Cloudのリモートマシンに任せましょう。

Pythonアプリケーションを開発していると、コードをGCPインスタンス(AI Notebook / Google Compute Engine)で実行できると何かと便利です。とくに機械学習(ML)やデータ処理のコードは、複数のCPUと大容量RAMを備えたハイスペックなマシンが必要になることが多いため、なおさらです。

もうひとつの利点は、リモート実行することで、インスタンスに紐づいたサービスアカウントとして他のGoogle Cloud Platformサービスへ認証できることです。本チュートリアルを終える頃には、Mac上でPyCharmを操作しながら、コードはGCPのVM上で実行できる環境が整っています。

前提条件

始めるにあたって、次のものを用意してください。

  1. Mac/LinuxにインストールされたPyCharm Pro
  2. 有効なGCPアカウント

さっそくやってみよう

ステップ1:MacでSSHキーを用意する [1]

Mac/Linuxのターミナルで次のコマンドを実行し、新しいSSHキーペアを生成します。

ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME]

1 r06nwvz9wruvwklgwj 6yq

ここではパスフレーズは設定せず、キー名は temp_key としました。

公開鍵を整形する

作成したSSHキーペアの公開鍵の内容を、次のコマンドで表示します。

cat ./ssh/temp_key.pub

「ssh-rsa」(これも含む)から「=」記号(ユーザー名の前)までをクリップボードにコピーします。

1 m n27uzc8h8aivavyczy a

任意のテキストエディタを開き、以下の形式に整えます。

ssh-rsa [KEY VALUE]= [USER_NAME]

このテキストは後で使うので、控えておいてください。

ステップ2:GCPでVMを作成または編集する

次に、クラウド上のマシンを用意します。筆者がよく使うのはAI Notebooksです。データサイエンス、ML、Google Cloud関連のライブラリを多数含むAI Python環境があらかじめインストールされているからです。Notebookの作成方法はこちらのガイドを参照してください。

AI Notebooks(現在はVertex AIの一部)は、内部でCompute Engineインスタンスを生成しています。素のCompute EngineインスタンスでもAI Notebookでも、SSH経由のリモートアクセスを許可するように設定を編集する必要があります。これにより、PyCharmからマシンへファイルを転送したり、Pythonインタープリターに接続したりできるようになります。

AI Notebookのマシンを編集する

「my-instance」という名前のNotebookインスタンスの詳細は次のとおりです。

1 fxpja9fsj 2b zxqwo4n7q

「VIEW VM DETAILS」をクリックし、続けて「EDIT」をクリックすると、AI NotebookをホストしているCompute Engineのスペックを変更できます。SSH Keysまでスクロールし、「show and edit」のドロップダウンを開きます。

1 c 1c vq izuw4nli9ykrow

「Add item」をクリックし、整形したSSHキーを貼り付けて末尾にユーザー名を追加します。うまくいけば、キーの左側にユーザー名が表示されます。

1 p04b ctdojiepetr7yf 9a

あわせて、マシンに静的外部IPを設定しておけば、再起動のたびにパブリックIPが変わってしまうのを防げます。

ステップ3:PyCharmを設定する!

これで、作成したキーペアでマシンがSSH接続を受け付けられるようになりました。あとはPyCharm側で、そのリモートマシンにコードをデプロイして実行する設定を行うだけです。マシンの外部IPをコピーしましょう。VMが起動していれば、VMの詳細画面で確認できます。

1 xelbs1iorhcgvc3jnaahjg

続いて、PyCharm > Preferences > Project:[name] > Python interpreter > 歯車アイコン > addの順に進みます。

1 lu5iza1kxtamoolwg9whga

Hostにはマシンの外部IPアドレスを、Usernameにはキー作成時に指定したユーザー名を入力します。「Next」をクリックすると、PyCharmがVMへの接続を試みます。続いて、正しい接続情報を入力してください。

1 hvwjy fdihcgaof fdsc1g

「private key file」には、SSH秘密鍵のパス(今回の例では /[user]/.ssh/temp_key、.pub拡張子のないほう)を指定します。

nextをクリックすれば設定完了です!画面右下を見ると、インタープリターがリモートのPython環境に切り替わっているはずです。初回はPyCharmのヘルパーファイルをリモートマシンにコピーし、Python環境を同期するのに数分かかることがあります。

1 dbx9mlwi3w44hh2ytjnkcw

応用編:複数のPython環境を使い分ける

リモートマシンに複数のPython環境がインストールされていることもあります。たとえば、AI Notebookにconda環境が入っているケースなどです。リモートインタープリターの設定を編集すれば、どの環境を使うか選べます。

PyCharm右下のメニューから、インタープリター設定を開きます。

1 t4ywmlyyumxjdp0t3jyfgg

もう一度、既存のインタープリター設定を編集します。

1 a3qlc6qcmnnyav5b g7v9w

「python interpreter path」に、**リモートマシン上の**Pythonのインストールパスを貼り付けます。

1 0ucmormtf2sklwocpwlp g

まとめ

本チュートリアルに加えて、いくつか参考になるリソースを紹介しておきます。PyCharmにおけるPythonインタープリターの高度な設定については、JetBrains公式のガイドが役立ちます。GCPインスタンスでのSSHキーのより詳しい設定に興味があれば、こちらの情報もどうぞ。

それでは、快適な開発を!


お読みいただきありがとうございました。最新情報は DoiT Engineering Blog DoiT LinkedInチャンネル DoiT Twitterチャンネル でぜひフォローしてください。採用情報については https://careers.doit.com をご覧ください。