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

いろいろ実践!サーバーサイドKotlin Vol.2【サンプル】 / server_side_...

FORTE
December 19, 2020

いろいろ実践!サーバーサイドKotlin Vol.2【サンプル】 / server_side_kotlin_3_2_sample

FORTE

December 19, 2020
Tweet

More Decks by FORTE

Other Decks in Technology

Transcript

  1. כׄ׭ח ׆ס勓؅䩘מ⺅זיַגד׀לֹ׵ֵ׽ֿכׇֹ׉ַױ׌ն詇脢ס FORTEنؚ ٜطך׌ն勓詇ך瑭ֿ剹ַגئ٭ف٭ئؕغ Kotlin ס䪫銉⻎☭霺յ ր㵅鴫!ئ٭ف٭ ئؕغ Kotlinցبٛ٭ثע 4

    ⫖潨כם׽ױ׊גն♀㎇׵⯼㎇כ⻎坎מր׆׿؅ئ٭ ف٭ئؕغ Kotlin ך׷׾מעלֹ׊ג׼ַַסցמ瞩ֻ׾┞⫖כםזיַױ׌ն نٝ٭ّ٠٭ؠע SpringBoot ךס闋鞃כםזיַױ׌ն勓剹׵⯼詇ױךכ⻎׋ׂ WindowsյMac ╋㸐䗎ך׌ն 劤衼ךⰻ㺁 ♀㎇׵ַ؀ַ؀㵅鴫!כַֹ׆כךյ⯼詇ױך؅ꄼ׊י瞉脢ֿ雧׊יײגַכ䘼ז יַג׆כ؅雧׊יײױ׊גն⪽✄溷מע姌ס 3 חך׌ն • Github םלמ׻׾ب٤ءٜئؕ٤؛٤OAuth2.0 • TwitterAPI ס⯈氠OAuth1.1 • JPA ךס JOIN אס 2յcascade 㺲䙎מחַי Github זוח״׷ءؚٕٝ؟؎ٝؔٝOAuth2.0 Github םלע OAuth2.0 מ׻׾ٞءؕ٤偙岺؅䳀❵׊יַױ׌ն♀㎇ע׆׿؅⯈ 氠׊י Github כ Google מ׻׾ٞءؕ٤塌茣؅箩♃׊ױ׌ն׆׿מ׻׽ Web ؓو ٛך׻ֵׂ׾ Github ךٞءؕ٤םלס塌茣ֿ⯈氠ך׀׾׻ֹמם׽ױ׌ն TwitterAPI ךⵃ欽OAuth1.1 Twitter ע OAuth2.0 מ㸐䗎׊יֽ׼׍ OAuth1.1 מ׻׾ٞءؕ٤偙岺מ׊־㸐 䗎׊יֽ׽ױ׎؆ն♀㎇ע׆ס OAuth1.1 מ׻׾ٞءؕ٤偙岺מחַי闋鞃׊יַ ׀ױ׌ն闋鞃ע twitter4j כַֹٚؕهٚٛ؅⯈氠׊ג׵סכյ栃蔦㵅鍮ךٞءؕ٤ ׌׾偙岺؅闋鞃׊ױ׌ն גד׊յ栃蔦㵅鍮ס偙עؓؠجتع٭ؠ٤ס⺅䕑ױךךֵ׽յؓؠجتع٭ؠ٤؅ 2
  2. ⺅䕑׊ג┪ך✇־؅׌׾❛ֻףصؕ٭ع׌׾םל⫐㵼מחַי闑׿יַױ׎؆ն 槏氮כ׊יעⷃ筙מ┪䩘ׂ鉿־ם־זגדׄםסךַח־ٛي٤ة׊גַך׌ն JPA דך JOIN ׉ך 2ծcascade 㾩䚍חאְג ⯼㎇׵ط٭هٜ JOIN

    מחַי闋鞃׊ױ׊גֿյ♀㎇עאס溪㺤כַֹ׆כך cascade 㺲䙎מחַי闋鞃׊ױ׌նcascade 㺲䙎؅♕┰׌׾׆כמ׻זיֵ׾ط٭ه ٜ׫ס㜟剳ֿꫀ➳׊יַ׾♑סط٭هٜמ峒⹳׌׾׻ֹמם׽ױ׌ն 橆㞮 勓剹׵⯼詇כ⻎׋ׂ WindowsյMac ╋㸐䗎ך׌նIDE ׷ؙظؔذמחַי׵⻎ ׋ IntelliJ IDEAյVS Code ךסⳛ✑牞霼؅׊יַױ׌ֿյ杅מ䔔꼸׌׾砈䨾עם ַע׍םסך⯼詇؅鞅؆ךַ׿ףゼ꾴םַע׍ך׌նםֽ׆׆ךַֹⳛ✑牞霼עյ Mac ס IntelliJ IDEA ך✑䧯׊גوٞةؘؠع؅ Mac ס VS CodeյWindows ס IntelliJ IDEAյVS Code ךⳛ✑牞霼؅׊גס䟨⽱כם׽ױ׌ն1 ־׼׌׬יס欎㘶 ך牞霼׊יַ׾؂ׄךעםַסךֵ׼־׋״ׇ◗䪩ׂד׈ַն םֽ♀㎇־׼ Windows ך H2Database מ傽勓靣؅䫋⪜׌׾כ倀㲻ⵊֿׄ溪气׌ ׾׻ֹמם׽ױ׊גնלֹ׵ Spring Boot סف٭ة٘٤מ׻זי溪气׌׾׼׊ׂ ف٭ة٘٤ֿ偆׊ַכ㎇ꉌֿך׀םַ׻ֹםסךյֽ䩘俙ך׌ֿ Windows 欎㘶ס偙 ע傽勓靣סꌃ⮔؅ٞ٭ُ㲻םלמ鞅ײ劂ֻי꼾׀גֽׂ꿈ַ氰׊┪ׅױ׌ն ׵׊勓詇ס⫐㵼ך⮔־׼םַ掾ֵֿ׿ף䔿ꃍ׌׾⯼詇؅锶יַגדׂ־յ׏ץ詇 脢*1 ױךׇ┞㖥ׂד׈ַնيتعؙنؚ٭عך㎇瞩׈׎יַגד׀ױ׌ն ו׿ז➂ぢַֽ 勓詇עր㵅鴫!ئ٭ف٭ئؕغ Kotlinցبٛ٭ثס┞⫖潨ր⪜ꪎ!㵅鴫!ئ٭ف٭ئؕ غ Kotlinց؅鞅؆ךַ׾⯼䳀כ׊יַױ׌ն⪽✄溷מע Kotlin + Spring Boot + JPA + Thymeleaf + ظ٭ذي٭تh2 Database םלךظ٭ذ✑䧯յ嗱筺յ剳 偆յ⯸ꯙַ؂׹׾ CRUD ⭦槏ֿ⮔־׾յ׷זג׆כֵֿ׾յꪛ溪欎㘶םל׵׌ ךמֵ׾յֵ׾ַע蔦⮔ךֻ׼׿׾瓦䍲ס偙؅㸐骭鞅脢כ׊יַױ׌ն אסג״յئ٭ف٭ئؕغ Kotlin כע?Spring Boot כע?ֻזא׵א׵ Kotlin ז יםמ?鞅ײ偙׵؂־׼םַ˘כַֹ☭ע׏ץبٛ٭ث 1 ⫖潨ךֵ׾ր⪜ꪎ!㵅鴫!ئ٭ ف٭ئؕغ Kotlinց؅ֽ鞅ײמם׾׆כ؅ֽ⳹״׊ױ׌ն姌ס QR ؤ٭غյٛ٤ؠ ־׼鮫⪜⺪茣ך׌!PR https://fortegp05.booth.pm/items/1560389 *1 Twwiter https://twitter.com/FORTEgp05 3
  3. ㎫ 1: ⪜ꪎ!㵅鴫!ئ٭ف٭ئؕغ Kotlin ֿך劤ד䖤׵׸׷ֿה ׆ס勓ע Java םלך Web ꪛ溪ס篑닫ֵֿ׾☭⻔ׄמئ٭ف٭ئؕغ

    Kotlin SpringBootך姌؅㵅鴫׊יײ׾勓ך׌ն׆ס勓؅鞅ײ箽؂׾כ姌ס׻ֹם枱䡢מ ם׽ױ׌ն • Github םלמ׻׾ب٤ءٜئؕ٤؛٤OAuth2.0 – Github מ׻׾ب٤ءٜئؕ٤؛٤ס㵅鍮ֿ؂־׾ – Google מ׻׾ب٤ءٜئؕ٤؛٤ס㵅鍮ֿ؂־׾ • TwitterAPI ס⯈氠OAuth1.1 – twitter4j ס⯈氠偙岺ֿ؂־׾ – 栃蔦㵅鍮ך OAuth1.1 ס㵅鍮偙岺ֿ⮔־׾ • JPA ךס JOIN אס 2յcascade 㺲䙎מחַי – cascade 㺲䙎ס㵅鍮ֿ⮔־׾ ֵםגסئ٭ف٭ئؕغ Kotlin ך׆׿זילֹ׷זי㵅鍮׌׾ס כַֹ䘼ַמ 瞩ֻ׼׿ג׼׆؆םמֹ׿׊ַ׆כעֵ׽ױ׎؆ն 4
  4. ֿך劤דכ鍑铡׃זְֿה 勓詇ךע SpringBoot ךס㵅鍮偙岺מחַיַׂח־闋鞃؅׊יַױ׌ֿյֵׂױ ך杅㴻ס㵅鍮偙岺ךֵ׽勓呬溷ם❈ַ偙׷نٝ٭ّ٠٭ؠס╚麃םלמחַיע闋鞃 ׊יַױ׎؆ն 杅מ栃蔦㵅鍮ך OAuth1.1 ס闋鞃ךעؓؠجتع٭ؠ٤ס⺅䕑ױך׊־闋鞃׊ױ ׎؆ն

    ױג闋鞃מע JPA ׷ Thymeleaf ׵❈氠׊יַױ׌ֿյ勓詇ךע闋鞃׊ױ׎؆ն׻ ׂ؂־׼םַ!כַֹ偙ע׏ץ⯼詇؅ׇ镣מם׾׆כ؅ֽ⳹״׊ױ׌ն ֿך劤ך⢪ְ倯 ׆ס勓ע瞉脢ֿئ٭ف٭ئؕغ Kotlin ךրֵ׿עלֹ׷׾ס־םց؅㳔ש╚ך 沼ゼמ䘼זג׆כ׷鞪׬ג׆כ؅䪫銉剹ס䓺ךؓؗعوشع׊ג׵סך׌ն 勓剹ע׆ס勓סכֽ׽מ׷׿ףⳛׂ׵סֿך׀׾յכַֹכ׆؀؅潨䭰׊י剹־׿ יַױ׌ն׆ס勓؅鞅״ף槏㺌׷♐篁ײֿ׌׬י槏闋ך׀׾׻ֹמע剹־׿יַױ׎ ؆ն׆ס勓؅⪜׽⺚כ׊יאס׈׼מ㞺מֵ׾׆כמ蕟⽱؅䭥זיַגדׄג׼䌗ַ ך׌ն ؾذֿ徥ױ׿ף Vol.3 ♧ꮳ׵⮂׌◙㴻ך׌նא׿ב׿ 1 ⫖מ׌׾מע㸯׈ַ؆דׄ ל겏ױ׿ף 1 ⫖מם׽אֹםط٭ُ؅겏״י䩘؅ⳛ־׊יַ׀גַכ䘼זיַױ׌ն 鞅ײ箽؂זג䠊䞯׷ꪨꇙַס䭰䷂յꃯⲎ锡劳םלע姌סـشبٖذء؅氠ַי Twitter ך⽌ַיַגדׄ׾כ㯹׊ַך׌ն׏ץյ䠊䞯؅ֽ䔵ה׊יֽ׽ױ׌ն #ְ׹ְ׹㹋騧؟٦غ٦؟؎سKotlin ױג♀㎇ס⫐㵼ך IntelliJ IDEAյVS Code ㎷劔ך䔔꼸׌׾砈䨾ע杅מםַע׍ םסךյ⯼詇؅鞅؆ךַ׿ףゼ꾴םַכ䘼ַױ׌ն׵׊勓詇ס⫐㵼ך⮔־׼םַ掾 ֵֿ׿ף׏ץ詇脢*2 ױךׇ┞㖥ׂד׈ַնيتعؙنؚ٭عך㎇瞩׈׎יַגד׀ ױ׌ն ⯜顑✲갪 勓剹מ阾鼥׌׾⫐㵼ע瞉脢ס䨾㺲׌׾篁縨ס⪪䑑锶闋ךעֵ׽ױ׎؆նױגյ勓剹 ע⺪茣םꮹ׽婞牞؅劻׌׻ֹמⲚ״יַױ׌ֿյ瞉脢ֿאס⫐㵼؅⟛隍׌׾׵סךע ֵ׽ױ׎؆նאסג״յ勓剹ס阾鼥⫐㵼מ㕈טַג鞅脢ס鉿掿յ⹳צ鞅脢ֿ錺זג䴮 㵬מחַי瞉脢עם؆׼鬬⚈؅鬘ֹ׵סךעֵ׽ױ׎؆ն *2 Twwiter https://twitter.com/FORTEgp05 5
  5. 湡如 כׄ׭ח 2 勓詇ס⫐㵼 . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Github םלמ׻׾ب٤ءٜئؕ٤؛٤OAuth2.0 . . . . . . . 2 TwitterAPI ס⯈氠OAuth1.1 . . . . . . . . . . . . . . . . . 2 JPA ךס JOIN אס 2յcascade 㺲䙎מחַי . . . . . . . . . . 3 欎㘶 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ל؆ם☭⻔ׄ־ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ׆ס勓ך䕑׼׿׾׆כ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ׆ס勓ךע闋鞃׊םַ׆כ . . . . . . . . . . . . . . . . . . . . . . . . . 5 ׆ס勓ס❈ַ偙 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 ⩸鬬◜꽃 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 痥 1 畍 Github זוח״׷ءؚٕٝ؟؎ٝؔٝOAuth2.0 8 1.1 ⯼䳀כם׾ف٭ة٘٤ . . . . . . . . . . . . . . . . . . . . . . . . 8 1.1.1 ف٭ة٘٤┞镣㕂瞉免 . . . . . . . . . . . . . . . . . 8 1.2 ♀㎇闋鞃׊גؤ٭غמחַי . . . . . . . . . . . . . . . . . . . . 9 1.3 곀䓺ס✑䧯 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4 ٞءؕ٤氺긖סꃯⲎ . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.5 ٞءؓؗع⭦槏סꃯⲎ . . . . . . . . . . . . . . . . . . . . . . . . 17 1.6 Google ؅ꃯⲎ . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 痥 2 畍 TwitterAPI ךⵃ欽 23 2.1 3-legged OAuth ס劔ⲯⵊ . . . . . . . . . . . . . . . . . . . . . 30 2.2 ♀㎇闋鞃׊גؤ٭غמחַי . . . . . . . . . . . . . . . . . . . . 32 2.3 twitter4j ס⯈氠 . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.4 Twitter ؓؠجتع٭ؠ٤ס⺅䕑؅蔦⯼ך㵅鍮ն . . . . . . . . . . 37 2.5 ♀㎇闋鞃׊גؤ٭غמחַי . . . . . . . . . . . . . . . . . . . . 37 2.6 OAuthToken כ OAuthTokenSecret ؅⺅䕑 . . . . . . . . . . . . 37 6
  6. 湡如 2.7 ؓؠجتع٭ؠ٤ס⺅䕑 . . . . . . .

    . . . . . . . . . . . . . . . 42 痥 3 畍 JPA דך cascade 㾩䚍חאְג 46 3.1 ♀㎇闋鞃׊גؤ٭غמחַי . . . . . . . . . . . . . . . . . . . . 47 3.2 OnetoOne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.2.1 DELETE 亣✑؅闋鞃 . . . . . . . . . . . . . . . . . . . . 47 3.2.2 INSERT . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.3 OnetoMany . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.3.1 ױ׍ע DELETE ־׼ . . . . . . . . . . . . . . . . . . . 52 3.3.2 INSERT . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.4 ManyToOne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.4.1 DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.4.2 INSERT . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.5 ManyToMany . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.5.1 DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.5.2 INSERT . . . . . . . . . . . . . . . . . . . . . . . . . . 61 ֮הָֹ 63 ⩰מؤ٭غ؅剹ַיַֽגصآ . . . . . . . . . . . . . . . . . . . . . . . 63 劄䔿מם׽ױ׊גֿ˘ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 衼罏稱➜ 65 7