質問: 自分はweb業界にてフロントエンジニアをしているものです。 出身学科は情報系ではなく理学系でプログラミング(情報系)についての知識・勉強は入社してから始めました。(厳密にはインターンやアルバイトなどで経験していたのですがそれはさておいて) 環境構築について未だに難しい、という印象を持っています。 そこでどのような知識を持っていれば得意とは言わないまでも、難なく構築できるようになるのか、そのための知識とは何なのか、について最近考えています。 それについてご意見をいただければと思います。 回答例: Linuxの知識、ネットワークの知識、サーバの知識が必要。 特にポートやプロセスについての理解が必要、など。 (参考書籍などあると嬉しいです) 例えばPHP環境をwindowsで一番簡単に環境構築しようとしたらXAMMPだと思います。 これを用いればPHPはもちろんApacheやMySQLも容易に立ち上げることができます。 ただ実際の企業の現場ではXAMMPを使ってローカル環境構築、というのは無いように思います。Vagrantを使い構成管理ツール(Chef、Ansible、etc...)を使ってプロビジョニングして―というのが一般的かと思います。 また既存のサービスの増強をしようとしようとした場合、新サーバにソフトウェアを入れてネットワーク設定をしてということも間々あると思います。 例えばDBのクラスタリング設定(設計)とか、ですね。 こういったことをこなせるようになるためにはどのような知識が必要なのでしょうか? もちろん例えばDBであればそのDBごとの知識は必要になるとは思いますが、それ以前の話を聞かせていただきたいです。 何分抽象的な質問で恐縮ではございますが、皆さんのご意見をいただければと思います。 よろしくお願い致します。 また、環境構築の難しさ、というのは一体どこにあるのか、ということもお考えをお聞かせくださいませ。
回答: 経歴1年半程度の初心者PHPエンジニアですが、社内事情によりほぼ全ての社内サーバーの構築・管理をしている者です。 インフラ関連の知識など皆無だったのでどエライ目に遭いました。 インフラ関連のプロの方々から言わせるといろいろな知識が必要なのだろうと思いますが、ひとまず何よりも優先して身につけるべきは **Linuxの知識** だと思います。 インフラど素人ながら、それでも何とかこなせたのは、まがいなりにもPHPエンジニアとして最低限のLinuxの知識を持っていたからだと思っています。 私の場合、構築するためにはどこから手を付けて、何をインストールしないといけないのか、何を設定しないといけないのか、といった最低限のことは分かっていたつもりなので、あとはその具体的なコマンドなどを調べるだけでした。 CentOSなどLinux系のOSでサーバー構築を行うことが多いかと思うので、まずは最低限Linuxを扱えるだけの知識とスキルが必要かと思います。 プロセスやポートについての知識も、Linuxの知識に付随して身に付くものだと思っています。 ローカル開発環境構築についても、ローカルに仮想的に構築するかどうかだけの違いで何も変わりません。 なので、結論としてはLinuxを扱えるだけの知識とスキルを身に着けて、一旦ローカルにVagrantでも何でも使ってローカルにLinuxの環境を構築してみましょう。 それでPHPなりRubyなりで「Hello World」出来れば、第一歩だと思います。 ドットインストールがその辺充実しているので、一番取っ付きやすいかと。 ・ローカル開発環境の構築[Windows編] ・ローカル開発環境の構築[maxOS編] ・UNIXコマンド入門 一旦「ローカルの開発環境の構築」でLinuxの環境を立ち上げたのち、その環境下でUNIXコマンド(Linuxを操作するのに必要なコマンド)を学んで、それから改めて自力でローカルの開発環境構築を行う、という風にやれば、ひとまず前提の知識は付くのではないでしょうか。