YYPHP#62「PHP5の終了について、PHP7を現場でみんなどのくらいやってる？、PHP業界のこと、VagrantでLaravel環境を作ったその先、管理画面をどうやってつくってる？、フレームワークのコードリーディング、オブジェクト指向とかMVCがうまく扱えない」

これは2018年11月23日に開催したPHPerイベント[YYPHP#62]のイベントレポートです。

[YYPHP]は一言で「PHPerの部室」です。PHPについて、雑に、ゆるく、ワイワイ話し合う集いです。毎回お題を決めずに雑談を出発点にいろいろなことを突発的にやります。集まった人でコードリーディングをすることもあれば、一緒に開発ツールを触ってみたり、フレームワークについての情報交換をすることもあります。開催はほぼ**毎週**、高田馬場にて。

[YYPHP#62]: https://yyphp.connpass.com/event/106394/
[YYPHP]: https://yyphp.connpass.com/
YouTubeでの配信映像はこちら-> [#YYPHP #62【PHPの情報交換・ワイワイ話そう・仲間作り・ゆるめ・にぎやかめ】](https://youtu.be/xGrbu4etuQc)

![](https://qiita-image-store.s3.amazonaws.com/0/5354/6d9ce33d-f7df-be3e-66c2-9fd4078524f5.jpeg)

## 参加者

* PHP歴
    * 1年未満: 7名
    * 2年: 1名
    * 3年: 1名
    * 10年以上: 6名

## 雑談テーマ

### PHP5の終了について (reoring)

[Supported Versions](https://secure.php.net/supported-versions.php)

![](https://i.imgur.com/Qxtqya6.png)

* 2018/12月末で終了
* 世界で
    * 80%がPHP
    * 5系では61%
* RedHat/CentOSは古いバージョンでもパッチを出してくれるはず
    * サーバを移動できる人なら、バージョンアップできるのでは？
        * バージョンを上げるよりサーバを上げるほうが楽
* PHP5系からPHP7系に書き換えるサービスが出てきそう
* PHP5とPHP7でそんなに違う？
    * 5.2と5.3はかなり違う
    * [PHP: PHP 7.0.x で推奨されなくなる機能 - Manual](http://php.net/manual/ja/migration70.deprecated.php)
* セキュリティサポート終了時期
    * 7.0→2019年1月
    * 7.1→？？？
* ちゃんとアップデートできるようにしておきたいですね

### PHP7を現場でみんなどのくらいやってる？ (かみじょうさん(climbFrog))

* PHP7使っている
    * 6名
* それ以外は？
    * Javaです
    * 電話です
    * 5.3: 1名
* 最初から7系でやっているのか、アップデートして7系にしたのか？
    * 最初から7.1だった
    * 5.3であげられずにいるプロダクトも持ってる
    * はじめから7.1で作った
* アップデートしたことある人いますか？
* 5.3から7にアップデートするアドバイスください
    * PHP公式ドキュメントの参考にマイグレーションする
    * テストでチェックしながらあげていく
        * テストがないとつらいですが
* アップデートに対応できる人が少ない
    * アップデートにとりかかると他の開発がとまっちゃう
* バージョンアップを諦めてWAFで防いだほうがいいかも
    * バージョンアップするコストとWAFを買うのどっちが安いか試算したほうがいい
    * WAF入れるなら何百万で済むし、オープンソースのもある
* ローカル環境で動かしてみて、どの程度対応が必要か見てみる
    * Warningとかあんまり重大じゃないエラーとかならほっとくことも
* 書き直しは変なことやってなければそこまで大変じゃないけど、7系の環境用意して一通りテストしなきゃいけないのでそっちが大変だったみたいです。
    
### PHP業界のことを知りたい (たかはしさん(kt_engineer))

* 今、SESで働いている(Java)
    * PHPのベンチャーにSESしたとき2ヶ月くらいだったが楽しかった
* PHPのベンチャーに転職したいと考えてる
* PHPをどっから手をつければいいのか
    * 今JavaができるのはPHPでプログラミングするときも役立つ
        * PHPもオブジェクト指向で書くことが多いが、デザパタとかJava由来のものが多いので
* 最初なにやってますか？
    * PaizaでPHPを勉強した
        * [環境構築不要！初心者でも楽しく学習できるプログラミング入門サービス【paizaラーニング】](https://paiza.jp/works)
        * お題があって、それを何分いないにやりなさいという感じ
        * ゲーム感覚で覚えられる
    * Udemyという動画コースで学んだ
        * ちょいちょいセールやってて、1コース1000円くらいで買えた
        * [PHP初級プログラミング講座　初級　その１ | Udemy](https://www.udemy.com/php-gtoa/)
        * [PHP初級プログラミング講座　初級 その2 | Udemy](https://www.udemy.com/php-2-kh/)
    * 最近は動画で学ぶのが当たり前なの？
        * 最近は多い気がする
        * 初心者は本を読んでも分からないときがあるし、
        * ハンズオン形式だから分かりやすいのでは？
    * 動画を見ながら一時停止してみる
    * 1.5倍速再生があるのがおすすめ
        * 繰り返し聞きたいところだけ、普通に再生してよくきく
* CentOSで環境を作っている
    * yum install php httpd mariadb
* [#YYPHP #46 #動画でわかるDocker Laravelハンズオン - YouTube](https://www.youtube.com/watch?v=mLjnJT8I_z8&feature=youtu.be)
* [動画でわかるDocker - docker](https://scrapbox.io/docker/%E5%8B%95%E7%94%BB%E3%81%A7%E3%82%8F%E3%81%8B%E3%82%8BDocker)
* [【たった1時間半でできる】YouTube動画でDocker基礎 + Laravel開発環境ハンズオン #YYPHP｜湊川あい@わかばちゃんと学ぶ本 発売中｜note](https://note.mu/llminatoll/n/nfd4ea73d58a1)
* 最初はスクリプトだけでPHPの動くコードを書いてみる
    * ウェブサーバー、DBなしで
    * nouphetさんのおすすめの勉強法
    * 分けて勉強するのは大事
* お題
    * 九九の表
    * 再帰関数
        * [PHP Quiz - llminatoll](https://scrapbox.io/llminatoll/PHP_Quiz)
    * [YYPHP#43「フレームワークを使うと何ができるの？CakePHPでカレントのメニューの色を変える、レイヤードアーキテクチャとValue Object、どうやってPHPでプログラムを作ってる？PHPUnit、大規模開発、yyphp-quiz No.2: 月間カレンダーの表をつくろう、yyphp-quiz No.3: 多次元配列から要素」 - Qiita](https://qiita.com/nouphet/items/886bf5d42a5d13be1b2e#yyphp-quiz-no2-%E6%9C%88%E9%96%93%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%81%AE%E8%A1%A8%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86)
* エディタは何がおすすめ？
    * PhpStormが一択
        * シンタクスチェックをしてくれるので、書いてるときに問題がわかる
        * Javaだとコンパル時にわかるが、PHPは実行してみないと分からない
        * 高いですよね？
            * 買う価値は十分にある
            * 30日間を無料
        * 補完
        * リファクターも楽
    * 他のIDEに比べて優れてる点は
        * NetBeans、Eclipse等のプラグインだと、PhpStormほど深い解析が行えない
    * SublimeよりはVS Codeのほうがおすすめ
        * 無料でPHPをさくっと書きたいならVS Code

###  VagrantでLaravel環境を作ったが、その先何をしたらいいか分からないので、聞きたい (むらおさん(cellotape))

* [絶対に挫折させないアプリ開発　はじめてのLaravel - plumsa - BOOTH](https://booth.pm/ja/items/1048008)
    * 1,200円(ダウンロード版QRコードつき)
        * ダウンロード版は1,000円
    * タスクリストを3回作るので、深く理解できる。
        1. 素のPHPで作る
        2. Laravelで簡単に作る
        3. Laravelでちゃんと作る
    * 本を読んだ後に深めていくTipsも9章に書いてある

### 管理画面をどうやってつくってる？ (しもむらさん(toshikish))

* ジェネレータータイプのものを使ったけど、カスタムするのが大変だった。
    * Laravelで。
    * laravel
* Laravel使ってる人: 3名
* [z-song/laravel-admin: Build a full-featured administrative interface in ten minutes](https://github.com/z-song/laravel-admin)
    * [laravel-adminで管理画面を速攻で構築する。 - Qiita](https://qiita.com/pikonori/items/a04066010e7380b3ee38)
* [Voyager - The Missing Laravel Admin](https://laravelvoyager.com/)
    * [Welcome to Laravel Voyager - Qiita](https://qiita.com/takky/items/1bc7349da185cc6b04d2)
* [InfyOm Laravel Generator : Laravel Scaffold, CRUD, API Generator](http://labs.infyom.com/laravelgenerator/)
    * Scaffoldしてくれるだけなのか？
* [Larapack.io](https://larapack.io/)
    * Laravel Voyagerのプラグインがたくさんあるところ
* [larapack/awesome-voyager: Curated list of Laravel Voyager ressources](https://github.com/larapack/awesome-voyager)
    * Laravel Voyager関連の便利ツールのリンク集
* [Laravel Nova - Beautifully-designed administration panel for Laravel](https://nova.laravel.com/)
* [Viron · Automated admin tool](https://cam-inc.github.io/viron-doc/)
    * API作ったら
    * Riotなので、ちょっと「うーん」となっちゃう
        * ReactとかVueと比べて、ユーザが少ない
        * エコシステムが小さいと

### フレームワークのコードリーディングのうまいやり方ってあるの？ (すずきさん(yamotuki))

* DBのキャッシュとセッションのキャッシュをわけたい。
    * キャッシュはStores。Redis、Memcache
    * セッションはDriversを直接読んでる
* クラス図やシーケンス図をざっくりかきながら追っかけていく
    * 自分で作るか
    * PhpStormに作らせるか
* Exceptionを出してスタックトレースを見てる
* [PHP: debug_print_backtrace - Manual](http://php.net/manual/ja/function.debug-print-backtrace.php)
* デバッガーでおいかける
    * MacにPHPを入れるのが一番早い
    * ステップ実行
        * xdebug
            * pecl install xdebug
        * phpdbg
            * [phpdbgを使ったステップ実行まとめ – Simple IT Life](https://simple-it-life.com/2016/03/14/phpdbg/)

### オブジェクト指向とかMVCがうまく扱えない (おぬきさん(yokenzan))

* 仕様変更が入ったときに逆に手間が増えている気がして、いい本とかアドバイスを聞きたい。
* 一人で書いてたときは悩んでなかったが、仕事で書いていて、どこにどういうのを書いたらいいか悩むようになった。
* デザインパターンを無理やり当てはめちゃったり。
* 先を見越して実装する必要はない
    * いまある仕様で、最小の実装でやるのがいい
        * 最初から何にでも対応できるようにするのは不可能なので
    * 要求変更が出てきたときに、リファクタリングできるようにする
* N+1問題
    * LaravelのORMを使ったほうが楽
    * Reflectionを使ってるから補完が効かない
* プロダクトを作るときは、極力コードを書かない方針をとったほうがいい
    * 自分で作ると自分でテスト保守しないといけない
    * vs Laravelチームがテスト保守してくれる
* 設計を勉強したほうがいいか
* interfaceの切り方が間違っている可能性がある
    * interfaceに持たせるメソッドは最大1つにしている @suin
* SOLIDを勉強してみるといいかも
* ペチオブ
    * 林さんが先生でオブジェクト指向を教わる勉強会
        * もともと社内勉強会で、社内のエンジニアの技術力向上のために始めたもの
    * 毎週オブジェクト指向についてやってる
    * [ぺちオブ - connpass](https://phper-oop.connpass.com/)
    * 動画配信はまだやってない

### 開始前の雑談

#### PHP-ML

* [php-ai/php-ml: PHP-ML - Machine Learning library for PHP](https://github.com/php-ai/php-ml)

## 話に出てきた本

* [プログラマのための ディープラーニングのしくみがわかる数学入門 | 増井 敏克 |本 | 通販 | Amazon](https://www.amazon.co.jp/dp/480261179X)