
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上で実行できる環境が整っています。
前提条件
始めるにあたって、次のものを用意してください。
- Mac/LinuxにインストールされたPyCharm Pro
- 有効なGCPアカウント
さっそくやってみよう
ステップ1:MacでSSHキーを用意する [1]
Mac/Linuxのターミナルで次のコマンドを実行し、新しいSSHキーペアを生成します。
ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME]
ここではパスフレーズは設定せず、キー名は temp_key としました。
公開鍵を整形する
作成したSSHキーペアの公開鍵の内容を、次のコマンドで表示します。
cat ./ssh/temp_key.pub「ssh-rsa」(これも含む)から「=」記号(ユーザー名の前)までをクリップボードにコピーします。

任意のテキストエディタを開き、以下の形式に整えます。
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インスタンスの詳細は次のとおりです。

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

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

あわせて、マシンに静的外部IPを設定しておけば、再起動のたびにパブリックIPが変わってしまうのを防げます。
ステップ3:PyCharmを設定する!
これで、作成したキーペアでマシンがSSH接続を受け付けられるようになりました。あとはPyCharm側で、そのリモートマシンにコードをデプロイして実行する設定を行うだけです。マシンの外部IPをコピーしましょう。VMが起動していれば、VMの詳細画面で確認できます。

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

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

「private key file」には、SSH秘密鍵のパス(今回の例では /[user]/.ssh/temp_key、.pub拡張子のないほう)を指定します。
nextをクリックすれば設定完了です!画面右下を見ると、インタープリターがリモートのPython環境に切り替わっているはずです。初回はPyCharmのヘルパーファイルをリモートマシンにコピーし、Python環境を同期するのに数分かかることがあります。

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

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

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

まとめ
本チュートリアルに加えて、いくつか参考になるリソースを紹介しておきます。PyCharmにおけるPythonインタープリターの高度な設定については、JetBrains公式のガイドが役立ちます。GCPインスタンスでのSSHキーのより詳しい設定に興味があれば、こちらの情報もどうぞ。
それでは、快適な開発を!
お読みいただきありがとうございました。最新情報は DoiT Engineering Blog 、 DoiT LinkedInチャンネル 、 DoiT Twitterチャンネル でぜひフォローしてください。採用情報については https://careers.doit.com をご覧ください。