YYPHP#32「PHP7.2変更点、Laravelのスター数がRailsを超える、スキル上達法、最近の便利ツール」

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

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

[YYPHP#32]: https://yyphp.connpass.com/event/82124/
[YYPHP]: https://yyphp.connpass.com/

## PHP7.2
* クリティカルな何かがあったのか？
* Laravel 5.5からは7系必須
* `object`型宣言
* [PHP: 下位互換性のない変更点 - Manual](http://php.net/manual/ja/migration72.incompatible.php)
* [PHP 7.2 Provides Modest Performance Boost Over PHP 7.1 - Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=PHP-7.2-Final-Benchmark)

## 世界的なウェブの動き

* Laravelのstar数がRoRのものより多くなった
    * rails/rails 39,035
    * Laravel 41,355
    * node.js 46,500
    * vue 87,600
    * react/react 91,000
    * bootsrap 123,000
* [Hanami | The web, with simplicity](https://hanamirb.org/)
* Scalaは？
    * https://www.quora.com/Is-Scala-dead
* server side Swift
* PWA(progressive web apps)
* 2018年 = TypeScript
    * [vuejs/vue-class-component: ES / TypeScript decorator for class-style Vue components.](https://github.com/vuejs/vue-class-component)

## スキル上げるために自分なりにやっていることは何？

* 人が書いているコードを見て、真似る
* 身近にいるできる人に聞きまくる
    * 検索しても何がトレンドなのかいいのか分からないから
* 情報をつねにおかっける(日本語じゃないやつ)
    * 日本語の情報ソースに頼らない
        * Medium (ブログ)
        * https://www.gitlogs.com/
        * https://www.getrevue.co/profile/vuenewsletter
    * 海外のイケてるテック系のSaaSのブログ
        * CodeShip: https://blog.codeship.com/
        * AirBnB
        * GitLab: https://about.gitlab.com/blog/
* すぐ試す
* 時間がある人はLinuxを自分で作ってみる
    * Linux from scratch
* 書籍
* 技術に対する「愛」
* わからないことは速攻ググる
    * 同僚が話していて、知らない言葉が出てきた時も

## レガシーシステムをフレームワークに載せ替える手間
* 保守フェーズ
* 何年つかうシステムなのか決めて、載せ替えたほうが得するのか計算する
* 独自フレームワーク
    * 採用が決まらないというリスクはあるかも
* ピュアPHPからフレームワークに載せかるのは一般的に簡単じゃない

## レガシーシステムでPhpStormでジャンプが効かない
* 「IDEに頼るな」硬派の意見
* ctags (emacsやvimでも使える)
* PhpStormのアノテーションを使う

```php
function hoge($object) {
   /** @var Foo $object */
   $object->method();
}
```

* [レガシーコード改善ガイド | マイケル・C・フェザーズ, 平澤章, 越智典子, 稲葉信之, 田村友彦, 小堀真義, ウルシステムズ株式会社 | プログラミング | Kindleストア | Amazon](https://www.amazon.co.jp/dp/B01AN97W08/ref=cm_sw_r_cp_ep_dp_5.JSAbEZMXEPP)

## API連携のタイムアウト実装
* APIに投げてから12時間以上処理が終わらないときの実装方法
* file_get_contents
    * [APIなどにfile_get_contents()を使うのはオススメしない理由と代替案 - Qiita](https://qiita.com/shinkuFencer/items/d7546c8cbf3bbe86dab8)

```
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
```

* https://github.com/suin/php-qiita/blob/master/Source/Qiita/HTTP/Request.php#L94
* [guzzle/guzzle: Guzzle, an extensible PHP HTTP client](https://github.com/guzzle/guzzle)

## 最近の便利ツール(ライブラリ、フレームワーク)
* [graphcool/prisma: ⚡️ Prisma turns your database into a realtime GraphQL API](https://github.com/graphcool/prisma)
    * RDBのデータをGraphQLで公開してくれる
* GraphQL
    * RESTいらないんじゃない？
* Gatsby: https://github.com/gatsbyjs/gatsby
    * 静的サイトジェネレーター。Hugo的なやつだけどReact
* Heroku
* PRPLパターン

> PRPL は、Progressive Web App（PWA）を構築および配信するためのパターンで、アプリの配信と起動時のパフォーマンスに重点を置いています。 PRPL は次の言葉を表しています。
> 
> **Push**: 最初の URL ルートに不可欠なリソースを Push（プッシュ）する。  
> **Render**: 最初のルートを Render（レンダリング）する。  
> **Pre-cache**: 残りのルートを Pre-cache（事前キャッシュ）する。  
> **Lazy-load**: オンデマンドで残りのルートを Lazy-load（遅延読み込み）する。

* neovim
* [Advanced REST Client](https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo?hl=ja)
    * [Insomnia REST Client](https://insomnia.rest/)
    * Macの人は[Paw – The most advanced API tool for Mac](https://paw.cloud/)がオススメ
    * [Postman | API Development Environment](https://www.getpostman.com/)
* [matryer/silk: Markdown based document-driven RESTful API testing.](https://github.com/matryer/silk)
* [Scripting Languages I: Node.js, Python, PHP, Ruby - Hyperpolyglot](http://hyperpolyglot.org/scripting)
* [OpenVAS - OpenVAS - Open Vulnerability Assessment System](http://www.openvas.org/)
    * Webアプリの脆弱性スキャナ
* [coreos/clair: Vulnerability Static Analysis for Containers](https://github.com/coreos/clair)
    * Dockerコンテナの脆弱性チェック
* [Flutter - Beautiful native apps in record time](https://flutter.io/)

## TypeScript
## NeoVim
[rhysd/NyaoVim: Web-enhanced Extensible Neovim Frontend](https://github.com/rhysd/NyaoVim)
[atom/xray: An experimental next-generation Electron-based text editor](https://github.com/atom/xray)
## TOMLについて(YAMLのような言語)
XML、JSON、YAML、TOML何が良いのか


## YYPHPは毎週やってます

PHPについてワイワイ話したい方は、[YYPHPのイベント情報](https://yyphp.connpass.com/)をチェックしてみて下さい。

以上、YYPHPのレポートでした。次回もワイワイやっていきたいと思います！ では、また来週！