プログラミングを行う上で開発環境を整えるのはとても重要な事です。
僕が心掛けているポイントは、
- 開発と本番とできるだけ同じ環境に合わせる
- 自宅でも外出先でも開発が行える
- WindowsでもMac(Macbook等)でも開発が行える
このあたりを心掛けています。このあたりを深堀したいと思います。
ちなみにこの記事での開発環境というのはLinux上での開発、といった事を前提にお話しさせて頂きます。
最強の開発環境はリモートに用意する事です
かれこれ12年くらいプログラミングを行っている僕の経験から、最強の開発環境は「リモートに用意する事」だと思っています。
僕のプログラミングの開発環境の歴史は、
- リモート開発環境での開発(5年くらい)
- Windowsマシン上でXAMPを使った仮想環境での開発(1年くらい)
- Windows/Macマシン上でVagrant/Virtualboxを使った仮想環境での開発(6年くらい)
- 一周してリモート開発環境での開発(半年くらい)←今ここ
この通りです。
一周してリモート開発環境に戻っている、といった感じですね笑。
リモート開発環境が最強な理由
ではなぜリモート開発環境が最強なのか、見ていきましょう。
ひと昔前と比べてwifiやインフラ周りが充実
ひと昔前と比べてwifiやインフラ周りが充実しています。以前はwifi等ネットワーク環境がないと開発が行えない、結果的に手持ちのPC(ノートでもデスクトップでも)に仮想環境を作って開発を行う…という感じでした。
もちろん今現在も手持ちのPCに仮想環境を作って開発を行っている人がほとんどだと思いますが、ネットワークが充実した現在ではリモートに開発環境を用意するのが適作かなと。
移動中はそもそもプログラミングをしない
リモートに開発環境を置いた場合、「じゃ、移動中とかはどうするの?」と聞こえてきそうですが、移動中にプログラミングはしますか?と。
かれこれ13年ほどプログラミングに携わっており、自宅以外の外出先でも開発を行ってきた僕的に言うと、移動中はそもそもプログラミングはしないですね。あっても数分~1時間くらいのトラブル対応くらいでしょうか。
移動中にプログラミングをした時もありますが、はっきり言って集中もできないし、できたとしてもgitへコミット等する時は結局ネットワークがあるところで行います。
そう考えると移動中のプログラミングってあんまり意味はないですよね。
自宅ではWindowsで外出先ではMacbookみたいな環境でもOK
これは結構でかいですよね。「Vagrant / Virtualbox」の仮想環境でもWindows/Macで入替はできますが、ちょっとだけ手間がかかります。
その分リモートに開発環境がある場合は、接続できるFTPツール、SSHツール、エディタ(IDE)が有ればどんな環境でも開発ができます。Windows/Macいずれもこれらのツールってありますよね。
ちなみに開発を行う上でのオススメツールは『プログラミングを行う上で実際に僕が使っているオススメツールのご紹介』で紹介しています。ぜひ参考にしてみてください。
開発を行うPCはそこまでハイスペックなものにしなくてもOK
リモートに開発環境がある場合は、開発を行うPC(ノートやデスクトップ)はそこまでハイスペックにしなくても問題はございません。
経験上、PC(ノートやデスクトップ)に仮想環境を作って開発を行う場合は、ある程度のスペックがないと正直難しいです。1プロジェクトのみでしたらそこまで問題ないのかもしれませんが、複数プロジェクト(複数の仮想環境)が必要になると、そこそこのハイスペックマシンでないと難しいです。
リモート開発環境をオススメできない人もいます
逆にリモート開発環境をオススメできない人もいます。
自宅でも外出先でも同じノートPCで作業している人
この場合はノートPCに仮想環境を作っていれば、自宅でも外出先でも同じ環境が利用できるのでリモート開発環境にする必要はないですね。
固定IPを持っていない人
リモートに開発環境を置くという事である程度セキュリティはしっかりしないといけません。固定IPがあると、リモート開発環境に対するアクセス制限もかけやすいですよね。
僕の場合は、自宅からは固定IPで接続、外出先からは自宅へVPNで接続してそこからリモート開発環境へ接続しています。
ちなみに固定IPについては『【初心者在宅ワーカー必須】エンジニアは必ず固定IPを取得しよう』で説明しておりますので、ぜひ参考にしてみてください。
取引先の業務規程違反に触れる場合
取引先次第になりますが、取引先のソースをリモートに設置してよいかどうかは、各取引先に確認しましょう。
オススメのリモート開発環境
僕がオススメのリモート開発環境はやっぱりAmazonAWS(アマゾンウェブサービス)でしょうか。
- セキュリティグループで簡単にIP設定が行える
- 無料利用枠が結構使える
- 簡単にインスタンス追加ができる
- awsを使っている企業が増えている(安心)
このあたりでしょうか。
ただしプロジェクトによっては、『さくらインターネット』とか『エックスサーバー』等も利用しています。
まとめ
いかがだったでしょうか。
他の人がどんな開発環境で開発を行っているのかって結構気になりますよね。僕の経験や今現在の開発環境がどんなものか、を紹介させて頂きました。
少しでも参考になり少しでも開発がスムーズになればいいなと思っています。