AWSを利用してWebページを作ってみよう

#目次
[1.はじめに](#1はじめに)<br>[2.全体スケジュール](#2全体スケジュール)<br>[3.AWS全体学習](#3aws全体学習)<br>[4.構成図](#4構成図)<br>[5.インフラチーム学習内容-Part1](#5インフラチーム学習内容-part1)<br>[6.インフラチーム学習内容-Part2](#6インフラチーム学習内容-part2)<br>[7.フロントチーム学習内容-Part1](#7フロントチーム学習内容-part1)<br>[8.フロントチーム学習内容-Part2](#8フロントチーム学習内容-part2)<br>[9.完成したサイト](#9完成したサイト)<br>[10.まとめ](#10まとめ)<br>

#1.はじめに
株式会社エニプラでは、社内のチームごとにテーマを決め、<br>毎月行われるチーム会でテーマに沿った活動を行っています。<br>チーム会で行った内容は、年末に「エニプラアワード」という場で<br>全社員や来期の新卒に向けて発表を行っています。<br><br>今年度我々のチームでは「AWS学習&Webページ作成」をテーマに活動してきました。<br>テーマを検討、決定した背景として以下の4点あります。<br>
1．AWSに関する資格取得を目指す人が増えてきたこと
2．AWSというサービス自体は聞いたことがあるが、具体的なイメージが湧かない
3．Web・HTMLについて学習してみたい
4．取り組んだ成果を発表する上で実際に見られるものを作りたい<br>
上記の4点をまとめた結果、**「AWSを利用してWebページを作ってみよう」**ということになりました。

#2.全体スケジュール
約半年のチーム会活動全体を通して<br>図のようなスケジュールでエニプラアワードに向けて取り組みました。
<img width="400" alt="全体スケジュール" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681098/d0ed01ae-5f0f-d0b4-b0ff-d5f3220d1c8b.png">
まず、5-7月の期間でチーム全体でAWSそのものについての座学や、<br>Webページ作成に必要なインフラ・フロントの基礎知識を学習しました。<br>8月以降は自分の興味がある分野を選び、インフラチームとフロントチームに分かれ、<br>Webサーバ構築やWebページのコーディングに向けて、座学と実作業をそれぞれチームにて実施しました。
<img width="300" alt="チーム全体" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681098/e891a129-2750-d98f-c1cb-e3818bac4f28.png">
#3.AWS全体学習
次に、実際にどのような内容の座学や実作業を行っていたのかについて紹介します。<br>まず、各チームに分かれる前にAWSについての学習を行いました。<br>下記にある画像は、**『AWSome Day』**と呼ばれる公式オンラインセミナーです。<br>セミナーの内容をベースに、AWSのビジネスモデル(従量課金制等)であったり、<br>システムを構築するうえでのオンプレとパブリッククラウドの考え方の違いや、<br>今回触ることになるAWS上の主要なリソースについて学習しました。
<img width="350" alt="AWS AWSome Day" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681098/cf15c79d-dc7d-ce03-df79-8a9f8c4f3996.png">
実際に皆が使えるようにAWS上にユーザーを作成していたので、<br>ログインしてAWSのWebコンソールを見てみるといったことも併せて行いました。
###AWSome Dayとは
**『AWSome Day』**は定期的に実施されている公式オンラインセミナーです。<br>内容としては、AWS入門者向けにAWSの概要や基礎知識について解説するもので、<br>社内で実際に参加した人からは非常に解りやすい内容であったという感想が挙がっています。<br>**これからクラウドを学ぶ人には、オススメです。**<br>

* セミナー開催情報
：[AWSome Day](https://aws.amazon.com/jp/about-aws/events/awsomeday/)

#4.構成図
実際に作成したAWSの構成図がこちらになります。<br>要件として、無料枠の範囲内、つまり、お金がかからない範囲でやること、<br>Webサーバは1台で、Webページに掲載する画像は**S3**と呼ばれる**AWSのストレージサービス**に<br>配置してサーバから参照させるといった構成です。
<img width="500" alt="AWSの構成図" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681098/66f7f3b3-65b0-ac30-0f84-9a72b70b59bf.png">
#5.インフラチーム学習内容-Part1
ここからはインフラチーム・フロントチームが、それぞれ行った学習・実作業について<br>説明させていただきます。<br>まず初めに、インフラチームは**『Webサーバを構築する』**というのが目標です。<br>実際に、構築業務経験があるメンバーが少ないため、<br>なるべく実際の構築業務に近い流れで行うことをコンセプトに、下記の要件を提示しました。<br>
###要件の確認
 1. ミドルウェアとして**Apache**を利用する
 * 通信に使用するポートは**80**
 * ドキュメントルートは**/var/www/html/＜作成したフォルダ名＞**にする
 * インスタンス起動時にApacheが**自動実行**するようにする  

これらを踏まえて、実際にWebサーバとして動作させるためには、<br>どういった作業が必要になるのかを洗い出しました。 <br>メンバー間で協力しながら**『Apacheとは何か』**というところから、<br>**インストール方法や設定方法**、**コンフィグの変更箇所**などを洗い出しました。

<img width="250" alt="Apache" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681098/60cf4c9d-261a-ed7b-18d6-1119d6ea6bf1.png">

####Tips：[Apache](https://ja.wikipedia.org/wiki/Apache_HTTP_Server)とは<br>
**Webサーバ用ミドルウェアの一つ。**<br>オープンソースソフトウェアとして公開され、無償で利用できる。
#6.インフラチーム学習内容-Part2
要件の確認と作業の整理をしたのち、構築時に必要になるコマンドを調査し簡単な手順書を用意しました。<br>今回、OSは**[Amazon Linux2](https://aws.amazon.com/jp/amazon-linux-2/)**と呼ばれるAWS [EC2インスタンス](https://aws.amazon.com/jp/ec2/instance-types/)上で利用できる**Linuxベース**のOSです。<br>構築の流れとしては、デフォルトパッケージのアップデートから始まり、<br>Apacheのインストールと設定変更、それを反映するためのサービス再起動です。<br>手順として整理したコマンドは、下記記述の通りです。
###コマンド整理
```
 1. パッケージアップデート
# yum update
 2．Apacheのインストール
# yum install httpd
 3．ポートが80となっていることを確認する
# cat /etc/httpd/conf/httpd.conf | grep Listen
 4．ドキュメントルートを"/var/www/html/＜作成したフォルダ名＞"配下に作成
# vi /etc/httpd/conf/httpd.conf
 5．サービス再起動
# systemctl restart httpd
# systemctl status httpd
 6．Apacheが自動起動するよう設定
# systemctl enable httpd.service
```

###EC2インスタンスに接続して実際に構築
 1. WebブラウザからグローバルIPにアクセスし、サンプルページが表示されることを確認

最終的にWebブラウザからAWS上のサーバにアクセスし、<br>デフォルトのサンプルページが表示されることを確認する。<br>
以上がインフラチームで行った内容となります。
#7.フロントチーム学習内容-Part1
続いて、フロントチームの学習内容を紹介いたします。<br>Webページを作成するために、まずWebページが何の言語を使用して<br>作成されているかを調査しました。<br>調査の結果、主に**HTML,CSS,JavaScript**が使用されていることが分かりました。
<img width="300" alt="HTML,CSS,JavaScript" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681098/67197da0-821f-d38b-80cf-55cdec639a82.png">
###HTMLとは
[HTML](https://ja.wikipedia.org/wiki/HyperText_Markup_Language)は**ウェブページを作成するために作られた言語**です。<br>
HTMLの学習内容としては、主に各HTMLタグの役割について学習しました。<br>HTMLタグはブラウザがWebページの構造を理解するために使用されています。<br>各ブラウザ毎に、表示に差が出るSelectbox等のHTMLタグを使用して<br>HTMLに従ってブラウザがWebページを理解し、表示していることを確認しました。
###CSSとは
[CSS](https://ja.wikipedia.org/wiki/Cascading_Style_Sheets)は**ウェブページのスタイルを指定するための言語**です。<br>HTMLと併せて文字や枠の色を変更したり、図形を作成したりと、装飾をするために使用されています。<br>CSSの学習内容としては、各プロパティの意味や使い方を学習しました。
###JavaScriptとは
[JavaScript](https://ja.wikipedia.org/wiki/JavaScript)は**プログラミング言語の一つで、Webページに動的な表現を付けるため**に使用されています。<br>今回は時間の都合上使用することができなかったのですが、次の機会があれば使いたい要素の一つです。<br>調査後、サンプルページを参考にレイアウトについて学習を進めました。<br>これはヘッダーやメインコンテンツ等、何処にどの要素があるかを理解しておくことが、<br>HTMLを書いていく上で非常に重要なためです。
#8.フロントチーム学習内容-Part2
レイアウトの確認が終わった後、まずは**VisualStudioCode**の使い方を学びました。<br>フロントチームでは、VScodeを触れたことがあるメンバーがあまりいなかったためです。<br>VScodeは予測変換や拡張機能が優秀なため、便利な機能をできるだけ使用する方向で進めました。
<img width="300" alt="VisualStudioCode" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681098/1f4e6e18-0eb4-65cc-83b3-76380690db71.png">
その後、実際にコーディングを行いました。<br>コーディング中は記載したHTML要素の配置やCSSの適用状況など、適宜ブラウザで確認しつつ行いました。<br>想定外の画面になっている箇所は、ブラウザのデベロッパーツール等で確認と修正を行い、<br>Webサーバに乗せるソースを完成させました。
<img width="600" alt="コーディング" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681098/5b866b8b-00dc-c745-d04d-921f058d7f6c.png">
以上がフロントチームで行った内容となります。
#9.完成したサイト
インフラチームが作成したWebサーバに、フロントチームが作成したソースを配置し、<br>実際に完成したサイトがこちらになります。
<img width="350" alt="完成したサイト" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681098/e11c3c11-3576-0b1a-c38a-77edafd8b457.png">
※上記画像は、スマートフォンの操作画面となります。<br>
実際のチーム会での活動風景や、実施内容が掲載されています。<br>スマートフォンで表示させた際にも自動的にリサイズされるような作りになっています。
#10.まとめ
2020年エニプラアワードテーマは『AWS学習&Webページ作成』でした。<br>AWSオンラインカンファレンスの内容をベースにチーム全体でAWS基礎を学習しました。<br>インフラチームでWebサーバを、フロントチームでWebページのソースを作成しました。<br>
####半年間の活動を通して
* AWSへの理解が深まり、個人でも触ってみようと思った。
* HTMLとCSSでWebページが表示されていることが理解できた。
<br>
というご意見もありました。<br>
自分もAWSのセミナーは興味あるものなので、機会がある際に参加してみたいです。<br><br>以上で、ご紹介を終わります。ありがとうございました。