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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

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

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

ネットワーク

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

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

2回答

3991閲覧

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

marimo.

総合スコア48

Linux

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

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

ネットワーク

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

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

1クリップ

投稿2017/05/26 15:37

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

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

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

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

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

経歴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 04:29

saken649

総合スコア60

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marimo.

2017/05/27 04:58

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

0

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

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

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

投稿2017/05/27 04:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marimo.

2017/05/27 05:15 編集

開発環境の構築、というのは言うなればインフラの構築とイコールかもしれませんね… 「開発環境の構築」において様々な知識が必要になっている様に思います。 だからこそ開発環境構築が難しい、と一般的に言われているような気がします。 何がボトルネックになっているのか、難しいと思わせる共通の項目は何か、どんな知識・能力があれば最終的に開発環境構築を終えられるか、といったことを考えていました。 te2jiさんへの回答としては「インフラの構築にはどんな知識が必要か? 」というのが知りたいです。 追記ですが、自分の思っている「開発環境」とはプログラミングして機能、サービスの開発を行うための基盤を指しています。プログラミングはできるけど、環境構築ができない、わからない、だとサービスの拡張などができないのでそこを懸念しての質問でした。 その回答とは何かが知りたくてこの様な質問をした次第です。 これでもわかりにくいようでしたら修正依頼お願い致します。
退会済みユーザー

退会済みユーザー

2017/05/27 06:26

わかりにくいって言うより、質問範囲が不明瞭なんです。 「game作りたいけど、何学べば良いですか?」と同じくらい緩いので、もう少し絞らないと、意図した回答がつかないです。 たとえば、周りの人に文脈関係なく「開発環境、何使ってる?」って聞くと ・Vim ・XAMPP ・Windows ・仮想環境 ・AWS みたいに、レイヤーの揃った回答すらもらえません。 ので、開発環境って何?ぐらいから聞く必要があるんじゃないかなぁと。 ちなみに、「インフラの構築にはどんな知識が必要か? 」っていうのも、もう少し絞ったほうが意図した回答がつくと思います。この質問も相当緩いです。 ・オンプレ/クラウド ・物理/仮想 ・ミドルウェア/OS/ネットワーク みたいな切り口があるので。
marimo.

2017/05/27 08:07

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

退会済みユーザー

2017/05/27 08:37

> Linuxの考え方・思想、カーネルレベルまで理解できれば、インフラ、仮想化、OSも包括的に理解できる そんなわけ無いでしょ^^;レイヤが違うものが組み合わされて「開発環境」って表現されているんですから。 まぁ、質問を修正もせずとも求めていた解が得られたみたいで良かったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問