PHP BLT #7 まとめ

## PHP BLT とは

概要は下記イベントページより
https://phpblt.connpass.com/event/55972/

## 私の感じたイベントの雰囲気などなど

PHP BLTと銘打っているもののPHPのお話でなくても全然ok！

ほんとは↓くらいタグつけたかったのですが5個までと怒られましたｗ

`php css golang composer mBaaS laravel heroku backStopJS GOF GCP GitLab PHP7 Scrutinizer codacy Codecov `

雰囲気としては、とても柔らかめ。マサカリが飛んで来ることもありません(多分)

私はこういうイベントで登壇したことありませんが、
次は登壇してみようかなと思うような場でした

そんな雰囲気を作ってくださった運営(メルカリさん)の皆様に感謝です。

あと、飲食物の提供もあったので腹ペコで向かった私はとても助かりましたｗ

## LTについての雑感

19:10分過ぎについてしまったので私が聞いた範囲のものから順にメモを記そうと思います。

タイトルをメモるのが間に合わなかったりしたのでざっくりな
タイトルとなってしまうことお許しください。

__あと、ここ違うんだけどってことあれば編集リクエストなり、
コメントなりいただければと思います。__
すぐに修正させていただきます。

## Saasのお話

自分たちでツールは作らずに便利なSaaS使ってくのはどうかというお話
紹介いただいた下記2点は、実際にトライアルから使ってみたいなと思いました。

__[codacy](https://www.codacy.com/)__
複数の静的解析ツールを可視化。Scala界隈では有名らしい
issuesのスコアが時間制。勝手に計算してくれる
どこからリファクタすればよいかも教えてくれる
例えば最短ルートなど

__[codeCov](https://codecov.io/)__
１コミット毎に評価してくれる
カバレッジ下がったらマージさせないなどできる。おもしろい

[スライド](https://speakerdeck.com/rela1470/codacy-codecov)


## [NCMB](http://mb.cloud.nifty.com/)のお話

NCMB → __mBaaS__

KVSなデータストア等の機能がある

モバイル系のSDKは入っている

PHPも対応！！(登壇者の方が作成!)

[Parse](https://github.com/parse-community/parse-php-sdk)を参考に作ったとのこと(mBaaSのサービス)
2017/01/28にサービスは終了したみたいです。

## Laravel Collectionの話

結構laravel使ったことある人いましたね、4系なのでしょうか、5系なのでしょうか

Collectionが実装しているpublicメソッドの数を調べるために
リフレクションクラス使って云々はなるほどなーと思いました。

interfaceのメソッドの抽出とかやってみたいと思ってるので
↑のやり方真似すればうまくいくかな。。

laravelのCollectionは大体やりたいことできると思うので
公式とりあえずみておきましょう、損はしないはずです

[登壇者の方の記事](http://qiita.com/nunulk/items/9e0c4a371e94d763aed6)
ほんとにCollectionメソッド全部書いて、テストしてます、気合が違いますね。。

## Coveralls migration

カバレッジ計測、静的コード解析のサービス
[php-coveralls](https://github.com/satooshi/php-coveralls)

TravisCI-php7.1対応を頑張ってくださっている
早くマージしてほしいのに、prophecyを使おうとか注文が多く苦労したみたいです

（prophecyについては、 [この記事](http://qiita.com/Hiraku/items/326b58c586a134d2ea74) がわかりやすかったです）

プルリクを見てもらっているから丁寧な対応を心がける、誠意が大事ですね。。
OSSへの貢献してみようかなと感化されました。

## phperのためのgolangのお話

phpstormでgolangはゴリゴリ書ける！
Ctrl+ ~ プロジェクト切り替えが簡単！

関数の型宣言必須！php7の人には嬉しい。
golangでレシーバは使ったことなかったから理解しておきたいなぁ。
書き方はしっくりこないですねー。
その点、Rustはtraitっていうのが好きです


## Herokuでphpとnodejs

困ったときは公式を熟読しよう。検索結果が新しいとは限らないので。
herokuって便利なんだろうけどデプロイすんなりいかないと
嵌りそうで怖い。
ただそれも一回きりなんだろうけど汗

## backStopJSとCSS
変更の前後でスクショを取って差分をチェックできる
laravelで動作サンプルも作ってくださってる
[スライド](http://sssslide.com/speakerdeck.com/fortkle/backstopjs-css-test)

## Event Dispatcher

コードリーディングより生まれた疑問を噛み砕いて
解説してくださった。

該当していたのはsymfony-eventdispatcher

observerパターンについて
[スライド](https://speakerdeck.com/kzbandai/event-dispatcher)

## GCPで無料枠のサーバを立てるときにハマりそうなこと

支払いログを設定しよう
バケット名の付け方には注意
us-*リージョンが無料。インスタンスはmicroを使う。
固定IPも無料。

[freenom.com](http://www.freenom.com/ja/index.html?lang=ja), 無料ドメインとれるみたいです、知らなかったです。

## composerパッケージについて

ライセンスについて、
ライセンスは必ず書くべき。
合法的に編集できなくなる

GPLライセンス, Apache2.0, MIT

conposer.jsonで痛い目にあったのだろうか、
require部分のファイル編集は絶対ダメと熱が入っておりました。
すごいわかりますねｗ

同じことで
__composer updateは不用意にうったらいけません__


## phpの使ったことない機能について

V8js入れたかったけど、断念。
`$ pecl ~`のワンライナーでは入らないみたいですね

## Vのお話

webアプリケーションにおけるViewのお話

インラインで書かれたjsなど↓
Viewがなぜ乱れるか
扱う職種が様々
書き方も様々

jsでオブジェクティブに書ける人は少ないから難しそう、、
負債を作らないようなチームづくり、レビュー文化

[スライド](https://speakerdeck.com/hanhan1978/vfalsehua)

__余談__
docker for Macにedgeバージョンあるなんて知らなかったです。
教えていただきありがとうございました！
これ使えばローカルのdocker環境が1.5倍くらい早くなるはず。。！
今のところは__docker-sync__使ってますが
開発早くて不安定になりそうなのが怖いので。。

## GitLab CI / Review Apps

ymlでブランチごとのレビュー環境が作れるようです
DB連携は未対応とのこと

gitlabは機能追加が早いので時間の問題なのかなと思います。

## Debug Interactively

`php -a`
使ったことなかったです。。

↓さらにリッチなもの
[psysh](http://psysh.org/)

configファイルにautoloadファイルとか読ませれば
自分のリポジトリだけの環境ができるようです


## いつまでphp5.X使ってるの

php5.5以下はサポート切れてるからどうにかしようね、__どうにか__
php7.0.*も今年でアクティブサポートが切れる。
↑これは知らなかったので、今動いているphp5.6アプリケーションは__7.1__にしないとですね
php7cc, php7mar マイグレーション支援系のツール

[スライド](https://speakerdeck.com/fivestar/itumadephp-5-dot-xshi-tuterufalse)

## まとめ

静的解析ツールやテストのお話が多かったような印象です。
コードが読みやすいに越したことはないのでこの辺の技術共有は
自分からも発信していきたいですね。
そして、エンジニアを支えるこういったツールを作ってくれる会社に還元できればと。。

別の静的解析ツールで[scrutinizer](https://scrutinizer-ci.com/)を耳にしました。
結局のところ何がいいのでしょうか、オススメあったら教えていただきたいです。。

私のチームではCIにJenkinsを使っていて、XDebugのカバレッジは見れるのですが
__よくわからない（見づらい）__のでCodacy等リッチなGUIを使いながら
気持ちよく技術的負債が減らせる環境を作りたいですね。