YYPHP#54「PhpStormの法人ライセンスは1台にしか入れられない？、Laravelでブログを作るには？、Chromeのみ対応のシステムをIE11対応させたいが…、みんながDockerをどんなふうに使っているのか開発のしかたなどを聞きたい、PHPはフランス語に弱い？、前前人者が作ったシステムが良くわからない、型とオブジェクト指向がマイブームで再燃しているのはなぜか？、PhpStormのEAPでコレクション型のジェネリクス表記ができるようになったよ、技術書典５の案内」

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

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

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

![](https://qiita-image-store.s3.amazonaws.com/0/889/0051f99f-b555-6064-fcc9-3280e5543a1a.png)

## 参加者13名(うちリモート5名)

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

## PhpStormの法人ライセンスは1台にしか入れられない？

* 法人で買うと1台にしか入れられない？
    * Business and Organization: $199.00/1st year
        * [PhpStorm 価格 - JetBrains 日本公式販売代理店 WillBrains](https://www.willbrains.jp/product/2)
    * 同時起動できないだけで、インストール数に制限はない
    * [見積書・請求書やライセンスについて | JetBrains よくある質問](https://www.willbrains.jp/page/2#license)
* 個人
    * Individual Customers: $89.00/1st year
    * 同時起動数に制限がない

## Laravelでブログを作るには？

* タスクリストのチュートリアルをやって、それを改造するといいかも
    * Laravelチュートリアルは5.1対応なので、ちょっと古い
    * [Laravel5.6チュートリアル 基本のタスクリスト - Qiita](https://qiita.com/dyoshikawa/items/4b59c9594c72eb2321ea)
* [サークル詳細 | プラムザ | 技術書典](https://techbookfest.org/event/tbf05/circle/45210001)
* [レッスン1：Laravel 5.5およびPhp 7.0を使用したブログアプリケーションの構築の概要](http://muva.co.ke/blog/lesson-1-introduction-building-blog-application-using-laravel-5-5-php-7-0/) (英語)
* [blogs data model - Google 検索](https://www.google.co.jp/search?biw=1440&bih=798&tbm=isch&sa=1&ei=CAWuW76QNZfk8wW-tr3QAw&q=blogs+data+model&oq=blogs+data+model&gs_l=img.3...26402.26402.0.26586.1.1.0.0.0.0.0.0..0.0....0...1c.1.64.img..1.0.0....0.6pgFkpto9f0#imgrc=_)
* GitHubに上がっているパッケージを使う案
    * [bjuppa/laravel-blog: Flexible blog functionality for your Laravel project](https://github.com/bjuppa/laravel-blog)
    * [jacurtis/laravel-blog-tutorial: Follow along with how we built this blog using Laravel on YouTube. Read the Readme for more details. Watch it here:](https://github.com/jacurtis/laravel-blog-tutorial)
        * そのYouTubeチュートリアル: https://www.youtube.com/playlist?list=PLwAKR305CRO-Q90J---jXVzbOd4CDRbVx
        * 視聴回数 1,086,557 回
        * 全コース54回

## Chromeのみ対応のシステムをIE11対応させたいが……

* システムのJavaScriptがほぼほぼ動かない
    * アロー関数がシンタックスエラーになる
    * POPUPようにスイートアラートを使っているが、それが動かない
    * [SweetAlert2 - a beautiful, responsive, customizable and accessible (WAI-ARIA) replacement for JavaScript's popup boxes](https://sweetalert2.github.io/)
    * アロー関数でエラーが出る
        * IE11に対応するように
            * PHP（SweetAlert2を呼び出している元）を書き直すか
            * JS（SweetAlert２）を書き直すか
* IE11はES2015
* ES2016以降のコードをBabelでES2015にトランスパイルする
    * [Babel · The compiler for next generation JavaScript](https://babeljs.io/)
    * ["Try it out"](https://babeljs.io/repl)に貼り付けて、トランスパイルされたコードを使えばいいのでは？

## Dockerを使うようになってきたので、みんながDockerをどんなふうに使っているのか、開発のしかたなどを聞きたい

* 複数のプロジェクトでDockerを使いたい
    * Docker Compose使っている
    * [【たった1時間半でできる】YouTube動画でDocker基礎 + Laravel開発環境ハンズオン #YYPHP｜湊川あい@わかばちゃんと学ぶ本 発売中｜note](https://note.mu/llminatoll/n/nfd4ea73d58a1)

* そういえば同じDockerfileでもimage作るタイミングで違ってくる問題ってどうされてますか。(aptで入れるパッケージが更新されてるとかで)
    * パッケージマネージャによってはバージョン指定できますよね。
    * [Ubuntuで古いバージョンのパッケージをインストールする - 動かざることバグの如し](http://thr3a.hatenablog.com/entry/20180110/1515593932)
    * DockerHubにあげて二度とビルドしないようにしてます(なんの解決策にもなってないw)
        * hubにあげていいやつならそれがいいかもしれませんね

## PHPはフランス語に弱い？

* お客さんがフランス人。
* フランス語のアクセント記号がちゃんと処理できない？
* [mbstring](http://php.net/manual/ja/ref.mbstring.php) を使おう
* mb_strlenは問題なさそう。

```
var_dump(strlen('à')); // int(2)
var_dump(mb_strlen('à')); // int(1)
echo strlen('Résultats'); # = 10
echo mb_strlen('Résultats'); # = 9
```

```
$str = "Échange d'informations PHP · Wai Wai En conversation";

var_dump(strlen($str)); // int(56)
var_dump(mb_strlen($str)); // int(52)

var_dump(base64_decode(base64_encode($str)) === $str); //true
```

* unicodeはアクセントついた文字とかが1文字でアクセントついてるやつとアクセント+文字でつくるのと2種類あって正規化しないとだめとかめんどくさいですよね

## 前前人者が作ったシステムが良くわからない


* 独自フレームワークで、残っているドキュメントが中国語。
* ソースを読む。
    * 全体を理解しようとしても無理なので、やりたいことを中心にたどっていく
    * 関数にコメントを付けたり、ドキュメントを残したりしながらやっていく
* 良いコードを読む
    * Laravel
    * Symfony Components
    * コードリーディングにはおすすめしない
        * CakePHP3
        * WordPress
* 試行リファクタリング
    * [レガシーシステムを理解する方法 - maeharinの日記](http://maeharin.hatenablog.com/entry/20150113/understanding_legacy_code)
    * 別ブランチをつくって理解のために弄り倒す
* [(472) 前前前世 (movie ver.) RADWIMPS MV - YouTube](https://www.youtube.com/watch?v=PDSkFeMVNFs)
* 『[レガシーコード改善ガイド](http://amzn.asia/d/fFL7MRu)』
    * [レガシーコード改善ガイド（ウルシステムズ株式会社 平澤章 マイケル・C・フェザーズ 越智典子 稲葉信之 田村友彦 小堀真義）｜翔泳社の本](https://www.shoeisha.co.jp/book/detail/9784798116839)
* [レガシーソフトウェア改善ガイド | クリス・バーチャル, 吉川邦夫 | コンピュータ・IT | Kindleストア | Amazon](https://amzn.to/2PNtMql)

## 型とオブジェクト指向がマイブームで再燃しているのはなぜか？

* クリーンアーキテクチャやクリーンコードを読んで
* クラスとかで気づいてなかったことがあったことに気づきがあった
* クリーンアーキテクチャ
    * 広い視点
    * 全体のアーキテクチャ
* クリーンコード
    * 細かい視点のアーキテクチャ

## PhpStormのEAPでコレクション型のジェネリクス表記ができるようになったよという話

* [PhpStorm 2018.3(EAP)でPSR-5:PHPDocのジェネリクス構文や交差型がサポートされた - Qiita](https://qiita.com/suin/items/462b5829f0b575348d46)

## 次の課題を何にしようかな？

## 技術書典５の案内

* [技術書典５ | 技術書典](https://techbookfest.org/event/tbf05)

## 技術書典5のおすすめサークル(2018年10月8日)

* 技術書典とは
    * 技術書の同人誌即売会
    * Laravelの入門書などが売られる
### YYPHP推薦の技術書典5参加サークル
* こ37 [プラムザ](https://techbookfest.org/event/tbf05/circle/45210001)
    * はじめてのLaravel　～絶対に挫折させないアプリ開発～
* あ20 [湊川あいの、わかば家。](https://techbookfest.org/event/tbf05/circle/47000003)
    * マンガ：告白に学ぶHTTPステータスコード 〜エラー編〜
    * マンガでわかるDocker① 〜概念・基本コマンド編〜
    * マンガでわかるDocker② 〜開発環境を作ろう編〜
* か80 [増井技術士事務所](https://techbookfest.org/event/tbf05/circle/53100001)
    * プログラミング言語図鑑
* う74 [このすみ堂](https://techbookfest.org/event/tbf05/circle/39040001)
    * [新刊] PHP中級者を目指す 〜言語を使いこなすための本〜

## YYPHPは毎週やってます

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

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