Upgrade to Pro — share decks privately, control downloads, hide ads and more …

標準インターフェースを使った
アプリケーション開発/phpcon-okinawa-2019

 標準インターフェースを使った
アプリケーション開発/phpcon-okinawa-2019

PHPカンファレンス沖縄2019の登壇資料

フレームワーク使っていますか?
PHPで作るサーバーサイド、ブラウザで動作するWebフロントエンド、どちらの開発においてもフレームワークは開発の効率化(速度や品質)を強力にサポートしてくれます。
でもカンファレンスなどで発表される内容には、〇〇からXXに移行してみた、とかバージョンアップを頑張った、という話が多いなと感じることはないでしょうか?
もちろんフレームワークをまったく使わない開発というのは難しいかもしれません。
そこで標準インターフェースを意識することで少し遠回りになりますが、ライフサイクルの長いサービスのアプリケーションで壊滅的な技術困難を避けられる可能性が高まります。
このセッションでは、現時点で考えられるなかで、なるべくロックインせず効率的に開発するのに役立つ技術要素について紹介します。
サーバーサイド/フロントエンドのアプリケーション開発をしていく上での、1つの気づきになれば幸いです。
- 標準インターフェースとは?
- ライフサイクルの違い
- フレームワークとは
- SQLを意識する
- PHPでPSRを意識する
- Web標準を意識する
- 標準技術とコンポーネントがポータビリティを高める
- サーバーとクライアントの間でインターフェースを明確化する

Kenichiro Kishida

October 12, 2019
Tweet

More Decks by Kenichiro Kishida

Other Decks in Technology

