質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.83%

  • Linux

    3381questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • SQL

    2177questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • VBA

    1578questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • ネットワーク

    487questions

    ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

  • CCNA

    15questions

    Cisco Certified Network Associate (CCNA)

インフラエンジニア勉強手順について

解決済

回答 4

投稿

  • 評価
  • クリップ 6
  • VIEW 1,246

natural1994

score 1

こんにちは。私はネットワークエンジニアの仕事に就いて3ヶ月しか経っていない新人エンジニアです。現在はCCNAの勉強を中心にしており、来月に受験する予定です。

そこでなのですが、CCNA受験後の勉強手順があまりよく分からないので質問させていただきました。私は将来、ネットワークを含めサーバーやデータベース等も扱えるインフラエンジニアになりたいのですが、ネットワークの勉強後はどういった分野の勉強をしていけばいいのでしょか?

現在はCCNAの勉強と同時にExcel VBAの勉強をしております。また、上司からの指示でデータベース(SQL)言語についても触れておくよう言われました。個人的にはLPIC(linux)、PHP(プログラミングにも興味がある)にも関心があります。ただ、一度に勉強するにはあまりにもやることが多いため、順を追って勉強したいのですが、どの分野から勉強するべきでしょうか?教えていただけると幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+9

長文です。申し訳ありません。

ネットワークを含めサーバーやデータベース等も扱えるインフラエンジニアになりたい
個人的にはLPIC(linux)、PHP(プログラミングにも興味がある)にも関心があります。

いわゆるバックエンドエンジニアに相当すると思います。

どういう順番で勉強すればよいのか?というのは、昔からよく話題になります。

最近はWeb Developer Roadmap - 2018という記事が話題になっています。

図の上から順番に勉強していけば、最終的には一流のエンジニアになれるという内容です。
多くのステップがあって圧倒されますが、これらすべてを習得する必要はありません。

 導入

まず、原文のIntroductionによると、フロントエンドにしろバックエンドにしろ、以下のスキルから学ぶことが推奨されています。

  • Git
  • SSH
  • HTTP/HTTPS
  • 基本的なターミナル操作(UNIXコマンド)
  • 調査方法(ググり方)
  • データ構造・アルゴリズム
  • 文字コード(UTF-8とかShift_JIS)
  • GitHub(アカウントを作る)

これらを理解してから、Back-endの道に進みます。

 Back-end

上司のおっしゃるSQLは、Step8にあるRelational Databasesにあります。
ここまで習得すれば、現場で活躍できるようになると思いますので、ひとまずはこのStep8が目標になるかと思います。

 Step1: 言語の選択

数多くの言語の中から選びます。どれも一長一短なので、コレ!というものはありません。
PHPに興味があるとのことなので、素直にPHPを選ぶのがよいと思います。

 Step2. 練習

まずは、PHPで小さなアプリを練習で作ってみます。

 Step3. パッケージマネージャー

PHPにはcomposerというパッケージマネージャーがありますので、これを学びます。

 Step4. ベストプラクティスを知る

PHPならPHP-FIGという団体がPSR-0, PSR-1, PSR-2, PSR-3というコーディング規約をまとめていますので、それらを勉強します。

 Step5. 練習

上記を踏まえて、改めて練習でPHPのライブラリを作ってみます。

 Step6. テスト

テストを学びます。

 Step7. 単体テストの練習

今まで作ったアプリやライブラリで単体テストをやってみます

 Step8. リレーショナルデータベース

SQLを学びます。どのデータベースを使うのか選択をします。
ここでは、MySQLがオススメされています。

 さいごに

とりあえず、Step8まで書いてみました。必ずしもこの順番で勉強する必要はないですが、それなりに理にかなっているかなと私は思います。

例えば、PHPよりも先にSQLを学ぶことは可能ですが、アプリがなければ、SQLを実践することができないので、少し効率的ではないと思います。

