Slide 1

Slide 1 text

Θ͔Δʂ+BWBUP$MPKVSF ڧཁڭཆͱͯ͠ͷ$MPKVSF EDMK !UPEPLS ָ͘͠

Slide 2

Slide 2 text

୭ͩ ాॴॣ༎!UPEPLS ීஈ͸4DBMBΤϯδχΞ ϓϥΠϕʔτͰ$MPKVSF$MPKVSF4DSJQUΛͪΐͪ͜ΐ͜৮Δॳ৺ऀ

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

͓࿩͢͠Δ͜ͱ w 8IZ-JTQ 8IZ$MPKVSF w جຊతͳจ๏ʹ͍ͭͯ w +BWBͷΞϨΛ$MPKVSFͰॻ͍ͯΈΑ͏

Slide 5

Slide 5 text

8IZ-JTQ w େֶͰ৮͍ͬͯͨͷͰ w ࢓ࣄͷͨΊ w ʮܭࢉػϓϩάϥϜͷߏ଄ͱղऍʯΛಡΉͨΊ w &NBDTϢʔβʔͩͬͨͷͰ w +BWB4DSJQU͸$ͷൽΛ͔Ϳͬͨ-JTQͩͱฉ͍ͯ w ϧϯό͕-JTQͰಈ͍͍ͯΔͱฉ͍ͯ w FUD

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

ϙʔϧɾάϨΞϜ 7JBXFC૑ۀऀ :$PNCJOBUPS૑ઃऀ

Slide 8

Slide 8 text

-JTQͰྑ͍ϓϩάϥϜ͕ॻ͚ΔͳΒɺ࢖͏΂͖ͳΜͩɻ ͦ͏Ͱͳ͍ͳΒ͍͍ͬͨԿͷ໾ʹཱͭ ϙʔϧɾάϨΞϜ 7JBXFC૑ۀऀ :$PNCJOBUPS૑ઃऀ

Slide 9

Slide 9 text

ී௨ͷౕΒͷ্Λߦ͚ɻ -JTQͰྑ͍ϓϩάϥϜ͕ॻ͚ΔͳΒɺ࢖͏΂͖ͳΜͩɻ ͦ͏Ͱͳ͍ͳΒ͍͍ͬͨԿͷ໾ʹཱͭ ϙʔϧɾάϨΞϜ 7JBXFC૑ۀऀ :$PNCJOBUPS૑ઃऀ

Slide 10

Slide 10 text

ී௨ͷౕΒͷ্Λߦ͚ɻ -JTQͰྑ͍ϓϩάϥϜ͕ॻ͚ΔͳΒɺ࢖͏΂͖ͳΜͩɻ ͦ͏Ͱͳ͍ͳΒ͍͍ͬͨԿͷ໾ʹཱͭ ϙʔϧɾάϨΞϜ 7JBXFC૑ۀऀ :$PNCJOBUPS૑ઃऀ :BIPPʹച٫

Slide 11

Slide 11 text

ී௨ͷౕΒͷ্Λߦ͚ɻ -JTQͰྑ͍ϓϩάϥϜ͕ॻ͚ΔͳΒɺ࢖͏΂͖ͳΜͩɻ ͦ͏Ͱͳ͍ͳΒ͍͍ͬͨԿͷ໾ʹཱͭ ϙʔϧɾάϨΞϜ 7JBXFC૑ۀऀ :$PNCJOBUPS૑ઃऀ Θͨ͠ ී௨ͷϓϩάϥϚ -JTQͰ΢ΣϒαʔϏεΛͭ͘Δͱ :BIPPʹԯԁͰങͬͯ΋Β͑Δʂʂʂ :BIPPʹച٫

Slide 12

Slide 12 text

ͳͥ$PNNPO-JTQ΍4DIFNFͰ͸ͳ͘
 $MPKVSFʁ

Slide 13

Slide 13 text

8IZ$MPKVSF w ಡΈ΍͢͞ w ׅހͷ਺͕গͳ͍ w ׅހͷछྨ͕ଟ͍ w #FUUFS+BWBͰ͋Δ͜ͱ w ϦονɾώοΩʔ

Slide 14

Slide 14 text

