# ShowNote:PHPerのための「Laravel/PHP8/Dockerで開発環境作りを語り合う」TechCafe
## イベント
https://rakus.connpass.com/event/195001/
## Laravel/PHP8/Docker関連のキーワードを主催サイドで集めました。この中から気になるテーマを拾ってワイワイできればと。
## PHP開発環境
- PHP8
- 正式リリースされました!
- https://www.php.net/releases/8.0/en.php
- Mac
- Homebrewは公式リポジトリがすでに対応済み
- ``brew install php@8.0``
- そもそも個人的にあまり母艦にインストールしないので・・・
- Windows
- Microsoft公式サポートではなくなったがWindowsバイナリも有志が開発
- https://windows.php.net/download/
- Zipファイルを展開して好きな所に置きましょう。
- Apacheと連携させるなら「VS16 x64 Thread Safe」を選択
- Linux
- ソースからビルド
- https://www.php.net/downloads
- ビルド方法については下記で詳しく紹介されているので参照されたし
- https://zenn.dev/memory/articles/43e0e2fb0c525a4aa025
- リポジトリから
- CentOS
- 公式リポジトリは未対応だが、EPEL/Remiは対応済み
- https://computingforgeeks.com/how-to-install-php-8-on-centos-linux/
- RedHat?知らん
- Ubuntu
- こちらも公式リポジトリは未対応だが、PPAで対応しているものあり
- https://linuxize.com/post/how-to-install-php-8-on-ubuntu-20-04/
- オールインワン
- XAMPP
- https://www.apachefriends.org/jp/index.html
- Apache + MariaDB + PHP + Perlのオールインワン環境。面倒な人はとりあえずXAMPP入れとけばいいんじゃないでしょうか。
- Mac版、Windows版、Linux版それぞれあります
- 12/4にXAMPPもPHP8に対応版がリリースされました。
- https://www.apachefriends.org/download.html
- 手軽な反面、複数バージョンのPHPやApacheなどを使いにくい、という面もあるが、本格的な開発ならXAMPPよりも他の手段を用いたほうが良いのでは。
- Laragon ※Windowsのみ
- https://laragon.org/
- Windowsの場合は、XAMPPより軽量なLaragonの選択肢もあり。
- 軽量:実行時に必要なメモリは4MB未満
- ポータブル:(VisualStudioのランタイム等のぞき)OSへのインストールが不要
- 異なるバージョンのPHPやApacheを切り替えられる設計
- 最新版リリースは2019年が最後。開発自体は継続しているようだが…?
- 仮想化ぎじゅつ
- [virtualbox](https://ja.wikipedia.org/wiki/VirtualBox)
- 1台のPC(ホストOS)の中に仮想的なPC(ゲストOS)を構築するためのツール
- 例)Windows PC 上に Linux PC を作成
- このLinux PC 上にPHPやMySQLをインストールしてPHPの開発環境を構築していく
- [vmware](https://ja.wikipedia.org/wiki/VMware)
- 仮想環境の管理ツール
- 高可用性実現のための仕組みを提供
- サーバ停止時に他のサーバにVMを移動させ再起動
- ダウンタイム無し運用
- ホストOSの負荷状況を考慮したVMの管理
- 事例
- https://pfs.nifcloud.com/vmware/about_vmware.htm
- コンテナ
- Docker導入方法
- https://docs.docker.com/engine/install/
- docker-composeもお忘れなく
- https://docs.docker.com/compose/install/
- Docker PHP
- https://hub.docker.com/_/php
- ``php:<version>-cli``
- コマンドライン実行用のイメージ
- ``php:<version>-apache``
- Apache+mod_phpがセットになったイメージ
- ``php:<version>-fpm``
- Nginxと組み合わせるならこっち
- ``php:<version>-alpine``
- 軽量ベースイメージAlpineで動作。イメージを軽く保ちたいならこれを使えばいいがカスタマイズしようと思うと大変。
- Windows勢
- WSL2
- 基本的にMicrosoftの公式手順通りに進めばよろし
- https://docs.microsoft.com/ja-jp/windows/wsl/install-win10
- かつてはVirtualBoxやVMWareという選択肢しかなく、VM用に多くのマシンリソースを割く必要があった
- WSL2では割り当てるリソースをWindowsが調整してくれるので必要なリソースしか割かれない
- Linux互換性100%ということもあり、Linux向けに開発されているツール・ライブラリも問題なく動作
- VSCode+RemoteDevelopment(Microsoft公式のプラグイン)との親和性も高い
- MicrosoftがPHPについてWindows向けのサポートをやめたが、WSL2あるから大丈夫ということか?
- プロダクション環境がLinuxで開発がWindowsなら問題なさそうだが、IISなど、MS製品でプロダクション運用してる場合はどうなるのか…
- WSL2 + Docker
- 宗教上の理由や、Office製品などの兼ね合いでWindowsで開発をする必要があるならおすすめしたい構成
## Laravel
- ローカルマシン系
- Composerで自分でいれる
- 公式の導入方法
- https://readouble.com/laravel/8.x/ja/installation.html
- 起動は `php artisan serve`
- DBは sqlite でOK
- [Laravel Jetstream](https://jetstream.laravel.com/1.x/introduction.html) も利用可能
- [Valet](https://readouble.com/laravel/8.x/ja/valet.html)
- こちらも Laravel 公式の開発環境
- Mac でのみサポートされているが、Homestead よりも軽量
- PHP と MySQL のみが利用される
- 完全な仮想環境が不要な場合はよい選択肢になりえる
- Homebrew を利用
- Valet 環境でのエラーログなどは決まった箇所に配置されるため慣れが必要
- 仮想環境系
- [Homestead](https://readouble.com/laravel/8.x/ja/homestead.html)
- Laravel 公式の開発環境
- Vagrant が仮想環境(VirtualBox)の管理と事前設定をすべてやってくれる
- Windows, Mac, Linux いずれの環境でも利用可能
- 実態としては仮想環境上の Ubuntu 上で Laravel の実行環境ができあがる
- 実は PHP8 も対応済み
- docker系
- いずれも `docker` と `docker-compose` が利用できればすぐに構築可能
- [laradock](https://laradock.io/)
- いわゆる全部入りのLaravel Docker環境
- 設定ファイルを修正して独自の環境が作成可能
- 例えば、PHP7 + PostgreSQL + Nginx みたいな自分好みの環境が作れる
- プロジェクトのディレクトリ配置されている箇所に新しくLaradocを配置するだけでよいのでプロジェクトをDockerコンテナ上にマウントさせるだけなら比較的すぐに始められる
- [vessel](https://vessel.shippingdocker.com/)
- こちらも同じくLaravel Docker環境
- Laradoc と違って最低限の機能のみがデフォルトで設定されている
- PHP 7.4, MySQL 5.7, Redis(最新), NodeJS(最新)、NPM、Yarn、Gulp
- カスタマイズしたい場合は `docker-compose.yml` を修正
- 自分のLaravelプロジェクト内にVesselの設定ファイルやDockerファイルが生成されるので、そういうのが嫌な人はLaradockでも良いかも
- [docker-laravel](https://github.com/ucan-lab/docker-laravel)
- 本日のゲストのお一人、ucanさんのOSS
- https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4
- [Laravel Sail](https://laravel.com/docs/8.x/sail)
- どうやら4日前にリリースされた模様 現在v0.05(v0.01が5日前)
- vesselの系統を組む、軽量ツールの模様
- ついさっき知ったのであんまりためせていません
- おまけ
- 開発環境ではないがPHPサンドボックス
- https://sandbox.onlinephpfunctions.com/
# 参加者からのしつもんコーナー
参加時のアンケートの中からいくつかピックアップしました。今回拾えなかったものも別の機会に拾えればとおもいます!
- PHP8についてMicrosoftでサポートしないという記事があったが、その点も踏まえて今後のPHPについての展望について
- docker セッティングについての選択肢。vesselなど。
- 俺の鉄板の開発環境を聞いてくれ!