Web未経験エンジニアで大変な現場に放り込まれた人向け-その1

# 未経験エンジニアなのに大変な現場に放り込まれた方々へ
※この記事は未経験でWebエンジニア業界に飛び込んだ人、これから目指そうって人向けです。

私はこの業界に知識ゼロの状態で飛び込み、初回からなかなか大変な現場へ放り込まれました。
それゆえにかなり遠回りしながら、最近やっとそれなりにweb開発が板についてきました。
僕なりに色々なたとえを交えて未経験エンジニアにとってイメージの助けとなりえるような記事を起こしていこうと思います。

## WEBサイト構築にまつわる用語たちを超ざっくり
未経験で研修が満足に行えていない、またはプログラミングに特化した研修はうけました。
っていう状態のひとにWEBサイト構築して！ってまず無茶なお願いだと思うんです。
なんなら自分の環境に開発環境適当につくってよ！PHPで！
とかいわれてもなかなか難しいと思うんですね。まぁ今の時代かなり有用な記事がいっぱいで言われた通りになぞれば
大体構築できちゃいますけど、あんまりちゃんと理解はできないまま構築完了！ってなっちゃうと思うんですね。

そこで今回は、用語にそって経験０の人でも連想しやすいようなざっくりとしたイメージを伝えていこうと思います。

### IPってなに
IPアドレスってよく聞きますよね。
なんとなく住所っぽいなぁっ、ネットワークのアドレスなんだろうなぁって理解まではまぁいけると思うんです。
でも
10x.xxx.xxx.xxxとか192.168.xxx.xxxとかとかlocalhostとか
唐突に、当たり前のようにいわれてもすぐには呑み込めませんよね。僕は無理でした。
※会社の192.168.xxx.xxxっていうアドレスがふられているサーバで開発してた時、自宅から192.168.xxx.xxxにアクセスしようとしたりしてました。


### IPアドレスって現実世界でいうと

郵便番号みたいなものなんですね。
または地図座標ととらえてもよいかも。

んで、192.168.xxx.xxxとか10.xxx.xxxとか172.xxx.xxxとかっていうのは(一般的にはローカルIPと呼ばれるもの裁ち)
あるipアドレスに所属している人たちが、それぞれ名乗ってる地名みたいなものなんですね。
つまり
※会社の192.168.xxx.xxxっていうアドレスがふられているサーバで開発してた時、自宅から192.168.xxx.xxxにアクセスしようとしたりしてました。
これってなにをやってたか現実世界で例えると。
*自宅に居ながら会社のトイレを使いたいっす！*
っていってるようなもんなんすよ。それは無理ですよね。

だけど、自宅を会社と同じような間取りにして、トイレを配置しちゃえば、自宅からでも
192.168.xxx.xxxで同じようなトイレを使う。ってのは可能ですね。上水、下水は別物なので料金は別途いただくんですけどね。

## 全世界に自宅のトイレを公開したい
これは、192.168.xxx.xxxというアドレスが振られているトイレに郵便番号を付ければいい。ということになります。
つまり会社のトイレも10x.xxx.xxx.xxxというアドレスが振られていたら自宅からでも。どこでもドアのようにそのトイレに行けるのですね。
郵便番号を付けるということなので、それなりの手続きが必要になってきます。
※これだとこの辺がわかりづらいですね。

## localhostについて触れてないんすけど
なし崩し的にトイレに例えちゃったのでこのままいきますが、localhostってじゃあなんやねんと
もう誤解を恐れずにいいますが、つくりかけのトイレとかトイレ工場なんですよ。
我ながらこれはすごい誤解を生みそう。
ここだけ急にたとえから外れてしまうんですが、みなさんが今現在お使いのPCあるじゃないですか。
それです。それがlocalhostです。自分自身のことをlocalhostというんです。

## portってなに
IPアドレスとともにportもよく聞きますね。直訳すると港です。正直わかりづらいですよね
IPアドレスが郵便番号とするとポートは番地と考えるのがイメージがつきやすいかもしれません。
000-0000(IPアドレス)
XXX県XXX区XXX市XXX(ローカルなIPアドレス192.168的な)
1丁目(port)
とかこう考えるとイメージしやすいんじゃないでしょうか。


## サーバってなに
IPについてざっくり紹介したところで、次にサーバとはなにか例えていきます。
土地です。地盤。
未経験でサーバと聞くとなにか得体のしれない、実態のない大きな力をもった何かを想像しがちな気がするんですね。
でもそんなことはないのです。今手元にあるPCと同じようなものなんです。
得意分野が違ったりはしますが、ほぼ一緒と考えてよいと思います。必ずでっかいPCみたいなものが実態として存在します。
（仮想化環境とか、クラウドとか色々ありますが、こいつらも実態はでっかいコンピュータです。）
大事なのは、その土地になにを作るかってことなのです。

## じゃあWebサーバってなんですか
サーバは土地だって例えをしましたよね、その土地に公衆トイレ作りたい、ってとき現実世界だとどうしますかね？
コンクリでトイレの入れ物つくりますよね。当然扉付で。
それです、それがWebサーバなのです。
現実世界で例えるならばトイレを配置するためのもの、トイレと人を繋ぐものととらえるといいかもしれませんね。
トイレの数に合わせて、定員がきまると思います。その定員数を定義しておくこともできますね。
また、給水とか排水とかいった仕組みが必要ですよね。公共のインフラと結びつけてくれる仕組み。それがWEBサーバです。
給水、排水の配管がサーバサイドプログラムとか考えるといいかもしれませんね。
この例えだとJavaとかPHPとかRubyとかの実装は配管工事ってことになるんですね。なんか強ち間違ってない気がしてきた。

## WebClientってなんですか、サーバはないんですか
htmlとかjavascriptとかcssとかがこのWebClientと呼ばれるものにあたりますね。
誤解を恐れずいうとWebClientといったらこの3つです。
そして上記のプログラムはどこで実行されるか。
それは今お手元にあるPCがプログラムを実行するのです。
Webサーバからはその実行プログラムを提供するだけ、ということになりますね。
トイレにたとえると、水を流すボタンとか、紙とか。これらは物だけ与えられて、実際は自分でアクションを起こして使いますよね。
htmlが便器本体で、トイレットペーパや水栓レバーがjavascriptで、便座カバーとかがCSSってことですね。
たとえが独特すぎる気がする


## え、よくDBサーバってきくけどこれはなんですか
しまった。トイレで例えなきゃよかった。ちょっと趣向をかえます。
DBサーバDBサーバってよく現場で耳にすることも多いかと思うんです。
そもそもDBってとっつきづらいと感じる人もいると思います。
Web開発においてDBといえば基本はRDBMSという種類のDBが採用されます。
私はRDBMSはそれひとつで完成されたWEBアプリケーションだと思うことで最初はしっくりきました。
DBサーバといわれたら、なんかいろんな情報の読み書きに特化したWebアプリが構築されているサーバ。
くらいに思うと、もしかしたらしっくりくるかもしれません。


# 総括
Webアプリは現実世界でいう公衆トイレに例えることが出来る。（全然できてない）
次回は絵を交えてもう少しわかりやすい記事を書きたいな。