8IZ$MPKVSF w ಡΈ΍͢͞ w ׅހͷ਺͕গͳ͍ w ׅހͷछྨ͕ଟ͍ w #FUUFS+BWBͰ͋Δ͜ͱ w ϦονɾώοΩʔ

Slide 15

Slide 15 text

ಡΈ΍͢͞ $MPKVSF͸-JTQͷ఻౷ΛࣺͯɺಡΈ΍͢͞ΛͱͬͨʢΒ͍͠ʣ ͦͷͨΊɺ$PNNPO-JTQ΍4DIFNFʹൺ΂ͯ ɾׅހ͕গͳ͍ ɾׅހͷछྨ͕ଟ͍

Slide 16

Slide 16 text

ಡΈ΍͢͞ ͨͱ͑͹ؔ਺ͷҾ਺ $PNNPO-JTQ 4DIFNF $MPKVSF (defun square (x) (* x x)) (define (square x) (* x x)) (defn square [x] (* x x))

Slide 17

Slide 17 text

ಡΈ΍͢͞ ͨͱ͑͹BTTPDJBUJWFͳσʔλߏ଄ʢ+BWBͰ͍͏.BQʣ (defparameter greet '(("ja" . "͜Μʹͪ͸") ("en" . "hello") ("fr" . "bonjour")) (define greet '(("ja" "͜Μʹͪ͸") ("en" "hello") ("fr" "bonjour")) $PNNPO-JTQ 4DIFNF (def greet {"ja" "͜Μʹͪ͸" "en" "hello" "fr" "bonjour"}) $MPKVSF

Slide 18

Slide 18 text

8IZ$MPKVSF w ಡΈ΍͢͞ w ׅހͷ਺͕গͳ͍ w ׅހͷछྨ͕ଟ͍ w #FUUFS+BWBͰ͋Δ͜ͱ w ϦονɾώοΩʔ

Slide 19

Slide 19 text

8IZ$MPKVSF w ಡΈ΍͢͞ w ׅހͷ਺͕গͳ͍ w ׅހͷछྨ͕ଟ͍ w #FUUFS+BWBͰ͋Δ͜ͱ w ϦονɾώοΩʔ

Slide 20

Slide 20 text

#FUUFS+BWBͰ͋Δ͜ͱ (.concat "hello" " world") ; -> "hello world" ;; "hello".concat(" world"); (.getName String) ; -> "java.lang.String" ; String.getName (.. user getAddress getCity) ; -> "Shibuya" ; user.getAddress().getCity(); (.-x (new java.awt.Point 2 3)) ;; 2 ;; -> new java.awt.Point(2, 3).x Math/PI ;; 3.141592653589793 ;; Math.PI +BWBͷ"1*͕ͦͷ··ݺͼग़ͤΔ☕️ ˠ+BWBͰͰ͖Δ͜ͱ͸Ͱ͖Δʂͱ͍͏҆৺ײ

Slide 21

Slide 21 text

8IZ$MPKVSF w ಡΈ΍͢͞ w ׅހͷ਺͕গͳ͍ w ׅހͷछྨ͕ଟ͍ w #FUUFS+BWBͰ͋Δ͜ͱ w ϦονɾώοΩʔ

Slide 22

Slide 22 text

8IZ$MPKVSF w ಡΈ΍͢͞ w ׅހͷ਺͕গͳ͍ w ׅހͷछྨ͕ଟ͍ w #FUUFS+BWBͰ͋Δ͜ͱ w ͳʹΑΓָ͍͠ʂ

Slide 23

Slide 23 text

ͳʹΑΓָ͍͠ʂ w ߴ֊ؔ਺΍஗ԆධՁͳͲͷؔ਺ܕϓϩάϥϛϯάελΠϧ w ঢ়ଶʹ͍ͭͯͷߟ͑ํɺ*EFOUJUZ 4UBUF 7BMVFͷ෼཭ w γϯϓϧ͞ʹ͍ͭͯ ͍Ζ͍Ζܹࢗత

Slide 24

Slide 24 text

IUUQCPYPGQBQFSTIBUFOBCMPHDPNFOUSZTJNQMF@NBEF@FBTZ

Slide 25

Slide 25 text

ͭ·Γ$MPKVSF͸
 ͱ͖ͬͭ΍͍͢ʂ
 ֶͼָ͕͍͋ͬͯ͠ʂ

Slide 26

Slide 26 text

+BWBUP$MPKVSFͯ͠ΈΑ͏ w )FMMPXPSME w ࢛ଇԋࢉ w ม਺એݴ w ؔ਺એݴ w ແ໊ؔ਺