私も勉強中なので、一緒に頑張りましょう!

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/13 10:24 編集

    志村ぁ、composer! composer!(って投稿したら直ってましたね)

    キャンセル

  • 2018/06/13 10:26

    修正しました。ありがとうございます!

    キャンセル

  • 2018/06/13 10:30

    PHP-FIGはコーディング規約のほかPHP周辺の改善を提案して広めていく団体名であって、コーディング規約はPSR-0,1,2,3とか、PHPフレームワーク個別にもあるよ、という、重箱の隅

    キャンセル

  • 2018/06/13 10:32

    なるほど、修正しておきます。

    キャンセル

checkベストアンサー

+2

長文失礼します。

私は
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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

一つのことばかり勉強しようとしても壁にぶち当たりやすいので、
時間を区切って並行していろんなことを興味を持って取り組むのが良いかも。

一日の中で複数の分野にちょっとずつでも携わると良いです。
人間、長く取り組もうとすると飽きてきやすいので、
飽きてきたなと思ったらちょっと他の分野を学習するのが
長続きの秘訣かも。

CCNAって資格試験でしょうから、これを軸に
試験日までのおおよそのスケジュールを決めて、
サブとして一日いちにちなんの分野をつまみ食いするか、
サイドメニューを考えるという感じでしょうか。

頭に詰め込むだけだと理解したと錯覚しがちなので、
プログラミング言語やデータベースなどは自前で環境構築して試しやすいので、
そういうのもつまみ食いすると楽しいです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

サーバエンジニア(構築/保守)から、Railsエンジニアへの転身を目指して勉強中の者です。

まずインフラエンジニアとしてのキャリアを固めつつ、でもプログラミングにも興味があると理解しました。
下位層から学習していくのがいいと思います。
ネットワーク(Cisco) ⇒ サーバ(Linux) ⇒ データベース(MySQL) ⇒ Webアプリ(PHP)
自宅PCにLAMP環境を構築して、その環境内でLinuxやMySQLのコマンドを色々実行してみて、ある程度理解が深まったら、PHPでプログラミングを始めてみるのがいいと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    セキュリティエンジニアになるための資格について

    セキュリティエンジニアになるためには、どのような資格があったほうが有利ですか。 (自分で調べた感じだと「基本情報技術者、応用情報技術者、LPIC、シスコ技術者認定、情報セキュリテ

  • 受付中

    現役の方も最初は理解出来ない状況でしたか?

    現在CCNAを勉強していますが、ざっくりとしか理解できません。現役の方も最初は全然理解できないということがありましたか? LPICの資格取得はできましたが問題と答えがわかっていたの

  • 受付中

    CCNA取得について

    知識、経験なしでインフラ系の 会社に入社しました。 会社から1ヶ月でCCNAの資格取得を 命じられております。 ほとんどの用語が初めて聞くもので、 理解するのに時間がかかっ

  • 解決済

    L2スイッチのmacアドレステーブルの保存領域について

    閲覧ありがとうございます。 早速ですが質問させて下さい。 現在CCNAの取得のため、学習中なのですが、 L2スイッチのmacアドレステーブルの保存領域や、 どう言うタイミングで

  • 解決済

    CCENTのシュミレーション問題について

    CCENTの試験についての質問です。 具体的にはシュミレーション問題の配点と回答についてです。 本日私はCCENTの試験を受けてきました。 Ping-tで問題をすべて金にして、何度

  • 受付中

    ネットワークの勉強法

    ネットワークの勉強をしたいと思い、とりあえず会社の人に勧められた本を読んでいるのですが全く頭に入りません。 (ネットワークはなぜつながるのかという本) もうちょっと簡単な本から読ん

  • 受付中

    GNS3をMAC環境にインストールできない

    現在CCNAの学習をしています。 自宅でGNS3を使用して、ルーターやスイッチなどのシュミレーションをしたいと考えています。 下記のサイトを押下後、 https://sourc

  • 受付中

    CCNAとCCENTについて質問です

    CCNAの試験について質問です。 現在僕はインフラエンジニアの仕事に就くために、CCNAの資格を取得しようと勉強しているところです。 しかし転職エージェントの方に、まず最初はC

同じタグがついた質問を見る

  • Linux

    3381questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • SQL

    2177questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • VBA

    1578questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • ネットワーク

    487questions

    ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

  • CCNA

    15questions

    Cisco Certified Network Associate (CCNA)