PHPerKaigi 2021 二日目 参加メモ
はじめに
PHPerKaigi 2021 に参加しました。
1日目はあいにく別件の用事があり参加できませんでしたが、タイムシフトで後日参加いたします。
2日目の参加メモを公開します。
※個人的なメモですので、支離滅裂かと思いますがご了承くださいませ
聴講セッション
- 無駄な物をなるべく作らないリプレイス戦略
- 11:50 Track B
- 今こそ理解するDI(Dependency Injection)
- 14:10 Track A
- DNSを制する者はインターネットを制す!DNS世界
- 14:50 Track B
無駄な物をなるべく作らないリプレイス戦略
- ママリ
- 記事の管理
- 記事のCMS
- 技術スタック
- PHP7
- CakePHP 2.x
- PHP7
- リファクタリング
- コードの最適化
- リライト
- 設計から1から作りなおす
- リプレイス
- 置き換えること
- 完全な書き直し(リライト)は最終手段
- 大きなリスクがあるため
- リライトして何年も立つがまだ終われない
- リライトしたあとの方が性能が悪い
- 想像していなかった仕様や機能の漏れがあった
- 記事サービスの場合、複数の機能があるため、リライトは現実的ではない
- 大きなリスクがあるため
- そのためリファクタリングの方針とした
- リライトにすることになりました
- 無駄なものをなるべく作らないりプレイス戦略とは
- 必要なものから少しずつ作っていく
- ログインログアウトだけできても意味はなく、それに付随する必須機能を組み合わせて進めていく
- 必要なものから少しずつ作っていく
- 無駄なものをなるべく作らないりプレイス戦略とは
- 必要なものを作る戦略
- 知るところから始める
- コードリーディング
- リファクタリング
- 設計振り返り
- 実際にサービスを使ってみる
- とにかく対話する
- 実際に使っているユーザと対話する
- 現状のサービスの使われ方を明らかにしていく
- プロダクトとして何らかの課題を解決できる最小単位
- ユーザインタビューを行う
- インタビュー中の発言やメモなど
- 共通理解を持つ
- 実際に作ってみたら思っていたものと違ったを防ぐ
- 狩りで決めたスコープに抜け漏れがないか、関係者で認識にずれはないかを検証する
- ユーザストーリーを前提として設計する
- ユーザの操作のストーリーを書き出す
- 作成して、プレビューして・・・・。
- ユーザの操作のストーリーを書き出す
- ユーザストーリーを前提として設計する
- まずはリファクタリング、リライトは最終手段
- 無駄なものは作らないはキホン
- 知るところから始める
今こそ理解するDI(Dependency Injection)
- DIとは方法論
- 保守性の高いコードを書くことを目的としたソフトウェエア設計原則とパターンのセット
- 粗結合の実現を目的としたデザインパターン
- 制御の逆転
- 呼び出す側と呼び出される側が逆転する
- 必要になったら呼ぶ
- ユニットテスト
- setUP
- tearDown
- 開発者は定義だけ
- テストの実行のタイミングはユニットテストに任される
- IoCとDIの関係
- IoCは制御の逆転
- Inversion of Controll
- DIは依存関係に対する制御の逆転と表現
- IoCは制御の逆転
- メールを送信するメソッドを例にする
- テストを支援するのが目的ではなく、
- オブジェクトがそ結合になることでテストしやすくなっているだけ
- DIコンテナラは必須ではない
- フレームワークはDIコンテナを利用している前提になっているだけで、必須ではない
- 依存関係をコンテナに定義しておくだけで、コンテナ側オブジェクトの依存関係を解決してくれる
- サービスロケーターではない
- サービスロケーターについて
- 依存性を解決するパターン
- DIと目的は同じだが手法が異なるデザインパターンとなる
DNSを制する者はインターネットを制す!DNS世界
- ドメイン名ハイジャックは恐ろしい
- 過去あった自称
- レジストラの問題が起点となるため、防ぎようがない
- なるべく早く気づいて対策を実施する
- NSchecker
- TLD権威サーバに登録されているNS情報をチェック
- 改ざんを検知するとコマンドが異常終了
- コマンドの結果からメール通知やほかの連携も可能
- Slack通知機能
- DNSプロトコル