Slide 27

Slide 27 text

खݩͰࢼ͢ͳΒ5SZ$MPKVSF͕͓͢͢Ί w 5SZ$MPKVSF IUUQXXXUSZDMKDPN

Slide 28

Slide 28 text

·ͣ͸γϯλοΫεʹ׳ΕΑ͏ʂ

Slide 29

Slide 29 text

-JTQͷγϯλοΫε ׅހͷ࢝·Γ͔ΒऴΘΓ·Ͱ͕୯Ґ (ԿΒ͔ͷॲཧ ॲཧͷର৅ͳͲ…)

Slide 30

Slide 30 text

΋͏׳Ε·ͨ͠Ͷ

Slide 31

Slide 31 text

)FMMPXPSME System.out.println("Hello world"); +BWB $MPKVSF

Slide 32

Slide 32 text

)FMMPXPSME System.out.println("Hello world"); +BWB (println "Hello world") $MPKVSF

Slide 33

Slide 33 text

࢛ଇԋࢉ 12 + 40 10 - 1 2 * 3 5 / 2 +BWB $MPKVSF

Slide 34

Slide 34 text

࢛ଇԋࢉ 12 + 40 10 - 1 2 * 3 5 / 2 +BWB (+ 12 40) (- 10 1) (* 2 3) (/ 5 2) $MPKVSF

Slide 35

Slide 35 text

࢛ଇԋࢉ 12 + 40 10 - 1 2 * 3 5 / 2 +BWB (+ 12 40) (- 10 1) (* 2 3) (/ 5 2) ; -> 5/2 ෼਺Λѻ͏Ratioܕ $MPKVSF

Slide 36

Slide 36 text

˞จࣈྻͷ݁߹͸TUS จࣈྻͷ݁߹͸Ͱ͸ͳ͘TUSΛ࢖͏ (+ "hoge" "fuga") ClassCastException java.lang.String cannot be cast to java.lang.Number clojure.lang.Numbers.add (Numbers.java:128) (str "hoge" "fuga") hogefuga

Slide 37

Slide 37 text

ม਺એݴ int x = 10; +BWB $MPKVSF

Slide 38

Slide 38 text

ม਺એݴ int x = 10; +BWB (def x 10) $MPKVSF

Slide 39

Slide 39 text

ม਺એݴ MFUʹΑΔϩʔΧϧม਺ఆٛʢϩʔΧϧଋറʣΛݟ͔͚Δ΄͏͕ଟ͍ (let [x 10] (+ x 3)) ; x͸letͷׅހ಺͚ͩͰࢀরͰ͖Δ $MPKVSF

Slide 40

Slide 40 text

ؔ਺એݴ public int f(int x) { return x + 1; } +BWB $MPKVSF

Slide 41

Slide 41 text

ؔ਺એݴ public int f(int x) { return x + 1; } +BWB (defn f [x] (+ x 1)) $MPKVSF

Slide 42

Slide 42 text

ແ໊ؔ਺ x -> x * 2 +BWB $MPKVSF

Slide 43

Slide 43 text

ແ໊ؔ਺ x -> x * 2 +BWB (fn [x] (* x 2)) $MPKVSF

Slide 44

Slide 44 text

ແ໊ؔ਺ x -> x * 2 +BWB (fn [x] (* x 2)) #(* % 2) ; ↑ͷ؆ܿͳه๏ $MPKVSF

Slide 45

Slide 45 text

ແ໊ؔ਺Λ࢖ͬͯΈΔ Arrays.asList(1, 2, 3).stream() .map(x -> x * 2) .collect(Collectors.toList()); // List(2, 4, 6) +BWB $MPKVSF

Slide 46

Slide 46 text

ແ໊ؔ਺Λ࢖ͬͯΈΔ Arrays.asList(1, 2, 3).stream() .map(x -> x * 2) .collect(Collectors.toList()); // List(2, 4, 6) +BWB (map (fn [x] (* x 2)) '(1 2 3)) $MPKVSF

Slide 47

