Pro Yearly is on sale from $80 to $50! »

プログラマがコードを書きながら考えること / #ginzarails

48a913a2e3bb5e68aae6f73079648e84?s=47 Junichi Ito
August 29, 2019

プログラマがコードを書きながら考えること / #ginzarails

銀座Rails #12の発表で使用したスライドです。

コードはこちら。
https://github.com/JunichiIto/disney-hotel-crawler

当日使用した動画はBOOTHで販売中です。
https://jnito.booth.pm/items/1551521

無料のお試し版もあります。
https://youtu.be/-iTiW5eQMBk

銀座Rails #12
https://ginza-rails.connpass.com/event/139740/

48a913a2e3bb5e68aae6f73079648e84?s=128

Junichi Ito

August 29, 2019
Tweet

Transcript

  1. ϓϩάϥϚ͕ίʔυΛ ॻ͖ͳ͕Βߟ͑Δ͜ͱ גࣜձࣾιχοΫΨʔσϯ ҏ౻३Ұ / @jnchito 2019.8.29 ۜ࠲Rails #12 ʙ෼Ͱ࡞Δʁ8FCΫϩʔϥʔ։ൃʙ

  2. ಥવͰ͕͢ɺΈͳ͞Μɻ ؾʹͳΓ·ͤΜ͔ʁ

  3. ͜Μͳ͜ͱɺؾʹͳΓ·ͤΜ͔ʁ • ʮ˓˓͞Μ͕ॻ͍ͨίʔυʯ͸GitHubͰݟΔ͜ͱ͕Ͱ͖Δ • Ͱ΋ɺʮ˓˓͞Μ͕ίʔυΛॻ͘աఔʯΛ໨ʹ͢Δ͜ͱ͸໓ଟʹͳ͍ • ͲΜͳεϐʔυͰίʔυΛॻ͍ͯΔΜͩΖ͏ʁ • ͲΜͳπʔϧ΍ςΫχοΫΛ࢖ͬͯίʔυΛॻ͍ͯΔΜͩΖ͏ʁ •

    ͦ΋ͦ΋ɺ಄ͷதͰ͸ͲΜͳ͜ͱΛߟ͑ͯΔΜͩΖ͏ʁ • ͡Ό͋ɺ˓˓͞Μͷྡͷ੮Ͱݟͤͯ΋Β͏ʁ͍΍͍΍ϜϦʂ
  4. ˓˓͞Μ͸͖ͬͱɺ͜͏ʢͱ͍͏զʑͷউखͳໝ૝ʣ ↑ߴ଎ͰλΠϐϯά͢ΔೣͷΞχϝgif ↑ߴ଎ͰλΠϐϯά͞Ε͍ͯ͘Ξχϝgif

  5. ͦ͜Ͱɾɾɾ

  6. ࠓ೔͸ʮ๻͕ίʔυΛॻ͘աఔʯΛ Ұྫͱ͓ͯ͠ݟͤ͠·͢ʂʂ ʢͪΐͬͱஏ͔͍͚ͣ͠Ͳɾɾɾʣ

  7. ͯ͞ɺ࿩͸มΘΓ·͕͢

  8. ࠓ೥ͷ݄ʹ͋ͬͨग़དྷࣄ • Ո଒ͰσΟζχʔϥϯυ΁ߦ͘͜ͱʹͳͬͨͷͰϗςϧΛ༧໿ͨ͠ • ࣄ৘͕͋ͬͯ೔ఔΛมߋ͢Δඞཁ͕ग़͖ͯͨʢ॓ധ೔ͷ2िؒલʣ • ͕ɺ΋͏ϗςϧͷۭ͖෦԰͕ͳ͍ʂʢ೔ؼΓϓϥϯ͔͠ͳ͍ʣ • ຖ೔Կ౓΋ۭ͖෦԰ΛνΣοΫΛ͢Δͷ͸େม •

    ͦ͏ͩɺ͜Μͳ໘౗ͳ͜ͱ͸ίϯϐϡʔλʹ΍ΒͤΑ͏ • ͱ͍͏͜ͱͰɺࣗ࡞ͷΫϩʔϥʔϓϩάϥϜΛ։ൃ
  9. ݕࡧͯ͠΋ग़ͯ͘Δͷ͸ ೔ؼΓϓϥϯ͚ͩ ࢀߟɿ݄ͷঢ়گ͸͜ΜͳΠϝʔδ

  10. ͲΜͳϓϩάϥϜͩͬͨͷʁ • ఆظతʹϗςϧͷ༧໿ϖʔδʹΞΫηε͢Δʢݕࡧ৚݅͸ݻఆʣ • ৽͍͠ϓϥϯ͕ग़͖ͯͨΒϝʔϧͰ௨஌͢Δ ࢖༻͢ΔϑϨʔϜϫʔΫɺ࣮ߦ؀ڥͳͲ - Ruby on Railsʢ

    - Heroku + Heroku Schedulerʢ10෼͓͖ʹϓϩάϥϜΛىಈʣ - Mechanize gemͰεΫϨΠϐϯά • खͬऔΓૣ͞Λ༏ઌͯ͠ɺ࢖͍׳Εٕͨज़ʢRailsͱHerokuʣΛબ୒
  11. ࠓ͔Β͓࿩͢͠Δ͜ͱ • 6݄ʹ࡞ͬͨΫϩʔϥʔϓϩάϥϜΛ΋͏Ұ౓θϩ͔Β࡞Γ·͢ • ͲΜͳ͜ͱΛߟ͑ͳ͕ΒίʔυΛॻ͍ͨͷ͔આ໌͠ͳ͕Β࡞Γ·͢ • 6݄ʹॻ͍ͨίʔυ͸΄ͱΜͲهԱʹ࢒͍ͬͯ·ͤΜ • ϋϚͬͨΓϛεͬͨΓ͢Δͱ͜Ζ΋શ෦͓ݟͤ͠·͢ •

    30෼ͰϥΠϒίʔσΟϯάʂʂ͔ͨͬͨ͠ΜͰ͕͢ɺಈըʹ͠·ͨ͠
  12. ಈըΛݟͳ͕Βߟ͑ͯ΄͍͜͠ͱ • ʮࣗ෼ͱ͸͕͜͜ҧ͏ʯͱࢥͬͨ఺͸ʁ - ͦͷൃ૝͸ͳ͔ͬͨʂࣗ෼΋΍ͬͯΈΑ͏ - ͍΍ɺͦ͜͸͜͏͍͏΍Γํͷํ͕͍͍ͷͰ͸ʁ • ٯʹʮࣗ෼ͱಉͩ͡ʯͱࢥͬͨ఺͸ʁ •

    Έͳ͞Μ͕ײͨ͜͡ͱΛΞϯέʔτ or ࠙਌ձͰڭ͍͑ͯͩ͘͞ - ڵຯਂ͍ճ౴͸ޙ೔ϒϩάͰ࢖Θͤͯ΋Β͏͔΋͠Ε·ͤΜ
  13. ಈըʹؔ͢Δલ৘ใ • ಈըͷ௕͞͸໿30෼ɻഒ଎࠶ੜͳͷͰɺগ͠ૣޱͰ͢ • ࡱӨ೔͸8݄4೔Ͱɺ6݄౰࣌ͱ͸ҎԼͷ఺Ͱঢ়گ͕ҟͳΓ·͢ - 6݄ʹ๻͕ر๬͢Δ೔͸ɺ೔ؼΓϓϥϯ͔͠ͳ͔ͬͨ - 8݄ʹͲͷ೔΋ۭ͖෦԰͕͋ͬͨʢ׬શʹ͸࠶ݱͰ͖ͳ͔ͬͨʣ •

    ༧໿ϖʔδ͸GETύϥϝʔλͰݕࡧ৚݅ΛࢦఆͰ͖Δ͜ͱΛ֬ೝࡁΈ • ʮ৽ϓϥϯ͔Ͳ͏͔ʯΛԿͰ൑அ͢Δ͔ʁΛߟ͑Δͱ͜Ζ͔Β։࢝ - ઃܭͷ్தͳͷͰɺίʔυ͸·ͩ1ߦ΋ॻ͍͍ͯ·ͤΜ
  14. ໔੹ࣄ߲ • ΫϩʔϦϯά΍εΫϨΠϐϯά͸ܐࣄࣄ݅ʹൃల͢Δ͜ͱ͕͋Γ·͢ • ͜ͷߨԋΛࢀߟʹͨ͠ϓϩάϥϜͰଛ֐͕ൃੜͯ͠΋ɺචऀ͸Ұ੾
 ੹೚Λෛ͍·ͤΜ ࢀߟʮԬ࡚ࢢཱதԝਤॻؗࣄ݅ - Wikipediaʯ Ԭ࡚ࢢཱதԝਤॻؗࣄ݅ʢ͓͔͖͟͠ΓͭͪΎ͏͓͏ͱ͠ΐ͔Μ͚͡Μʣ͸ɺ2010೥3݄ࠒʹԬ࡚

    ࢢཱਤॻؗͷଂॻݕࡧγεςϜʹΞΫηεো֐͕ൃੜ͠ɺར༻ऀͷҰਓ͕ୁั͞Εͨࣄ݅Ͱ͋Δɻ ར༻ऀʹ߈ܸͷҙਤ͸ͳ͘ɺ·ͨɺࠜຊతͳݪҼ͕ਤॻؗଆͷγεςϜͷෆ۩߹ʹ͋ͬͨ͜ͱ͔Β ࿦ٞΛݺΜͩɻୁั͞Εͨਓ෺͕औௐ΂ͷޙɺLibrahackͱ͍͏αΠτΛ্ཱͪ͛ͯղઆΛͨ͜͠ͱ ͔ΒɺLibrahackࣄ݅ͱ΋ݺ͹ΕΔɻ https://ja.wikipedia.org/wiki/Ԭ࡚ࢢཱதԝਤॻؗࣄ݅
  15. ͦΕͰ͸ಈըΛͲ͏ͧʂ

  16. ▶ಈըΛ࠶ੜதʜ ಈը͸#005)ͰൢചதͰ͢ˠIUUQTKOJUPCPPUIQNJUFNT ແྉͷ͓ࢼ͠൛΋͋Γ·͢ˠIUUQTZPVUVCFJ5J8F2.#L

  17. ಈը͸͜͜·ͰͰ͢

  18. ͜ͷ͋ͱɺӡ༻Λ࢝ΊΔ·Ͱʹ΍ͬͨ͜ͱ • ࠓճ࡞ͬͨϝιουΛىಈ͢ΔrakeλεΫΛ࡞੒ • HerokuσϓϩΠʹ޲͚ͨίʔυͷमਖ਼ ˍ σϓϩΠ࣮ߦ • Heroku SchedulerΛઃఆ͠ɺ10෼͓͖ʹrakeλεΫΛىಈ

    • ॳճͷىಈͰʮ೔ؼΓϓϥϯʯ͕ϝʔϧ௨஌͞ΕΔ͜ͱΛ֬ೝ
  19. ίʔυ͸ͪ͜Β https://github.com/JunichiIto/disney-hotel-crawler

  20. Ͱɺ݁ہ༧໿Ͱ͖ͨͷʁ

  21. ͸͍ɺͰ͖·ͨ͠ʂʂ

  22. ࣮ࡍʹӡ༻ͯ͠ಘΒΕֶͨͼ • Ωϟϯηϧྉ͕ൃੜ͢Δ೔͕ۙͮ͘ͱɺٸʹۭ͖෦԰͕૿͑࢝ΊΔ • ͭ·ΓɺΈΜͳΩϟϯηϧྉΛڪΕͯΩϟϯηϧ࢝͠ΊΔ • ϗςϧଆ΋ಉ͡ϓϥϯΛͪΐͬͱͣͭ஋Լ͛ͨ͠Γ͢Δʢζϧ͍ʣ • ࠷ऴతʹ͸ʮ͜ΕͳΒຬ଍ʯͱ͍͏ϓϥϯͰ༧໿Ͱ͖·ͨ͠✌

  23. ͱ͜ΖͰ

  24. ͓ؾ͖͍͚ͮͨͩͨͩΖ͏͔ʁ

  25. ಈըΛ։࢝ͨ͠ͱ͖ͷ࣌ࠁ ಈը͕ऴྃͨ͠ͱ͖ͷ࣌ࠁ ɿʙɿ ʹ໿࣌ؒ൒ʂʂ

  26. ಈըΛࡱͬͯΈͯΘ͔ͬͨ͜ͱ ಈըΛࡱΔલͷ๻ • Ұ౓࡞ͬͨϓϩάϥϜ΍͠ɺ30෼͔40෼͙Β͍Ͱ࡞ΕΔ΍Ζ • ౰೔ʹϥΠϒίʔσΟϯάͰ΋શવ͑͑Μ΍͚Ͳͳʔʢ༨༟ʣ ಈըΛࡱͬͨޙͷ๻ • ͜Εɺ౰೔ϥΠϒίʔσΟϯάͯͨ͠ΒϠό͔ͬͨΘɾɾɾ ಋ͖ग़͞Εͨਅཧ

    ϓϩάϥϚͷݟੵ΋Γ͸ɺ͍ͭ΋͋ͯʹͳΒͳ͍
  27. ·ͱΊ

  28. ൚༻తʹ࢖͑ͦ͏ͳಈը಺ͷϙΠϯτ • ؆୯ͳίʔυͰಈ࡞֬ೝ͔ͯ͠Βɺ໨తͷίʔυΛॻ͘ • ςετίʔυΛ࢖ͬͯ܁Γฦ͠ಈ࡞֬ೝ͢Δ • ެࣜͷ৘ใΛ༏ઌతʹࢀর͢ΔʢQiita౳ʹཔΔͷ͸ͦͷ࣍ʣ • σόοΨΛ࢖ͬͯσόοά͢ΔʢRubyMineΛ࢖͏ͱ͘͢͝ϥΫʣ •

    ίϛοτͷલʹdiffΛνΣοΫ͢Δʢࣗ෼ͰίʔυϨϏϡʔ͢Δʣ
  29. ؾʹͳΓ·ͤΜ͔ʁʢ๯಄ͷ࣭໰ʣ • ʮ˓˓͞Μ͕ॻ͍ͨίʔυʯ͸GitHubͰݟΔ͜ͱ͕Ͱ͖Δ • Ͱ΋ɺʮ˓˓͞Μ͕ίʔυΛॻ͘աఔʯΛ໨ʹ͢Δ͜ͱ͸໓ଟʹͳ͍ • ͲΜͳεϐʔυͰίʔυΛॻ͍ͯΔΜͩΖ͏ʁ • ͲΜͳπʔϧ΍ςΫχοΫΛ࢖ͬͯίʔυΛॻ͍ͯΔΜͩΖ͏ʁ •

    ͦ΋ͦ΋ɺ಄ͷதͰ͸ͲΜͳ͜ͱΛߟ͑ͯΔΜͩΖ͏ʁ
  30. ಈըΛݟͯΘ͔ͬͨͱࢥ͍·͕͢ɺ

  31. ԿͰ΋஌͍ͬͯΔਓ΍ ·ͬͨ͘ϛεΒͳ͍ਓ͸͍·ͤΜ

  32. ͜Μͳਓ΋ʢͨͿΜʣ͍ͳ͍ ↑ߴ଎ͰλΠϐϯά͢ΔೣͷΞχϝgif ↑ߴ଎ͰλΠϐϯά͞Ε͍ͯ͘Ξχϝgif

  33. ࠓճͷൃදͰԿ͔৽͍͠ʮؾ͖ͮʯΛ ࣋ͪؼͬͯ΋Β͑ͨΒ޾͍Ͱ͢

  34. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ !KODIJUP CMPHKOJUPDPN Ξϯέʔτͷճ౴΋͓଴͍ͪͯ͠·͢ʂ