YYPHP#45「Goの学び方、Q#とは、アセンブラ勉強法、PHPの情報収集どうやってる？、PHPDocどのくらい書く？、初心者向けMVC、初心者向けDockerの説明」

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

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

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

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

## 参加者19名(うちリモート8名)

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

## 話したいこと/聞きたいこと
### Goのハンズオンをやろうかな
* フレームワークどれがいいか？
* Go言語やったことある: 2名
* [動的言語だけやってた僕が、38日間Go言語を書いて学んだこと](https://qiita.com/suin/items/22662f43b6a6e8728798)
* [avelino/awesome-go: A curated list of awesome Go frameworks, libraries and software](https://github.com/avelino/awesome-go)
* [kataras/iris](https://github.com/kataras/iris)
* [Iris](https://iris-go.com/) - The fastest backend web framework for Go.


### Q#とは？

* 量子コンピューティング用の言語
* https://docs.microsoft.com/en-us/quantum/quantum-qr-intro?view=qsharp-preview
* サンプルコード https://docs.microsoft.com/en-us/quantum/quantum-writeaquantumprogram?view=qsharp-preview&tabs=tabid-vs2017

### アセンブラの勉強方法

* アセンブラやったことある人: 1名
* Linuxのブートコードを読む
* インラインアッセンブル
* 航空管制機
* アポロのコード
* [apollo11号のソースコードを読みつつ - aerith7’s blog](http://aerith7.hatenablog.com/entry/2016/12/21/171726)
* [chrislgarry/Apollo-11: Original Apollo 11 Guidance Computer (AGC) source code for the command and lunar modules.](https://github.com/chrislgarry/Apollo-11)

### PHP関連の情報収集どうやってますか？

* Qiitaのスインさんの記事を見てる
* Qiitaのトレンド
* PHPの公式マニュアル
* PHPのソースコードを読む(C言語)
* [PHP7.3の新機能 - Qiita](https://qiita.com/rana_kualu/items/a7c6be77e165bca0f3fc)
    * rana_kualuさんのまとめ
    * [戸田奈津子訳](https://qiita.com/tags/%E6%88%B8%E7%94%B0%E5%A5%88%E6%B4%A5%E5%AD%90%E8%A8%B3)

### PHPDocをどのくらい書くべきか？

* phpdocを書いている人: 5人
* 連想配列の値
    * `[1, 2, 3, new DateTime()]`
    * `@param int[]|DateTime[]`
    * `@param (int|DateTime)[]` これはだめ
    * コレクションを抽象化してちゃんとしたほうがいいかも？
    * Generic型とか早く書けるようになって欲しいです
    * `array<int>`
    * [ジェネリクスがないPHPでも配列中身のタイプヒントを可能にする「Splat Operator」 - Qiita](https://qiita.com/suin/items/781c35edc32aaafac01e)
* 最低でも public のメソッドには doc comment は書きます。
* phpdocなるべく書いてますがPhpStormで自動生成しただけで放置のことも…
* PhpStormとPhanの書き方の違いがある
* PHPDoc書いてません（書けって言われるまで書かない）
* ちょっとずれますが、type hint は積極的に使ってる派です。
* type hintなるべく書きたいんだけど、継承元がサボってると継承先でhintつけるとおこられますよね。継承元がフレームワークとか自分で書いてるものじゃないときにつらい

### 初心者にわかりやすくMVCを説明する方法

* Laravelを教える上で、MVCをどう教えたらいいか？
* なぜMVCが必要になったか、その背景と歴史から説明したら
    * ゼロックスのパロアルト研究所で発明されて……とか
    * デスクトップアプリ(GUI)を作るために生まれて、(Webではなく)
    * Webに転用するとこうなって、WebとGUIでここがちがう
    * などなど。
* 擬人化する
* [図解！どのサイトを見てもわからなかった人のためのMVC - Qiita](https://qiita.com/a24dai/items/5fddbffdbb05b2ed2894)
* LaravelってMVVMじゃなかったっけ
* LaravelはそこまでMVCを推してないような。
* Laravel は 5 系から明確に MVC とは言わなくなった、という理解です
    * でも MVC にもできる。実装者におまかせ
* Railsみたいに固定されていない
* 自由度高いためにどう作っていいわかからない
* どういう場面でどういう課題を解決するものなのかを説明すると良さそう

### Dockerさわってみたがよく分からなかったこと

* 初心者なのでスインさんの記事を見てやってみた
* [CakePHP3もくもく勉強会#2レポート「DockerでPHPの開発環境を構築しよう」 - Qiita](https://qiita.com/suin/items/6d70f9c960056533ebb2)
* phpmyadminとかも入れてみた
* 湊川さんの
* ymlはjsonを見やすくしたようなファイル
* docker黎明期、一つのコンテナに全部突っ込んでたなぁ…ｗ
* YYDockerをやりたい
* [#YYPHP #46【DockerでLaravelを動かそう】 - connpass](https://yyphp.connpass.com/event/93170/)

### dockerで作ったイメージでサイトを公開するまでのフローについて知りたい

* 来週

### マンガでわかるDockerについて

* 来週

### 初心者が設計をはじめるときどのへんを意識したらいいか？

* デザインパターンなどを実際にどう使えばいいか、イメージできない。
* 何をなんのために、どういう規模のものを、何人で作りたいのか、などのパラメータによる
* オブジェクト指向でのクラスの設計
* そもそもオブジェクト指向を使うべきか
    * どういう場面でオブジェクト指向はいらないか？
        * データがあって関数でごりごりまわすシステム
    * 業務システムのルールが複雑で、データを変形していくだけではどうにもならないときはオブジェクト指向がいい
* デザインパターンより、「関心の分離」とかそういう原理原則をしっかり理解したほうが有益な気がしている ★★★★★
* [オブジェクト指向エクササイズのススメ](https://www.slideshare.net/yojik/ss-1033616)
* [Clean Code　アジャイルソフトウェア達人の技 (アスキードワンゴ) | Ｒｏｂｅｒｔ Ｃ．Ｍａｒｔｉｎ, 花井 志生 | 工学 | Kindleストア | Amazon](https://www.amazon.co.jp/dp/B078HYWY5X/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
* [Clean Architecture 達人に学ぶソフトウェアの構造と設計 | Robert C.Martin, 角 征典, 高木 正弘 |本 | 通販 | Amazon](https://www.amazon.co.jp/Clean-Architecture-%E9%81%94%E4%BA%BA%E3%81%AB%E5%AD%A6%E3%81%B6%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AE%E6%A7%8B%E9%80%A0%E3%81%A8%E8%A8%AD%E8%A8%88-Robert-C-Martin/dp/4048930656) - 2018/7/27発売予定！
* アジャイルソフトウェア開発の奥義第2版
* クリーンコード
* クリーンアーキテクチャ


### CORSでつまづいているところを聞きたい

* [オリジン間リソース共有 (CORS) - HTTP | MDN](https://developer.mozilla.org/ja/docs/Web/HTTP/HTTP_access_control)
* CORS、雑に言うと異なるドメインへの XMLHttpRequest へのアクセスを許可するかどうかの仕様ですね。

### 新しいMacを買うつもりだけどどのモデルがいいのか？

* 持ち運ぶならMacBook Pro 13インチ
    * 下位モデルのメモリ16にしたもの

### エンジニアの給料はどのように決まるべきなのか？

* [❄️suinさんのツイート: "エンジニアの給料ってどうやって決められるべきですかね？"](https://twitter.com/suin/status/1019761579523334145)
* 技術職の査定ってめっちゃ難しくない？
    * 定量的には絶対むり
* 結局納得できるか
* 全員一律でいいんじゃない？
* うちは賃金テーブル
* どうやってきめないべきを積み重ねていったほうがいい

### OSQueryでどんなものを作ったら面白いか

* PHPから使う方法

## YYPHPは毎週やってます

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

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