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

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

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

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

C4c161ae9eeeed8f161197410f7a228a?s=128

Kenichiro Kishida

October 12, 2019
Tweet

Transcript

  1. ඪ४ΠϯλʔϑΣʔεΛ࢖ͬͨ
 ΞϓϦέʔγϣϯ։ൃ 1)1ΧϯϑΝϨϯεԭೄ ,FOJDIJSP,JTIJEB !TJ[VIJLP

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

  3. None
  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
  5. None
  6. None
  7. None
  8. None
  9. None
  10. 4FMFDUPS"1* wRVFSZ4FMFDUPS wRVFSZ4FMFDUPS"MM https://www.w3.org/TR/selectors-api/#grammar

  11. None
  12. None
  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
  14. 03. &MPRVFOU 1%0

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

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

  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
  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
  20. https://speakerdeck.com/tanakahisateru/17ninatutafalseka

  21. w[FOEEJBDUPSPT˒ 
 JNQMFNFOUBUJPOTPGUIF143)551NFTTBHFJOUFSGBDFTBOE143)551NFTTBHF GBDUPSZJOUFSGBDFT wMFBHVFSPVUF˒
 'BTU143CBTFESPVUJOHBOEEJTQBUDIDPNQPOFOUJODMVEJOH143NJEEMFXBSF CVJMU POUPQPG'BTU3PVUF wOPSUIXPPETSPVUFS˒
 'BTUSPVUFSGPS143SFRVFTUIBOEMFST

    wTVOSJTFIUUQSPVUFS˒
 7FSZGBTU)551SPVUFSXJUIBOOPUBUJPOTTVQQPSUGPS1)1 CBTFEPO143BOE 143 wNJEEMFXBSFTSFRVFTUIBOEMFS˒
 143NJEEMFXBSFUPFYFDVUFSFRVFTUIBOEMFST 143
  22. https://github.com/sizuhiko/psr15- requesthandler-examples

  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
  24. w 3FRVFTU3FTQPOTF w 4UBUF.BOBHFNFOU w $PNQPOFOU%0.3FOEFSJOH

  25. w 'FUDI"1*
 IUUQTGFUDITQFDXIBUXHPSH w 'MVY
 IUUQTGBDFCPPLHJUIVCJPqVY w 8FC$PNQPOFOUT
 IUUQTXXXXFCDPNQPOFOUTPSHTQFDT

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

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

  28. https://www.webcomponents.org

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

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

  31. None
  32. w3%#$PMVNO5ZQF w1)1$MBTT "UUSJCVUF ʜ
 
 +40/9.- w5ZQF4DSJQU 5ZQF4ZTUFN JSON Schema

    XML Schema
  33. None
  34. w3%#$PMVNO5ZQF w1)1$MBTT "UUSJCVUF ʜ
 
 1SPUPDPM#VGGFST w5ZQF4DSJQU 5ZQF4ZTUFN

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

  36. https://github.com/sizuhiko/
 php-protocolbuffers-example

  37. ,"5"

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

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