###### tags: `職務経歴書`
ポートフォリオ:Mochibe
===
**公開中のサイト**:[Mochibe](https://mochibe.net/)
**ソースコード:**[DropBoxからダウンロード](https://www.dropbox.com/s/77u6tmb5bm0mux7/mochibe-master.zip?dl=1)
※GithubはプライベートリポジトリなためDropBoxにアップロードしています。
**大まかな要件定義に使用したマインドマップ**:[MindMeister | Mochibe構想](https://mm.tt/1491038909?t=2h11V0BCgp)
**最終的なデータベース構造のEER図**:
[](https://gyazo.com/13b9b527b2a1a8e402e58559bc875572)
**構成図**:
[](https://gyazo.com/694669690d93dbbffd8013e74c245ed1)
## 制作目的
今回Webエンジニアとして就職するにあたり、自身に不足している技術を習得するために「Mochibe」を制作しました。
公開している「メイクル」では、限られた時間内で学習と並行して一人で開発し、公開後のメンテナンスの手間も最小限に抑える事に重点を置いていたため、可能な限りクラウドサービスを組み合わせて制作しています。そのため「メイクル」完成時点では一般的なWebサービスの開発技術を習得していませんでした。
## 意識して気をつけていること
時間が経っても学習したことを蓄積して活かせるように、調べたり詰まったりした内容で必要なことは都度ドキュメントにメモとして残すようにしています。
## 学んだこと
事前の学習とMochibeの制作を通じて大まかに以下の内容を学習しました。
### LAMP環境を取り扱うための学習
#### Linux
- OSの成り立ち
- RedHat系のCentOS(今回はこちらを使用)
- Debian系のUbuntu
- 基本的な操作コマンド
- パーミッション操作
- root
- user
- group
- vimでの読み書き
#### Apache
- 設定の変更方法
- httpd.confによるサーバー全体の設定
- .httaccessによる特定ディレクティブの設定
- 追加moduleのインストールと有効化の方法
#### MySQL
- SQL文の学習
- MySQLWorkBench
- EER図の作成
- EER図からテーブルの作成
- 基本的なDB操作
- 基本的なデータ型
- インデックス
#### PHP
- プログラミング言語共通の基本的な内容
- composerを利用したモジュールの追加・管理とautoloaderによる読み込み
- Xdebugを利用したデバッグ
- php.iniによる設定の変更
- セッションとCookie
- ファイル操作
### LAMP開発環境を構築するための学習
#### Docker
開発環境の構築にはDokcerを使用しました、その際にやったことなどは備忘録としてまとめておきQiitaに投稿しました。
[LAMP+CakePHP3開発環境をVSCodeRemote+Dockerで構築① -Docker編-](https://qiita.com/goodkei/items/24143d5fa129890d2a7f)
[LAMP+CakePHP3開発環境をVSCodeRemote+Dockerで構築② -VSCodeRemote編-](https://qiita.com/goodkei/items/7c221ba3bc98811621c2)
### フレームワークの学習
#### CakePHPを選んだ理由
仕事の案件が多いCakePHPとLaravelを身につけておきたいと思いました。
先にCakePHPを選んだ理由は、現在の開発はLaravelが多い傾向で、使いやすさ的にもLaravelが良さそうな評価だったので、先にCakePHPをやっておかないと学習の機会とモチベーションがなくなると思ったからです。
#### CakePHP 3.8
Mochibeの制作を通してアプリケーション開発に必要な一通りの機能を学習しました。
参考にした資料は公式CookBookとインターネット上の情報です。
### セキュリティについての学習
セキュリティに関しては情報漏洩やハッキング等の発生しては困る問題に関する一般的な脆弱性に対して対策を施せるように学習しました。
Mochibeでは以下の点について公開前にチェックし対策しました。
[CakePHP | セキュリティ対策](https://hackmd.io/@goodkei-private/H14gcgMRI)
### Dockerで作った環境をそのまま公開するための学習
- AWSで使うサービスについて検討
- EC2インスタンスにそのままDockerをインストール
- **ECS + ECR + EC2**(コストと難易度・管理の容易さのバランスからこちらを使用)
- ECS + ECR + Fargate
- EKS + ECR + EC2
- EC2インスタンスへSSH接続しての操作
- EC2インスタンス内のDockerコンテナへ入って調査
- RDSでMySQLDBを作成してEC2インスタンスのDockerコンテナから接続
- コンテナ間共通ストレージとしてEFSをEC2インスタンスとDockerコンテナへマウント(最終的に使わなかった)
### HTTPS化
- SSL証明書の取得(今回はCloudflareで発行できる無料のSSL証明書を作成した)
- Apacheサーバーへの証明書のインストール
---
以上