こんにちわ、@nihimoto です。
今回は弊社トライアドの開発環境について記載してみたいと思います。
弊社ではエンジニア向けの開発環境として、開発専用のサーバーをVPSサーバーで用意しています。開発サーバー内にapacheやmysqlやphpなど、開発に必要なツールを一式インストールして、SSHで開発サーバー内でvim等のツールを使って開発作業を行っています。
昔は手元のMac内の環境を整えて開発していたのですが、VPSが手軽に手に入るようになってきた時期に、現在の環境へ切り替えを行いました。今だとAWSも検討するべきかもしれませんが、ひとまず現在の環境のメリットについて書いてみたいと思います。
柔軟なカスタマイズ
手元マシンの開発環境の場合、大抵はMacやWinとなるかと思いますが、その場合、実際にサイトを公開する本番環境のUnix系サーバーとの間で環境を合わせるのが大変です。
apacheやphpなどのかなり普及しているものであればなんとかなりますが、あまり使われることのないソフトやmodだと、「Winだと使えない」「Macだと設定値が違う」など面倒が続出します。
しかし、開発環境を手元マシンではなく外部に求めるのであれば、本番環境でよく使われるUnix系OSと同じ環境を用意することが、比較的容易にできます。
特に受託開発を行なう企業ではお客様の本番サーバーの環境は様々です。そういった時に開発環境をうまくカスタマイズして本番と合わせて、いざ公開!というときに、本番と開発の細かい差で泣くことがないように、あらかじめリスクを減らしておくことができます。
壊れない(滅多に)
手元マシンに環境を構築すると、マシンが壊れた時はもちろんOSのアップデートやその他不具合によって作業環境が破壊されてしまうケースが多々あります。
Macの場合はOSのアップデート実施時にhttpd.confがリセットされてしまいますし、そうでなくてもマシンが壊れたら開発環境を失う事になります。もちろんバックアップなどがあればデータを失うことはないと思いますが、それでも面倒なことには変わりありません。
上記の問題は手元マシンではなく、リモートにある開発サーバー内で環境を構築することで全て回避することができ、安定的に長期間利用できる環境を確保することができます。
もちろんリモートサーバーもアップデートは行なうのですが、LinuxOSであれば手元マシンと違って破壊的な挙動は殆ど起こらないので安心できます。壊れる可能性もありますが、手元マシンよりは遥かにリスクが小さいはずです。
様々な端末からアクセスが可能
リモートサーバー上に開発環境があることによって、手元のどの端末からも同じ環境へのアクセスが可能となります。
メインの作業は会社のデスクトップマシンからゴリゴリ作業をするにしても、リモート環境で作業するときにはノートパソコンから行い、ちょっとした作業であればiPadから行なう、などと、全ての端末から同一の環境にアクセスをして作業を行うことができます。
これによっていつどんな状況でも仕事ができるという、大変便利な(時には迷惑な)環境を作ることができます。
また、表示確認をiphoneやandroidから行なう必要がある、というように開発環境と確認端末が異なるようなケースでも、確認端末から手元のマシンへアクセスできるようにするのは非常に面倒ですが、これも元々ネット上にあるサーバー内で作業している場合には、いつでもアクセスが可能ですので非常に楽です。
ネットワークへの負荷
リモートワークをしていていると4G回線や貧弱なwifiで作業を行う必要がよくあります。そんな時に巨大な案件のレポジトリをgit cloneしてしまったりすると、時間がかかりますし、4Gならキャリアの通信量を圧迫して通信速度に制限を掛けられてしまうかもしれません。
そんなときもリモートに開発環境があると、Github使うにしてもwgetでデータをダウンロードするにしても、通信は全て開発環境サーバーと各種サービスのサーバー間の通信になるので、通信容量の問題をクリアできます。
最後に
開発環境を自身の手でカスタマイズしていくことで、色々なサーバーに関する知識が体感として得られ、リスク無しで汎用的なスキルを身に着けていくことができます。私自身そうやってサーバーの基本を覚えました。
開発環境をお仕着せのマシンに任せず、リモートに自分の手で構築していく、というのはいい経験になると思いますので、サーバーに関して知識が足りないなーと思っているエンジニアさんこそ、ぜひチャレンジしてみてもらいたいな、と思います