大田区から発信するゆるゆる日記

主にITエンジニアに関する備忘録日記。たまに趣味も。何か不備があればコメント頂けると幸いです。Twitterアカウント https://twitter.com/ryuzan03

駆け出しエンジニア必見!WEBサービスとインターネット【基礎】

この記事は私が転職活動中にまとめたものです。

 

今回の内容は、インターネットとWEBサービス、およびにWEBサービス開発についてまとめたものになります。

 

当時は私自身全くインターネットとかWEBについて理解できていなかったので、そんな自分にも分かりやすく、さらに面接等で自分の言葉で説明できるようにまとめた記事になっています。

なので、駆け出しエンジニアの方にも分かりやすい内容になっているかと思います。 

 

では早速ですが、本題に入ります。

 

※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。

【目次】

 

内容

WEBサービスとは?

WEB(インターネット)上で、サービスを提供するための技術、もしくは提供されるサービスのことです。

 

諸説あるようですが、WEBサービスはどちらの意味も含んでいるようです。

 

WEBサービス開発を職業にしている側とWEBサービスを使用する側で、WEBサービスの捉え方は変わってきそうですね。

 

WEBエンジニアは、文字通りWEBサービスを開発する人のことです。

インターネットを利用してプログラム同士を連携させて、利便性を向上させる仕組みを使いこなすプロです。

 

WEBサービスの流れ

WEBブラウザからWEBサーバにHTTPで「サイト・アプリを見せてください」などの指示を送る(リクエスト)

・WEBサーバ内でプログラム同士を連携させたり、データベースサーバからデータを取ってきたりして、データを準備(サーバサイド)

・サーバサイドのデータをWEBブラウザが読み取れるように、HTML/CSS/Javascriptなどを使ったソースコードに書き換える(フロントサイド)

・HTMLのソースコードをHTTPでWEBブラウザに送る(レスポンス)

WEBブラウザがHTML/CSSで記述されたソースコードを人間が見やすいように変換して表示する

 

インターネットとWEB

インターネット ≧ WEB

WEBはインターネットの機能の一つです。

 

【インターネット】

情報伝達のために世界中のコンピュータやスマホなどを相互に接続する通信網(コンピュータネットワーク)のことです。インターネット・プロトコル(IP)という通信方式を使って相互に接続して通信をしています。

※IPの通信例:

 ・ブラウザからドメイン名を入力

 ・ドメイン名は、いくつかのDNSサーバを経由して、グローバルIPアドレス(インターネット上の住所のような役割)に変換される

 ・ルータを介して、グローバルIPアドレス元にWEBサーバなどに問い合わせする(処理の指示)

 ・WEBサーバなどからレスポンスがある

 ・レスポンスをルータがプライベートIPアドレスを元に、要求のあったブラウザに返す

 

語源は「インターネットワーク」からきていて、inter=「相互」とnetwork=「網」に分けると意味が分かりやすいですね。

 

情報伝達方法は、時代によって変わってきました。

狼煙や太鼓・法螺貝を鳴らす、飛脚、手紙、電話、ラジオ、テレビ、インターネットなどなど。

インターネットはまさに現代を象徴する情報伝達方法なんですね。

  

【WEB】

インターネット・プロトコルを前提・応用した「HTTP通信方式(通信プロトコル)」を使って、「HTML」を「WEBブラウザ」に表示できる仕組み。要は文書を公開・閲覧できるシステムです。

 

正式名称は「World Wide Web」で、大規模な文書間の繋がりを図示すると複雑な蜘蛛の巣に見えることからきているようです。

 

同列の位置に「Email」「IP電話」「オンラインゲーム」「Skype」などがあります。カテゴリーに分けると、親フォルダがインターネットで、子フォルダがWEBやEmailになります。

 

WEBサービス開発の流れ

企画:ターゲット・背景・目的・目標を決め具体的なWEBサービスの構想を練る。

設計:サイトマップワイヤーフレームワーク・データベース設計・機能要件・言語/フレームワーク・タスクの洗い出し・工数/作業員数把握・スケジュール作成。

資金調達:サービスを作るために資金を調達する。

開発:プログラミングを行う。ウォーターフォール開発とアジャイル開発で開発の進め方が違います。

リリース:最後の確認を行い、アップロードをして、ドメインを購入する。

プロモーション:宣伝方法を決めて宣伝する。

保守/運用:システムの正常な稼働を維持し、不具合などあれば修正を行う。

終了:運営できなければサービスを終了させます。

 

WEBエンジニア

上記でも少し書きましたが、WEBエンジニアとは「WEB上での使用に特化したシステムの設計・開発・運用・保守を専門的に行う人」のことです。

