PHP
JavaScript
laravel
docker
YYPHP

YYPHP#41「オブジェクト指向はもういらない?、LaravelでCSVインポートのバリデート、デプロイツールEnvoyの使い方、Laravelで定数の書き方、PHPはじめの一歩、古いPHPの環境構築、エラーハンドリング、Vue Native」

これは2018年06月15日に開催したPHPerイベントYYPHP#41のイベントレポートです。

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

YouTubeでの配信映像はこちら-> [YYPHP #41【PHPの情報交換・ワイワイ話そう・仲間作り・ゆるめ・にぎやかめ】 - https://www.youtube.com/watch?v=wHoEMIM0c0g)

YYPHP #41【PHPの情報交換・ワイワイ話そう・仲間作り・ゆるめ・にぎやかめ】

参加者10名(リモート5名)

  • PHP歴
    • 1年未満: 4名
    • 3年: 1名
    • 10年以上: 5名

今日話したいこと/聞きたいこと

LaravelでCSVインポート時のバリデーション

  • CSVをインポートしてバリデーションしたいが、やり方がわからない。
  • フォームからCSVをアップする
  • 自分でバリデータを実装する
  • 何をバリデートするかによる
    • コントローラ内で全て解決してしまっている
  • GoodbyCSVというライブラリはあるが、バリデーションは自分で書かないといけない
  • CSV data manipulation made easy in PHP. - CSV
  • 配列でLaravelの機能に渡してあげればできそう
  • だめだったらSymfonyのものを使ったほうが良さそう

  • csvのやつ、こんなかんじですかね

    $validator = Validator::make(['datas'=>$datas], [
      'datas.0.*' => ... //1列目
      'datas.1.*' => ... //2列目
    });
    

Laravelでのデプロイツールの使い方

  • LaravelのEnvoyというデプロイツールの使い方を知りたい
    • envoy → 使節という意味。environment + deployの造語?
  • LaravelでやるならEnvoyがいいのでは?
  • Windowsのローカルの環境からやろうとすると失敗してしまう

Laravelでの定数の扱い方

  • configのconstから読み込んでいる
  • クラスの中でしか使わない定数はクラスに配置するのがいい
    • 責務的に
  • ファイル保存先のディレクトリなどは、constants.php
  • なんでもかんでもconstants.phpに置くとカオスになる
    • 役割ごとに分けたほうがいい
  • Laravelはどこに置くかは決まってないから自分たちのわかりやすい場所を考える必要がある
    • Configヘルパーをつかいたならconfigの下がいい

PHPのはじめの一歩のアドバイスを聞きたい

PHPのバージョンが古いものの環境構築をするときに

  • PHP 5.1の環境
  • 古いバージョンのXAMPPを取ってきてやっている
  • みんなどうやっているか?
  • ローカル環境を作る時
    • 結構時間かかる
  • XAMPP取ってきて動いているが、環境を作るのに時間がかかる
    • 1日くらいかかっている
      • そのくらいはかかるもの
  • データベースが文字化けしている
  • 互換性チェックツールって具体的にはどんなやつがあるんですか
  • 同じ環境構築にしてもXAMPPを詳しくなっても不毛なので、Dockerでやったほうがいいのでは?
  • LaravelだったらLaradockを使うと簡単に環境構築できる

PHPのエラーハンドリングについて、何かいい方法はないか

  • エラーを巡った組織コラボレーション
  • RuntimeExceptionを継承して、カスタム例外を作ったほうがいいのでは
  • キャッチするならセントリーとか使えばよさそう
  • Exceptionの種類が多すぎて、何が帰ってくるかがわからない
    • 依存な層から
  • 例外はいらないのでは?
    • 本当に例外的なところにとっておくべきかと
    • 例外の言葉がゆるく使われているのでは
    • 業務上の例外は想定されているから、例外じゃないのでは?
    • ドメインの例外はいらないと思う
      • Goのようにエラーをreturnするほうがいいのでは
        • Goにもpanicという例外機構があるが、通常はエラーをreturnする
  • 例外はcatchして握りつぶす人がいる

Vue Nativeについて話したい

  • React Nativeの上に乗ってる
  • Vue Native
    • React Nativeのラッパーなので、React Nativeの進化で勝手に良くなっていくのでは
  • Weex
    • あんまり進展してない気がする
    • なくなっちゃうかも?
  • Vueに慣れている人はReactを学ばなくていい
    • Vuexとかvue-routerがそのまま使える
  • Laravelだったら標準でVue.jsが使える
    • Reactも使える
    • JavaScriptの勉強はした方が良い。ES6とか
  • VueとReactどっちがいいか?
    • Vueのスター数がReactをぬいた
  • 基礎から学ぶ Vue.js | MIO | 工学 | Kindleストア | Amazon
  • Vueは公式の情報がしっかりしているからわかりやすい
  • 環境構築もVueは楽
    • 入りやすいのはVue

オブジェクト指向言語が難しすぎる件

  • 現場の人たちがオブジェクト指向が難しすぎてもういらないんじゃないかという雰囲気になっているので、いろいろ話したい
  • 機能が多すぎる
  • オブジェクト指向は禁止するべき - きしだのはてな
  • オブジェクト指向はオーバヘッドが大きいので、作るのはしんどい
  • すごい熟練してないとオブジェクト指向で良いコードが書けない。
    • 精通していないとちゃんとしたコードが書けないので、それが辛いのではないのかと
    • 5年くらい本気でやってないと、ギリギリいけるかどうかのレベルになると思う
  • オブジェクト指向は広大なので、完全にわかったと思うまでかなり時間がかかる
    • そこに至るまで不安になりながら書いていると思う
  • オブジェクト指向とデザインパターンを一緒くたに考えている人がいる
  • チームのレベルを上げないといけない
  • Go言語で良くない?
  • オブジェクト指向は言語設計レベルでミスもある
  • オブジェクト指向は万能じゃない
    • 適材適所で使うべき

YYPHPは毎週やってます

PHPについてワイワイ話したい方は、YYPHPのイベント情報をチェックしてみて下さい。

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