iPadでVS Codeを使ってみた

2020/11/30に公開

この記事は、Visual Studio Code Advent Calendar 2020の7日目の記事です。

モチベ

VS Code、快適ですよね。定義ジャンプに使用している箇所へのジャンプ、日々お世話になってます。拡張機能も多く、dockerコンテナ内のファイルを編集できたり、ペアプロが簡単にできたり、リモートリポジトリへのpushが簡単にできます。
ですが、その便利機能もパソコンあってこそ。スマホやipadでは使えません。では、立ち寄ったスタバで記事を読むついでにふとコードを見たくなった時、布団の中でゴロゴロしていたら急に素晴らしいコードが頭に思い浮かんだ時、僕たちはどうしようもないのでしょうか。

要約

  • code-serverをセルフホストすることでブラウザからVS Codeが使える
  • 読む分には特に問題ないけど、書くのはちょっと大変
  • セルフホストすると管理がめんどいこともある

iPadでVS Codeを使えるようにする

code-serverを自分で適当に借りたサーバーで建てるというのが、2020年11月30日現在もっともリーズナブルな方法でしょう。インストールスクリプトなども用意されてはいますが、自分でやってみたときにはHTTPSの設定なども含めて公式ガイドに従ってやるのがいいと思いました。僕のように普段フロントエンドがメインで、そこらへんにあまり慣れていないような人だと特に公式に従った方がいいでしょう。公式ガイドに書いてあるcaddyを用いたSSL証明書の取得とリバースプロクシの設定はかなり簡単ですのでおすすめです。
セットアップの後、接続してパスワードを入力し、適当なサーバー内のコードを開くと以下のような画面が出てきます。まるっきりVS Codeですね。

iPadでVS Codeを使ってみてどうだったか

正直ここまでの内容はちょっと検索すればいくらでも出てきます。なのでここからが本題です。つまり、セルフホストしたcode-serverをどのように運用したか、してみてどうだったかの話になります。

サーバーはどこで借りるか

自前でサーバーが用意できれば一番いいのですが、それがめんどくさかったのでクラウドに課金することにしました。

さて、その際に基準になるのがスペックですが、公式docsには以下のようなことが書かれています。

For a good experience, we recommend at least:

  • 1 GB of RAM
  • 2 cores

実際には後で述べるようにこれは本当に"at least"なのですが、とりあえずこの条件で考えます。

AWS, GCP, Sakura VPSで比較を行うと、AWSの方が小さいインスタンスタイプのオプションが多く、また安いのでAWSにしました。例えば、t3a.microインスタンスにすると0.0094USD/hrなので1ヶ月で700円ほどになります。まあこれくらいなら許容範囲でしょう。(Sakuraだと900円、GCPのn2d-highcpu-2だと1100円ほどになります。)

認証はかけるか

VS Codeはご存知の通り、エディタ内でターミナルを使うことができ、それはcode-serverに接続していても同様です。
つまり、code-serverにパスワードがかかってないと、任意の人がサーバーで任意のコマンドを実行できることになってしまいます。これは本当に危険なので、絶対にパスワードをかけましょう

実際の動作はどうか

UX

いくらUIがパソコンのVS Codeと同じでも、iPadで使う以上、色々な違いがあります。最も大きいのはキーボードと右クリックでしょう。

コードを書くことはできますが、どうしてもパソコンと違ってキーボードでソースコードの表示が隠れます。
さらに、コードジャンプで右クリックなどをしたくなっても、該当箇所を長押ししないと行けないのでやや不便に感じます。

重さ

本当にgithubのリポジトリをサーバーに落としてきて読むだけならば、先ほど述べた"1 GB of RAM, 2 cores"で足りるのですが、実際はこれでは足りません

これはなぜかというと、VS Codeでコードを読むための拡張機能、特にLanguage Serverがかなりメモリを食うためです。僕は初めRustのYewというフレームワークをどこでも読めるようにするためにVS CodeをiPadで使えるようにしたのですが、拡張機能を入れて、コードジャンプをした瞬間にサーバーとの接続が切れました。(その後数秒待ったらまた復帰しましたが)

重いリポジトリだと読むだけでこの様なので、これに加えてビルドまでしようとしたら公式ガイドの"1 GB of RAM, 2 cores"ではまず不可能でしょう。せめて倍くらいのスペックが欲しいところです。

結局どうしたか

僕はそんなにお金が有り余っているわけではないので、費用を削減するために、(インスタンスのスペックを上げる代わりに)コードを読んでいる時間以外はインスタンスをシャットダウンするようにしました。これにより、大体1ヶ月あたりの料金は600円弱まで抑えることができるようになりました。読む前に毎回AWSのコンソールを開いてインスタンスを立ち上げるのがめんどくさいですが、これは仕方ないと割り切っています。暇があったら適当なlambdaでインスタンスを自動で立ち上げるみたいなことができたらいいなと思っています。

まとめ

VS Codeや各種エディタはやはりパソコンで使うのが一番快適なようです。わざわざ他のデバイスで開発する奇特な人は少ないので、おそらくこの状況は5年経っても変わらないと思います。
とはいえ、コードを読む分にはiPadでも普通に行けます。冒頭にも述べたように、外出先でちょっとしたコードリーディングをするときには重宝するでしょう。

それでは、Happy Coding!

Discussion