PHP
PhperKaigi

PHPerKaigi2019に行ってきました(1日目)


はじめに

PHPerKaigi2019に行ってきました!

とりあえずPHPerチャンレンジトークのために雑に投稿しますw


2019/03/30(土)


フレームワークを作りながらLaravelのアーキテクチャを学ぶ

ページ


  • オレオレフレームワークは学びが多い、楽しい

  • 名前解決方法が重要


  • eval(\Psy\sh()); デバッグ方法

  • 1回自作フレームワークを作ってみよう

  • 依存性の注入: Dependecy Injection→必要なオブジェクトを外部から注入する


    • 内部でインスタンスを生成せずに外からインスタンスを渡してあげる形(引数増えちゃう問題もある・・・)



  • DIコンテナ


    • 外部から注入するオブジェクトが多くなるとしんどい

    • インスタンスの生成方法を登録してあるコンテナ、ファクトリみたいなもの?



  • サービスコンテナ


    • Laravelが提供してる、bindとかresolve

    • キャッシュされる



  • ファサード


    • クラスメソッド形式でどこからでもインスタンスメソッドを呼び出せる機能。Config::みたいな

    • どこからでも呼べる、疎結合になる、テストも書きやすい

    • 便利ではあるが依存関係が分かりづらくなる→確かに今のプロジェクトでも依存関係が分かりづらく苦労している

    • やはりセッション系は外から渡す形にしてあげないとしんどい、中でセッションを参照したらダメ




抽象化って何?

ページ

Laravelカンファレンスでしゃべった内容らしい

メルカリのマネージャーの人

絶賛マイクロサービス化中


  • 数独のチェック処理を例にする

  • これの改善ポイントはないか?

  • 依存関係逆転の原則

  • 間にinterfaceを挟むと依存関係が逆転する→これは間違っている

  • 抽象: 共通部分を抜き出すこと

  • 捨象: 共通部分を捨てること

  • 抽象化のハシゴ、牝牛ベッシーの例

  • ハシゴを登るとき、特徴量→減る、対象の数→増える


    • ベッシー→牝牛

    • 抽象レベルが揃ってないとコミュニケーションできない(資産に餌を与える)



  • 扱っている問題や概念の抽象化

  • プログラミングにおける抽象化


    • 適切な命名

    • 抽象度の統一

    • 狭い範囲



  • 改善、本質を見極める、最低限は何か

  • checkerは1~9のnumbercollectionのチェックするようにする

  • check→Matrixだったのをcheck→NumberCollection→MatrixAdaptor→Matrixになった

  • 依存関係の改善ができた

  • 抽象化→モデリング

  • ベッシー→富ではなく動物の方向へモデリングができる


ランチセッション

ページ

OKWAVEの会社の採用のための場だった

色眼鏡の話=要するに価値観ってこと

お昼1時間くらい空いた

暇だったのでPHPerチャレンジやってた


MySQLにWEBアプリのログを保存しているケースの8割くらいが幸せになる方法

ページ

スライド

PHPの話は出てこない

DBにログを残すのはまぁある程度は大丈夫

一定期間で外に逃がすというのが必要

ログ: 制約を使わないもの、アップデートしないもの

ホットログ: ユーザーの照会があるもの

コールドログ: 内部でしか使わないようなもの

メリット: トランザクション、SQLでアクセスできる

デメリット: 重い、vimでもなかなか開けない

mysqldumpコマンドには--tabや--whereなどのオプションがついている


設計力を上げるバリエーションの見極め術

ページ

バリエーション=>S,M,Lとか

バリエーションの変化→ビジネスの変化

税率とか

ビジネスの変化の見極め術


  • 横の変化


    • いわゆる横展開

    • 対応モールが増えるとか



  • 縦の変化


    • 時間とともに変わる可能性のあるもの

    • 年号とか税率とか



配送料対応

佐川とヤマトとゆうパックと...etc

if文はダメよ、という話

domainProvider的な、ファクトリー的な何か

条件分岐禁止、スピーカーの方と少し交流した


聞きたいものがないので一時小休止

トークン探しで遊ぶ


3ヶ月でphp5.5から7.2にバージョンアップした現在と今後の向き合い方

ページ

PHP5系は2018年内でサポート終了

Docker環境を作ってバージョンをあげて検証

memcachedのバージョン依存問題

mcrypt→openSSL

やらないこと: リファクタ

色んなバージョンアップの話を聞くがやはりこれは大事のようだ

納期のあるバージョンアップにおいて、リファクタまで手を出すのは無理

countの仕様変更

アップ後: サイトの速度向上

結構詳細の話が多くて参考になる部分が少なかった、ピンポイントすぎた


PHPerのための計算量入門

ページ

ユーザーでループを回すなという話

負荷試験

CIで負荷試験まで込みにしてるようなものはほぼない

静的解析→無理

経験しかない…

時間計算量→演算回数

空間計算量→メモリ

in_arrayは遅いが数件であれば問題ない

データ量をよく見て使う

CSVとかをまとめて扱うとメモリ、空間計算量が増える、outofmemory


Today's update

クロージング

トークンチャレンジ: 1位の人、休憩中も休憩できない、らしいw

明日はランキング非表示らしい

Wi-Fi: 会場側の問題だった可能性あり


PHPerチャンレンジ

会場内やサイト内の至るところにトークンを用意してあり、それを打ち込むことでポイントが手に入って順位を競うチャレンジ

暇な時間とかにコツコツ集めた結果、最高で13位まで行くことができました:smile:

明日もがんばりまーす

スクリーンショット 2019-03-30 17.05.20.png