開発サーバーのすすめ
私は画像系のAI開発をメインで行っているフリーランスエンジニアです。
仕事ではAIエンジニアとして働いているのですが、スキルアップのために趣味でwebやモバイルアプリの開発を行っています。
初めての記事になりますが、私の開発環境を紹介して、これから開発環境の構築を考えている方の参考になれればと思います。
私の開発環境
まずは、私が普段使っているPCの一覧です。パソコンが好きで色々持っていたのもあるのですが、Macを開発サーバーとしたリモート開発をするために、昨年SurfaceGoを購入しました。
-
Mac mini
- OS:macOS
- CPU:Apple M2
- メモリ:16GB
-
Windows 自作デスクトップ
- OS:Windows 11
- CPU:Intel Core i7-8700
- メモリ:32GB
- GPU:NVIDIA GeForce RTX 3060
-
Surface Go 3
- OS:Windows 11
- CPU:Pentium
- メモリ:8GB
-
GMKtec Nucbox M5 Plus
- OS:Ubuntu 22
- CPU:Ryzen 7 5825U
- メモリ:16GB
端末の使い分け
Mac mini
メインの開発サーバーとして運用しています。
基本的にはGUIは使っていないため、Apple製品の良さを活かせてないと思われるかもしれません・・・
アプリ開発やウェブ開発など、必要な環境はすべてこのMac mini上に構築しています。
GMKtec Nucbox M5 Plus
自宅サーバーとして運用しています。
NextcloudやAdguardなどのセルフホストアプリを稼働させ、外部からMac miniに接続するためのVPNサーバーとしても利用しています。インフラは全くの未経験ですが、今のところ基本的には不自由なく稼働できています。
Windowsデスクトップ
数年前にたWindowsマシンです。
ちょっとしたゲームをするために作ったのですが、メモリの追加やGPUの交換などでまだ現役で使えてます。
今は自宅でのアプリ開発やゲーム、写真現像などで使っています。
Surface Go 3
外出先の開発用マシンとして運用しています。軽量で携帯性に優れ、外出時でも開発が可能なので重宝しています。スペックは控えめですが、SSHクライアントとして利用することで負荷を最小限に抑えることで不満なく開発できます。
なぜ開発サーバーを使うのか
1. どこでも同じ環境で開発したい
家ではデスクトップがあるので、ハイスペックかつ大画面で開発をしたいのですが、当然外出先には持ち出せません。かといって、せっかく家にいるのにラップトップで開発するのも億劫です。
また、開発環境を複数の端末で同期するのも面倒です。
- ソフトやライブラリの更新があるたびに複数端末にインストール
- Gitにpushするほどでもない小さな修正の同期
- ローカルで動かしたサーバーの設定が端末ごとにずれてしまう
こうした問題を解決するために、開発端末は一つに絞ろうと思いました。サーバー上にすべての開発環境をまとめておけば、どの端末からでもSSH接続で同じ環境にアクセスできます。これにより、設定・環境の差異を気にする必要がなくなります。
2. Macを使いたくない(けれどMac miniは買った)
Appleが嫌いというわけではありませんが、仕事でもメインで使うOSはWindowsなので、ショートカットやツールが違うMacは少し扱いづらいと感じることがあります。ただし、Mac miniはコストやサイズ、スペックのバランスが非常に良いマシンですし、iPhoneアプリのビルドなど、macでしかできないこともあります。必ずしもmacOSである必要はないのですが、Macminiはとてもコスパが良いパソコンだと思います。
3. 外出先でのノートPCの電力節約
フリーランスとして開業したタイミングで、どこでも開発できるようにLenovoのThinkBookを購入しました。性能は申し分なかったものの、ローカルでサーバーやエミュレータを動かしながらコーディングするとバッテリーの減りが早いと感じていました。
しかし、ラップトップをSSHクライアントとして運用することで、実際の処理は開発サーバー側で行われるようになります。これにより、ラップトップの負荷は大幅に下がり、結果的にバッテリーが長持ちするようになりました。ちょっとした外出なら充電器を持ち歩かなくても大丈夫ですし、最悪モバイルバッテリーでもカバーできるほどです。
4. ノートPCのスペックを下げられる
外出用メインPCとしてSurface Go 3を使っていますが、スペック面では正直“開発向き”とは言い難いです。それでも、リモート開発環境を整えておけば、エディタとターミナルを動かす程度の負荷で済むため、十分使い物になります。
ハイスペックなパソコンになると、高価格・高重量になるため、これがなくなるのも低スペックパソコンのメリットだと思います。
デメリット
とはいえ、この開発体制にもデメリットがあります。
PCの台数が増える
私の場合、もともと所有していたマシンを有効活用する形だったのでSurfaceGo3を追加購入したくらいでしたが、もしゼロからすべて用意するとなると負担が大きいかもしれません。
その場合は、最初から高性能なMacBook Proなどを1台購入する方が、合理的と思います。
インターネットに繋がる前提
当然、インターネットがないと全く開発できないです。とはいえ、インターネットがない状況でアプリ開発したくなるかといえば、私はないです。山奥でのんびり開発したい、といった人には適しませんが、それ以外の人は大きな問題ではないでしょう。
まとめ
いかがでしたでしょうか?
私自身もまだまだ開発環境を改善したいと思っているので、アドバイス等ありましたらコメント頂きたいです。
Discussion