質問: こんにちは。私はネットワークエンジニアの仕事に就いて3ヶ月しか経っていない新人エンジニアです。現在はCCNAの勉強を中心にしており、来月に受験する予定です。 そこでなのですが、CCNA受験後の勉強手順があまりよく分からないので質問させていただきました。私は将来、ネットワークを含めサーバーやデータベース等も扱えるインフラエンジニアになりたいのですが、ネットワークの勉強後はどういった分野の勉強をしていけばいいのでしょか? 現在はCCNAの勉強と同時にExcel VBAの勉強をしております。また、上司からの指示でデータベース(SQL)言語についても触れておくよう言われました。個人的にはLPIC(linux)、PHP(プログラミングにも興味がある)にも関心があります。ただ、一度に勉強するにはあまりにもやることが多いため、順を追って勉強したいのですが、どの分野から勉強するべきでしょうか?教えていただけると幸いです。
回答: 長文失礼します。 私は HPC計算機屋→WEB屋→IoT屋→機械学習とかやる受託開発屋 と進んできた者です。 主さんの話だと、他の回答者さんも仰るようにバックエンドエンジニアとかサーバーサイドエンジニアと呼ばれる職種が近い職種ですかね。 PHPでWEB開発したいのだと思いますが、WEB開発ってWEBデザイナーがテンプレとかデザイン周りをやってくれるので、PHPでやる事はユーザーの入力を加工してDBに入れたり、DBからデータ取ってきて処理して表示側(テンプレートエンジン)に渡す位までしかやりません。ここら辺は「MVCモデル」とか「php フレームワーク」でググると良いです。 渡したデータをどのように表示するとか、見た目周りはデザイナーの仕事として分業してます。規模が小さい開発の場合は分業せずに全て1人のエンジニアがやる場合もありますが、主さんの興味の幅を考えるとサーバー側の冗長化・負荷分散とかも学びたい感じですか?冗長化・負荷分散が必要なレベルの開発だと恐らくWEBデザイナーがやるようなフロント側の技術は結構後回しになると思います。 勉強をする順番ですが、主さんがやってるインフラから勉強と言うのはちょっと時間がかかるけど良いと思いますよ。 理由は、最初にプログラムから入ると裏側のネットワークなどのプログラムより低レイヤーの知識が無いために、分からないことがあった時に結局インフラ側を学ぶ羽目になったりするからです。 ITで使っている技術は、使いやすくするためにプロトコル、パッケージ、ライブラリとかフレームワークとか、使用者に中身を意識させないものが多いので、中身分からないけど使えるって言うものを使ったりしてます。 そういったところも(なんとなくで良い)ので分かっていると、調べる速度が早くなり、理解も深まりやすいです。 主さんがあげていたものを使って説明した場合は下記の順が良いかと思います。 CCNA(ネットワーク)->LPIC(サーバー)->DB(SQL)->PHP(サーバーサイドプログラム) CCNAでネットワークを理解したら、サーバーを建てネットワーク設定してSSHでアクセスできるようにして、それができたらDB(MySQL・MariaDBかPostgreSQLあたりが良いかと)をインスコしてテーブルつくる、できたらPHPからDBのデータをSQLで取り出して、htmlベタ書きのページに表示。 の順番で良いと思います。 DBができたらKVSとかNoSQL(memcach,redisなど)もちょっとやったほうが良いです。WEB開発ではほぼ必須。 PHPでDBのデータを取得できたら、フレームワーク(Laravelが良いかと)使って簡単なWEBページをつくります。 PHPのソースコード管理はGithubを使うと良いと思います。 フレームワークでは大抵テンプレートエンジン(PHPから受け取ったデータをhtmlの記法じゃない方法で表示するものだと思ってください)を使うことになります。 フレームワーク・テンプレートエンジンは色々あるのでググってみてください。 テンプレートエンジンが使えるようになったらCSS・SassとかJavaScriptとかやると良いと思います。 まとめると CCNA(ネットワーク)->LPIC(サーバー)->DB(SQL)->NoSQL->PHP(サーバーサイドプログラム)->CSS・Sass・JavaScript 道は長いけど頑張ってくださいm(_ _)m