Slide 47 text

ແ໊ؔ਺Λ࢖ͬͯΈΔ Arrays.asList(1, 2, 3).stream() .map(x -> x * 2) .collect(Collectors.toList()); // List(2, 4, 6) +BWB (map (fn [x] (* x 2)) '(1 2 3)) (map #(* % 2) '(1 2 3)) $MPKVSF

Slide 48

Slide 48 text

΋ͬͱ+BWBUP$MPKVSFͯ͠ΈΑ͏ w γʔέϯε಺ͷจࣈྻ݁߹ w จࣈྻ͕ۭPSۭനจࣈ͔Ͳ͏͔ͷ൑ఆ w *OQVU4USFBN͔ΒจࣈྻΛ͢΂ͯಡΉ

Slide 49

Slide 49 text

γʔέϯε಺ͷจࣈྻ݁߹

Slide 50

Slide 50 text

γʔέϯε಺ͷจࣈྻ݁߹ String[] words = { "a", "b", "c" }; StringBuilder sb = new StringBuilder(); for(String word : words) { sb.append(word); } System.out.println(sb.toString()); // "abc" // Java8 System.out.println(String.join("", words)); +BWBͷ৔߹

Slide 51

Slide 51 text

γʔέϯε಺ͷจࣈྻ݁߹ (def words '("a" "b" "c")) (clojure.string/join "" words) ; ΋͘͠͸ (apply str words) DMPKVSFͷ৔߹

Slide 52

Slide 52 text

γʔέϯε಺ͷจࣈྻ݁߹ (def words '("a" "b" "c")) (clojure.string/join "" words) ; ΋͘͠͸ (apply str words) DMPKVSFͷ৔߹

Slide 53

Slide 53 text

w Մม௕Ҿ਺Λड͚औΔؔ਺ʹγʔέϯεΛ౉͍ͨ͠ͱ͖ʹ࢖͏ w +BWB4DSJQUͷBQQMZͱҰॹ BQQMZ (str ["a" "b" "c"]) ; -> ["a" "b" "c"] (apply str ["a" "b" "c"]) ; -> abc ; (str "a" "b" "c") ͱಉ͡

Slide 54

Slide 54 text

γʔέϯε಺ͷจࣈྻ݁߹ (def words '("a" "b" "c")) (clojure.string/join "" words) ; ΋͘͠͸ (apply str words) DMPKVSFͷ৔߹

Slide 55

Slide 55 text

จࣈྻ͕ۭPSۭനจࣈ͔Ͳ͏͔ͷ൑ఆ

Slide 56

Slide 56 text

จࣈྻ͕ۭPSۭനจࣈ͔Ͳ͏͔ͷ൑ఆ public static boolean isBlank(final CharSequence cs) { int strLen; if (cs == null || (strLen = cs.length()) == 0) { return true; } for (int i = 0; i < strLen; i++) { if (!Character.isWhitespace(cs.charAt(i))) { return false; } } return true; } isBlank("hello!"); // false isBlank(null); // true isBlank(""); // true isBlank("\r\n\t") // true +BWBͷ৔߹

Slide 57

Slide 57 text

จࣈྻ͕ۭPSۭനจࣈ͔Ͳ͏͔ͷ൑ఆ (defn blank? [s] (every? #(Character/isWhitespace %) s)) (blank? "helllo!") ; false (blank? nil) ; true (blank? "") ; true (blank? "\n\r\t") ; true DMPKVSFͷ৔߹

Slide 58

Slide 58 text

จࣈྻ͕ۭPSۭനจࣈ͔Ͳ͏͔ͷ൑ఆ (defn blank? [s] (every? #(Character/isWhitespace %) s)) (blank? "helllo!") ; false (blank? nil) ; true (blank? "") ; true (blank? "\n\r\t") ; true DMPKVSFͷ৔߹

Slide 59

Slide 59 text

FWFSZ w ίϨΫγϣϯͷશͯͷཁૉʹରͯ͠
 ड़ޠؔ਺ʢCPPMFBOΛฦؔ͢਺ʣΛద༻ w શͯUSVFͳΒUSVF (every? even? '(2 4 6)) ; true (every? even? '(1 2 3)) ; false

Slide 60

Slide 60 text

จࣈྻ͕ۭPSۭനจࣈ͔Ͳ͏͔ͷ൑ఆ (defn blank? [s] (every? #(Character/isWhitespace %) s)) (blank? "helllo!") ; false (blank? nil) ; true (blank? "") ; true (blank? "\n\r\t") ; true DMPKVSFͷ৔߹

Slide 61

Slide 61 text

*OQVU4USFBN͔ΒจࣈྻΛ͢΂ͯಡΉ

Slide 62

Slide 62 text

*OQVU4USFBN͔ΒจࣈྻΛ͢΂ͯಡΉ try(BufferedReader reader = new BufferedReader( new InputStreamReader( new FileInputStream("./test.txt")))) { StringBuilder sb = new StringBuilder(); String line; while((line = reader.readLine()) != null) { sb.append(line); } System.out.println(sb.toString()); } +BWBͷ৔߹

Slide 63

Slide 63 text

*OQVU4USFBN͔ΒจࣈྻΛ͢΂ͯಡΉ (require [clojure.java.io :as io]) (with-open [bis (io/input-stream "./test.txt")] (println (slurp bis))) $MPKVSFͷ৔߹

Slide 64

Slide 64 text

*OQVU4USFBN͔ΒจࣈྻΛ͢΂ͯಡΉ (require [clojure.java.io :as io]) (with-open [bis (io/input-stream "./test.txt")] (println (slurp bis))) $MPKVSFͷ৔߹

Slide 65

Slide 65 text

DMPKVSFKBWBJPJOQVUTUSFBN w Ҿ਺Ͱड͚औͬͨ'JMF 63* 63- 4PDLFU CZUF഑ྻ΍
 4USJOHʢͰදݱ͞ΕͨύεʣΛ*OQVU4USFBNʹม׵ w ม׵ޙͷ*OQVU4USFBNͷσϑΥϧτ࣮૷͸
 KBWBJP#VGGFSFE*OQVU4USFBN (require '[clojure.java.io :as io]) (io/input-stream "http://example.com")

Slide 66

Slide 66 text

XJUIPQFO w +BWBͰ͍͏USZXJUISFTPVSDFߏจɺ
 4DBMBͰ͍͏-PBO1BUUFSOΛ࣮ݱ͢Δ΋ͷ w XJUIPQFOͰPQFOͨ͠Ϧιʔε͸উखʹDMPTF͞ΕΔ (with-open [in (io/input-stream "./test.txt")] (do-something in)) ;; already closed!

Slide 67

Slide 67 text

TMVSQ w 3FBEFS #VGGFSFE3FBEFS *OQVU4USFBN 'JMF 63* 63- 4PDLFU CZUF഑ྻ DIBS഑ྻΛड͚औΓɺ
 จࣈྻʹͯ͠ฦ͢ w ରʹͳΔॻ͖ग़͠ͷͨΊͷؔ਺͸TQJU (spit "./test.txt" "hello I/O!") (println (slurp "./test.txt")) ;; -> hello I/O!

Slide 68

Slide 68 text

*OQVU4USFBN͔ΒจࣈྻΛ͢΂ͯಡΉ (require [clojure.java.io :as io]) (with-open [bis (io/input-stream "./test.txt")] (println (slurp bis))) $MPKVSFͷ৔߹

Slide 69

Slide 69 text

*OQVU4USFBN͔ΒจࣈྻΛ͢΂ͯಡΉ (require [clojure.java.io :as io]) (with-open [bis (io/input-stream "./test.txt")] (println (slurp bis))) $MPKVSFͷ৔߹ ;; όοϑΝϦϯάͤͣʹϑΝΠϧ͔ΒಡΉ͚ͩͳΒˣͰOK (println (slurp "./test.txt"))

Slide 70

Slide 70 text

ࠓ೔+BWBUP$MPKVSFͨ͠΋ͷ w )FMMPXPSME w ࢛ଇԋࢉ w ม਺એݴ w ؔ਺એݴ w ແ໊ؔ਺ w γʔέϯε಺ͷจࣈྻ݁߹ w จࣈྻ͕ۭPSۭനจࣈ͔Ͳ͏͔ͷ൑ఆ w *OQVU4USFBN͔ΒจࣈྻΛ͢΂ͯಡΉ

Slide 71

Slide 71 text

No content