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

【い03C】入門!実践!サーバーサイドKotlin【サンプル】 / server_side_k...

FORTE
September 12, 2019

【い03C】入門!実践!サーバーサイドKotlin【サンプル】 / server_side_kotlin_sample

技術書典7の新刊「入門!実践!サーバーサイドKotlin」のサンプル!
サークルページはこちら!
https://techbookfest.org/event/tbf07/circle/5754479999713280

FORTE

September 12, 2019
Tweet

More Decks by FORTE

Other Decks in Technology

Transcript

  1. כׄ׭ח ׆ס勓؅䩘מ⺅זיַגד׀לֹ׵ֵ׽ֿכׇֹ׉ַױ׌ն詇脢ס FORTE نؚٜطך׌ն♀㎇עր㵅鴫 ⪜ꪎ ئ٭ف٭ئؕغ Kotlinցכַֹ䪫銉剹 ؅剹׀ױ׊גն׆ס勓ע 12 䌑♧┪ٝ؝ب٭ם欎㘶ךꪛ溪׊י׀ג瞉脢ֿյٓر

    ٤םꪛ溪؅Ⳉ䒣׎נף כ䘼ַյⳈ䒣׌׾ם׼䪫銉剹؅剹ׂ־٭כ䘼זי剹ַג סֿ׆ס勓ך׌ն䪫銉剹؅剹ׂסֿ潨溷־յⳈ䒣ֿ潨溷־蔦⮔ך׵׻ׂ؂־׼ם ַך׌ֿյ╋偙כ׵㝕◜םَؕ٤عםסע牞־ך׌ն ؟٦غ٦؟؎س Kotlin ׾㷕ן׋ְ椚歋 瞉脢ֿٓر٤םꪛ溪؅㳔ש㸐骭כ׊יئ٭ف٭ئؕغ Kotlin ؅ꈷ؆דסע姌 ס槏氮־׼ך׌ն • Android ך Kotlin ؅❈ַגַ • ׍זכ Java ؅׷זי׀גסך◦䳕䙎ֿ둚אֹ • ׆׆׼ך Web סٓر٤םفشؠؙ٤غꪛ溪؅篑닫׊גַ • نٝ٭ّ٠٭ؠ؅❈氠׊ג Web ꪛ溪؅篑닫׊גַ 瞉脢ע IT ؙ٤ةؼؓ婹 12 䌑♧┪סֹהյ׮ׯ 10 䌑ꪨ Java ך Web ؓو ٛآ٭ب٘٤؅ꪛ溪׊י׀ױ׊גն׆ס׆כ־׼ױזגׂ偆׊ַ阋靣ךעםׂյ Java ◦䳕ס阋靣ס偙ֿـ٭غֿٜ⛼ַכ脝ֻױ׊גն ׈׼מ瑭ע OSS םלך┞薭מ⪪ꪛ׈׿יַ׾نٝ٭ّ٠٭ؠ؅❈氠׊גꪛ溪 篑닫ֿ┞䍲׵ֵ׽ױ׎؆նServlet ־յPHP ס栃蔦نٝ٭ّ٠٭ؠךסꪛ溪׊־ 篑닫ֵֿ׽ױ׎؆նאסג״յنٝ٭ّ٠٭ؠ؅氠ַג蔦⮔מכזיעٓر ٤ם Web ꪛ溪ֿ㳔צגַכ䘼זגכ׀յ괚锡מקזג׽ךֵ׾כ䘼זגסֿئ٭ ف٭ئؕغ Kotlin ؅ꈷ؆ד槏氮ך׌ն ו׿ז➂ぢַֽ ♀㎇׆ס勓؅剹ׂמֵג׽յًٜخػ؅蔦⮔כ׊ױ׊גնחױ׽׍זכ Java סٝ؝ب٭ם欎㘶מַג IT ؙ٤ةؼؓ⻔ׄמ剹ׂכַֹ׆כך׌նא؆ם IT ؙ ٤ةؼؓך׵׆ס勓؅鞅״ףئ٭ف٭ئؕغ Kotlin ֿ剹ׄ׾յنٝ٭ّ٠٭ؠ؅ ❈זגꪛ溪篑닫ֿ畤״׾׆כ؅潨埉מ剹׀㢼״ױ׊גն⪽✄溷מע姌ס׻ֹם☭ מֽ׌׌״ס勓כםזיַױ׌ն 2
  2. • Kotlin ؅׷זיײגַ • Java ؅剹ַג׆כֵ׾ׄלא׿♧㜽ס JVM 阋靣؅׊׼םַ • OSS

    סنٝ٭ّ٠٭ؠ؅❈זי Web ؓوٛ؅剹ַג׆כֿ摾ַ • ׍זכٝ؝ب٭ם Web ꪛ溪欎㘶מַג (כ䘼זיַ׾) • ٓر٤םꪛ溪סⳈ䒣׊גַׄל✇؅׷זיַַ־؂־׼םַ • 噺ⳡךע׍זכ Windows דזג־׼ Mac ך❛؅⮂׈׿י׵㎦׾ • өө׷זיױ׌ (❛:RailsյSpring BootյReact˘) כ阋ַגַֿյ♀ע阋 ֻםַ ⯼ꃍ׊גכֽ׽յ瑭蔦麃ֿ篑닫׊ג׆כֿםַ阋靣յ篑닫׊ג׆כֿםַن ٝ٭ّ٠٭ؠنٝ٭ّ٠٭ؠס❈氠蔦✄ֿ⮴״יס׻ֹם׵סכַֹ枱岞 ך勓ֿ剹ׄ׿ףյ׀זכ׆ס勓؅鞅׳"瑭"ס׻ֹםؙ٤ةؼؓמ׵⮔־׽׷׌ׂյ ױג׀זכ蔦⟤מם׾כ䘼ֹסך׌ն⻎׋坎מٝ؝ب٭ם枱岞מַי㸴׊ך׵ٓ ر٤םꪛ溪ֿ׊גַ☭מ㺐ׄף虘ַםכ䘼זיַױ׌ն ֿך劤ד䖤׵׸׷ֿה ׆ס勓ע Java םלך Web ꪛ溪ס篑닫ֵֿ׾☭⻔ׄמئ٭ف٭ئؕغ Kotlin מ⪜ꪎ׊י㵅鴫׊יײ׾勓ך׌ն׆ס勓؅鞅ײ箽؂׾כ姌ס׻ֹם枱䡢מם׽ ױ׌ն • Kotlin ֿם؆ד־؂־׾ • ئ٭ف٭ئؕغ Kotlin ֿם؆ד־؂־׾ • ئ٭ف٭ئؕغ Kotlin סꪛ溪欎㘶ֿ✑׿׾ • ئ٭ف٭ئؕغ Kotlin ך䲔獏卆؅✑䧯׊ג • 䲔獏卆؅✑䧯׊ג갾מ♧┫סꪛ溪؅篑닫׊ג – Web ً٭ة銨獏 – DB 亣✑ – طتع ֵםגֿ勓剹؅鞅׳׆כך׻׽僃ׂ祔ⷃמئ٭ف٭ئؕغ Kotlin מ⪜ꪎ׊㵅 鴫׊יַגדׄג׼յ׈׼מ噺ⳡ׷鲧⽱סꪛ溪מ㳔׬ג׆כ؅气־׊יַגדׄ ג׼յ׆؆םמ䌗׎ם׆כעֵ׽ױ׎؆ն ֿך劤דכ鍑铡׃זְֿה ׆ס勓ע⯼䳀כ׊יրJava םלך Web ꪛ溪ס篑닫ֵֿ׾☭⻔ׄցכםזיַ ױ׌նאסג״յ姌ס׻ֹמ Web ꪛ溪ס㕈狸HTTP כע ٛؠؙتعכע םל׷ Java ס㕈狸מחַיע闋鞃׊ױ׎؆ն闋鞃׊םַ׆כמחַיע姌ס ┞镣؅ׇ镣ׂד׈ַն • Web ꪛ溪ס㕈狸 3
  3. • Java ס㕈狸 • Kotlin ס倀岺 • نٝ٭ّ٠٭ؠס霄箖ם闋鞃 Kotlin מחַיע嚋ⲇ闋鞃؅⪜׿יַ׀ױ׌ֿյ׌׬יס倀岺؅鞃僻׊׻ֹכ

    ׌׾כא׿דׄך勓ֿ┞⫖ך׀י׊ױַױ׌նؠٚت㴻聋׷ْخشغ㴻聋ׂ׼ַ ךֵ׿ףյם؆כםׂ锶גדׄך؂־׾כ䘼ַױ׌סךյJava כ㝕׀ׂ㜟؂זי ַ׾掾׷杅瞉׌׬׀掾סײ勓倀מי鎢鳉׊יַ׀ױ׌ն׵׊┮僻ם掾ֵֿ׿ף׏ ץ⪪䑑ئؕع㕈勓圸倀םל؅ׇ镣ׂד׈ַն https://Kotlinlang.org/docs/reference/basic-syntax.html ׵׊نٝ٭ّ٠٭ؠס♐篁ײםלր׆׿宜מם׾ם٭ցכ䘼ֹ׆כֵֿ׿ף׏ ץ鞪׬יײױ׊׺ֹնא׿ֿ偆גמⳈ䒣׌׾虘ַ׀ז־ׄמם׽ױ׌ն ױגյ勓倀╚ס⫐㵼ך┮僻掾ֵֿ׿ף Twitterրhttps://twitter.com/ FORTEgp05ցױךׇꅙ簀ׂד׈ַնيتعؙنؚ٭عךׇ㎇瞩ַג׊ױ׌ն ֿך劤ך⢪ְ倯 ׆ס勓ע瞉脢ֿئ٭ف٭ئؕغ Kotlin ؅㳔ש╚ך沼ゼמ䘼זג׆כ׷鞪׬ג ׆כ؅䪫銉剹ס䓺ךؓؗعوشع׊ג׵סך׌նאסג״յKotlin כעםמ־ אס婹⺮ע ײגַם㕈狸溷םכ׆؀־׼յ㵅갾מꪛ溪欎㘶؅氠䟨׊י Web ؓ وٛآ٭ب٘٤؅ꪛ溪׌׾ױך؅ױכ״ג䓺䑑מםזיַױ׌ն׵׊ֵםגֿ րKotlin ע焒זי׾־׼յꪛ溪欎㘶־׼焒׽גַցכ䘼זיַג׼睗 2 皹ր⪜ ꪎ!ئ٭ف٭ئؕغ Kotlinցסً٭ة־׼ׇ镣ׂד׈ַնױגעրדַגַ⮔־׾ ׄלⳈ䒣׌׾סמꈌ׊גֽ꾴ֿ׮׊ַցכ䘼זיַג׼睗 3 皹ր㵅鴫ց־׼ׇ 镣ׂד׈ַն׵ה؀؆ Kotlin מ⮴䮄䨏ךֵ׿ף劄⮴־׼⪢ꌃ鞅؆ךַגדַי ׵㝕┨㝜ך׌ն 勓剹ע׆ס勓סꄼ׽מ׷׿ףⳛׂ׵סֿך׀׾յכַֹכ׆؀؅潨䭰׊י剹־ ׿יַױ׌ն׆ס勓؅鞅״ף槏㺌׷♐篁ײֿ׌׬י槏闋ך׀׾׻ֹמע剹־׿י ַױ׎؆ն׆ס勓؅⪜׽⺚כ׊יאס剳מ㞺מֵ׾׆כמ蕟⽱؅䭥זיַגדׄ ג׼䌗ַך׌ն ׆ס׻ֹמׇ蔦麃ס괚锡מ⻉؂׎י勓剹؅ׇ嵛氠ַגדׄ׿ף䌗ַך׌ն䖩׍ ׊׵׌׬י鞅׳䖩锡עֵ׽ױ׎؆ն׵׊䖩锡מםזג׼⯼סً٭ةמ䨴׿ף׻ַ סך׌ն׏ץׇ蔦麃סً٭تמ⻉؂׎יյئ٭ف٭ئؕغ Kotlin מ⪜ꪎ׊י㵅鴫 ׊יײיׂד׈ַն ⯜顑✲갪 勓剹מ阾鼥׌׾⫐㵼ע瞉脢ס䨾㺲׌׾篁縨ס⪪䑑锶闋ךעֵ׽ױ׎؆նױגյ 勓剹ע⺪茣םꮹ׽婞牞؅劻׌׻ֹמⲚ״יַױ׌ֿյ瞉脢ֿאס⫐㵼؅⟛隍׌׾ ׵סךעֵ׽ױ׎؆նאסג״յ勓剹ס阾鼥⫐㵼מ㕈טַג鞅脢ס鉿掿յ⹳צ鞅 脢ֿ錺זג䴮㵬מחַי瞉脢עם؆׼鬬⚈؅鬘ֹ׵סךעֵ׽ױ׎؆ն 4
  4. 湡如 כׄ׭ח 2 ئ٭ف٭ئؕغ Kotlin ؅㳔צגַ槏氮 . . . .

    . . . . . . . . . . . . . . 2 ל؆ם☭⻔ׄ־ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 ׆ס勓ך䕑׼׿׾׆כ . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ׆ס勓ךע闋鞃׊םַ׆כ . . . . . . . . . . . . . . . . . . . . . . . . 3 ׆ס勓ס❈ַ偙 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ⩸鬬◜꽃 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 痥 1 畍 Kotlin הכ 8 1.1 婹⺮ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.1.1 Kotlin ס⻏⯼ס氮匡 . . . . . . . . . . . . . . . . . . . 9 1.2 杅䖇 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2.1 祔愃 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2.2 㴗⪢ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.2.3 JVM ┪ס債㲽ٚؕهٚٛכס潸◦ꆻ氠⺪茣 . . . . . . . 13 1.2.4 IDE ס㸐䗎ֿ䩘⸦ַ . . . . . . . . . . . . . . . . . . . 13 1.3 Kotlin ֿ⯈氠ך׀׾ꪛ溪 . . . . . . . . . . . . . . . . . . . . . 13 1.3.1 JVM . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3.2 Android ؓوٛꪛ溪 . . . . . . . . . . . . . . . . . . . 14 1.3.3 JavaScriptKotlin/JS . . . . . . . . . . . . . . . . 15 1.3.4 ؾؕطؔهKotlin/Native . . . . . . . . . . . . . . 15 1.4 אס♑ס杅䖇 . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.4.1 ꫀ俙㒘وٞءِٚ٤ءסؙشج٤ت . . . . . . . . . . . . 15 1.4.2 Google כ JetBrains מ׻׾ Kotlin/Everywhere . . . . 15 1.4.3 傽勓ס Kotlin ٗ٭ا٭ءٜ٭و . . . . . . . . . . . . . 16 1.4.4 Kotlin Koans⪪䑑زٖ٭عٜٛؓ . . . . . . . . . . 17 痥 2 畍 ⰅꟌ!؟٦غ٦؟؎س Kotlin 18 2.1 ꪛ溪欎㘶מחַי . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.1.1 ف٭ة٘٤┞镣㕂瞉免 . . . . . . . . . . . . . . . . 19 2.1.2 Java סؕ٤تع٭ٜ . . . . . . . . . . . . . . . . . . . 19 5
  5. 2.1.3 Kotlin ؤ٤قٜؕ欎㘶؅ؕ٤تع٭ٜ . . . . . . .

    . . . 27 2.1.4 VS Code סؕ٤تع٭ٜ . . . . . . . . . . . . . . . . . 29 2.1.5 VS Code ך Hello World! . . . . . . . . . . . . . . . . 33 2.1.6 IntelliJ IDEA סؕ٤تع٭ٜ . . . . . . . . . . . . . . 36 2.1.7 IntelliJ IDEA ך Hello World! . . . . . . . . . . . . . 44 2.2 Web نٝ٭ّ٠٭ؠ . . . . . . . . . . . . . . . . . . . . . . . 45 2.2.1 Spring Framework . . . . . . . . . . . . . . . . . . . . 45 2.2.2 Ktor . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.3 لٜغبتطّ . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.3.1 Ant . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.3.2 Maven . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.3.3 Gradle . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.4 Spring Boot ך Hello World! . . . . . . . . . . . . . . . . . . 52 2.4.1 Spring Initializr ך곀䓺؅✑䧯׌׾ . . . . . . . . . . . . 53 2.4.2 곀䓺סؕ٤َ٭ع . . . . . . . . . . . . . . . . . . . . . 54 2.4.3 Hello World!ס㵅鍮 . . . . . . . . . . . . . . . . . . . 55 2.4.4 Thymeleaf מ׻׾ HTML ط٤وٝ٭ع銨獏 . . . . . . . 57 2.5 Spring Boot ךظ٭ذي٭ت亣✑ . . . . . . . . . . . . . . . . . 61 2.5.1 Spring Boot ךظ٭ذي٭تמׇ䮦䭕 . . . . . . . . . . 61 2.6 Spring Boot ךطتع؅剹׆ֹ . . . . . . . . . . . . . . . . . . 67 2.6.1 طتع氠 DB ס徙⤫ . . . . . . . . . . . . . . . . . . . 68 2.6.2 طتع؅㵅鉿׌׾ . . . . . . . . . . . . . . . . . . . . . 73 2.7 ❸㲽ꫀ➳ךꃯⲎ׊גنٝ٭ّ٠٭ؠמחַי . . . . . . . . . . . 76 2.7.1 Spring Web . . . . . . . . . . . . . . . . . . . . . . . 76 2.7.2 Spring Data JPA . . . . . . . . . . . . . . . . . . . . 77 2.7.3 Thymeleaf . . . . . . . . . . . . . . . . . . . . . . . . 77 2.7.4 H2 Databse . . . . . . . . . . . . . . . . . . . . . . . 77 2.8 ׆ס皹סױכ״ . . . . . . . . . . . . . . . . . . . . . . . . . . 78 痥 3 畍 㹋騧 80 3.1 陭阛 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 3.2 وٞةؘؠعס✑䧯 . . . . . . . . . . . . . . . . . . . . . . . . 85 3.3 ظؔٝؠعٛ圸䧯 . . . . . . . . . . . . . . . . . . . . . . . . . 85 3.4 䫋畇塌茣ס㵅鍮 . . . . . . . . . . . . . . . . . . . . . . . . . . 87 3.5 剳偆塌茣ס㵅鍮 . . . . . . . . . . . . . . . . . . . . . . . . . . 101 3.6 ⯸ꯙ⭦槏؅㵅鍮׌׾ . . . . . . . . . . . . . . . . . . . . . . . . 109 3.7 ׻׽虘ׂ׊יַׂ . . . . . . . . . . . . . . . . . . . . . . . . . 114 3.7.1 ٗ٭ا٭亣✑מ㸐׌׾ْشج٭ة؅銨獏׌׾ . . . . . . . 115 3.7.2 阾◜ꈷ䫘免סتّ٭ثتؠٞ٭ٜꃯⲎ . . . . . . . . . . 123 3.7.3 فٛظ٭ب٘٤ס㵅鍮 . . . . . . . . . . . . . . . . . . 124 6
  6. 3.7.4 خ٭عכً٭ةؾ٭ب٘٤סꃯⲎ . . . . . . . .

    . . . . . 135 3.8 㵅鴫紬؅䮴׽ꂉזי . . . . . . . . . . . . . . . . . . . . . . . . 140 3.9 ׆ס皹סױכ״ . . . . . . . . . . . . . . . . . . . . . . . . . . 141 ➰ꐮ A DB ׾ docker ד⹛ַ׃׋ְ 143 A.1 ⯼䳀 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 A.2 ظؔٝؠعٛ圸䧯מחַי . . . . . . . . . . . . . . . . . . . . 143 A.3 docker-compose.yml ס✑䧯 . . . . . . . . . . . . . . . . . . . 144 A.4 אס♑סنٜؒؕס✑䧯 . . . . . . . . . . . . . . . . . . . . . 144 A.5 docker ס鱍ⳛכ DB ⮴劻ⵊ . . . . . . . . . . . . . . . . . . . 145 A.6 ؓوٛآ٭ب٘٤מ䱸籽陭㴻סꃯⲎכⳛ✑牞霼 . . . . . . . . . . 146 ➰ꐮ B ٗ٦ٕؕח MySQL ׾؎ٝأز٦ٕׅ׷ 148 B.1 ⯼䳀 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 B.2 ف٭ة٘٤ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 B.3 Windows סؕ٤تع٭ٜ䩘꽄 . . . . . . . . . . . . . . . . . . 148 B.4 Mac ךסؕ٤تع٭ٜ䩘꽄 . . . . . . . . . . . . . . . . . . . . 148 B.5 Spring Boot وٞةؘؠعך⯈氠׌׾ . . . . . . . . . . . . . . 150 ֮הָֹ 152 ꨵ㶨晛חאְג 153 衼罏稱➜ 154 倀皹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 銨筤ؕٚتع䬎䓜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 ٝلٖؓ٭ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 تًبٜٔئ٤ؠت . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 7
  7. 痥 1 畍 Kotlin הכ ױ׍ע Kotlin מחַי闋鞃׊יַ׀ױ׊׺ֹնKotlin ע JetBrains

    獗ֿꪛ溪 ׊ג JVMյAndroidյJavaScriptյNative ֿذ٭أشعס OSS 귿溷㒘♕ׄو ٞءِٚ٤ء阋靣ך׌ն׆׆ך Native כעوٚشعنؚ٭ّؾؕطؔهס׆כ ؅䭰׊յ❛ֻף iOS ׷ MacOSյLinuxյWindows םלס⻄ OS ךⳛ✑׌׾ؾؕ طؔهؓوٛסꪛ溪⻔ׄךֵ׾յכַֹ׆כך׌ն勓剹ע Web ؓوٛآ٭ب٘ ٤סꪛ溪מ杅ⵊ׊ג勓ך׌ֿյKotlin ֿ׆׿דׄ坎չם⮔ꓩך嵛氠ך׀׾סך Kotlin ֿ剹ׄ׾כ坎չם㖪긖ך䔢מ皑חסֿ؂־׽ױ׌ն Kotlin ע OSS 귿溷㒘♕ׄوٞءِٚ٤ء阋靣ך׌նOSS ךֵ׾ג״摾倣ך䳀 ❵׈׿յApache 2.0 ٚؕج٤تס┫ךꪛ溪׈׿יֽ׽خ٭تؤ٭غע GitHub ך⪜䩘ך׀ױ׌ն귿溷㒘♕ׄ阋靣ךֵ׾ג״յوٞءّٚס㵅鉿⯼מ㒘ֿ闋尴׈ ׿׾阋靣ך׌ն׊־׊յJava ׻׽׵׻׽崟絊׈׿ג귿溷㒘♕ׄ阋靣כםזיַ ױ׌ն ױג Kotlin ע؛هةؘؠع䭰⻔סײם׼׍յꫀ俙㒘وٞءِٚ٤ءס杅䖇׵⻻ ؆ךַױ׌նַ؂׹׾둚갧ꫀ俙յꫀ俙㒘յّٚرכַזג׻ֹם塌茣ס׆כך׌ն Ӛ㔳 1.1 2019 䎃 8 剢劣儗挿ך Kotlin Ⱅ䒭؟؎ز薉铂 8
  8. 1.1 娖〷 1.1 娖〷 Kotlin סꪛ溪ֿتذ٭ع׊גסע 2010 䌑ך׌նא׊י 2011 䌑

    7 劓מ Jet- Brains 獗סؘؗهئؕعך Kotlin ؅ꪛ溪׊יַ׾׆כ؅⪪銨׊ױ׊גն *1 䓜免յ ٓر٤ Java כ⽿ף׿׾ Java ס䔿类阋靣ע Scala ֿ劔⻏ך׊גֿյJetBrains ס ꪛ溪ٛ٭ر٭ךֵ׾ Dmitry Jemerov 宋ע Scala ס姊掾ע긊䊬מꆬַؤ٤قؕ ٜדכ阋זיַױ׊גնױג⪪銨׊ג阾◜ך Java ע┫⛺◦䳕䙎סゼ꾴־׼⟵婞 ֿ┮⺪茣ךֵ׾־긊䊬מ곓׊ַゼ꾴ֵֿ׾כ剹־׿יַױ׌ն׈׼מ♑ס阋靣 ע JetBrains ֿ寛״׾塌茣جشعמ㸐׌׾锡⚂؅彸ג׊יַםַゼ꾴ֵֿ׾כ׵ 阋זיַױ׌ն אסג״ JetBrains עյKotlin ؅ Java ׻׽㴗⪢מ׌׾׆כյnull َؕ٤ذ㸐 瞬׷ Java ׻׽祔愃ם׆כյ㒘؅귿溷מزؘشؠ׌׾׆כ؅劳؆ךַױ׊גն׵ ֹ 1 חյ劄׵䧯敿׊ג盨◚潸䩘ךֵ׾ Scala ׻׽׵ب٤وٜמ׌׾׆כ؅潨䭰׊ גאֹך׌նאס䔿յ2012 䌑 2 劓מ JetBrains ע Apache 2.0 ٚؕج٤تס┫ ך Kotlin ؅؛٭و٤خ٭تⵊ׊ױ׊גն Kotlin סف٭ة٘٤ 1.0 ע 2016 䌑 2 劓 15 傽מٛٛ٭ت׈׿ױ׊גնJet- Brains ע׆סف٭ة٘٤־׼ꩽ劻ס䔿偙◦䳕䙎؅笴匙׊יַױ׌ն׈׼מ肚䌑 ס Google I/O 2017 ך Google ע Android ס⪪䑑阋靣כ׊י Kotlin ؅ئَ٭ ع׌׾׆כ؅銨僻׊ױ׊גնאס䔿ف٭ة٘٤ 1.2 ךע JVM כ JavaScript ꪨ ךؤ٭غ؅⪴劔׌׾塌茣؅յف٭ة٘٤ 1.3 ךעؤٜ٭ز٤ֿꃯⲎ׈׿ױ׊גն 2019 䌑ס槁㐂յ㝂ׂס Android סꪛ溪脢ֿ Kotlin ؅❈氠׊יꪛ溪׊יַױ׌ն 㵅갾յAndroid Kaigi כַֹ Android ס㎼⫐؜٤نؒٝ٤تךע׮ׯ׌׬יס جشب٘٤סئ٤وٜؤ٭غֿ Kotlin מםזיַױ׌ն ׆ס׻ֹמ Android ך嵛氠׈׿יַ׾◜❛ֿ潨皑זיַױ׌ֿյJVM ךⳛ ✑׌׾ٓر٤ Java 阋靣כ׊י Web ئ٭لتסفشؠؙ٤غ⣨כ׊יס◜❛ ׵㙟ֻיַױ׌նꪛ溪⩧ךֵ׾ JetBrains ךעٚؕج٤ت鬦㛿םל؅硄槏׌׾ JetBrains ؓ؜ؗ٤عךע 100%Kotlin ך剹־׿יֽ׽յ2015 䌑־׼ꆻ氠׈׿י ַיゼ꾴עױזגׂ摾ַאֹך׌նױג Corda כַֹ؛٭و٤خ٭تס⮔俆⩧䊣 وٚشعنؚ٭ّך׵䱰氠׈׿יַױ׌ն⟤꾙䙎ֿꓨ锡ם Blockchain 䪫銉מ׵ ❈氠׈׿יַ׾㵅緷ֵֿ׽ױ׌ն 1.1.1 Kotlin ךせ⵸ך歋勻 Kotlin סꪛ溪מ䶏؂זיַ׾ Andrey Breslav מ׻׾כրJava ֿؕ٤غؾب ؓס Java 䀁מהם؆ך⾀⻏׈׿גסךֵ׿ף䀁מהם؆ך⾀⻏׌׾׆כמ尴״ גցאֹך׌նאסג״յٞبؓסئ٤ؠعًطٜهٜؠסꁿׂמֵ׾ؤعٛ٤ 䀁־׼⻏♕ׄ׼׿ױ׊גն׆׆עنؔ٤ٚ٤غמꁿַ㖪䨾ך׵ֵ׽ױ׌ն *1 https://www.infoworld.com/article/2622405/jetbrains-readies-jvm-based- language.html 9
  9. 1.2 暴䗙 הםײמ Java ע䚐׼ׂ䀁ךעםׂؤ٭ك٭מהם؆ך⻏♕ׄ׼׿ג׻ֹך׌ն 1.2 暴䗙 Kotlin ס阋靣כ׊יס杅䖇؅鞃僻׊יַ׀ױ׌ն؂־׽׷׌ׂ鞃僻׌׾ג״յ Java

    כ嬟鼛׊י鞃僻׊יַ׀ױ׌ն 1.2.1 知患 Kotlin ע Java כ嬟׬י坎չם׆כֿب٤وٜמ剹ׄױ׌նַׂח־ Kotlin כ Java סؤ٭غס❛؅䮕ׅי嬟׬יײױ׊׺ֹն ر٦ةؙٓأ ❛ֻף ID ׷⻏璻םל؅䭥חⷃ筙םظ٭ذؠٚتךֵ׿ף♧┫ס׻ֹם㵅鍮מ ם׽ױ׌ն Ӟٔأز 1.1 Kotlin ך㜥さ 1: data class HogeData(val id: Integer, val name: String, val memo: String) ⻎׋ؤ٭غ؅ Java ך銨槁׌׾כ♧┫ס׻ֹמם׽ױ׌ն Ӟٔأز 1.2 Java ך㜥さ 1: public class HogeData { 2: public Integer id; 3: public String name; 4: public String memo; 5: 6: private Integer getId() { return id; } 7: 8: private void setId(Integer id) { this.id = id; } 9: 10: private String getName() { return name; } 11: 12: private void setName(String name) { this.name = name; } 13: 14: private String getMemo() { return memo; } 15: 16: private void setMemo(String memo) { this.memo = memo; } 17: } Java ס㖪⻉յGetter כ Setter ֿ긊䊬מꩽַסֿ⮔־׽ױ׌նIDE ך蔦ⳛ气䧯 ך׀׾סךא׆ױך䩘ꪨךעםַך׌ֿյא׿ך׵ Kotlin ךע Getter כ Setter ס气䧯ֿ┮锡םסעْٛشعכם׽ױ׌ն׆ַֹזג䩘ꪨס鼓庿ֿ畤ײꓨם׽ֿ ꪛ溪ס嚝׈׷ꪛ溪סتم٭غמ縕ֿזי׀ױ׌ն 10
  10. 1.2 暴䗙 ٔأز乼⡲ 姌מّٚر䑑؅❈זיٛتع؅نٜؔذٛ٤ء׊ױ׌ն姌סؤ٭غע俙⡑ٛت ع־׼ 0 ♧┪ס⡑؅⺅׽⮂׌ؤ٭غך׌ն Ӟٔأز 1.3 Kotlin

    ך㜥さ 1: val list = listOf(-3, -2, -1, 0, 1, 2, 3) 2: 3: // 1, 2, 3 4: val positiveNumbers = list.filter { it > 0 } ⻎坎מ Java ך銨槁׌׾כ♧┫ס׻ֹמם׽ױ׌ն Ӟٔأز 1.4 Java ך㜥さ 1: List<int> list = Arrays.asList(-3, -2, -1, 0, 1, 2, 3); 2: 3: // 1, 2, 3 4: List<int> positiveNumbers = list.stream() 5: .filter(o -> o > 0) 6: .collect( Collectors.toList() ); ׆ה׼ע Stream Api ؅❈氠׊יַ׾ג״յStream Api 勑❈氠סؤ٭غכ嬟 ׬ידַש焝ׂםזיַױ׌ֿյא׿ך׵ Kotlin מ嬟׬׿ף倀㲻俙׷鉿俙׵㝂ׂ םזיַױ׌ն杅מ倀㲻俙׷⽿צ⮂׌ْخشغס俙ֿ㸴םַכ IDE ך鎢㴞׌׾ 亣✑ֿ㸴םׂם׽ױ׌׊յⷃ筙מ䩘؅ⳛ־׌Ⲩⲇֿ㸴םׂם׾סך祔愃ךֵ׾׆ כסْٛشعע긊䊬מ㝕׀ַ׵סֵֿ׽ױ׌ն ءؚٕٝزٝ Kotlin ךب٤ءٜع٤قذ٭٤؅㵅鍮׌׾㖪⻉ע♧┫סꄼ׽ך׌ն Ӟٔأز 1.5 Kotlin ך㜥さ 1: object ThisIsASingleton { 2: val companyName: String = "JetBrains" 3: } Java ךע♧┫ס׻ֹמם׽ױ׌ն Ӟٔأز 1.6 Java ך㜥さ 1: public class ThisIsASingleton { 2: private static ThisIsASingleton thisIsASingleton; 3: public String companyName = "JetBrains"; 4: 5: private ThisIsASingleton() { 11
  11. 1.2 暴䗙 6: 7: } 8: 9: public static ThisIsASingleton

    getInstance() { 10: if (thisIsASingleton == null) { 11: thisIsASingleton = new ThisIsASingleton(); 12: } 13: 14: return thisIsASingleton; 15: } 16: } Kotlin ךעրobjectց؅䭰㴻׌׾׆כך气䧯׈׿׾ Java ؤ٭غֿյJava סب ٤ءٜع٤气䧯⭦槏כ⻎׋⫐㵼מם׽ױ׌նאסג״յKotlin ךעրobjectց؅ 䭰㴻׌׾דׄךب٤ءٜع٤ֿ㵅槁ך׀׾׻ֹמםזיַױ׌ն null زؘشؠ׷ؕ٤تذ٤تס㵋阋յ⟛䭥םלסؤ٭غעל׆ך׵⻎׋㵅鍮מ ם׾סך澈汻׊י㵅鍮ך׀׾סֵֿ׽ֿגַך׌ն׆סֵג׽ֿր祔愃ցכַֹ 杅䖇؅䠊׋׼׿׾ꌃ⮔ך׊׺ֹն 1.2.2 㸜Ⰻ Kotlin ע Java מ嬟׬י㴗⪢ם㵅鍮ֿ⺪茣ך׌ն׆׆ך阋ֹր㴗⪢ցכע┮⪽ ⻉ס⸮㎋מם׾׻ֹםؤ٭غ؅剹׀ט׼ַյ㵅鉿免❛㜽؅鱍׆׊מַׂؤ٭غ؅ 剹׀׷׌ׂם׾յبتطّ؅ꆻ氠׊יַי㴗⪢םبتطّ؅圸碎׊׷׌ַյכַ ֹ׆כך׌նKotlin ֿ㴗⪢ךֵ׾杅䖇؅锶יַ׀ױ׊׺ֹն NullPointerExceptions Java ךبتطّ؅ꪛ溪׊יꆻ氠׊ג갾מ䜪׳׆כס♣銨呬ֿյ NullPointerEx- ceptions ך׌ն׆׿ע⭦槏׊׻ֹכ׊ג؛هةؘؠعֿ Null דזגכ׀מ溪气 ׌׾❛㜽ך׌ֿյ䟨㎫׊םַذِؕ٤ءך؛هةؘؠعֿ⮴劻ⵊ׈׿ג׽յ沌䊬 免מ null ֿٛذ٭٤׈׿י溪气׌׾׆כֿ㝂ַ❛㜽ך׌ն ׆ס❛㜽מ㸐׌׾ Kotlin ס㸐䗎؅锶יַ׀ױ׊׺ֹն Ӟٔأز 1.7 Kotlin ך暴䗙 㸜Ⰻ Null ꬊ鏩〳 1: var output: String // Null ꬊ鏩〳 2: 3: output = null // ؝ٝػ؎ٕؒٓ٦הז׷ Kotlin ס㖪⻉յ⻎׋ String ך׵㵅갾מע 2 甦꿔ס㒘ֿ㲽㐂׊ױ׌նא׿ע Null 陵⺪ס String כ Null 긊陵⺪ס String ס 2 甦꿔ך׌նאסױױ String כ ׊י㵅鍮׌׾כ Null 긊陵⺪מם׾סךյnull ؅♣⪜׊׻ֹכ׌׾כؤ٤قٜؕ ؙٚ٭כם׽ױ׌նאסג״յNull ֿ⪜׽אֹם㵅鍮؅ؤ٤قٜؕ嫘갧ך宜טׂ ׆כֿך׀ױ׌ն׆׿מ׻זי焒׼׍סֹהמ NullPointerExceptions ֿ鱍׆׽ אֹם㵅鍮؅ꮐ׃׆כֿך׀ױ׌ն 12
  12. 1.3 Kotlin ָⵃ欽דֹ׷Ꟛ涪 ׈׼מ Kotlin ךע Null 陵⺪ס㒘؅❈氠׊יַ׾㖪⻉ך׵㴗⪢ךעםַ㵅鍮؅ ؤ٤قٜؕ嫘갧ך嗱焒׊יׂ׿ױ׌ն Ӟٔأز

    1.8 Kotlin ך暴䗙 㸜Ⰻ Null 鏩〳 1: val name: String? = null // Null 鏩〳 2: 3: println(name.length()) // ؝ٝػ؎ٕؒٓ٦הז׷ Java ס㖪⻉յ׆ַֹזג㵅鍮؅׊י׵ؤ٤قֿٜؕꄼ׽㵅鉿ך׀י׊ױַױ ׌նIDE מ׻זיע餾⼴؅⮂׊יׂ׿׾סך宜טׂ⺪茣䙎ֵֿ׽ױ׌ֿյؤ٤ق ٜؕעꄼזי׊ױֹסך锶ꇃׇ׊י׊ױֹ׆כעֵ׾ך׊׺ֹնKotlin ס㖪⻉ע ؤ٤قֿٜؕꄼ׼םַסךյ׆ַֹזגⷩ각䙎ֿوٞرؠعؤ٭غכ׊י勓沁欎 㘶מ⪜׽ꁎ؆ך׊ױֹ׆כעֵ׽ױ׎؆ն׆ַֹזג㴗⪢䙎׵ Kotlin ס杅䖇כ םזיַױ׌ն 1.2.3 JVM ♳ך傀㶷ٓ؎ـٓٔהך湱✼麊欽〳腉 Kotlin ע JVM ךⳛ✑׌׾債㲽סٚؕهٚٛ؅❈氠׌׾׆כֿך׀ױ׌նאס ג״յ偆׊ַ阋靣؅㸬⪜׌׾כַזי׵債㲽סٚؕهٚٛ魕氙ֿאסױױ嵣氠ך ׀׾סֿ긊䊬מ嚝מם׽ױ׌ն杅מ Java 蔦✄ֿ婹⺮ֿꩽַ阋靣םסךյنٛ٭ סٚؕهٚٛ־׼յ蔦⮔גהֿ✑䧯׊גٚؕهٚٛ؅אסױױ❈氠ך׀׾סע㝕 ׀םْٛشعמם׽ױ׌ն 1.2.4 IDE ך㼎䘔ָ䩛⾨ְ ꪛ溪⩧ֿ IDE ؅ꪛ溪׊יַ׾ JetBrains םסךյIntelliJ ؅❈氠׌׾׆כך Kotlin סꪛ溪؅تّ٭ثמ㢼״׾◜ֿך׀ױ׌նםמ׻׽阋靣סꪛ溪⩧ֿ䳀❵ ׊יַ׾ IDE םסךյאסئَ٭ع⪽⻉עױ׈מ 100% כַזי虘ַך׊׺ֹն Kotlin ע♑ס IDE ך׵ئَ٭ع׊יַױ׌ֿյ⪪䑑ئَ٭عכַֹ㴗䖥䠊ע㝕 ׀ַך׌ն 1.3 Kotlin ָⵃ欽דֹ׷Ꟛ涪 1.3.1 JVM 勓剹סط٭ُךֵ׾ئ٭ف٭ئؕغ Kotlin ؅♣銨כ׊ג JVM 欎㘶ךסꪛ溪ך ׌ն100%Java ◦䳕ךֵ׾ Kotlin ע䓜撬 JVM ךסꪛ溪מꈌ׊יַױ׌նא׊ י JVM ס╭䨏㖪סץכחךֵ׾ئ٭ف٭ئؕغך Kotlin ؅❈氠׌׾׆כֿך ׀ױ׌նKotlin ע債㲽ס Java ך剹־׿ג魕氙؅嵣氠׌׾׆כֿך׀ױ׌նױג Java ךꪛ溪׈׿גوٞةؘؠعס┞ꌃ⮔յ❛ֻף⺜ַꌃ⮔ע Java סױױյ׆׿ ־׼ꪛ溪׌׾偆׊ַ塌茣דׄ؅ Kotlin מ翝׀䳕ֻ׾׆כ׵⺪茣ך׌նKotlin 蔦 13
  13. 1.3 Kotlin ָⵃ欽דֹ׷Ꟛ涪 ✄յJava ־׼ס瓌鉿ֿ׊׷׌ׂ⺜ַبتطّ؅虘ׂ׊יַׂ䩘ⲙׄמם׽ױ׌ն 1.3.2 Android ،فٔꟚ涪 Kotlin כ臝ַי澵ז⩰מ䘼ַ嶠־׬׾ꪛ溪ب٭٤ע

    Android ؓوٛסꪛ溪ד כ䘼ַױ׌ն杅מ Google ֿ⪪䑑מꪛ溪阋靣כ׊י⪪霼׊יַ׾׆כ׵ֵ׽յ劄 ׵劔⻏דכ阋זי׵ꇃ阋ךעםַך׊׺ֹն׈׼מ Google I/O 2019 ךעյ♀ 䔿ס Android ꪛ溪ע Kotlin نؒ٭تعמם׾ך׊׺ֹכַֹ溪銨؅鉿זיַױ ׌նAndroid ؓوٛך Kotlin ֿ婞䑑מئَ٭ع׈׿גסע 2017 䌑ך׌ֿյגז ג 2 䌑ךوٞס Android ꪛ溪脢ס 50% ֿ Kotlin ؅❈氠׊յStack Overflow ׷ GitHub ך׵☭宜ס阋靣ס┞חכםזיַױ׌ն瞉脢ס⽟׽ס Android ؙ٤ةؼ ؓך׵ؤِٖؼطؔך׵յKotlin ؅❈氠׊יַ׾סֿ䓜ג׽⯼מםזיַ׾כ䠊 ׋יַױ׌նAndroid ؓوٛꪛ溪ךע♀䔿ױ׌ױ׌ Kotlin ס⯈氠ֿⲎꅋ׊יַ ׂ׆כֿ◙䞯׈׿ױ׌ն Ӛ㔳 1.2 Andoird فٗآؙؑز欰䧭儗ךرؿٕؓز鎉铂כ Kotlin 14
  14. 1.4 ׉ך➭ך暴䗙 1.3.3 JavaScriptKotlin/JS 䟨㜽מ׵ Kotlin ך剹ַגؤ٭غ؅ JavaScript מ㜟䳕׌׾׆כך Kotlin

    ך JavaScript ؅剹ׂ偙䑑ֿئَ٭ع׈׿יַױ׌նنٞ٤عؙ٤غך DOM ס ⭦槏מ❈氠׊ג׽յWebGL םלסءٚنؔشؠ⭦槏מ❈氠ך׀ױ׌ն׈׼מ Node.js םלסئ٭ف٭ئؕغ JS כסꅙ䶏מ׵⯈氠⺪茣ך׌ն杅מ React כס ꅙ䶏סג״מյkotlin-react םלסٚشق٭ֿ䳀❵׈׿יַױ׌նױג⮴劻סو ٝلٖ٭曫ךעֵ׽ױ׌ֿյلٜغ圸䧯ם׊ך Kotlin ך React ؓوٛ؅ꪛ溪⺪ 茣ם create-react-kotlin-app ׵ֵ׽ױ׌նؕ٤تع٭ٜ׌׿ףؤُ٤غ┞溪ך ؓوٛס圸碎ֿ⺪茣ך׌ն欎㘶圸碎מ攑؂׈׿׍מꪛ溪מ겏╚ך׀ױ׌ն 1.3.4 ط؎ذ؍ـKotlin/Native ♳䞯ُب٤ֿ劳ױ׊ׂםַױגע┮⺪茣ם篁ꁎ塌㊭׷ iOS ⻔ׄםלסوٚشع نؚ٭ّ氠מؤ٤قٜؕ׌׾׆כֿך׀ױ׌ն׆׿ע Kotlin/Native כ׊י䳀❵ ׈׿יַױ׌նKotlin/Native ע C/C++ 氠ס귿溷յⳛ溷ٚؕهٚٛյSwift ׷ Objective-C 氠ס Apple نٝ٭ّ٠٭ؠ؅✑䧯⺪茣ך׌նױג Kotlin/Native עא׿׼ס欎㘶ס債㲽ٚؕهٚٛ؅⯈氠⺪茣מ׌׾ג״ס潸◦ꆻ氠䙎؅ئَ٭ع ׊יַ׾ג״յKotlin ךꪛ溪׊חח債㲽סٚؕهٚٛ魕氙׵⯈氠⺪茣ך׌նؾ ؕطؔهעאס欎㘶ךئَ٭ع׈׿יַ׾阋靣ךꪛ溪ך׀׿ףيتع־׵׊׿ױ ׎؆ֿյא׿ב׿ס欎㘶氠מوٞءُٚ؅겒氠׌׾סֿيتعכעꮹ׽ױ׎؆ն Kotlin ך׌׬יס欎㘶מ❿⡑؅䳀❵׌׾כַֹ偙䑑מ׻זי⺅׿׾ꈷ䫘艩ֿ䌮ֿ ׽յ׻׽友黡ם㸐䗎ֿ⺪茣כם׽ױ׌ն 1.4 ׉ך➭ך暴䗙 1.4.1 ꟼ侧㘗فؚٗٓىؚٝךؒحإٝأ Kotlin עꫀ俙㒘وٞءِٚ٤ءס塌茣כ׊י둚갧ꫀ俙յꫀ俙㒘յّٚرםל ؅ئَ٭ع׊יַױ׌ն勓剹ס⫐㵼溷מ❈氠׌׾塌⚶ֿם־זגסךյ♀㎇ע 箖־ׂ鞃僻׊יױ׎؆ն׊־׊յKotlin ך㵅鍮׈׿גنٝ٭ّ٠٭ؠ Ktor ׷ Kotlin/Native ךע㝂氠׈׿יַױ׌ն槏闋׊י❈ַ׆ם׎ף긊䊬מ➬⯈םסֿ ⛠ַ׊׿ױ׌ն 1.4.2 Google ה JetBrains ח״׷ Kotlin/Everywhere Kotlin/Everywhere כעꪛ溪脢յKotlin ٗ٭ا٭ءٜ٭وյGDGGoogle Developer Groupםל؅㸐骭כ׊גؤِٖؼطؔ╭㸬סؕي٤عך׌նKotlin כאסؙؤبتطّמחַי㳔צגַ偙յ焒餟؅⪴劔׊גַ偙յKotlin ؅ط٭ُ כ׊גؕي٤ع؅╭⥎׊גַ偙םלյ鞋ך׵⹧Ⲏך׀׾׻ֹך׌նꪛ⥎ע┾汔ך 15
  15. 1.4 ׉ך➭ך暴䗙 鉿؂׿ױ׌ն傽勓ך׵ 5 劓מ㝕⮔ךꪛ⥎׈׿ױ׊גն ׆ס׻ֹמ Android ؅ꪛ溪׊יַ׾ Google ׵ئَ٭ع׊יַ׾ס׵杅䖇סץ

    כחכ阋ֻ׾ך׊׺ֹն׆׿־׼ױ׌ױ׌潂׽┪ֿזיַׂכ䘼؂׿ױ׌ն Kotlin/Everywhere סً٭ة蝠靣https://events.withgoogle.com/ kotlin-everywhere/ 1.4.3 傈劤ך Kotlin ِ٦ؠ٦ؚٕ٦ف Kotlin ٗ٭ا٭ءٜ٭وע傽勓מ׵ֵ׽ױ׌ն ր傽勓 Kotlin ٗ٭اءٜ٭وց כַֹ⻏⯼ך嵛ⳛ׊יַיյ꾁倀㲻؅⺅זי JKUG כ⽿ף׿יַױ׌Japan Kotlin User Group ն瑭ע⩰傽յJKUG מ׻זיꪛ⥎׈׿ג Kotlin Fest 2019 מ⹧Ⲏ׊י׀ױ׊גֿ㝕㜟ם潂׽┪ֿ׽ך׊גնKotlin סꪛ溪מ⹧Ⲏ׊יַ׾ؙ ٤ةؼؓ؅ֽ⽿צ׊ג׽յAndroidյئ٭ف٭ئؕغյNativeյJS כ坎չם欎㘶 ךס Kotlin מꫀ׌׾溪銨ֵֿ׽ױ׊גն 㝕㜟ם魦؂ַדזגסךյ┾汔מ鬘ׄ׍ⲑ׼׍傽勓ך׵׆׿־׼ Kotlin ֿ潂׽ ┪ֿזיַׂ׆כֿ牞⟤ך׀ױ׊ג JKUG סً٭ة https://kotlin.connpass.com/ Ӛ㔳 1.3 JKUG ךٗ؞ַ׻ְְ 16
  16. 1.4 ׉ך➭ך暴䗙 1.4.4 Kotlin KoansⰕ䒭ثُ٦زٔ،ٕ Kotlin Koans ע⪪䑑־׼䳀❵׈׿יַ׾ Kotlin ס圸倀מ䢍׿׾ג״סزٖ٭

    عٜٛؓך׌槁㐂ע蝠靣סײ ն׆סزٖ٭عٜٛؓע؛٤ٚؕ٤ך⺇ׄ׾׆כ ֿך׀յٞ٭؜ٜמꪛ溪欎㘶؅䖩锡כ׊ױ׎؆նزٖ٭عٜٛؓע㝤侵׊גطت عֿꄼ׾׻ֹמ Kotlin ؤ٭غ؅⟵婞׌׾䓺מםזיַױ׌նױג⹧脝כ׊י⪪ 䑑غ؞ْٖ٤ع׫סٛ٤ؠֿ♕㺲׊יַ׾ג״յⳈ䒣׊םֿ׼ꅼ״׾׆כֿך׀ ױ׌ն ׵׊ٞ٭؜ٜס欎㘶ך㵅偡׊גַ㖪⻉עրEduTools وٚءؕ٤ց؅ؕ٤تع٭ ٜ׌׾׆כךյIntelliJ IDEA ױגע Android Studio ך㵅偡⺪茣ך׌ն 蝠靣׊־םַסךـ٭غֿٜ둚ַכ䘼؂׿׾־׵׊׿ױ׎؆ֿյ瑭ַֿׂח־ 闋ַיײג䠊׋ךעهٚؗاס脌陹塌茣כءء׾׆כך册ꄼמ闋ׄױ׊גն蕟⽱ ֵֿ׾偙ע׏ץزٔٝ٤ة׊יײיׂד׈ַնֽ׌׌״ך׌ն Kotlin Koans蝠靣https://kotlinlang.org/docs/tutorials/koans. html 17