Transcript

  1. ඪ४ΠϯλʔϑΣʔεΛ࢖ͬͨ

    ΞϓϦέʔγϣϯ։ൃ
    1)1ΧϯϑΝϨϯεԭೄ
    ,FOJDIJSP,JTIJEB
    !TJ[VIJLP

    View Slide

  2. ,FOJDIJSP,JTIJEB
    5PLZP +"1"/
    TJ[VIJLP!HNBJMDPN !TJ[VIJLP
    IUUQTHJUIVCDPNTJ[VIJLP
    IUUQCMPHPQFOUPLZPKQ

    View Slide

  3. View Slide

  4. )JTUPSZ
    ݱࡏ
    )551
    )5.-
    +4
    1)1
    42-
    .PKBWJ
    "HBWJ
    4ZNGPOZ $BLF1)1
    $* ;FOE
    :JJ
    4MJN 'VFM -BSWFM "VSB Y
    https://github.com/pmjones/php-history

    View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. 4FMFDUPS"1*
    wRVFSZ4FMFDUPS
    wRVFSZ4FMFDUPS"MM
    https://www.w3.org/TR/selectors-api/#grammar

    View Slide

  11. View Slide

  12. View Slide

  13. 03. 1%0
    w %PDUSJOF

    1SPQFM

    w 2VFSZ#VJMEFS
    w "DUJWF3FDPSE
    w "TTPDJBUJPOT
    w 1PMZNPSQIJD
    w FUD
    w GSPN1)1

    w 1SFQBSFE4UBUFNFOU
    w 'FUDI0CKFDU
    w %SJWFS4VQQPSU
    w FUD

    View Slide

  14. 03. &MPRVFOU

    1%0

    View Slide

  15. -FBSO42-3%#
    https://www.amazon.co.jp/dp/4297104083
    https://www.amazon.co.jp/dp/4774180661

    View Slide

  16. View Slide

  17. https://www.php-fig.org/psr/

    View Slide

  18. w #BTJD$PEJOH4UBOEBSE
    w $PEJOH4UZMF(VJEF
    w -PHHFS*OUFSGBDF
    w "VUPMPBEJOH4UBOEBSE
    w $BDIJOH*OUFSGBDF
    w )551.FTTBHF*OUFSGBDF


    "DDFQUFE143
    w $POUBJOFS*OUFSGBDF
    w )ZQFSNFEJB-JOLT
    w &WFOU%JTQBUDIFS
    w )551)BOEMFST
    w 4JNQMF$BDIF
    w )551'BDUPSJFT
    w )551$MJFOU

    View Slide

  19. w #BTJD$PEJOH4UBOEBSE
    w $PEJOH4UZMF(VJEF
    w -PHHFS*OUFSGBDF
    w "VUPMPBEJOH4UBOEBSE
    w $BDIJOH*OUFSGBDF
    w )551.FTTBHF*OUFSGBDF


    "DDFQUFE143
    w $POUBJOFS*OUFSGBDF
    w )ZQFSNFEJB-JOLT
    w &WFOU%JTQBUDIFS
    w )551)BOEMFST
    w 4JNQMF$BDIF
    w )551'BDUPSJFT
    w )551$MJFOU

    View Slide

  20. https://speakerdeck.com/tanakahisateru/17ninatutafalseka

    View Slide

  21. w[FOEEJBDUPSPT˒ 

    JNQMFNFOUBUJPOTPGUIF143)551NFTTBHFJOUFSGBDFTBOE143)551NFTTBHF
    GBDUPSZJOUFSGBDFT
    wMFBHVFSPVUF˒

    'BTU143CBTFESPVUJOHBOEEJTQBUDIDPNQPOFOUJODMVEJOH143NJEEMFXBSF CVJMU
    POUPQPG'BTU3PVUF
    wOPSUIXPPETSPVUFS˒

    'BTUSPVUFSGPS143SFRVFTUIBOEMFST
    wTVOSJTFIUUQSPVUFS˒

    7FSZGBTU)551SPVUFSXJUIBOOPUBUJPOTTVQQPSUGPS1)1CBTFEPO143BOE
    143
    wNJEEMFXBSFTSFRVFTUIBOEMFS˒

    143NJEEMFXBSFUPFYFDVUFSFRVFTUIBOEMFST
    143

    View Slide

  22. https://github.com/sizuhiko/psr15-
    requesthandler-examples

    View Slide

  23. w #BTJD$PEJOH4UBOEBSE
    w $PEJOH4UZMF(VJEF
    w -PHHFS*OUFSGBDF
    w "VUPMPBEJOH4UBOEBSE
    w $BDIJOH*OUFSGBDF
    w )551.FTTBHF*OUFSGBDF


    "DDFQUFE143
    w $POUBJOFS*OUFSGBDF
    w )ZQFSNFEJB-JOLT
    w &WFOU%JTQBUDIFS
    w )551)BOEMFST
    w 4JNQMF$BDIF
    w )551'BDUPSJFT
    w )551$MJFOU

    View Slide

  24. w 3FRVFTU3FTQPOTF
    w 4UBUF.BOBHFNFOU
    w $PNQPOFOU%0.3FOEFSJOH

    View Slide

  25. w 'FUDI"1*

    IUUQTGFUDITQFDXIBUXHPSH
    w 'MVY

    IUUQTGBDFCPPLHJUIVCJPqVY
    w 8FC$PNQPOFOUT

    IUUQTXXXXFCDPNQPOFOUTPSHTQFDT

    View Slide

  26. https://developer.mozilla.org/ja/docs/Web/API/Fetch_API/Using_Fetch

    View Slide

  27. https://facebook.github.io/flux/docs/in-depth-overview.html

    View Slide

  28. https://www.webcomponents.org

    View Slide

  29. https://wicg.github.io/import-maps/

    View Slide

  30. -FBSO8FC
    https://www.amazon.co.jp/dp/4873118042
    https://www.amazon.co.jp/dp/4774142042

    View Slide

  31. View Slide

  32. w3%#$PMVNO5ZQF
    w1)1$MBTT "UUSJCVUF ʜ


    +40/9.-
    w5ZQF4DSJQU
    5ZQF4ZTUFN
    JSON Schema
    XML Schema

    View Slide

  33. View Slide

  34. w3%#$PMVNO5ZQF
    w1)1$MBTT "UUSJCVUF ʜ


    1SPUPDPM#VGGFST
    w5ZQF4DSJQU
    5ZQF4ZTUFN

    View Slide

  35. https://github.com/protocolbuffers/protobuf-php

    View Slide

  36. https://github.com/sizuhiko/

    php-protocolbuffers-example

    View Slide

  37. ,"5"

    View Slide

  38. w՝୊Λղܾ͢ΔͨΊʹద੾ͳղܾࡦΛબ୒͠Α͏
    wඪ४Λ࢖͏͜ͱͰɺҠߦՄೳͳίʔυΛ૿΍͢͜ͱ͕Ͱ͖Δ
    wΠϯλʔϑΣʔεॏཁ
    wຊ೔͸঺հϝΠϯͩͬͨͷͰɺؾʹͳΔΩʔϫʔυ͕͋ͬͨΒ
    ௐ΂ͯ࢖ͬͯΈ͍ͯͩ͘͞
    ·ͱΊ

    View Slide

  39. WJTJUNZCMPHHJUIVC
    https://github.com/sizuhiko
    http://blog.open.tokyo.jp

    View Slide