YYPHP#91「PHPerの初級・中級・上級の定義とは」「フリーランスの始め方」「詰まったときの切り分け方」「ウォーターフォール型チームを説得してアジャイルを導入したい」「PHP7.4、新しい認証技術、マイクロフロントエンドなど」

これは2019年7月5日に開催したPHPerイベント[YYPHP#91]のイベントレポートです。

[YYPHP#91]: https://yyphp.connpass.com/event/132255/
[YYPHP]: https://yyphp.connpass.com/

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

__今回の配信動画__


<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">YYPHP第91回、生配信はじめました！ <a href="https://t.co/Ni1i4ynydS">https://t.co/Ni1i4ynydS</a></p>&mdash; suin❄️TypeScriptが好き (@suin) <a href="https://twitter.com/suin/status/1147088751895597056?ref_src=twsrc%5Etfw">July 5, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

__過去回の配信動画__

https://www.youtube.com/playlist?list=PLpOeTEye3Bg6PodrLHHC72jWMJYZz8VbG

__前回__ → **未投稿**


## 雑談

### 最近のPHPの動向、新しい技術、新しいAPIなどについて (でゃすさん)

* 昨年のPHPカンファレンス以降の動向
    * PHP7.4RCが最近出た
        * [PHP7.4の新機能 - Qiita](https://qiita.com/rana_kualu/items/38c9917f634bc7767f1b)
    * PHP8でJITが実装されることが決まった
    * こういう仕様って誰が決める？
        * PHPのコミュニティがあって、多数決で決まる
    * Typed Propertyはやくほしい (PHP7.4)
    * JITが入ったらJava相当くらいの速度になる？
* 5系のPHPがまだまだ残っている
    * 7系にまだいけてないのに8系にいけるのか心配。
* 2段階認証のAPI
    * FIDO、U2Fが当たり前になってほしい
    * デバイスログインが当たり前になってくれば重大事故が少なくなる気がする。
    * 認証にパスワードをなくしていこうという動きも。
        * 暗号化がいたちごっこになっちゃう
    * ネットワーク上にパスワード情報が流れない仕組みも考えられている。
    * SMSの認証コードが届く
    * SMS認証に物申したい
        * 1行目はホーム画面に出たりする
        * 考えられているサービスは1行目がダミー文字だったりするので、全てそうしてほしい
    * WeChatはQRコードでログイン
    * SMSもハックされる事件があった
        * 仮想通貨取引所アカウントがハックされて50億円
        * キャリアの店員さんと共謀してSIMをぶんどられた
    * Googleが全社員にUbikeyを配布 → ハッキング被害がゼロ件に。
* 新しい技術
    * 新しいフレームワークって出てる?
    * APIプラットフォーム
        * Symfonyベースで出来ているAPI開発に特化したフレームワーク
        * SPAが出てきて、フロントはJSでって案件が出てきてる
            * マイクロサービスも
        * バックエンドに求められるのはAPI
            * GraphQLなども
        * 一枚岩のフレームワークが必須でなくなる
        * 要件に応じて適材適所になってくる
        * 選択肢が広がって選定が難しくなる
    * マイクロフロントエンド
        * フロントエンドとバックエンドをあわせて一つのマイクロサービスにするという考え方
        * なんのために？
            * フロントが一枚岩になっちゃって、スケールしないため
        * Amazonとかメルカリはマイクロフロントエンドで作っている
        * デプロイの粒度がフロントでも小さくできるようになる
        * チーム数が多いところで有用。
        * 逆に小さすぎるチームだと、逆に大変。
        * モノリスファースト
    * 結果整合性を許容できるコマンドとできるコマンド
        * 許容できない場合: 待つ
            * ツーフェイズコミット
            * [マイクロサービスにおける決済トランザクション管理 - Mercari Engineering Blog](https://tech.mercari.com/entry/2019/06/07/155849)

### DDDやアジャイルについて聞きたい (つぼた)

* 当初Laravelで作りたいと考えていた
* クラスに不変条件を書かないといけないとわかったのでSymfonyに切り替えた
    * Laravelはアクティブレコードなので
* ウォーターフォールの上司を説得できるのか？
    * チームのやりかたを大きくは変えられないので、
    * DDDを知らない、アジャイルを知らない → ちょっとずつ啓蒙してから
    * 大きく変えすぎると反発
        * 反発があるということは、メリットを感じられないから
        * 説明を尽くして理解が得られないなら着地点を探す
* やったことのないことへの恐怖心
    * スケジュールを守れるのか？
    * スケジュールが大事なプロジェクトでは研究が必要なプラクティスはやっちゃだめ
        * サイドプロジェクトで実験してから取り入れるなどしたほうがいい
* 組織文化というのがどうしてもある
* アジャイルで開発してほしいけど予算固定だし請負契約みたいのに気をつけよう！
* [十二人の怒れる男 - Wikipedia](https://ja.wikipedia.org/wiki/%E5%8D%81%E4%BA%8C%E4%BA%BA%E3%81%AE%E6%80%92%E3%82%8C%E3%82%8B%E7%94%B7)

### Redisのメトリクスツールでおすすめを聞きたい (やすだ)

* OSS
    * [influxdata/telegraf: The plugin-driven server agent for collecting & reporting metrics.](https://github.com/influxdata/telegraf)
    * [telegraf/plugins/inputs/redis at master · influxdata/telegraf · GitHub](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/redis)
* SaaS
    * [DataDog Redis](https://docs.datadoghq.com/integrations/redisdb/) 有料
* 件数を見たいだけなら
    * [Laravel Horizon 5.5 Laravel](https://readouble.com/laravel/5.5/ja/horizon.html)
    * [Laravel HorizonでQueue/Jobを眺める | WINDII](https://windii.jp/backend/laravel/laravel-horizon)

### PHPer初級・中級・上級の定義とは？ (きたむら)

実用PHP認定

- 入門者、初心者:
    - 簡潔なソースを書いた人。
    - 入門書を1週した人
    - 入門書で2週目以降の人
    - 関数・配列がひとつの山場、その次にクラスが山場。
        - forが二重になった瞬間だめな人もいる
        - 多次元
    - 配列とオブジェクトの違いとは？
- 初級者
    - HTML、CSSなども使って「ウェブ」が開発できる
    - バッチが書ける
    - 初心者と初級者って違うの？？
- 中級者
    - クラス・オブジェクト、ファイル分割ができる
- 上級
    - クラスの設計ができる
    - パッケージ構成が考えられる
    - フレームワークに限らず、素のPHPでちゃんと書ける
    - キャッチアップして変わったものに対して適応できている

* PHPなのか開発なのかによって違う
* 初心者って具体的にどういう
* 言語だけ知ってても案件何もこなせない
* PHPを使ったウェブ開発
* 一人前ってのもあるよね、一人前ってどのくらい？
    * 中級じゃない？
    * イメージ的には3年〜5年くらい?の感じがする

### フリーランスって皆様、どんな感じに始めたのか気になります。(バルカー(リモート参加))

* フリーランス経験者 4人
* フリーランス始めた理由
    * 思ったように仕事ができなくなったから
        * 上司が変わって方針が変わってきて、スピード感が無くなったり、文化が合わなくなってきたため
    * 積極的な思いはなくて、仕事をやめてなりゆきで
        * エージェント企業が増えてきたため、3社4社登録したら、単価のいい案件に巡り会えるようになってきている
            * 営業とかも代わりにいろいろやってもらえる環境が整ってきた。
    * 自分でオープンソースの活動をしたかったから
    * 生まれ故郷のラオスに行きたかったから
* 病気、働けないときのリスクがある
    * 家族がいる人には絶対オススメできないです

### 詰まったときの切り分け方どうしてる？ (きたむら)

* 具体的には？
    * 新しいライブラリを入れたときに、概念が理解できなくて、どこからやったらいいのか分からないことがある
* 極力ミニマムを試す
    * 既存の機能上で動かしてしまうと、わかりにくくなる
    * 独立したプログラムとして試してから実導入する
    * playground
        * [https://github.com/suin/php-playground](https://github.com/suin/php-playground)
* とにかく手を動かす
    * 全然分からないときは、とにかく手を動かす。理解するきっかけになるエラーメッセージに出会う。
* 風呂でリラックスする、トイレでひらめく
* ステップ実行

### テストコードの書き方、コツについて聞きたい (かきうち)

* 書いてみた
* 感想: 自分のコードがテストしにくいと感じた
    * privateメソッドが多くてテストしにくい
    * クラスを分けたほうがいいのか


# YYPHPは毎週やってます

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

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