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

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

ただいまの
回答率

87.92%

webサービスにおける開発環境構築を難なく行えるようになるためにはどんな知識が必要か

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 2,846

score 48

自分はweb業界にてフロントエンジニアをしているものです。
出身学科は情報系ではなく理学系でプログラミング(情報系)についての知識・勉強は入社してから始めました。(厳密にはインターンやアルバイトなどで経験していたのですがそれはさておいて)
環境構築について未だに難しい、という印象を持っています。
そこでどのような知識を持っていれば得意とは言わないまでも、難なく構築できるようになるのか、そのための知識とは何なのか、について最近考えています。
それについてご意見をいただければと思います。

回答例:
Linuxの知識、ネットワークの知識、サーバの知識が必要。
特にポートやプロセスについての理解が必要、など。
(参考書籍などあると嬉しいです)

例えばPHP環境をwindowsで一番簡単に環境構築しようとしたらXAMMPだと思います。
これを用いればPHPはもちろんApacheやMySQLも容易に立ち上げることができます。
ただ実際の企業の現場ではXAMMPを使ってローカル環境構築、というのは無いように思います。Vagrantを使い構成管理ツール(Chef、Ansible、etc...)を使ってプロビジョニングして―というのが一般的かと思います。

また既存のサービスの増強をしようとしようとした場合、新サーバにソフトウェアを入れてネットワーク設定をしてということも間々あると思います。
例えばDBのクラスタリング設定(設計)とか、ですね。

こういったことをこなせるようになるためにはどのような知識が必要なのでしょうか?
もちろん例えばDBであればそのDBごとの知識は必要になるとは思いますが、それ以前の話を聞かせていただきたいです。

何分抽象的な質問で恐縮ではございますが、皆さんのご意見をいただければと思います。
よろしくお願い致します。

また、環境構築の難しさ、というのは一体どこにあるのか、ということもお考えをお聞かせくださいませ。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

+2

経歴1年半程度の初心者PHPエンジニアですが、社内事情によりほぼ全ての社内サーバーの構築・管理をしている者です。
インフラ関連の知識など皆無だったのでどエライ目に遭いました。

インフラ関連のプロの方々から言わせるといろいろな知識が必要なのだろうと思いますが、ひとまず何よりも優先して身につけるべきは Linuxの知識 だと思います。
インフラど素人ながら、それでも何とかこなせたのは、まがいなりにもPHPエンジニアとして最低限のLinuxの知識を持っていたからだと思っています。

私の場合、構築するためにはどこから手を付けて、何をインストールしないといけないのか、何を設定しないといけないのか、といった最低限のことは分かっていたつもりなので、あとはその具体的なコマンドなどを調べるだけでした。
CentOSなどLinux系のOSでサーバー構築を行うことが多いかと思うので、まずは最低限Linuxを扱えるだけの知識とスキルが必要かと思います。
プロセスやポートについての知識も、Linuxの知識に付随して身に付くものだと思っています。

ローカル開発環境構築についても、ローカルに仮想的に構築するかどうかだけの違いで何も変わりません。

なので、結論としてはLinuxを扱えるだけの知識とスキルを身に着けて、一旦ローカルにVagrantでも何でも使ってローカルにLinuxの環境を構築してみましょう。
それでPHPなりRubyなりで「Hello World」出来れば、第一歩だと思います。
ドットインストールがその辺充実しているので、一番取っ付きやすいかと。

・ローカル開発環境の構築[Windows編]
http://dotinstall.com/lessons/basic_localdev_win_v2
・ローカル開発環境の構築[maxOS編]
http://dotinstall.com/lessons/basic_localdev_mac_v2
・UNIXコマンド入門
http://dotinstall.com/lessons/basic_unix

