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

Composerを速くするために必要だったもの /composer-keynote

Composerを速くするために必要だったもの /composer-keynote

PHPカンファレンス関西2016の基調講演です。

Hiraku NAKANO

July 16, 2016
Tweet

More Decks by Hiraku NAKANO

Other Decks in Technology

Transcript

  1. $PNQPTFSΛ଎͘͢ΔͨΊʹ
    ඞཁͩͬͨ΋ͷ
    PHPカンファレンス関西2016 基調講演
    @Hiraku

    View Slide

  2. ࣗຫΛ͠·͢ʂ

    View Slide

  3. IUUQHJUIVCBXBSETDPNΛ
    DPVOUSZKBQBO
    MBOHVBHF1)1
    ͰߜΓࠐΈ

    View Slide

  4. View Slide


  5. View Slide

  6. ͪͳΈʹੈքϨϕϧͩͱ

    View Slide

  7. View Slide

  8. ্ʹ͸্͕͍·͢ʜ

    View Slide

  9. վΊͯࣗݾ঺հ
    w த໺୓
    w IUUQTUXJUUFSDPN)JSBLV
    w IUUQTHJUIVCDPNIJSBL
    w (JU)VCελʔ਺೔ຊҰͷ1)1FS ࠷ۙಘͨশ߸

    w גࣜձࣾϝϧΧϦͷαʔόʔαΠυΤϯδχΞ
    w 1)1ྺ͸೥͙Β͍
    w झຯ͸$PNQPTFSΛ଎͘͢Δ͜ͱ

    View Slide

  10. ࠓ೔࿩͍ͨ͜͠ͱ
    w $PNQPTFSͷ֓ཁ
    w $PNQPTFS͕஗͍ཧ༝
    w $PNQPTFSΛ଎͘͢Δ
    w ຊ౰ʹඞཁͩͬͨ΋ͷ

    View Slide

  11. $PNQPTFSͷ֓ཁ
    PHPカンファレンス関西2016 基調講演
    第一部

    View Slide

  12. View Slide

  13. $PNQPTFS
    w 1)1ϥΠϒϥϦͷґଘؔ܎ղܾπʔϧ
    w ࠒʹ։ൃελʔτ OQNͷӨڹ

    w 1)1Ҏ߱ʹରԠ Λ੾Γࣺͯ

    w BVUPMPBEFSͷࣗಈੜ੒
    w ଟ༷ͳϦϙδτϦܗࣜʹରԠ
    w ϓϥάΠϯػߏ
    w IUUQTHFUDPNQPTFSPSH

    View Slide

  14. ύοέʔδϚωʔδϟͰ͸ͳ͍ͷʜʁ
    w ʰґଘؔ܎ղܾπʔϧʱͱԿނ໊͔৐Γ͕ͨΔ
    w ʮϏϧυͯ͠ݻΊͯ഑෍͢Δʯͱ͍͏

    ύοέʔδϯάػೳ͕΄ͱΜͲͳ͍
    w ֦ுͯ͠࡞ΕΔΑ͏ʹ͸ͳͬͯΔ͚Ͳɺ͋·Γ࢖ΘΕͯͳ͍

    View Slide

  15. $ curl -sL https://getcomposer.org/installer | php
    (実態はこんな感じ)
    $ curl -O composer https://getcomposer.org/download/1.1.3/composer.phar
    ࢖͍͸͡ΊΔͷ͸؆୯
    IUUQTHFUDPNQPTFSPSHEPXOMPBE
    QIBSϑΝΠϧΛҰݸμ΢ϯϩʔυ͢Δ͚ͩɻ
    JOTUBMMFSܦ༝Λਪ঑ʢϋογϡ஋ͷݕূͳͲΛͯ͘͠ΕΔʣ

    View Slide

  16. $ composer
    ______
    / ____/___ ____ ___ ____ ____ ________ _____
    / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
    / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
    \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
    /_/
    Composer version 1.1.2 2016-05-31 19:48:11
    Usage:
    command [options] [arguments]
    Options:
    -h, --help Display this help message
    -q, --quiet Do not output any message
    -V, --version Display this application version
    --ansi Force ANSI output
    --no-ansi Disable ANSI output
    -n, --no-interaction Do not ask any interactive question
    --profile Display timing and memory usage information
    --no-plugins Whether to disable plugins.
    -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory.
    -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
    DPNQPTFSίϚϯυ

    View Slide

  17. 対話形式でプロジェクトをセットアップ
    $ composer init
    ライブラリの追加
    $ composer require 'vendor/package'
    ライブラリのアップデート
    $ composer update
    composer.jsonに従ってまとめてインストール
    $ composer install
    Α͘࢖͏αϒίϚϯυ

    View Slide

  18. $PNQPTFS༻ޠ
    w ύοέʔδίʔυͷ·ͱ·ΓɺϥΠϒϥϦͷ࠶ར༻୯Ґ
    w ϦϙδτϦෳ਺ͷύοέʔδΛ·ͱΊͨ΋ͷ
    w Ҏ߱ɺ্هͭͷ୯ޠ͸$PNQPTFS༻ޠͱͯ͠࢖͍·͢

    View Slide

  19. $PNQPTFSͷத৺ࢥ૝

    View Slide

  20. l͢΂ͯ͸ύοέʔδͰ͋Δz

    View Slide

  21. ʁ

    View Slide

  22. ͦͷੲɺ1&"3ͱ͍͏΋ͷ͕͋ͬͨͦ͏ͳ
    w ͔͠͠QFBSQIQOFUʹͳ͍΋ͷ͕Ұഋ͋ͬͨ
    w ໺ྑQFBSϦϙδτϦ
    w [JQϑΝΠϧ഑෍
    w 8FCΞϓϦέʔγϣϯ͸1&"3ϥΠϒϥϦͰ͸ͳ͍

    View Slide


  23. PEARパッケージ
    PEARパッケージ
    PEARパッケージ
    Webアプリ
    Webアプリ
    Webアプリ
    ϥΠϒϥϦΛ࢖ͬͯ
    Կ͔Λ࡞Δଆ
    ϥΠϒϥϦఏڙଆ

    View Slide

  24. $PNQPTFS͸ʮ࢖͏͚ͩʯΛڐ͞ͳ͍

    View Slide

  25. $ composer init
    ...
    $ ls
    composer.json
    => このjsonファイルを持つ = composerパッケージ
    JOJU͸ʮύοέʔδ࡞੒ʯͷίϚϯυ

    View Slide

  26. $PNQPTFS͸શ෦ύοέʔδͱΈͳ͢
    w ϥΠϒϥϦ
    w ϑϨʔϜϫʔΫ
    w 1)1
    w ֦ுϞδϡʔϧ
    w $PNQPTFSࣗ਎
    w ͋ͳ͕ͨ࡞ͬͨ8FCΞϓϦέʔγϣϯ
    composer.jsonを持っていればパッケージだし、
    composer.jsonを持っていなくてもパッケージにできる

    View Slide


  27. Composer

    パッケージ
    Webアプリ
    ϥΠϒϥϦΛ࢖ͬͯ
    Կ͔Λ࡞Δଆ
    ϥΠϒϥϦఏڙଆ
    Composer

    パッケージ
    Composer

    パッケージ
    ライブラリ使いたい
    な。。

    View Slide

  28. Composer

    パッケージ
    Webアプリ
    (Composerパッケージ)
    ϥΠϒϥϦΛ࢖ͬͯ
    Կ͔Λ࡞Δଆ
    ϥΠϒϥϦఏڙଆ
    Composer

    パッケージ
    Composer

    パッケージ
    自分がComposerパッケージ
    にならないと他のComposer
    パッケージを使えない

    View Slide

  29. ࡞Δਓͱ࢖͏ਓɺ
    ͦ͜ʹҧ͍ͳͲͳ͍ʂ

    View Slide

  30. ʜͰ΋ɺͳͥͦΜͳઃܭΛબΜͩͷ͔ʁ

    View Slide

  31. ౷Ұ֓೦͸෺ࣄΛγϯϓϧʹ͢Δ
    w 6/*9͸ϑΝΠϧͰग़དྷ͍ͯΔ
    w 8FC͸ϦιʔεͰग़དྷ͍ͯΔ
    w 3%#͸ू߹͔Βग़དྷ͍ͯΔ
    w ΦϒδΣΫτࢦ޲ݴޠ͸ΦϒδΣΫτ͔Βग़དྷ͍ͯΔ

    View Slide

  32. ύοέʔδಉ࢜ͷؔ܎ੑͰશ෦ॻ͚Δ
    w SFRVJSF ඞཁ

    w SFRVJSFEFW ։ൃ͚࣌ͩඞཁ

    w TVHHFTU ͋ͬͨΒػೳ͕૿͑ΔΑ

    w DPOqJDU ಉ࣌ʹಈ͔ͤͳ͍Α

    w SFQMBDF ஔ͖׵͑ΒΕΔ

    w QSPWJEF ػೳΛఏڙ͢Δ

    composer.jsonに記述。
    すべてパッケージなので、

    この記述だけで全部やりくりする。

    View Slide

  33. ͦͯ͠ԿΑΓ΋ʜ

    View Slide

  34. ײછྗ

    View Slide

  35. ୭͔͕ύοέʔδΛ࢖͏ͱ
    ύοέʔδ͕৽ͨʹݸ࡞ΒΕΔ
    package
    package
    package
    package
    package
    package
    便利なpackage
    package
    package

    View Slide

  36. DPNQPTFSύοέʔδΛҰൠެ։͢Δͷ͸
    ඇৗʹ؆୯
    w ৹ࠪෆཁ
    w όʔδϣϯͷࣗಈߋ৽ (JU)VC࿈ܞ

    View Slide

  37. 1BDLBHFTSFHJTUFSFE

    7FSTJPOTBWBJMBCMF

    1BDLBHFTJOTUBMMFE
    TJODF

       
    ͪͳΈʹ

    1&"3ొ࿥ύοέʔδ

    ͸

    View Slide

  38. l͢΂ͯ͸ύοέʔδͰ͋Δz
    w ࠓͰͦ͜௝͘͠ͳ͍͕ɺ1)1ίϛϡχςΟʹ͜ͷ֓೦Λ༌ೖ͠
    ͨޭ੷͸େ͖͍
    w ͓ͦΒ͘OQNΠϯεύΠϠ
    w 1)1ίϛϡχςΟͷ੒௕ΛՃ଎ͤͨ͞

    View Slide

  39. $PNQPTFSͷத৺ࢥ૝
    もう一つ

    View Slide

  40. lதԝϦϙδτϦΛ͋ͯʹ͠ͳ͍z

    View Slide

  41. $PNQPTFS։ൃ౰࣌ͷࠞಱ
    w 1&"3͸͕͋ͬͨɺ໺ྑύοέʔδͩΒ͚
    w ಠࣗ1&"3ϦϙδτϦఏڙ೿
    w [JQஔ͍ͯΔ͚ͩ೿
    w HJUIVC೿

    View Slide

  42. ʮશϥΠϒϥϦ࢖͑ΔΑ͏ʹ͠ͳ͍ͱ໾
    ʹཱͨͳ͍ʂʯ

    View Slide

  43. ґଘؔ܎ղܾ͸ΫϥΠΞϯταΠυͰ
    શ෦ߦ͏
    packagist.org
    github.com
    bitbucket.org
    どこかのftp
    サーバー
    いい感じの
    ライブラリリスト

    View Slide

  44. 1BDLBHJTU͸ґଘؔ܎ղܾΛશ͘͠ͳ͍
    w KTPO͕ஔ͍ͯ͋Δ͚ͩ
    w શ෦μ΢ϯϩʔυͯ͠
    DPNQPTFS͕ղܾ͢Δ
    w ύοέʔδݕࡧ͢Βੲ͸
    ͳ͔ͬͨ

    View Slide

  45. ࠓࢥ͑͹͜ͷબ୒͕ɺύϑΥʔϚϯε

    ໰୊ΛҾ͖ى͖͔͚ͬͩͬͨ͜͢ͷͰ͢

    View Slide

  46. ୈҰ෦ͷ·ͱΊ
    w $PNQPTFS͸ύοέʔδͱ͍͏౷Ұ֓೦Λ1)1քʹ࣋ͪࠐΜͩ
    w Ғۀʂʂ
    w ࡞Δਓͱ࢖͏ਓͷนΛͿͬյͨ͠
    w ౰࣌ͷঢ়گ͔Βɺ෼ࢄϦϙδτϦΛલఏͱͨ͠࡞Γʹͳͬͨ

    View Slide

  47. $PNQPTFS͕஗͍ཧ༝
    PHPカンファレンス関西2016 基調講演
    第二部

    View Slide

  48. $ composer create-project laravel/laravel test --profile
    ...
    $PNQPTFSͰ-BSBWFMΛ৽نΠϯετʔϧ

    View Slide

  49. $ composer create-project laravel/laravel test --profile
    ...
    [269.36s]
    $PNQPTFSͰ-BSBWFMΛ৽نΠϯετʔϧ

    View Slide

  50. (*'Ξχϝࡱͬͨ ഒ଎࠶ੜ

    View Slide

  51. View Slide

  52. ஍ཧతͳภΓ
    w JTTVFͰʮ஗͍ʯͱจ۟Λݴ͍ͬͯΔਓ͕ͨͪݶΒΕΔ
    w தࠃɺϕτφϜɺؖࠃɺ೔ຊɺ͋ͨΓ
    w Ϥʔϩούͱ๺ถ͸จ۟Λݴ͏ਓ͕গͳ͍
    w ஗͍ͬͯॻ͘ͱʮԶ͸஗͘ײ͡ͳ͍ʯͱ͍͏ΫιϦϓ͕

    ඈΜͰ͘Δʢ஌ΒΜ͕ͳʣ

    View Slide

  53. ͳͥɺΞδΞͰ஗͍ͷ͔

    View Slide

  54. DPNQPTFS͕΍ͬͯΔ͜ͱུ֓
    QBDLBHJTUPSH͔Βύοέʔδ৘ใΛऔͬͯ͘Δ
    ґଘؔ܎Λղܾ͠ɺඞཁͳύοέʔδΛ֬ఆͤ͞Δ
    ओʹ
    HJUIVCDPN͔ΒύοέʔδຊମΛऔͬͯ͘Δ
    ద੾ʹ഑ஔΛߦ͍ɺBVUPMPBEQIQΛ࡞੒͢Δ

    View Slide

  55. HJUIVCDPN
    QBDLBHJTUPSH

    View Slide

  56. ԕ͍

    View Slide

  57. ωοτϫʔΫ଎౓ͷͭͷࢦඪ
    w εϧʔϓοτʢଠ͞ʣ
    w ୯Ґ࣌ؒ͋ͨΓૹ৴Ͱ͖Δσʔλྔ
    w ճઢΛଋͶΕ͹্ݶͳ͘ଠ͘Ͱ͖Δ
    w ϨΠςϯγʢ஗Ԇʣ
    w ߦͬͯؼͬͯ͘Δ·Ͱͷ࣌ؒ
    w ޫͷ଎౓ʹ੍໿͞ΕΔʢޫϑΝΠόʔͷதΛ఻ΘΔ଎౓ʣ
    復習しましょう

    View Slide

  58. ڑ཭ʹൺྫͯ͠஗͍
    ϨΠςϯγʹහײͳ࡞ΓΛ͍ͯ͠Δ͔Β

    View Slide

  59. ޫͷ଎౓ͷݶք
    w ਅۭதͷޫͷ଎౓͕໿ສLNT
    w ޫϑΝΠόʔதͷޫͷ଎౓͕ສLNT
    w ૹ৴͢ΔσʔλྔʹؔΘΒͣɺඞͣ͜ͷ఻೻࣌ؒ͸͔͔Δ

    View Slide

  60. HJUIVCDPN͔Βͷ

    [JQμ΢ϯϩʔυͷ৔߹

    View Slide

  61. ໿8000km

    View Slide

  62. ύέοτͷҠಈڑ཭
    w θϩ͔Β)5514௨৴͢Δͱɺύέοτͷԟ෮͕ճൃੜ͢Δ
    w 5$1ͷϋϯυγΣΠΫͰԟ෮
    w 5-4ͷϋϯυγΣΠΫͰԟ෮
    w )551ຊମͰԟ෮
    w ̍ճϦμΠϨΫτ͢Δͱߋʹഒ શ෦Ͱԟ෮

    w BQJHJUIVCDPN͔ΒDPEFMPBEHJUIVCDPNʹϦμΠϨΫτͯ͠Δ

    View Slide

  63. ໿8000km
    Λ8ԟ෮

    View Slide

  64. ஍ٿ3.2प෼ 128,000km

    =஍ٿ3.2प෼
    https://flic.kr/p/7icRw2

    View Slide

  65. composer͸͜ΕΛ

    શzipʹରͯ͠ߦ͍ͬͯΔ

    View Slide

  66. ͦΕͧΕ͕
    ஍ٿ3.2प෼

    View Slide

  67. update࣌͸͜Εʹ
    packagist.orgͱͷ௨৴΋௥Ճ

    View Slide

  68. ύοέʔδݸθϩ͔ΒΠϯετʔϧ࣌
    ͷڑ཭֓ࢉ
    w QBDLBHJTUPSHͷKTPOϑΝΠϧμ΢ϯϩʔυ
    w )5514 ԟ෮

    w )551 ԟ෮


    w ยಓສLN ϑϥϯεͩͱͯ͠

    w HJUIVCDPNͷ[JQμ΢ϯϩʔυ
    w )5514ϦμΠϨΫτ ԟ෮

    w ยಓઍLN αϯϑϥϯγείͩͱͯ͠

    View Slide

  69. ύοέʔδݸθϩ͔ΒΠϯετʔϧ࣌
    ͷڑ཭֓ࢉ
    LN✕


    LN✕ ✕

    ສLN
    ஍ٿप
    Ψϥεதͷޫ଎׵ࢉͰඵ
    w தܧػثͳͲଞʹ΋஗ԆཁҼ͸͋ΔͷͰɺࡶʹഒ͙Β͍͔͔Δͱ͢ΔͱͦΕ
    ͚ͩͰ෼ඵͱ͔ʹͳΔ
    w ͔͠΋଴͍ͬͯΔؒɺDPNQPTFS͸Կ΋͠ͳ͍ʢγϯάϧεϨουʣ

    View Slide

  70. ஍ٿ3.2प෼ ύοέʔδ50ݸͰ
    ஍ٿ220प෼
    https://flic.kr/p/7icRw2

    View Slide

  71. ͦΕͰ΋ɺޫ͕΋ͬͱ଎͔ͬͨΒɺ
    Composer͸஗͘ͳΒͳ͔ͬͨ

    View Slide

  72. ޫ͕஗͍͔ΒComposer͕஗͍ͷͩ

    View Slide

  73. ʜͱ͍͏ͷ͸൒෼ωλͳΜ͚ͩͲɺ
    ϨΠςϯγͷӨڹ͸࣮ࡍେ͖͍

    View Slide

  74. $PNQPTFSͷ࣮૷ͷ໰୊
    w pMF@HFU@DPOUFOUTIUUQTετϦʔϜϥούʔͷར༻
    w )551࣌୅ͷ࣮૷
    w ίωΫγϣϯΛຖճ࡞Γͳ͓͢ΊͬͪΌඇޮ཰
    w )551ͷޮ཰Խख๏Λશ͘࢖͍ͬͯͳ͍

    View Slide

  75. தԝϦϙδτϦΛ͋ͯʹ͠ͳ͍
    w QBDLBHJTUPSH͸ґଘؔ܎ղܾΛ͠ͳ͍
    w ֤஍͔ΒϦϙδτϦ৘ใΛ͔͖ूΊͯ͘Δ
    w QBDLBHJTUଆͰ͋Δఔ౓ґଘؔ܎Λղܾ͠ɺ·ͱΊͯૹͬͯ͘
    ΕΕ͹΋͏গ͠ϚγʹͳΔͷ͕ͩɻɻ

    View Slide

  76. ୈೋ෦ͷ·ͱΊ
    w $PNQPTFSͷ஗͞͸௨৴ͷϨΠςϯγʹහײͳ࡞Γ͔ͩΒ
    w ΞδΞ͸஍ཧతʹෆརͰ͋Γɺಛʹ஗͍
    w ஍ٿप΋ͯͯ͠෼ఔ౓͔͔͔͠Βͳ͍ͬͯɺ

    ٯʹ͍͢͝ΑͶ

    View Slide

  77. ʰͳͥ୭΋௚͞ͳ͍ͷʁʱ
    • ϝΠϯ։ൃऀ͸ϕϧΪʔͷਓ
    • ஗͞Λ࣮ײͰ͖ͳ͍͠ɺ஫ྗ͞Εͯͳ͍
    • ௚ͦ͏ͱͨ͠ਓ͸΋ͪΖΜࠓ·Ͱ΋͍͚ͨͲɺͳ࣮ͥݱ͠ͳ͔ͬ
    ͨͷ͔ɺ͜Ε͔Βઆ໌͠·͢

    View Slide

  78. $PNQPTFSΛ଎͘͢Δ
    PHPカンファレンス関西2016 基調講演
    第三部

    View Slide

  79. ωοτϫʔΫ଎౓ͷͭͷࢦඪ
    w εϧʔϓοτʢଠ͞ʣ
    w ୯Ґ࣌ؒ͋ͨΓૹ৴Ͱ͖Δσʔλྔ
    w ճઢΛଋͶΕ͹্ݶͳ͘ଠ͘Ͱ͖Δ
    w ϨΠςϯγʢ஗Ԇʣ
    w ߦͬͯؼͬͯ͘Δ·Ͱͷ࣌ؒ
    w ޫͷ଎౓ʹ੍໿͞ΕΔʢޫϑΝΠόʔͷதΛ఻ΘΔ଎౓ʣ
    復習しましょう

    View Slide

  80. ϨΠςϯγ͸Լ͛ΒΕͳ͍ ΋͏े෼଎͍

    w ύέοτͷҠಈڑ཭Λ୹͘͠ɺӨڹΛආ͚Δ͔͠ͳ͍
    w ͨͱ͑͹ɺແବͳԟ෮ΛݮΒ͢
    w εϧʔϓοτʹ͸༨༟͕͋Δ͜ͱ͕ଟ͍
    w Ұؾʹ·ͱΊͯૹΔ΂͖

    View Slide

  81. DPNQPTFSΛ଎͘͢ΔͨΊʹ
    w QBDLBHJTUPSH΍HJUIVCDPNΛۙ͘ʹ࣋ͬͯ͘Δ
    w ແବͳύέοτԟ෮ΛݮΒ͢
    w ଴ͪ࣌ؒΛ༗ޮ׆༻͢Δ ฒྻμ΢ϯϩʔυ

    w ޫΛ଎͘͢ΔˡແཧΆ

    View Slide

  82. DPNQPTFSΛ଎͘͢ΔͨΊʹ
    w QBDLBHJTUPSH΍HJUIVCDPNΛۙ͘ʹ࣋ͬͯ͘Δ
    w ແବͳύέοτԟ෮ΛݮΒ͢
    w ଴ͪ࣌ؒΛ༗ޮ׆༻͢Δ ฒྻμ΢ϯϩʔυ

    w ޫΛ଎͘͢ΔˡແཧΆ

    View Slide

  83. View Slide

  84. QBDLBHJTUPSHͷϛϥʔΛ࡞ͬͨ
    ೥຤͝Ζd

    w QBDLBHJTUͷશσʔλΛ෼͝ͱʹίϐʔ
    w ϥΠηϯε໰୊Λආ͚ΔͨΊʹ5SBO1SPYZ͸࢖͍ͬͯͳ͍
    w DPOUBDU!QBDLBHJTUPSHʹϝʔϧͯ͠ڐ୚औͬͨ
    w ͘͞Β714$MPVE'MBSFͰ഑৴
    w ͨͿΜࠓͷ਺ेഒΞΫηε͕དྷͯ΋ฏؾ

    View Slide

  85. $ composer config -g repos.packagist
    composer https://packagist.jp
    ϛϥʔͷ༗ޮԽઃఆ͸ίϚϯυҰߦ

    View Slide

  86. QBDLBHJTUKQͰ଎͘ͳΔ෦෼
    QBDLBHJTUPSH͔Βύοέʔδ৘ใΛऔͬͯ͘Δ
    ґଘؔ܎Λղܾ͠ɺඞཁͳύοέʔδΛ֬ఆͤ͞Δ
    ओʹ
    HJUIVCDPN͔ΒύοέʔδຊମΛऔͬͯ͘Δ
    ద੾ʹ഑ஔΛߦ͍ɺBVUPMPBEQIQΛ࡞੒͢Δ
    w QBDLBHJTUPSHͱͷ௨৴͕ڑ཭ʹͳͬͨͱ͢Δͱ

    ύοέʔδݸͰ஍ٿप෼஍ٿप·ͰݮΔ

    View Slide

  87. ஍ٿ3.2प෼
    ஍ٿ220प

    ˣ

    ஍ٿ160प
    https://flic.kr/p/7icRw2

    View Slide

  88. ͪͳΈʹpackagist͸ߋ৽ස౓͕ߴ͗ͯ͢ɺ
    ϓϩΩγํࣜͷΩϟογϡ͸ඍົ
    ϛϥʔํ͕ࣜϕλʔ

    View Slide

  89. HJUIVCͷϛϥʔ͸೉͍͠
    w ·ͣαΠζ͕େ͖͍
    w QBDLBHJTUPSHͷ+40/ͷதʹ63-͕ϋʔυίʔυ
    w ϛϥʔ͢Δ͚ͩ͡Όͳͯ͘ॻ͖׵͑ͳ͚Ε͹ͳΒͳ͍
    w ෼Ͱಉظ͕ऴΘΒͳ͘ͳΔ
    w ϒϥϯνQVTI͞ΕΔ౓ʹ[JQϑΝΠϧ͕࡞ΒΕΔ
    w ׂʹ͋Θͳ͍

    View Slide

  90. DPNQPTFSΛ଎͘͢ΔͨΊʹ
    w QBDLBHJTUPSH΍HJUIVCDPNΛۙ͘ʹ࣋ͬͯ͘Δ
    w ແବͳύέοτԟ෮ΛݮΒ͢
    w ଴ͪ࣌ؒΛ༗ޮ׆༻͢Δ ฒྻμ΢ϯϩʔυ

    w ޫΛ଎͘͢ΔˡແཧΆ
    packagist.jpで一部対応

    View Slide

  91. DPNQPTFSΛ଎͘͢ΔͨΊʹ
    w QBDLBHJTUPSH΍HJUIVCDPNΛۙ͘ʹ࣋ͬͯ͘Δ
    w ແବͳύέοτԟ෮ΛݮΒ͢
    w ଴ͪ࣌ؒΛ༗ޮ׆༻͢Δ ฒྻμ΢ϯϩʔυ

    w ޫΛ଎͘͢ΔˡແཧΆ
    packagist.jpで一部対応

    View Slide

  92. ࢖͓͏ʂ,FFQ"MJWF
    w )551ͷίωΫγϣϯΛ࢖͍·Θ͢
    w 5$1ͱ5-4ͷϋϯυγΣΠΫΛΧοτԟ෮෼અ໿Ͱ͖Δ
    w ϦμΠϨΫτΛফͤ͹ߋʹԟ෮અ໿Ͱ͖Δ
    w ϛϥʔΛ࢖͍ͬͯͨΒ஍ٿपप

    View Slide

  93. ஍ٿ3.2प෼
    ஍ٿ220प

    ஍ٿ160प
    ↓

    ஍ٿ21प
    https://flic.kr/p/7icRw2

    View Slide

  94. DPNQPTFSΛ଎͘͢ΔͨΊʹ
    w QBDLBHJTUPSH΍HJUIVCDPNΛۙ͘ʹ࣋ͬͯ͘Δ
    w ແବͳύέοτԟ෮ΛݮΒ͢
    w ଴ͪ࣌ؒΛ༗ޮ׆༻͢Δ ฒྻμ΢ϯϩʔυ

    w ޫΛ଎͘͢ΔˡແཧΆ
    packagist.jpで一部対応

    View Slide

  95. ฒྻԽͷޮՌ
    w ҰؾʹૹͬͯҰؾʹฦͯ͠΋Β͑͹ɺҠಈ࣌ؒΛ࡟ݮͰ͖Δ
    w ฒྻͳΒ෼ͷʹͳΔͷͰ
    w ஍ٿप஍ٿप ࣮࣭

    View Slide

  96. ஍ٿ3.2प෼
    ஍ٿ220प

    ஍ٿ160प
    ↓

    ஍ٿ21प

    ࣮࣭஍ٿ2प
    https://flic.kr/p/7icRw2

    View Slide

  97. ͜͜·Ͱ΍Ε͹଎͘ͳΔ͸ͣ

    View Slide

  98. Keep-Alive, ฒྻԽ…
    ͦ͏ɺਖ਼ղ͸ݟ͑ͯΔΜͰ͢Α

    View Slide

  99. ʰComposerຊମΛ௚ͤ͹͍͍͡ΌΜʱ

    View Slide

  100. ಴࠳ͨ͠1VMM3FRVFTU*TTVFͷࢁ

    View Slide

  101. ࠇྺ࢙

    View Slide

  102. DPNQPTFSຊମվળͷน
    w ௨৴पΓͷṖػೳ͕ଟ্͍ɺ෼ׂ͞Ε͍ͯͳͯ͘࠶࣮૷͢Δ͠
    ͔ͳ͍
    w QSPYZ HJUIVC HJUMBCͷೝূରԠ
    w μ΢ϯϩʔυਐḿͷදࣔ
    w Ϣʔβʔ໊ύεϫʔυΛೖྗͤͯ͞ϦτϥΠ
    w EFHSBEFE.PEF *1Wڧ੍ʁ

    w ͜ΕͰޓ׵ੑอͭͷ͸͔֬ʹ໘౗͍͘͞

    View Slide

  103. ͱࢥͬͯͨΒ͜Μͳ࿩͕

    View Slide

  104. composerϓϥάΠϯͰ

    curlԽͰ͖ΔΒ͍͠…

    View Slide

  105. ϓϥάΠϯͳΒຊମʹ

    Ϛʔδ͞Εͳͯ͘΋

    ࢼͯ͠΋Β͑Δ

    ࣮੷΋ੵΊΔ

    View Slide

  106. (ͱ͍͏Θ͚Ͱ࡞ͬͨ)

    View Slide

  107. IJSBLQSFTUJTTJNP

    View Slide

  108. View Slide

  109. QSFTUJTTJNP ೥݄

    w DPNQPTFSϓϥάΠϯ
    w D63-Ͱμ΢ϯϩʔυ͢ΔΑ͏ʹஔ͖׵͑Δ
    w ,FFQ"MJWFΛ༗ޮԽ͢Δ
    w DPEFMPBEHJUIVCDPNΛ͍͖ͳΓऔΓʹߦ͘

    ϦμΠϨΫτ࡟ݮ

    w Ұ෦DVSM@NVMUJͰฒྻμ΢ϯϩʔυ͢Δ

    View Slide

  110. $ composer global require 'hirak/prestissimo'
    あとは勝手にinstall/update時に発動して速くなる
    Πϯετʔϧ͸ίϚϯυҰߦ

    View Slide

  111. ͪͳΈʹฒྻԽΑΓ΋,FFQ"MJWFͷํ͕
    ޮՌେ͖͍
    l1BSBMMFM*OTUBMMzͱ͔ॻ͍ͨͷ͸

    όζΒͤΔͨΊͷ௼Γ

    View Slide

  112. (*'Ξχϝࡱͬͨ ഒ଎࠶ੜ

    View Slide

  113. ޙ೔ஊ
    (2016೥1݄26೔)

    View Slide

  114. View Slide

  115. ͳΜ͔GitHubελʔ਺͕500
    ௒͑ͦ͏ͳΜ͚ͩͲ…

    View Slide

  116. View Slide

  117. View Slide

  118. ϓϥάΠϯͳΒຊମʹ

    Ϛʔδ͞Εͳͯ͘΋

    ࢼͯ͠΋Β͑Δ

    ࣮੷͸ੵΊͨ

    View Slide

  119. $PNQPTFSຊମ΁΋ɺ1VMM3FRVFTUத
    w ͳ͔ͳ͔Ϛʔδ͞Εͳ͍ͷͰɺ͍͍ͶԼ͍͞ʂʂ
    w IUUQTHJUIVCDPNDPNQPTFSDPNQPTFSQVMM

    View Slide

  120. DPNQPTFSΛ଎͘͢ΔͨΊʹ
    w QBDLBHJTUPSH΍HJUIVCDPNΛۙ͘ʹ࣋ͬͯ͘Δ
    w ແବͳύέοτԟ෮ΛݮΒ͢
    w ଴ͪ࣌ؒΛ༗ޮ׆༻͢Δ ฒྻμ΢ϯϩʔυ

    w ޫΛ଎͘͢ΔˡແཧΆ
    packagist.jpで一部対応
    prestissimoで解決

    View Slide

  121. ୈࡾ෦ͷ·ͱΊ
    w ޫ͸଎͘Ͱ͖ͳ͍͚Ͳɺ
    w ϛϥʔΛ࡞ͬͨΓ
    w ,FFQ"MJWFͰແବͳԟ෮ΛݮΒͨ͠Γ
    w ฒྻԽͯ͠Ͳ͔ͬͱૹΔΑ͏ʹ͢Ε͹
    w ஍ٿपͯͨ͠ͷ͕प෼ͷ࣌ؒͰΑ͘ͳͬͯ଎͘ͳΔΑ

    View Slide

  122. ຊ౰ʹඞཁͩͬͨ΋ͷ
    PHPカンファレンス関西2016 基調講演
    最終部

    View Slide

  123. ೔ຊҰͷ1)1FSʂͱ͔
    ஍ٿपΛप·Ͱઅ໿ʂͱ͔
    ތେͳ͜ͱΛ࿩͖͚ͯͨ͠Ͳ

    View Slide

  124. ࣮͸ͦΜͳʹ೉͍͜͠ͱ͸
    ͍ͯ͠ͳ͍

    View Slide

  125. ٕज़తʹࠔ೉ͩͬͨʁ
    w DVSM@NVMUJ͸1)1ʹੲ͔Β͋Δ͠
    w Կ͔࠶࣮૷ͨ͠Θ͚Ͱ΋ͳ͍
    w ,FFQ"MJWFͳΜͯԿ೥લͩΑʂʂ࣌୅͸)551ͩΖʂʂ
    w લ͔Β͋ͬͨ࠷దԽػೳΛ$PNQPTFSʹద༻͚ͨͩ͠

    View Slide

  126. ਖ਼͍͠΍Γํ͔ͩͬͨʁ
    w ϨΠςϯγ͕໰୊ͩͱࢥͬͨͷ͸צʢଌఆͯ͠ͳ͍ʣ
    w ςετۦಈͯ͠ͳ͍͠ճ΋θϩ͔Βॻ͖௚ͯ͠Δ
    w ϓϥάΠϯܗࣜͰͷ࣮૷͸ɺॏʹμ΢ϯϩʔυॲཧΛ

    ىಈ͍ͯͯ͠ແବ͕ଟ͍

    View Slide

  127. ͔͔࣌ؒΓ͗͢Ͱ͋Δ
    w ஗͍ͳʔͬͯݴ͍࢝Ί͔ͯΒ

    ೥ܦͬͯΔ
    w ೥݄͝Ζˠ

    View Slide

  128. ͖ͬͱɺ࣮૷Ͱ͖ͨਓ͸ଞʹ΋͍ͨ͸ͣ

    View Slide

  129. Ͱ΋ɺ୭΋΍Βͳ͔ͬͨ

    View Slide

  130. QSFTUJTTJNPͷ೉͔ͬͨ͠ͱ͜Ζ
    w $PNQPTFSͷࣄ৘ʹ߹ΘͤΔ
    w ϢʔβʔͷͳΔ΂͘ଟ͘ΛٹΘͳ͚Ε͹ͳΒͳ͍
    w 1)1͸ରԠ
    w 8JOEPXTϢʔβʔ΋ݟࣺͯͳ͍
    w ೝূ΍5SBO1SPYZͷαϙʔτ
    w ઌਐత͗͢ΔϥΠϒϥϦ΋࢖͑ͳ͍

    View Slide

  131. D63-Λ࢖͏ͷ΋ָ͡Όͳ͍Α
    w D63-͸େ఍ͷ؀ڥͰ࢖͑Δ͕ʜ
    w MJCDVSMͷόʔδϣϯҧ͍
    w 1)1ࣗମͷόʔδϣϯҧ͍
    w ૊Έ߹Θ͍ͤͯΔ҉߸ԽϥΠϒϥϦͷछྨ
    w /44 4FDVSF5SBOTQPSU 0QFO44-FUD
    w ৽͠Ίͷػೳ͸࢖͑Δͱ͸ݶΒͳ͍

    View Slide

  132. QSFTUJTTJNPͷࢥ૝
    w શػೳΛ࠶࣮૷͢Δͷ͸ແཧ
    w ಈ͔ͳ͔ͬͨΒݩͷ࣮૷Λ࢖͑͹͍͍
    w ͙Β͍ͷਓ͕଎͘ͳΕ͹े෼
    w ͦͷ୅ΘΓ࣮֬ʹΠϯετʔϧՄೳʹ͢Δ໰୊Λى͜͞ͳ͍

    View Slide

  133. ͜ͷམͱ͠ॴΛ୳Δͷʹ೥͔͔ͬͨ

    View Slide

  134. ೉͍͜͠ͱΛ͍ͯ͠ͳ͍͚Ͳ
    • ΋ͬͱ΋ޮՌͷ͋Δํ๏Λߟ͑Δ
    • μϝͩͬͨΒଞͷํ๏Λࢼ͠ଓ͚Δ
    • ͖͋ΒΊͳ͍
    =>
    ٕज़ͱ͸ͪΐͬͱҧ͏

    View Slide

  135. ͪΐͬͱ୤ઢ͠·͢

    View Slide

  136. 1)1ͬͯͲ͏͍͏ݴޠͰ͚ͨͬ͠ʁ

    View Slide

  137. #include
    int main(void)
    {
    printf("Hello, world!");
    return 0;
    }
    $ͷ)FMMP8PSME

    View Slide

  138. package main
    import "fmt"
    func main() {
    fmt.Print("Hello, World!\n")
    }
    (Pͷ)FMMP8PSME

    View Slide

  139. print "Hello, world!";
    1FSMͷ)FMMP8PSME

    View Slide

  140. Hello, world!
    1)1ͷ)FMMP8PSME
    ?!

    View Slide

  141. $ echo Hello, world! > hello.php
    $ php hello.php
    Hello, world!
    1)1͸)FMMPXPSMEΛੈքҰ؆୯ʹॻ͚Δ

    View Slide

  142. $ echo Hello, world! > hello.php
    $ php -S 0.0.0.0:3000
    (ブラウザで
    http://localhost:3000/hello.php
    が読める)
    ͦͷ··8FCΞϓϦʹͳΔ

    View Slide

  143. ҟৗͳݴޠ
    w )FMMPXPSME͔Β൒ܘNҎ಺͚ͩҟৗʹ؆୯
    w ಛԽ͗͢͠͡ΌͶʁ
    w ;ͭ͏൚༻ੑΛߟ͑ͯͦΜͳͱ͜Ζʹ஫ྗ͠ͳ͍

    View Slide

  144. ؆୯ͳ8FCΞϓϦΛɺ
    ຊ౰ʹ
    ؆୯ʹ࡞ΕΔ

    View Slide

  145. ࢲ͸ͨͩ໰୊Λղܾ͍͚ͨͩ͠ͳΜͰ͢ɻ໰୊Λղܾͯ͠ɼ
    ͦͷ݁ՌͲ͏ͳ͔ͬͨɼࣗ෼͕࡞ͬͨ΋ͷͰਓʑͷੜ׆͕
    Ͳ͏มΘ͔ͬͨΛݟಧ͚Δ͜ͱɼͦΕ͕໨తͳΜͰ͢ɻ
    3BTNVT-FSEPSG

    IUUQHJIZPKQOFXTSFQPSU
    QBHF

    View Slide

  146. ҒେͳϓϩάϥϚ͸
    ͍͍ͩͨࣅͨΑ͏ͳ͜ͱΛ

    Ұ౓͸ൃݴ͍ͯ͠Δ

    View Slide

  147. ্͔࢘ΒΫϏʹ͞Εͳ͍͏ͪʹ࢓ࣄΛย෇͚
    ΒΕΕ͹ɺͦΕ͸ʮਖ਼͍͠ʯ1FSMεΫϦϓτ
    -BSSZ8BMM

    1SPHSBNNJOH1FSM

    View Slide

  148. ࢲ͸໰୊Λղͨ͘Ίʹ$Λઃܭͨ͠ͷͰ͋
    ΓɺԿ͔Λ࣮ূ͢ΔͨΊʹ࡞ͬͨͷͰ͸ͳ͍
    #KBSOF4USPVTUSVQ
    5IF%FTJHOBOE&WPMVUJPOPG$

    View Slide

  149. "໰୊Λղܾ͔ͨͬͨ͠"

    View Slide

  150. Ҋ֎ɺͦ͏͍͏΋ͷ΋ଟ͍ͷͰ͸
    w 1)1͸8FCΞϓϦΛ؆୯ʹ࡞ΔͨΊʹੜ·Εͨ
    w $PNQPTFS͸౰࣌ͷ1)1ͰϥΠϒϥϦ؅ཧΛ͢ΔͨΊʹ

    ੜ·Εͨ
    w มͳͱ͜Ζ͍ͬͺ͍͋Δ͠ɺ%*4ΒΕΔ͚Ͳɺ

    ౰ॳͷ໰୊͸ղܾ͍ͯ͠Δ

    View Slide

  151. צҧ͍͍ͯͨ͠
    w ͣͬͱɺ༏Εͨιϑτ΢ΣΞ͸εʔύʔΤϯδχΞ͕࡞͍ͬͯ
    Δͷͩͱࢥ͍ͬͯͨ
    w ͋ΒΏΔ໰୊͸ɺ͍͔ͭώʔϩʔ͕΍͖ͬͯͯ

    ղܾ͞ΕΔͷͩͱࢥ͍ͬͯͨ
    w ˠ೥ܦͬͯ΋ղܾ͠ͳ͔ͬͨ

    View Slide

  152. ͨͿΜຊ౰͸
    w Կ͔໰୊͕͋ͬͯɺͭΒͯ͘ٽ͍͍ͯΔਓ͕͍ͯɺͦͷதʹ
    w ໰୊ʹཱͪ޲͔͏ਓ
    w ໰୊ʹཱͪ޲͔Θͳ͍ਓ
    ͕͍Δ͚ͩ

    View Slide

  153. ໰୊ʹ௚໘͍ͯ͠Δਓ͔͠ղܾͰ͖ͳ͍
    私は遅く感じない
    僕はPHPを書いてない
    キャッシュしてるから平気
    ࿩͕௨͡ͳ͍ʂʂ

    View Slide

  154. ຊ౰ʹඞཁͩͬͨͷ͸
    ໰୊ͱ޲͖߹͏͜ͱ

    View Slide

  155. ໰୊Λղ͘ਓʹେ͖ͳҧ͍͸ͳ͍
    w ͍·ࣗ෼͕Ͱ͖Δ͜ͱΛ΍Δ
    w ݁Ռੜ·Εͨ΋ͷ͕ෆ֨޷Ͱ΋ɺ

    ໰୊Λղ͔ͳ͍ΑΓ͸ΑͬΆͲྑ͍
    w Ή͠Ζɺ໰୊Λղ͍͍ͯΔ͔ΒҒେͳΤϯδχΞʹͳΕΔΜͩ
    ͱࢥ͏

    View Slide

  156. ໰୊ʹ޲͖߹͍ͬͯΕ͹
    w ͙͢ʹ͸ղܾͰ͖ͳ͍͔΋͠Εͳ͍͚Ͳ
    w ೥ܦͬͯղܾͷࢳޱ͕Έ͔ͭΔ͜ͱ΋͋Δ͠
    w தʹ͸ධՁͯ͘͠ΕΔਓ΋͍Δ͠
    w ೔ຊҰʹͳͬͨΓͱ͔
    w جௐߨԋΛཔ·ΕͨΓͱ͔
    w ͨ·ʹ͸͍͍͜ͱ͋ΔΑʂʂ

    View Slide

  157. ࡞Δਓͱ࢖͏ਓ
    ͦ͜ʹҧ͍ͳͲͳ͍ʂʂ

    View Slide

  158. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide