LoginSignup
1
1

More than 3 years have passed since last update.

PHPカンファレンス関西2017 メモ

Last updated at Posted at 2017-07-17

Opening メモ

立ち見。よく覚えていない

PHP におけるDSL

松藤さん

@matsu_hide さん

DSL例

  • SQL
  • Shell
  • CSS

  • PHP ...?

    • 初めはWebSiteを作るためのフレームワーク
    • DSLから汎用プログラム言語に発展

DSL とは

Domain Specific Language

ドメイン特化型開発

  • SQL => RDBに特化した(領域を絞った)言語

問題領域(例)

「キャンペーン商品を含んでいる場合は合計額から10%値引き」

実践DSL

  • パーサ(構文解析)
  • エンジン
  • エディター

... 無理デスヨネー orz

  • パーサ → YAML
  • エンジン → ExpressionLanguage(Symfony)
  • エディター → まぁ無くていいでしょ。( IntelliJ でいいんじゃね? )

ExpressionLanguage

式をコンパイルして評価するエンジン

キャンペーン商品の割り引き:
  条件: カート.キャンペーン商品を含む()
  割引: カート.商品合計() * 0.1

↑「条件」「割引」にExpressionLanguageを使う

class Cart {
  public function 送料() { ... }
  public function キャンペーン商品を含む() { ... }
  public function 商品合計() { ... }
}

まとめ

DSLは小さな問題領域にフォーカスしたものである

ハッシュと暗号は違うよ

@tomzoh さん

なぜ?

お客さん「セキュリティ上、パスワードを保存しないで。
ベンダ「ではパスワードを暗号書いて保存!」
@tomzohさん「ハッシュだろ」

ハッシュとは

関数: md5(s) など。

PHPの配列ハッシュなどではない。

特徴

  • 固定長の出力
  • 同じデータを入れたら、同じハッシュ値がでる
  • 別のデータを入れたら、だいたい別のハッシュ値が出てくる
  • 不可逆
  • yum/aptではハッシュ値とかでファイルの整合性確認をする

第二部 ハッシュ値衝突

要は無限空間から有限空間にするので、衝突が起きる。

  • ハッシュの安全性

ハッシュ衝突の攻撃

  • sprintf('/user/%s', md5(1))
    • 推測可能
    • salt を混ぜこむ
      • sprintf('/user/%s', md5('12sda3' . 1))

ハッシュと暗号

  1. ハッシュ: 戻せない
  2. 暗号: 鍵があると戻せる

似たようなやつ

  1. 難読化
  2. Encode/Decode

つづき

  1. 連想配列 = Hashという理由

$a['k'] = 'b'; 内部マップで、'k' がハッシュ化して保持している

関心事と責務の話

takahashi shinichi

あれこれ

Microservices

  • 要は小さいアプリケーションを作っていってあれこれしよう

スマートエンドポイント

  • Restfulなリソース

ダムパイプ

  • RabbitMQなどの軽量メッセージ

分散ガバナンス

  • サービスごとの言語・DBの選択可能

DDD

本質はどこなの?という話。

関心事と責務の話

関心事=ある機能の振る舞い、目的のこと。

  • → 関心事を分離しよう。

責務 = そのクラスがするべき事

設計・コーディングの事

  • 設計思想を言語化、文章化
  • 思想に合うようにInterfaceだけガッツリ作る
  • 関心をもつのは相手のみ。
  • クラスの責務は広くなっていないか

Interface → 「抽象に依存する」といいます

今日の話は

PHP でもサーバレスしたい

渡辺さん

Serverless architecture

SERVERLESS CONF

ServerLess = 要はバックエンドのインフラを持つのは大変よね。

  • サーバ環境の変化
    • 最近は秒単位で。。。
  • オンプレだと、1から全部面倒見てた
  • SaaS だとベンダーの上で動かす。

特徴

  • サーバを意識しない
  • 簡単にスケールできる
    • ただ、めっちゃスケールする。
  • 利用料課金

事例

  • faultline

初めのオススメ

  • バッチ処理
    • cronの実行など
  • 運用の自動化

Hosting

Amazon Lambda は PHP 動かない。

Azure Functions は動く!

Azure Functions

  • めっちゃ安い
  • http トリガーで動かす
    • 他にも
  • Blue Green Deployment ができる
  • ServerLessでデプロイできないのがつらい
  • http Trigger は従量課金プランだとつらい

Logic Apps

  • IFTTT のレシピみたいなやつ

Application INside

  • new relic みたいなやつ?

Durable Functions

複数のfunctions が動かすことが出来るっぽい?

LT

メモってない。

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1