一旦「ローカルの開発環境の構築」でLinuxの環境を立ち上げたのち、その環境下でUNIXコマンド(Linuxを操作するのに必要なコマンド)を学んで、それから改めて自力でローカルの開発環境構築を行う、という風にやれば、ひとまず前提の知識は付くのではないでしょうか。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/05/27 13:58

    なるほど。
    回答ありがとうございます。

    自分も1番初めに学んだことはLinuxの知識でした。基礎的なものだけですが…
    と言うのも開発環境のOSがLinuxだったためです。
    開発環境構築においての手順書などありましたが、それらの意味を理解せずに書いてある内容(コマンドの羅列)をひたすらに実行していって環境構築するのに不安がありました。
    例えばライブラリのverの相互関係によって生まれるバグです。
    そういったものに出会った時に、正しく問題にリーチして適切にググり解決できる能力、といったものがエンジニアとして必要な能力だと思っています。

    saken649さんの回答からLinuxに関する知識が足りてないかも、と気づくことができました。ありがとうございます。

    キャンセル

0

追記/修正依頼に書くべきなのかもしれないですけど、回答として書きますね。

この質問ですが、
・インフラの構築にはどんな知識が必要か?
・開発環境って、何?
・開発環境と(検証環境と)本番環境の差分ってどう考えるか?
・デプロイってどうやって行うの?
みたいな、複合要素が入っているうえ、それぞれがそれなりに重いので回答しにくいです。

まず、何を知りたいのか、整理し直して範囲を狭めた質問にしたほうが、求める回答がつきやすいと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/05/27 14:14 編集

    開発環境の構築、というのは言うなればインフラの構築とイコールかもしれませんね…
    「開発環境の構築」において様々な知識が必要になっている様に思います。
    だからこそ開発環境構築が難しい、と一般的に言われているような気がします。
    何がボトルネックになっているのか、難しいと思わせる共通の項目は何か、どんな知識・能力があれば最終的に開発環境構築を終えられるか、といったことを考えていました。

    te2jiさんへの回答としては「インフラの構築にはどんな知識が必要か? 」というのが知りたいです。

    追記ですが、自分の思っている「開発環境」とはプログラミングして機能、サービスの開発を行うための基盤を指しています。プログラミングはできるけど、環境構築ができない、わからない、だとサービスの拡張などができないのでそこを懸念しての質問でした。
    その回答とは何かが知りたくてこの様な質問をした次第です。

    これでもわかりにくいようでしたら修正依頼お願い致します。

    キャンセル

  • 2017/05/27 15:26

    わかりにくいって言うより、質問範囲が不明瞭なんです。
    「game作りたいけど、何学べば良いですか?」と同じくらい緩いので、もう少し絞らないと、意図した回答がつかないです。

    たとえば、周りの人に文脈関係なく「開発環境、何使ってる?」って聞くと
    ・Vim
    ・XAMPP
    ・Windows
    ・仮想環境
    ・AWS
    みたいに、レイヤーの揃った回答すらもらえません。
    ので、開発環境って何?ぐらいから聞く必要があるんじゃないかなぁと。

    ちなみに、「インフラの構築にはどんな知識が必要か? 」っていうのも、もう少し絞ったほうが意図した回答がつくと思います。この質問も相当緩いです。
    ・オンプレ/クラウド
    ・物理/仮想
    ・ミドルウェア/OS/ネットワーク
    みたいな切り口があるので。

    キャンセル

  • 2017/05/27 17:07

    回答欄をこんな会話で埋めたくないから修正依頼にしてくださいって言ったんですが…
    saken649さんの回答よりLinuxの勉強が足りていないということがわかりましたのでsaken649さんの回答をベストアンサーといたしました。
    というのもLinuxの考え方・思想、カーネルレベルまで理解できれば、インフラ、仮想化、OSも包括的に理解できると思ったからです。
    回答有り難うございました。

    キャンセル

  • 2017/05/27 17:37

    > Linuxの考え方・思想、カーネルレベルまで理解できれば、インフラ、仮想化、OSも包括的に理解できる

    そんなわけ無いでしょ^^;レイヤが違うものが組み合わされて「開発環境」って表現されているんですから。

    まぁ、質問を修正もせずとも求めていた解が得られたみたいで良かったです。

    キャンセル

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

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

関連した質問

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