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

大正Geek Night 2018-08-27

大正Geek Night 2018-08-27

Transcript

  1. ࣗݾ঺հ • ΪϧυϫʔΫεגࣜձࣾ ALMΤϯδχΞ • Application Lifecycle Management • ಘҙٕ

    • ։ൃ • αʔόʔαΠυɿ Java • "OESPJE+BWB→,PUPMJO • iOS: Swift • Webϑϩϯτɿ Vuejs → Angular/Ionic • ͦͷଞɿ C# ͳͲͷ .NET ΋޷͖Ͱ͢ • Microsoft MVP for Visual Studio and Development • CI / CDͷ੔උ • ࠷ۙ͸΋ͬͺΒCircleCI
  2. Agenda 1. ৽͍ٕ͠ज़ΛऔΓೖΕΔ೉͠͞ 2. ࠓճͷ௅ઓͷ֓ཁ 3. ௅ઓᶃ Java / Go

    on AWS Lambda 4. ௅ઓᶄ ೝূαʔϏεͷࢼ༻ 5. ௅ઓᶅ ػցֶशͷಋೖ 6. ·ͱΊͱࠓޙͷల๬
  3. 1. ࣗݾ঺հ 2. ࠓճࢼͨ͜͠ͱͷ֓ཁ 3. ௅ઓᶃ Java / Go on

    AWS Lambda 4. ௅ઓᶄ ೝূαʔϏεͷࢼ༻ 5. ௅ઓᶅ ػցֶशͷಋೖ 6. ࠓޙͷల๬
  4. ࠓճͷ௅ઓͷૂ͍ • ΍Γ͍ͨ͜ͱ
 㱺 ࠜຊతͳస׵ΛɺϦεΫΛ཈࣮͑ͯߦ͍ͨ͠ • ৽نࣗࣾϓϩμΫτͷMVP։ൃΛɺࠜຊతͳٕज़స׵ Λߦ͍ͳ͕Βߦ͏ • ৽نࣗࣾϓϩμΫτ

    = ೲظ΁ͷϓϨογϟʔ͕খ͍͞ • MVP։ൃ = খ͞ͳ࣮ݧϓϩμΫτͳͷͰɺ࡞Γͳ͓͠ʹͳͬ ͯ΋ίετ૿͸খ͍͞ • ࠷ѱʮ࡞Βͳ͍ʯͱ͍͏൑அ΋Ͱ͖Δ ࠓճͷ࡞ઓ ϝϦοτ
  5. 1. ৽͍ٕ͠ज़ΛऔΓೖΕΔ೉͠͞ 2. ࠓճͷ௅ઓͷ֓ཁ 3. ௅ઓᶃ Java / Go on

    AWS Lambda 4. ௅ઓᶄ ೝূαʔϏεͷࢼ༻ 5. ௅ઓᶅ ػցֶशͷಋೖ 6. ࠓޙͷల๬
  6. Java on AWS Lambda • ͳͥJava͔ʁ • ͜Ε·ͰऔΓ૊ΜͰ͖ͨɺೃછΈͷ͋Δݴޠ
 㱺 αʔϏεΛ͢͹΍͘ϦϦʔε͢ΔͨΊ


    㱺 ৽ٕज़΁ͷϦεΫ௿ݮͷͨΊ • AWS LambdaͰͷαϙʔτͷྺ࢙΋௕͘ɺαϙʔτπʔ ϧؚΊ࣮ͯ੷͕͋Δ
 㱺 ࠔͬͨࡍͷϊ΢ϋ΢΋͋Δఔ౓ཷ·͍ͬͯΔ
 㱺 πʔϧʹΑΔαϙʔτ΋ఏڙ͞Ε͍ͯΔ ཧ༝ᶃ ཧ༝ᶄ ͶΒ͍ ͶΒ͍ ͶΒ͍ ͶΒ͍
  7. Java on AWS Lambda ʹ͓͚Δ՝୊ͱ௅ઓ • DynamoDB ΛͲͷΑ͏ʹར༻͢Δ͔ • RDBͱಉ༷ͷςʔϒϧϚοϐϯάΛߦ͏

    • AWS΁ͷσϓϩΠ΍؀ڥઃఆΛͲͷΑ͏ʹ͢Δ͔ • AWS Toolkit for Eclipse Λ༻͍Δ • ೝূɾೝՄΛͲͷΑ͏ʹղܾ͢Δ͔ • ֎෦αʔϏεԽʢCognitoʣΛࢼߦ͢Δ ՝୊ ํ਑ ՝୊ ํ਑ ՝୊ ํ਑
  8. DynamoDBMapper @DynamoDBTable(tableName = "Detail") public class MemoryDetailItem { @DynamoDBHashKey(attributeName =

    "id") public String getId() { return childId; } @DynamoDBAttribute(attributeName = “Tag") public String getTag() { return title; } @DynamoDBAttribute(attributeName = "Item") public Item getItem() { return answer; } } @DynamoDBDocument public class Item { @DynamoDBAttribute(attributeName = "Title") public String getTitle() { return title; } @DynamoDBAttribute(attributeName = "Content") public String getContent() { return content; } } ೖΕࢠߏ଄
  9. AWS΁ͷσϓϩΠ • αʔόʔϨεͳܗࣜͰͷΞϓϦέʔγϣϯͷߏங Λߦ͑ΔπʔϧɺAWS Toolkit for EclipseΛར༻ • AWS SAMܗࣜͷςϯϓϨʔτ͔ΒɺEclipseΛ༻

    ͍ͯσϓϩΠ͢Δํࣜ • BluePrint͕͍͔ͭ͘༻ҙ͞Ε͓ͯΓɺ΢Οβʔυ ܗࣜͰαʔόϨεϓϩδΣΫτ͕ߏஙՄೳ
  10. Java΍্͍ͬͯ͘Ͱͷ໰୊ • ىಈ͕஗͍ • JVMͷىಈ࣌ؒʢͱݴΘΕ͍ͯΔʣ • SpringͳͲͷϑϨʔϜϫʔΫΛ༻͍ͣɺͰ͖Δ͚ͩίϯύΫτʹͯ͠ ΋ɺ10 ʙ 20ඵఔ౓ͷ଴͕ͪൃੜ͢Δ

    • Ͳ͏͢Δ΂͖͔ʁ • ৗ࣌ىಈ͓͚ͯ͠ΔΑ͏ϙʔϦϯά͢Δ • ϩʔσΟϯάͷλΠϛϯάͳͲΛ޻෉ͯ͠ɺϢʔβʔଆͰͷ଴ͪ࣌ ؒΛͰ͖Δ͚ͩແ͘͢޻෉Λ͢Δ • ͦ΋ͦ΋ɺΫϥΠΞϯτ͔Β௚઀ΞΫηε͞ΕΔΑ͏ͳؔ਺Ͱ͸ Java͸ආ͚Δ΂͖ʁ ՝୊ ࠓޙͷํ਑
  11. ͱ͍͏Θ͚ͰɺGo΋ࢼ͢ • ͳͥpython / JSͰ͸ͳͯ͘Goʁ • 㱺 ίϯύΠϧͰ͖ΔݴޠͰ͋Δ͜ͱʹΑΔ҆શੑ • 㱺

    Goࣗମͷݴޠͱͯ͠͠ͷՄೳੑ΋ݟ͔ͨͬͨ • 㱺 Lambda͸͜͏͍͏খ͞ͳ࣮ݧ΋͠΍͍͢
  12. Goʹม͑ͨ݁Ռ • ىಈ଎౓͸໨ʹݟ͑ͯૣ͘ͳͬͨ • 30ඵ 㱺 2 ~ 3ඵ •

    ωΠςΟϒίʔυΛు͔͘ɺVM্ཱͪ͛Δ͔ͷࠩʁ • ߏ੒؅ཧ΋ʢԿނ͔ʣָʹͳͬͨ • IDE͔ΒͰ͖Δͷ͸࠷ॳ͸͍͍ͷ͚ͩΕͲ͔ͬͨΔ͍ • Eclipse ͱ IntelliJ ΋ͬͱ஥ྑͯ͘͠΄͍͠ɾɾɾ •
  13. GoͰྑ͔ͬͨ͜ͱ • Goland ͕௒ઈ࢖͍΍͍͢ • ಛʹϓϩδΣΫτ͝ͱͷύεઃఆΛؾʹ͠ͳͯ͘ྑ͘ͳͬ ͨͷ͸େ͖͍ • ςετίʔυͱ࣮૷͕͍ۙͷྑ͍ •

    ଞͷݴޠͰ΋͜Ε͘Β͍਎ۙʹॻ͚ͳ͍͔ͳ…ʁ • Lambda +Go ͩͱσϓϩΠͯ֬͠ೝ͕͔ͬͨΔ͍ ͷͰɺࣗવͱTDDʹͳΔ
  14. 1. ৽͍ٕ͠ज़ΛऔΓೖΕΔ೉͠͞ 2. ࠓճͷ௅ઓͷ֓ཁ 3. ௅ઓᶃ Java / Go on

    AWS Lambda 4. ௅ઓᶄ ೝূαʔϏεͷࢼ༻ 5. ௅ઓᶅ ػցֶशͷಋೖ 6. ࠓޙͷల๬
  15. 1. ৽͍ٕ͠ज़ΛऔΓೖΕΔ೉͠͞ 2. ࠓճͷ௅ઓͷ֓ཁ 3. ௅ઓᶃ Java on AWS Lambda

    4. ௅ઓᶄ Ionic Λ༻͍ͨPWAΞϓϦέʔγϣϯ։ൃ 5. ௅ઓᶅ ػցֶशͷಋೖ 6. ࠓޙͷల๬
  16. ࠓճͷελϯε • 
 σʔληοτ଍Γͳ͍໰୊ɿ
 
 طʹे෼ͳσʔληοτ͕ू·͍ͬͯΔ෼໺ʹλʔήοτΛߜΔ • ը૾ೝࣝ • ݴޠ෼ੳ

    • Ի੠ೝࣝ • ٕज़తϋʔυϧߴ͍໰୊ɿ
 
 લఏ஌ࣝෆཁͷSaaSܥαʔϏεΛϑϧ׆༻͢Δ ՝୊ ํ਑ ՝୊ ํ਑
  17. ࠓճͷελϯε • 
 σʔληοτ଍Γͳ͍໰୊ɿ
 
 طʹे෼ͳσʔληοτ͕ू·͍ͬͯΔ෼໺ʹλʔήοτΛߜΔ • ը૾ೝࣝ • ݴޠ෼ੳ

    • Ի੠ೝࣝ • ٕज़తϋʔυϧߴ͍໰୊ɿ
 
 લఏ஌ࣝෆཁͷSaaSܥαʔϏεΛϑϧ׆༻͢Δ ՝୊ ํ਑ ՝୊ ํ਑ ੵۃతʹڊਓͷݞʹ৐͍ͬͯ͘
  18. SaaSܥػցֶशαʔϏε • AWS / Microsoft / Google ͕ͦΕͧΕఏڙ͍ͯ͠ Δ΋ͷ͕Ұ൪ϝδϟʔ •

    ࠓճͷλʔήοτ͸ɺݴޠ෼ੳ • Google Natural Language API ͕Ұ൪༗๬ • AWS: ೔ຊޠରԠͳ͠ • Microsoft: ೔ຊޠ෦෼ରԠ • Google: ೔ຊޠϑϧରԠ
  19. Google Natural Language API ΛαʔϏεͰར༻͢Δ • ՝ۚϞσϧ͸౎౓՝ۚͳͷͰɺ APIͰͷΞΫηε ຖʹୟ͘ͱ༰қʹ๲Ε্͕Δ
 


    㱺 όονॲཧͷҰ෦ͱͯ͠ɺ࣮ߦճ਺Λ੍ݶ • ΤϯςΟςΟ෼ੳ ʴ ײ৘෼ੳ ͰɺϢʔβʔσʔ λͷϥϕϦϯάΛߦ͏
  20. ࣍ʹ΍ͬͯΈ͍ͨ͜ͱ • αʔόʔଆɿ • Lambda ΑΓ΋͞ΒʹܰྔͳαʔόʔϞσϧΛࢼ͍ͨ͠
 㱺 MBaaS ͷࢼߦʹνϟϨϯδ͍ͨ͠ •

    Google FireStore / AWS AppSync • ػցֶश • SaaS ͔Β PaaS ʹҰา౿Έग़͍ͨ͠ • AWS SageMaker ʹΑΔɺPaaSతͳػցֶशαʔϏε