feature image

2024年12月13日 | ブログ記事

一人リモート開発はいいぞ

はじめに

この記事はアドベントカレンダー2024 13日目の記事です。


こんにちは。@zoi_dayo です。日頃は競技プログラミングやWeb開発、ほか色々をのんびりやっています。

さて、皆さんの中に「開発用PCとしてノートPCの性能に不満がある」「デスクトップならいい感じだが外出先で触れない」といったことに困っている人はいらっしゃるでしょうか。デスクトップの性能をノートPCから使えたらいいな...と思っているはずです。この記事では、そんなときに役立つかもしれないアプリ達を紹介していきます!

環境紹介

僕の場合、ノートとデスクトップは以下のような感じでした。

ノート

デスクトップ

M1チップはかなり強いので、性能はそれなりにあります。ただ、メモリとストレージのせいで開発には少し厳しい感じでした... Android Emuratorも起動に失敗し、ストレージ不足によりWordとExcelは解雇され、WebStormを開くとメモリとストレージが枯渇してブラウザの設定が吹き飛びます。困りました。Macbook Air、めちゃくちゃ軽くて持ち運びやすいのですが...

対してデスクトップ君は、たしか5年少し前に組んだ自作機で、CPUはまあ使えるけれどもめちゃくちゃ型落ちです。しかし、ゲームもあまりしないので、ストレージとメモリには困っていません。ノートのときと対照的ですね。

ので、当然「デスクトップを自宅で起動させておき、そこにMacbookからアクセスすればいいのでは!?」という発想になるわけです。

リモートデスクトップ

まず真っ先に思いつくのはリモートデスクトップですね。画面自体をリアルタイムで転送してきて操作を送り返す、一番わかりやすいリモートアクセスです。マウスとキーボードが使えるので何でもできるというわけです。
リモートデスクトップにもいくつかあるのですが、一番楽なのはChrome Remote Desktopではないでしょうか。Microsoft Remote DesktopのようにOSを気にする必要もなく、Googleアカウントで使えるのでTeamViewerのように専用アカウントを作らなくてもいいはずです。(Microsoft Remote DesktopはWindows 11 ProなどProエディションにしか接続できません。)

ところが、使ってみるとわかるのですが、遅延がかなり不快です。多少操作するくらいなら良いのですが、コードを書くとなると文字の遅れがめちゃくちゃ気になります。特に文字を消す時、どこで止めればよいのか全くわかりません... しかも僕の場合、デスクトップはデュアルディスプレイにしていました。こうなると、Macbookの画面の大きさとぜんぜん違うので、手元のPCで操作してる感が全くでません。

SSH

さて、先ほど遅延が大きかったのは、転送データ量が多かったからでしょう。目的はYoutube視聴や資料閲覧ではなくコーディングです。となれば文字だけ送れば十分でしょう。みんな大好きSSHの時間です。

問題があるとすれば、いつものエディタが使えないことですね。大問題です。困りました。(Vimを使えばよい、というのはそうなのですが、JetBrainsのIDEを使いたい気持ちがあります)

しかも、Macbookをスリープしているとすぐにコネクションが切断され、つなぎ直す必要があります。面倒ですね。

JetBrains Gateway

ここで登場、JetBrains Gatewayです。皆さんご存知でしょうか...?
VSCodeでいうVSCode Remote Developmentだと思います。(こちらは使ったことがないのでなんとも言えないのですが)
つまり、エディタ本体はサーバー側で(ヘッドレスで)実行しておいて、編集中のコードや補完など、画面表示に必要な情報だけをクライアントに送れば遅延を減らしつついつものエディタみたいに使えるというわけです! 言語ごとのSDKなどもリモートに乗っていれば十分なので、手元のストレージもほとんど減りません。嬉しすぎます。

では使ってみましょう。まず、Windows上でWSLを起動しておき、SSHできるようにしておきます。(省略)
そこまでできていれば、手元にJetBrains Gatewayをインストールし、SSH認証情報を入れてあげればすべてどうにかしてくれます。わざわざSSH叩いて何かをインストールしなくていいのは助かりますね。
ここで、使えるエディタは以下です。

いっぱいありますね。しかし、GoogleがカスタムしているAndroid Studioは含まれていません。根本は同じとはいえ少し難しいのでしょうか...

リモートビルド

VSCodeもJetBrainsも、そしてもちろんVimもリモートである程度低遅延で使えるということになりました。最後に残ったのはAndroid Studioで、こればかりはどうしようもありません。

しょうがないので、ビルドの負担だけでもサーバーに押し付けましょう。僕は主にFlutterを使っているので、サーバーにすべてのファイルを送り込み、flutter build apk --debug をして完成したapkだけ落としてくればよいです。ので、以下のコマンドを実行できるようにしておけばよいです。

rsync -C --filter=":- .gitignore" -a --info=progress2 -r -e ssh . ***@***.***.***.***:/tmp/appName \
&& ssh ***@***.***.***.*** "source ~/.zshrc && cd /tmp/appName && flutter build apk --debug" \
&& mkdir -p ./build/app/outputs/flutter-apk/ \
&& rsync -a --info=progress2 -e ssh ***@***.***.***.***:/tmp/appName/build/app/outputs/flutter-apk/app-debug.apk ./build/app/outputs/flutter-apk/app-debug.apk \
&& adb connect ************** \
&& adb -s ************** install -r ./build/app/outputs/flutter-apk/app-debug.apk

これで多少は開発しやすくなりました。めでたしめでたし。

さいごに

めでたく終わったんですが、最近Macbookを買い替えたので今は使ってません。そ、そんな...

明日は @dan_dan さん、 @TwoSquirrels さんの記事が出るらしいです。楽しみ〜〜!!

zoi_dayo icon
この記事を書いた人
zoi_dayo

24B 競プロやWebをちょびっとやったりしていた

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2024年12月11日
Nixで実行環境のライセンス違反を予防する話
comavius icon comavius
2024年12月11日
最近参加したオフラインイベントについてまとめてみる
Pugma icon Pugma
2024年12月2日
【中国民族音楽作曲技法】①五声音階を認識しましょう
Natsuki icon Natsuki
2024年12月19日
Borgo-langを使ってみたかった
comavius icon comavius
2024年12月7日
UnoCSSでやっつけカラーテーマ機能を作る
d_etteiu8383 icon d_etteiu8383
2024年12月4日
NostrのクライアントをSolidJSで自作してみた
d_etteiu8383 icon d_etteiu8383
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記