新人教育とPython / PyCon mini Hiroshima 2015

6fa3836d10d691125749472297cf516a?s=47 7pairs
November 22, 2015

新人教育とPython / PyCon mini Hiroshima 2015

6fa3836d10d691125749472297cf516a?s=128

7pairs

November 22, 2015
Tweet

Transcript

  1. ৽ਓڭҭͱPython ௕୩৔ ५໵ 2015-11-22 PyCon mini Hiroshima 2015

  2. ࣗݾ঺հ • ௕୩৔ ५໵ʢ͸ͤ͹ ͡ΎΜ΍ʣ • Twitterɿ@7pairs • GitHubɿhttps://github.com/7pairs •

    גࣜձࣾΞΠϞόΠϧॴଐ • ΞυωοτϫʔΫ୲౰ͷΤϯδχΞ • C#ɺJavaScript…ͳͲ • લ৬·Ͱ15೥ؒSIerʹۈ຿ • ࠓ೔ͷൃද͸ͦͷࠒͷ͓࿩
  3. ΞδΣϯμ • ͳͥ৽ਓڭҭͰPythonΛ࠾༻ͨ͠ͷ͔ • PythonͰڭҭ͕Ͳ͏มΘ͔ͬͨ • PythonͰߨࢣ͕ͨͪͲ͏มΘ͔ͬͨ • ഑ଐ͞Ε͔ͯΒͷҧ͍͸͋ͬͨͷ͔ •

    ·ͱΊ
  4. ͳͥ৽ਓڭҭͰPythonΛ࠾༻ͨ͠ͷ͔

  5. ڭҭͷલఏ • ೖࣾ௚ޙͷ৽ਓ͞Μʹର͢Δϓϩάϥϛϯάڭҭ • ର৅ʹ͸ϓϩάϥϛϯάະܦݧऀ΋ؚ·ΕΔ • ܦݧऀ͸ڭҭΛૣΊʹ੾Γ্͛Δ͜ͱ΋… • ڭҭظؒ͸1ʙ3ϲ݄ʢ೥౓ʹΑͬͯࠩҧ͋Γʣ •

    ฒߦͯ͠΄͔ͷݚम΋࣮ࢪ͢Δ • Ϛφʔݚमɺ৘ใॲཧجૅɺσʔλϕʔεͳͲ
  6. ڭҭͷ໨త • ઌഐͷࢦಋԼͰۀ຿͕͜ͳͤΔΑ͏ʹͳΔ͜ͱ • ϓϩάϥϛϯάʹඞཁͳߟ͑ํΛ਎ʹ͚ͭΔ͜ͱ • ݴޠͦͷ΋ͷͷशख़ʹ͸ͩ͜ΘΒͳ͍ • ۀ຿ͰؔΘΔػձͷଟ͍Web։ൃʹͭͳ͍͛ͨ •

    ݴޠΛ໰ΘͣඞཁͱͳΔ஌͕ࣝଟ͍ • WebΞϓϦͷ࢓૊ΈɺηΩϡϦςΟͳͲ
  7. ࠾༻͢Δݴޠͷ৚݅ ʮWindows؀ڥͰ։ൃͰ͖ͯ…ʯ ʢPythonͩ…ʣ ʮ৑௕ͳهड़Λ͢Δඞཁ͕ͳͯ͘…ʯ ʢPythonͩ…ʣ ʮ೉͍͠ύϥμΠϜͷݴޠͰ͸ͳͯ͘…ʯ ʢPythonͩ…ʣ ʮWebͱͷ਌࿨ੑ͕ߴ͍ݴޠͰ…ʯ ʢPythonͩ…ʂʣ

  8. ͦΕ·Ͱͷ৽ਓڭҭ • ࣮຿Λҙࣝͯ͠JavaͰ࣮ࢪ͢Δ͜ͱ͕ଟ͔ͬͨ • JavaͰ͸ଟ͘ͷ͜ͱΛಉ࣌ʹֶͿඞཁ͕͋Δ • ϓϩάϥϛϯάͷߟ͑ํ • ΦϒδΣΫτࢦ޲ •

    Javaݴޠͷจ๏
  9. Java൛Hello World // ͓·͡ͳ͍ͱͯ͠ਐΊ͟ΔΛಘͳ͍߲໨͕ଟ͍ public class HelloWorld { public static

    void main(String[] args) { System.out.println("hello, world"); } }
  10. Java൛Hello Worldͷ͓·͡ͳ͍ (1) // Ϋϥε public class HelloWorld { public

    static void main(String[] args) { System.out.println("hello, world"); } }
  11. Java൛Hello Worldͷ͓·͡ͳ͍ (2) // ϝιου public class HelloWorld { public

    static void main(String[] args) { System.out.println("hello, world"); } }
  12. Java൛Hello Worldͷ͓·͡ͳ͍ (3) // ΞΫηεम০ࢠ public class HelloWorld { public

    static void main(String[] args) { System.out.println("hello, world"); } }
  13. Java൛Hello Worldͷ͓·͡ͳ͍ (4) // ੩తʢϝιουʣ public class HelloWorld { public

    static void main(String[] args) { System.out.println("hello, world"); } }
  14. Java൛Hello Worldͷ͓·͡ͳ͍ (5) // ໭Γ஋ public class HelloWorld { public

    static void main(String[] args) { System.out.println("hello, world"); } }
  15. Java൛Hello Worldͷ͓·͡ͳ͍ (6) // Ҿ਺ public class HelloWorld { public

    static void main(String[] args) { System.out.println("hello, world"); } }
  16. Java൛Hello Worldͷ͓·͡ͳ͍ (7) // ഑ྻʢ΋͘͠͸Մม௕Ҿ਺ʣ public class HelloWorld { public

    static void main(String[] args) { System.out.println("hello, world"); } }
  17. Java൛Hello Worldͷ͓·͡ͳ͍ (8) // ύοέʔδ public class HelloWorld { public

    static void main(String[] args) { System.out.println("ΤϦνΧɺ͓͏ͪʹؼΔʂ"); } }
  18. ͓·͡ͳ͍ͷޮೳ • ͓·͡ͳ͍ͱׂͯ͠Γ੾ΕΔͷ΋࠽ೳ • ख͕ࢭ·ͬͯ͠·͏ਓ΋͍Δ • ͓·͡ͳ͍͹͔ΓͰ͸ࣸܦ͔ΒಘΔ΋ͷ͕ͳ͘ͳΔ • ͦͷ࣌఺ͰͷཧղΛ์غ͍ͯ͠Δ

  19. ੜΈग़͞ΕΔࠞಱ • ϑΝΠϧ໊ͱҟͳΔ໊લͷpublicΫϥε • ಉҰϑΝΠϧ಺ʹ2ͭͷpublicΫϥε • ಉҰΫϥε಺ʹ2ͭͷmainϝιου • ΤϯτϦϙΠϯτͷͭ΋Γͷmain2ϝιου

  20. Python3൛Hello World // ߨࢣʹ༏͍͠Hello World print("hello, world")

  21. Pythonͷ࠾༻ʹΑͬͯظ଴͞ΕΔ͜ͱ • Ϋϥε͕ඞͣ͠΋ඞཁͳ͍ • ؔ਺͕ඞͣ͠΋ඞཁͳ͍ • ର࿩ϞʔυͳΒϑΝΠϧ͢Βඞཁͳ͍ • ࠷ॳͷ͓·͡ͳ͍ͰඍົͳۭؾʹͳΔ͜ͱ΋ͳ͍

  22. Α͋͘Δ൓࿦ͱճ౴ (1) Q. ࣮ࡍʹۀ຿Ͱ࢖͏ݴޠͰڭҭ͢Ε͹ɺͦͷ͋ͱεϜʔ ζʹ࣮຿ʹೖΕΔͷͰ͸ʁ A. ্࢘ͷࢦࣔͩͱใࠂॻʹॻ͍ͯྑ͍ͷͰ͋Ε͹ɺۀ຿ Ͱ΋ͬͱ΋࢖ΘΕ͍ͯΔJava1.4Ͱڭҭ͠·͢ɻ

  23. Α͋͘Δ൓࿦ͱճ౴ (2) Q. Pythonͱ͍͏ݴޠ͸ฉ͍ͨ͜ͱ͕ͳ͍͕ɺͦΜͳϚΠ φʔͳݴޠͰֶशʹࢧো͸ͳ͍ͷ͔ʁ A. ฐࣾ੡ಠࣗϑϨʔϜϫʔΫΑΓ͸޿͘࢖ΘΕ͍ͯΔݴ ޠͳͷͰɺࣗश΋༰қͩͱߟ͍͑ͯ·͢ɻ

  24. PythonͰڭҭ͕Ͳ͏มΘ͔ͬͨ

  25. ಈతܕ෇͚ݴޠͰ͋Δ • ίʔυΛॻ͘ͱ͖ʹࢼߦࡨޡ͠΍͍͢ • ҰํͰઃܭͷେ੾͕͞఻ΘΓͮΒ͍໘΋… • ίϨΫγϣϯ͕࢖͍΍͍͢ • "1" +

    1 ͕ 2 ʹͳΒͳ͍ఔ౓ͷݫີ͞Λ࣋ͭ
  26. ର࿩ϞʔυΛ͍࣋ͬͯΔ • ༷ʑͳ৔໘Ͱେ׆༂ • ྫΛઆ໌͢Δͱ͖ • ৽ਓ͞Μ͕ࢼߦࡨޡ͢Δͱ͖ • ߨࢣ͕ͬͦ͜Γݴޠ࢓༷Λ֬ೝ͢Δͱ͖ •

    PythonΛ࠾༻ͨ͜͠ͱͰڭҭͷਐΊํ͕มΘͬͨ
  27. Webͱͷ਌࿨ੑ͕ߴ͍ • Python͚ͩͰWebΞϓϦΛ࡞Δ͜ͱ͕Ͱ͖Δ • JavaͰڭҭ͍ͯͨ͠ࠒͷ͜ͱ͸ࢥ͍ग़ͨ͘͠΋ͳ͍… • TomcatΛೖΕͯ… • Մಡੑͷ௿͍JSPΛॻ͍ͯ… •

    มߋͷͨͼʹ࠶ىಈΛͯ͠…
  28. ςΩετΤσΟλͰॆ෼ʹίʔσΟϯάͰ͖Δ • ඇྗͳϚγϯͰ΋ͳΜͱ͔ਐΊΔ͜ͱ͕Ͱ͖Δ • JavaͰڭ͍͑ͯͨࠒͷ͜ͱ͸ࢥ͍ग़ͨ͘͠΋ͳ͍… • Eclipseͷىಈʹ5෼͔͔Δ… • ίʔσΟϯάதʹExcelΛ։͘ͱݻ·Δ…

  29. PythonͰߨࢣ͕ͨͪͲ͏มΘ͔ͬͨ

  30. ֶश΁ͷҙཉ͕ੜ·Εͨ • ਓʹڭ͑ΔͨΊʹ͸·ͣཧղ͠ͳ͚Ε͹ͳΒͳ͍ • ৽ਓ͞Μʹ࣭໰͞ΕͨΒ౴͑ͳ͚Ε͹ͳΒͳ͍ • ΋ͪΖΜӕΛڭ͑ΔΘ͚ʹ͸͍͔ͳ͍ • ৽͍͜͠ͱΛֶͿָ͠͞Λࢥ͍ग़ͨ͠

  31. ӳޠʹର͢Δ఍߅ײ͕࿨Β͍ͩ • ެࣜυΩϡϝϯτΛ཭ΕΔͱ೔ຊޠ৘ใ͕গͳ͍ • ֎෦ϥΠϒϥϦͷυΩϡϝϯτ • Stack OverflowͳͲ • ӳޠΛಡ·͟ΔΛಘͳ͍ঢ়گʹ

    • ௥͍ࠐ·ΕΕ͹ҙ֎ͱͳΜͱ͔ͳΔ
  32. ۀ຿ʹPythonΛऔΓೖΕΔಈ͖ • πʔϧྨΛPythonʹஔ͖׵͑Δ • Perl͔Βͷஔ͖׵͑ • γΣϧεΫϦϓτ͔Βͷஔ͖׵͑ • VBA͔Βͷஔ͖׵͑ •

    ϓϩμΫτͰͷಋೖ͸ϋʔυϧ͕ߴ͔ͬͨ…
  33. ഑ଐ͞Ε͔ͯΒͷҧ͍͸͋ͬͨͷ͔

  34. Πϯσϯτ͸Ғେͩͬͨ • ϒϩοΫ୯ҐͰ͖ͪΜͱΠϯσϯτ͢Δश׳ • ن໿Λҙࣝͨ͠ίʔσΟϯά • PEP8΋Ғେͩͬͨ

  35. طଘͷػೳΛ࢖͓͏ͱͯ͘͠ΕΔ • ৽ਓ͞Μʹ͋Γ͕ͪͳंྠͷ࠶ൃ໌͕ൃੜͮ͠Β͍ • ඪ४ϥΠϒϥϦͰղܾ͢Δ͜ͱ͕Ͱ͖ͳ͍͔ • APIͷJavadocɺMSDN౳Λௐ΂Δश׳ • ֎෦ͷϥΠϒϥϦͰղܾ͢Δ͜ͱ͕Ͱ͖ͳ͍͔ •

    ͨͩɺͳΜͰ΋͔ΜͰ΋jarΛ௥Ճ͢Δͷ͸…
  36. ؔ਺ΛΦϒδΣΫτͱͯ͠ѻ͏ • mapɺfilterͳͲͰؔ਺ΛҾ਺ʹࢦఆͨ͠ܦݧ • ΄͔ͷݴޠͰ΋ྨਪͯ͠ཧղ͢Δ͜ͱ͕Ͱ͖Δ • C#ɺJavaScriptͳͲ • Java8ʁɹԿͦΕඒຯ͍͠ͷʁ

  37. ੲͳ͕Βͷforจʹށ࿭ͬͯ͠·͏ for (String str : strArray) { // Pythonͷfor͔ΒͷྨਪͰཧղͰ͖Δ }

    for (int i = 0; i < strArray.length; i++) { // Կ͜Εʁɹݟͨ͜ͱ͕ͳ͍ʂ }
  38. ੲͳ͕ΒͷforจΛཧղ͠ͳ͚Ε͹͍͚ͳ͍ͨͬͨҰͭͷཧ༝ • Java1.4͕ݱ໾Ͱ͋ΔͨΊ • Python࠾༻2೥໨͸JavaScriptΛྫʹઆ໌

  39. ·ͱΊ

  40. ·ͱΊ • Pythonͷ࠾༻ʹΑΓɺΞϧΰϦζϜͳͲͷຊ౰ʹڭ͑ ͍ͨ෦෼ʹϑΥʔΧεͰ͖ͨ • ۀ຿Ͱར༻͠ͳ͍PythonͰڭҭ͢Δ৔߹ɺͦͷϚΠφ εΛ্ճΔϝϦοτΛఏࣔͰ͖ΔΑ͏ʹ • ৽ਓڭҭ͸ߨࢣͷڭҭͰ΋͋Δ •

    Pythonͱ΄͔ͷݴޠͱͷҧ͍Λೝࣝͤ͞ɺ΋͠଍Γͳ ͍ػೳ͕͋Δ৔߹͸ผݴޠΛྫʹ͢Δ͜ͱ΋ඞཁ
  41. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