WEBを通して操作するシステム開発がメインの職業になります。

 

システムエンジニアが設計した仕様書を元にWEBエンジニアが開発を進める場合や、設計もWEBエンジニアが行う場合などもあり、厳密な区切りはないようです。

 

資格はなくてもWEBエンジニアにはなれます。

しかし、企業も利益を求めているので、実務未経験者がばりばりのIT開発会社に採用されるのは難しいでしょう。

 

必要スキル

JavaやHTMLなどWEBに関連するプログラミングスキル

ネットワーク・LAMP環境・データベース・セキュリティ・Git・サーバに関する知識

問題を見極める力

タスク管理能力(優先順位を見極める)

 

将来性

現状は、WEBアプリが進歩し開発が盛んに行われているので、WEBエンジニアの需要も高いようです。

なので、将来性は高い状態が続くと思われます。

 

ただ、それも確実とは言えません。

最近ではブロックチェーンが発達してきています。

やりとりが発生するアプリはブロックチェーンでも作成することができます。

 

技術進歩が速いIT業界では常に自分のスキルをアップグレードすることが大切です。

 

用語一覧

インターネット・プロトコル(IP):

複数の通信ネットワークを相互に接続し、データを中継・伝送するための通信規約(プロトコル)。例えば、日本語しか喋れない人と英語しか喋れない人が、言葉だけでお互いの意思を疎通することはできないですよね?お互いに「りんご=Apple」のように決まり事(規約)があって、初めて意思の疎通ができます。

 グローバルIPアドレスとプライベート(ローカル)IPアドレスがある。現在普及しているのはIPv4(IP version 4)で、32ビットのアドレスを用いている。

 

グローバルIPアドレス

IPアドレスを管理しているプロバイダから、機器の一台一台に全世界で一意に割り振られる番号。日本ではJPNICという機関が管理している。プロバイダ契約は、原則家庭や会社など一つだけです。なので、ルータにグローバルIPアドレスが割り振られることが多い。インターネットと通信をしているのは、個々のパソコンではなく、ルータになります。グローバルIPアドレスは、インターネットに接続する度にプロバイダが割り振ります。

 

プライベートIPアドレス

ルータがインターネットからのレスポンスをパソコンに反映させるために必要な番号。個々のパソコンに割り振られるIPアドレス。同一ネットワーク内(家庭や会社)でのみ通用する番号。申請などは不要で、LANの中で自由に使うことができる。

 

ルータ:

インターネットと個々の機器の間で通信を行うのに必要な機器。ネットワーク上の所属する家庭や企業のインターネットと外部のインターネットを接続させる。

 

ネットワーク(net=「網」work=「作られたものごと(漠然とした表現のため要注意)」):

IT業界においては、複数のコンピュータ同士を接続したもの(コンピュータネットワーク)やその通信網としての認識が一般的。

 

HTTP(Hypertext Transfer Protocol):

クライアントサイドとサーバサイドの通信規約。

 

HTML:

WEBブラウザで情報を閲覧するためのページのデータを作ることができる言語。

 

WEBブラウザ

WEBの世界を覗くための窓。

HTMLで書かれたWEBページを人間が認知しやすいように見せてくれる。

主に使われる言語は、「HTML」「CSS」「Javascript」。

ブラウザの種類は、「InternetExplor」「Chrome」「Edge」「FireFox」「Safari」など。

 

アジャイル開発:

どの開発手法を採用するのか臨機応変に決める開発手法。

スクラム開発が有名。プロジェクトは製品開発を担当するチームやテストを担当するチームなど幾つかのチームが参加し、密に連携を取りながら「小さな」機能を開発する作業を繰り返し、完成を目指します。

短期間での打ち合わせと小さな機能を完成させて随時リリースしていくので、可変的で双方向にクリエイティブな開発ができる。

一方で、頻繁な変更が可能なので、しっかりと仕様を定めておかないと、品質を落としかねない。最悪の場合は、プロジェクトが完成できなかったり、開発途中でプロジェクトの仕様を根本から覆すことにもなりかねません。

 

ウォーターフォール開発:

プロジェクト完了期日が決定しており、さらに製品の最終仕様が開発の途中で変更されないなど、緻密な計画を立てて最後まで仕様を変更しない開発手法。

簡潔で安定した開発ができ、高品質なサービスをリリースできます。開発途中でエンドユーザーに関わることが少ない。

一方で、長期のプロジェクトにも関わらず仕様変更もできず、コストもかかります。

 

今後に向けて

WEBエンジニアてどこからどこまでする人なんだろう?

 

理解が深まると、他にも気になるところが出てくる!

新しくやりたいことも出てきました!

 

でもとりあえずはHTML/CSSの勉強に移ります。