YYPHP#38「PHP以外のフロント、画面のテスト自動化、効率的に開発するのにお勧めのやつ、PHPの利点、幸せな転職」

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

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

[YYPHP#38]:  https://yyphp.connpass.com/event/86848/
[YYPHP]: https://yyphp.connpass.com/
YouTubeでの配信映像はこちら-> [YYPHP#38「PHP以外のフロント、画面のテスト自動化、効率的に開発するのにお勧めの、PHPの利点、幸せな転職」 - YouTube](https://youtu.be/oZdkwGw0lqI?t=11m38s)

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


## 参加者 10名

* PHP歴の分布
    * 1年未満: 3名
    * 2年未満: 1名
    * 4年: 1名
    * 10年以上: 5名

### PHP以外でフロントで扱っていること

* アンケート「何使ってる？」
    * React: 0
    * Vue: 3
    * jQuery: 5
    * その他: 1 (フレームワーク使ってない)
* ionic
    * TypeScript
* ReactNative
    * コツ
    * 難しいところ
    * デバッグツール
        * [reactotron](https://github.com/infinitered/reactotron)
        * [react-native-debugger](https://github.com/jhen0409/react-native-debugger)
    * eslintは入れておいたほうがいい
        * ルールに沿わないコードを書いたら忠告してくれるので、細かいところに頭を使わなくていい。
            * 重要なところに頭を使える。
        * あと、安心できる。
    * [prettier/prettier](https://github.com/prettier/prettier)
        * コード整形ツール
    * [酔っ払ってもコードが書きたい！JavaScriptを書き散らかしてPrettierに介護してもらう方法 - pixiv inside](https://inside.pixiv.blog/geta6/3342)
    * [アメブロに ESLint + Prettier で自動コード整形を導入した話](https://developers.cyberagent.co.jp/blog/archives/15068/)
    * [コード整形をStandardJSからPrettierに乗り換えたら捗った - 丁寧に手を抜く](http://craftzdog.hateblo.jp/entry/prettier-is-good)
    * [prettier/prettier-eslint: Code prettier eslint --fix Formatted Code](https://github.com/prettier/prettier-eslint)
    * [prettier/eslint-config-prettier: Turns off all rules that are unnecessary or might conflict with Prettier.](https://github.com/prettier/eslint-config-prettier)
    
### Vue.jsをやってみようと思っているけど、手をつけれていない

* 最近APIばっかりで使うタイミングがない
* Vue.jsを学ぶには教材を手に入れるのがいいのでは。
* Vue.jsを覚えたらReactも覚えやすい？
    * 似てるから、覚えやすいと思う
* いきなりReactは難しいから、Vue.jsから入ろうと思っている。
* Vueは部分的に入れられるから一部だけに入れてみるという手はある
    * 例: フォーム、いいねボタン

### 画面のテスト自動化で最適なツールって何？

* 画面のテスト自動化やったことある人──？ 3人
* Seleniumとか？
* [Cypress.io](https://www.cypress.io/) - JavaScript End to End Testing Framework
    * とってもいい
    * 速い
    * ビデオ、スクリーンショット撮ってくれる
    * WebDriver使っていない
        * Chromeでのみ実行できる
        * Firefox、Safariをサポートしようとしている
        * IEは技術的に無理、Edgeは対応するらしい
* ShouldBee
    * [ShouldBee - テスト作業を限りなくゼロに](https://shouldbee.at/)
        * うち(クラフトマンソフトウェア)で作ってるやつ
* AIで画面テスト自動化するというのが出てきている

### 効率的に開発するのにおすすめのもの

* 情報収集、IDE、FWなど、効率に関わることなんでも！
* エディタ
    * PHP用のvimのプラグイン
        * vimmerいますか──？ 2名
    * IDE便利
        * PhpStorm 4
        * Atom 3
        * NetBeans 1
        * VSCode 4 → Atomより軽いけど、Atomと同等
        * Eclipse 1
    * PHP7.1になってからstringとかの型宣言ができるようになったので、IDEとの親和性が上がった
* 情報収集
    * よく見るサイトをwgetとcronを使って、毎朝情報を取ってくるようにしている
* DDD
    * 規模と複雑さによって、効率的になるかどうか変わる
* 設計の効率化
    * [astah システム設計、ソフトウェア開発支援ツール | Astah](http://astah.change-vision.com/ja/)
        * いちばんちゃんとしているUML設計ツール
        * Community Editionは無料で使える
        * コード生成はProfessionalを買うとできる
            * [suin/astah-anycode-php-template](https://github.com/suin/astah-anycode-php-template)
        * StarUML
            * canvasに上限があって、用紙サイズが決まっている
        * Enterprise Architect
            * Windowsでしか使えない
    * UML書いたほうが効率化されますか？
        * 複数人に設計を伝えないといけない場合、効率化される。
        * Unified Modeling Languageの略称で
            * Unified(統一された)
            * Modeling(モデリング)
            * Language(言語)
* テスト自動化
* コミュニケーションツール
    * [Slackで簡単に「日報」ならぬ「分報」をチームで実現する3ステップ〜Problemが10分で解決するチャットを作ろう | | Craftsman Software Inc.](http://c16e.com/1511101558/)
    * 分報を広めている
    * 社内のコミュニケーションがオープンなほど、心理的安全性が上がり、生産性が高まる
        * 分報をいれると生産性アップにつながる
* ピザ二枚分がちょうどいい
    * [米AmazonのCEOジェフ・ベゾスが提唱する｢2枚のピザ理論｣](https://www.lifehacker.jp/2014/11/141118two_pizza_rule.html)
    * 10名くらいのチームがちょうどいい
    * それ以上は遅くなっていっちゃう=
    * 自分の部下は10人がいいらしい
    * 20人とかのチームになると、会議で1周するのにすごく時間がかかるし、やってることが離れすぎててどうでもいいと思うこともある。

### フレームワーク

* アンケート「どんなフレームワーク使ってる？」
    * Laravel: 5人
    * CakePHP: 3人
    * FuelPHP: 2人
    * CodeIgniter: 1人
    * Lumen: 1人
    * Rails使ったことある人？: 7人
    * django (Python)
    * SkinnyFramework。Akka (Scala)
    * Play Framework
* 他の言語と比べてPHP使う利点は？
    * エンジニアを探しやすい
        * SESの人数はJavaとPHPのエンジニアが多い
    * 意外とまともにコードが書けるようになった
        * PHP4の頃は、オブジェクト指向構文が貧弱だった。 publicとかなかった。
    * サーバが立てやすい
    * 最初からはいってる関数が多い
    * ウェブに特化してる
    * テキトーにうごく
        * メモリ気にしなくていい
        * 気にすることが少ない
    * 安いレンサバが借りられる
* Laravel Forge
    * [Laravel Forge - Instant PHP Servers](https://forge.laravel.com/)
    * VPSなどにLaravelのサーバを自動で立ててくれる

### どうやったら幸せな転職ができるのか？

* なぜ転職したのか？
    * 飽きたから
    * ゲーム業界から、より権限強いプログラマーになるため
    * SESから脱却、会社にいる意味があんまりない、人月商売されるのが嫌になった
    * SESは、あんまり機会のない案件に携われるのは良い
* どうやったらブラック企業かどうか見極めるられるか?
    * 中で働いている人のTwitterアカウントを突き止める
    * 「勤務先：都内各地」とか危険ですよね
    * 経営者を調べる、Facebookなど

### reoringの装備について？

* Ergodox
    * 3万円くらい
    * [ErgoDox EZ: An Incredible Mechanical Ergonomic Keyboard](https://ergodox-ez.com/)
    * 軸 → キーの重さや音が変わる
        * こだわっている人は、小指を軽くして、人差し指は重くするなど

## YYPHPは毎週やってます

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

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