uiuifree.com

- サイト制作のノウハウと最適化を目指して-

2020.8.31PHPプロジェクトチームに共有したい前提条件

PHPプロジェクトチームに共有したい前提条件

PHPのプロジェクトチームに参加したメンバーに最低限知ってて欲しい技術まとめ、デザインパターン / CICD / VCS / RESTful API / テスト / ミドルウェア / デザインツール / ネットワーク周りと非常に広くまとめました。

デザインパターン(設計思想)

モダンなWebアプリケーションとしてあるべき姿を12のベストプラクティス

https://12factor.net/ja/
https://qiita.com/supreme0110/items/17c58c660137e23ef713

  • セットアップ自動化のために 宣言的な フォーマットを使い、プロジェクトに新しく加わった開発者が要する時間とコストを最小化する。
  • 下層のOSへの 依存関係を明確化 し、実行環境間での 移植性を最大化 する。
  • モダンな クラウドプラットフォーム 上への デプロイ に適しており、サーバー管理やシステム管理を不要なものにする。
  • 開発環境と本番環境の 差異を最小限 にし、アジリティを最大化する 継続的デプロイ を可能にする。
  • ツール、アーキテクチャ、開発プラクティスを大幅に変更することなく スケールアップ できる。

ドメイン駆動設計(DDD)

https://qiita.com/little_hand_s/items/721afcbc555444663247 https://qiita.com/mejileben/items/302a9f502ca0801b1efb

Dependency Injection(DI)

https://qiita.com/t_kiyama/items/fa09d1a6ec88a8e2dd8a

実装クリーンアーキテクチャ

https://nrslib.com/clean-architecture/ https://qiita.com/nrslib/items/a5f902c4defc83bd46b8

CI/CD

継続的インテグレーション/継続的デリバリー/継続的デプロイメント https://www.redhat.com/ja/topics/devops/what-is-ci-cd

Docker

コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのソフトウェア
仮想化を用いたOSレベルの仮想化によりアプリケーションを開発・実行環境から隔離し、アプリケーションの素早い提供を可能にします
https://knowledge.sakura.ad.jp/13265/

ECS

AWSのサービスで正式名称は「Amazon Elastic Container Service」
Dockerコンテナの実行・停止を簡単に行える拡張性とパフォーマンスに優れた管理サービス
https://aws.amazon.com/jp/ecs/

CircleCI

性能、柔軟性、制御性を兼ね備えたCI ツール
ビルド、テスト、デプロイといったジョブの実行方法を定義して、オーケストレーションを行うことで、複数のサポート対象の構成を組み合わせた開発プロセスを完全に制御できます
https://circleci.com/ja/

VCS(Version Control System)

git

プログラムソースなどの変更履歴を管理する分散型のバージョン管理ツール
https://git-scm.com/
https://git-scm.com/book/ja/v2

GitHub

GitHubはクラウド上でGitを用いたバージョン管理をすることを可能にしたWEBサービス https://github.com/

PHPコーディングルール

PSR-12

PSR-12はPSR-2のPHP7対応版、現在PSR-2は非推奨となっています。

良いコードを書くために

リーダブルコード――より良いコードを書くためのシンプルで実践的なテクニック

RESTful API

RESTful APIとは何なのか

https://qiita.com/NagaokaKenichi/items/0647c30ef596cedf4bf2

REST API を設計

https://wp.tech-style.info/archives/683 https://developer.github.com/v3/

IDE(Integrated Development Environment / 統合開発環境)

IDEとは「統合開発環境」の略でソースコードの編集はもちろん、コンパイル・デバッグ・テストケースの実行など開発に必要な機能全てをカスタマイズ無しで提供してくれる全部入りパッケージ

PhpStorm

PHP開発なら他の選択肢はありません、IDEはPhpStormを選びましょう。
https://www.jetbrains.com/ja-jp/phpstorm/

テスト実行

PHPUnit

PHPプログラミング言語用のユニットテストフレームワーク
https://qiita.com/__init__/items/a4c314c330b87fa03ba1

PHP_CodeSniffer

PHP JavaScript CSSファイルをトークン化し定義された一連のコーディングルール違反を検出する

https://github.com/squizlabs/PHP_CodeSniffer

ミドルウェア

Apache / Nginx

WEBサーバ 大量接続に強いNginx、多機能で高品質なApache https://www.kagoya.jp/howto/rentalserver/nginx/

MySQL

データ保持に必須のデータベース https://www.kagoya.jp/howto/webhomepage/mysql/

Redis

キャッシュサーバ、重いクエリの結果などを保存しサイト高速化に役立ちます。 https://qiita.com/keinko/items/60c844bcf329bd3f4af8

SendGrid

メール配信サービス
https://sendgrid.kke.co.jp/about/

デザインツール

デザインツールを使いこなす必要ありませんが、何がどのように使われてるかは知っておきましょう

Photoshop

Adobeの世界最高峰の画像編集ソフトウェア、バナー作成やサイト素材に必須
https://www.adobe.com/jp/products/photoshop.html

Figma

ベクターグラフィックエディターおよびプロトタイピングツール、WEB上で全て完結
https://www.figma.com/design/

AdobeXD

Adobeのプロトタイピングツール
https://www.adobe.com/jp/products/xd.html

Sketch

ベクターグラフィックエディター
https://www.sketch.com/

アプリケーションエンジニアが知っておいて欲しいネットワークの基礎知識

アプリケーションとポート番号(OSI参照モデル)

https://wa3.i-3-i.info/word1783.html

ドメイン

https://www.kagoya.jp/howto/webhomepage/01/

DNS(Domain Name System)

https://www.nic.ad.jp/ja/newsletter/No22/080.html

IPとサブネット

https://www.infraexpert.com/study/ip6.html

プライベートIPとパブリックIP

https://wa3.i-3-i.info/diff120ipaddress.html

ロードバランサー

https://www.kagoya.jp/howto/network/loadvalancer/

VPN(Virtual Private Network)

https://qiita.com/T-Yam/items/b05bd1cdaa8a9f2015b1

ポートフォワーディング

https://qiita.com/Ayaka14/items/449e2236af4b8c2beb81

nat

https://www.infraexpert.com/study/ip10.html

NFS(Network File System)

https://baremetal.jp/blog/2018/04/17/541/