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

Forge Platform 概要

Forge Platform 概要

Forgeとは
Forge はアトラシアンのクラウドアプリ開発プラットフォームです。Forgeの特徴は、アトラシアンのクラウド上でアプリを実行できることです。Forge の大きなメリットは面倒な作業をFoegeに任せられることにあります。

アジェンダ
- Forgeとは
- Forgeのコンセプト
- Forgeのビルディングブロック
- Forgeでの開発のポイント

More Decks by アトラシアン株式会社

Other Decks in Technology

Transcript

  1. What Forge can do What Forge is 'PSHF͸ΞτϥγΞϯͷΫϥ΢υΞϓ Ϧ։ൃϓϥοτϑΥʔϜͰ͢ɻ 'PSHFͷಛ௃͸ɺΞτϥγΞϯͷΫϥ΢

    υ্ͰΞϓϦΛ࣮ߦͰ͖Δ͜ͱͰ͢ɻ 'PSHFͷେ͖ͳϝϦοτɺ໘౗ͳ࡞ۀ Λ'PFHFʹ೚ͤΒΕΔ͜ͱʹ͋Γ· ͢ɻ 'PSHF͸+JSBɺ$POGMVFODFɺ #JUCVDLFUͳͲͰར༻ՄೳͳΞυΦϯ ΞϓϦͱͯ͠ɺ։ൃऀͷϏδϣϯΛ࣮ ݱ͢ΔखஈͰ͢ɻ ॏཁͰͳ͍෦෼Λ'PSHFͷػೳ͕Χ όʔͯ͘͠ΕΔͨΊɺ։ൃऀ͸ίΞػ ೳͷߏஙʹूத͢Δ͜ͱ͕Ͱ͖·͢ɻ
  2. Forge ͷಛ௃ σϑΥϧτঢ়ଶͰηΩϡΞ ΞτϥγΞϯʹΑΔϗετ ։ൃɺϝϯςφϯε͕༰қ Enterprise؀ڥͰ΋҆৺ͯ͠ར༻Մೳ • όοΫΤϯυ΋ϑϩϯτΤϯυ΋ࢲͨͪͷϓϥοτ ϑΥʔϜ্Ͱ࣮ߦ͞ΕΔɻ •

    εέʔϦϯά͸ࣗಈͰߦΘΕΔͷͰɺࣗ෼Ͱ࣮ߦ͢Δ ඞཁ͕ͳ͍ɻ • ؍ଌՄೳͳ؂ࢹπʔϧΛఏڙɻ • ΤϯλʔϓϥΠζରԠͷػೳΛඋ͑ͨແྉͷϗεςο υετϨʔδɻ ΞτϥγΞϯʹΑΔϗετ
  3. Forge ͷಛ௃ σϑΥϧτঢ়ଶͰηΩϡΞ ΞτϥγΞϯʹΑΔϗετ ։ൃɺϝϯςφϯε͕༰қ Enterprise؀ڥͰ΋҆৺ͯ͠ར༻Մೳ • ΫϩεϓϥοτϑΥʔϜͷCLIπʔϧ • ຊ൪؀ڥ΁1෼Ҏ಺ʹσϓϩΠ

    • ີͳϩʔΧϧ։ൃϧʔϓͷͨΊͷτϯωϦϯά • ෳ਺ͷ։ൃऀ͕ಉ࣌ʹΞϓϦΛ։ൃՄೳ • αʔόʔͳ͠ͰΞϓϦΛ࣮ߦͰ͖ΔͨΊɺϝϯςφϯε ͷෛ୲͕ඇৗʹখ͍͞ ։ൃɺϝϯςφϯε͕༰қ
  4. Forge ͷಛ௃ σϑΥϧτঢ়ଶͰηΩϡΞ ΞτϥγΞϯʹΑΔϗετ ։ൃɺϝϯςφϯε͕༰қ Enterprise؀ڥͰ΋҆৺ͯ͠ར༻Մೳ ΞτϥγΞϯϓϥοτϑΥʔϜ͔Βσʔλ࣋ͪग़ͨ͘͠ͳ͍ɿ • ࣋ͪग़ͨ͠ઌ͕ద੾ͳਓ΍૊৫Ͱ͋Δ͔ݕূ͠ͳ͚Ε͹ͳΒ ͳ͍ɻ

    • ͲͷΑ͏ͳσʔλ͕࣋ͪग़͞ΕɺͲͷΑ͏ʹѻΘΕΔ͔Λཧ ղ͢Δඞཁ͕͋Δɻ • ͦ΋ͦ΋σʔλ͕཭Εͳ͍ํ͕ͣͬͱ؆୯ɻ Forge͸ɺՄೳͳݶΓϓϥοτϑΥʔϜ಺Ͱ׬݁͢ΔೳྗΛఏ ڙ͠ɺͦͷ݁ՌɺΤϯλʔϓϥΠζاۀʹ΋޷·ΕΔɻ Enterprise؀ڥͰ΋҆৺ͯ͠ར༻Մೳ
  5. Forge Example Apps Localised Date Macro ᙱ͍ͱ͜Ζʹख͕ಧ͖ɺʮ͋ͬ ͨΒ͍͍ͳʯͱࢥ͍ͬͯͨ΋ͷ Λ࡞Δ My

    Reminders ੡඼ʹ·ͬͨ͘৽͍͠ཁૉΛ૊ ΈࠐΉ Decision Helper ϓϩηεΛࢧԉ͢ΔΞϓϦΛॻ ͘
  6. Jira • Jira ՝୊ʹ৽͍͠ίϯςϯπΛ௥Ճ͢Δ • Jira ϫʔΫϑϩʔʹΧελϜ৚݅Λ௥Ճ • ಛఆͷ՝୊ͷόοΫάϥ΢ϯυͰεΫϦϓτΛ࣮ߦ •

    ৽͍͠μογϡϘʔυ ΨδΣοτΛ௥Ճ͢Δ • JQL ݕࡧʹ৽͍͠ΫΤϦ༻ޠΛ௥Ճ What else can Forge do? Confluence Bitbucket • ΧελϜϚʔδνΣοΫΛఆٛ͢Δ • PRʹΞΫγϣϯͱΧʔυΛ௥Ճ͢Δ • ಈతϩδοΫΛ࢖༻࣮ͯ͠ߦ࣌ʹύΠϓϥΠϯ ఆٛΛੜ੒͢Δ • ৽͍͠ϚΫϩͷ௥Ճ • ϗʔϜϖʔδʹ৽͍͠ίϯςϯπΛ௥Ճ͢Δ • ৽͍͠ίϯςϯπλΠϓͷ௥Ճ ʢσʔλϕʔεͳͲʣ
  7. Jira • Jira ՝୊ʹ৽͍͠ίϯςϯπΛ௥Ճ͢Δ • Jira ϫʔΫϑϩʔʹΧελϜ৚݅Λ௥Ճ • ಛఆͷ՝୊ͷόοΫάϥ΢ϯυͰεΫϦϓτΛ࣮ߦ •

    ৽͍͠μογϡϘʔυ ΨδΣοτΛ௥Ճ͢Δ • JQL ݕࡧʹ৽͍͠ΫΤϦ༻ޠΛ௥Ճ What else can Forge do? Confluence • ৽͍͠ϚΫϩͷ௥Ճ • ϗʔϜϖʔδʹ৽͍͠ίϯςϯπΛ௥Ճ͢Δ • ৽͍͠ίϯςϯπλΠϓͷ௥Ճ ʢσʔλϕʔεͳͲʣ Bitbucket • ΧελϜϚʔδνΣοΫΛఆٛ͢Δ • PRʹΞΫγϣϯͱΧʔυΛ௥Ճ͢Δ • ಈతϩδοΫΛ࢖༻࣮ͯ͠ߦ࣌ʹύΠϓϥΠϯ ఆٛΛੜ੒͢Δ
  8. Jira • Jira ՝୊ʹ৽͍͠ίϯςϯπΛ௥Ճ͢Δ • Jira ϫʔΫϑϩʔʹΧελϜ৚݅Λ௥Ճ • ಛఆͷ՝୊ͷόοΫάϥ΢ϯυͰεΫϦϓτΛ࣮ߦ •

    ৽͍͠μογϡϘʔυ ΨδΣοτΛ௥Ճ͢Δ • JQL ݕࡧʹ৽͍͠ΫΤϦ༻ޠΛ௥Ճ What else can Forge do? Confluence Bitbucket • ΧελϜϚʔδνΣοΫΛఆٛ͢Δ • PRʹΞΫγϣϯͱΧʔυΛ௥Ճ͢Δ • ಈతϩδοΫΛ࢖༻࣮ͯ͠ߦ࣌ʹύΠϓϥΠϯ ఆٛΛੜ੒͢Δ • ৽͍͠ϚΫϩͷ௥Ճ • ϗʔϜϖʔδʹ৽͍͠ίϯςϯπΛ௥Ճ͢Δ • ৽͍͠ίϯςϯπλΠϓͷ௥Ճ ʢσʔλϕʔεͳͲʣ
  9. Agenda NOW DONE Forgeͱ͸? Forge͸ԿΛͯ͘͠ΕΔςΫϊϩδʔͳͷ͔ Forge ͷίϯηϓτ Forge͕ͲͷΑ͏ʹ഑ஔ͞ΕΔͷ͔ɺͳͥͦ͏ͳͷ͔ Forge ͷϏϧσΟϯάϒϩοΫ

    ۩ମతʹͲΜͳػೳ͕ఏڙ͞ΕΔͷ͔ Forge Ͱͷ։ൃͷϙΠϯτ ։ൃ͢ΔͨΊʹඞͣ஌͓ͬͯ͘΂͖ϙΠϯτ
  10. The fundamentals of a Forge App Compute ίʔυΛΞτϥγΞϯϓϥοτ ϑΥʔϜ಺ͰϥϜμؔ਺ͱ࣮ͯ͠ ߦɻ

    UI and CDN UIͱίϯςϯπΛϗεςΟϯά͢Δͨ ΊɺϗεςΟϯά؀ڥΛؾʹ͢Δඞཁ ͕ͳ͍ɻ Storage ฐ͕͓ࣾ٬༷ͷσʔλΛϗεςΟϯά͍ ͨ͠·͢ͷͰɺ͓٬༷͸ετϨʔδɾϓ ϩόΠμʔΛ୳͢ඞཁ͕͋Γ·ͤΜɻ
  11. The fundamentals: A worked example UI and CDN Jira ՝୊͕ಡΈࠐ·ΕΔͱɺJira

    ͸ CDN ͔Β ForgeͷUI ΛಡΈࠐ Έ·͢ɻ Compute UI͸ͲͷΑ͏ͳϦϚΠϯμʔΛද ࣔ͢Δ͔ɺίʔυΛݺͼग़ͯ͠ ௐ΂Δඞཁ͕͋Δɻ Storage ίʔυ͸ Forge ετϨʔδ ϨΠ Ϡʔʹ໰͍߹ΘͤɺݱࡏͷϢʔ βʔͷϦϚΠϯμʔΛऔಘ͠·͢ɻ On page load Final state
  12. Agenda NOW DONE DONE Forge ͱ͸? Forge͸ԿΛͯ͘͠ΕΔςΫϊϩδʔͳͷ͔ Forge ͷίϯηϓτ Forge͕ͲͷΑ͏ʹ഑ஔ͞ΕΔͷ͔ɺͳͥͦ͏ͳͷ͔

    Forge ͷϏϧσΟϯάϒϩοΫ ۩ମతʹͲΜͳػೳ͕ఏڙ͞ΕΔͷ͔ Forge Ͱͷ։ൃͷϙΠϯτ ։ൃ͢ΔͨΊʹඞͣ஌͓ͬͯ͘΂͖ϙΠϯτ
  13. Functions for Forge Compute Functions for everything ίʔυΛΞτϥγΞϯϓϥοτϑΥʔ Ϝ্Ͱ࣮ߦ͢Δඞཁ͕͋Δ৔߹ɺͦΕ ͸ৗʹ

    Forge ؔ਺ͷதʹ͋Γ·͢ɻ Secure environment ؅ཧऀͷಉҙ͕ͳ͍ݶΓɺσʔλΛΠ ϯετʔϧ(αΠτ)ؒͰڞ༗͢Δ͜ͱ ͸Ͱ͖·ͤΜɻ Performance and Scale ͓٬༷ͷސ٬਺͕1ਓͰ͋Ζ͏ͱ਺ઍਓ Ͱ͋Ζ͏ͱɺࢲͨͪ͸͓٬༷ͷͨΊʹ ن໛Λ֦େ͠ɺΞϓϦͷεϜʔζͳՔ ಇΛҡ࣋͠·͢ɻ
  14. Forge storage for Apps Key-value storage ஋ΛΦϒδΣΫτʹͰ͖Δ୯७ͳ σʔλΛ֨ೲ͢Δɻ Custom entities

    and Complex queries ΑΓߴ౓ͳํ๏ͰরձͰ͖ɺΑΓ ෳࡶͳΦϒδΣΫτΛ࡞੒͢Δɻ Data residency ސ٬ͱಉ͡Ϧʔδϣϯʹอଘ͞Εͨ σʔλΛࣗಈతʹऔಘɻσʔλϨδσ ϯγʔΛαϙʔτ͢ΔͨΊͷ࿑ྗ͸΄ ͱΜͲඞཁ͋Γ·ͤΜɻϓϥοτϑΥʔ Ϝ্ʹ͋Δ͜ͱ͸େ͖ͳར఺͕͋Δʂ Simple key-value storage Encrypted key-value storage
  15. App: Entity Property Tool for Jira Entity property/Content property storage

    In-product ঎඼಺ͷΦϒδΣΫτʢ՝୊ɺίϯ ςϯπɺίϝϯτͳͲʣʹର͢Δσ ʔλΛอଘ͠·͢ɻ Key-value storage ΦϒδΣΫτΛอଘ͢Δ͜ͱ͸Ͱ͖ ͯ΋ɺΤϯςΟςΟΛอଘͨ͠Γɺ ෳࡶͳΫΤϦʔΛ࡞੒ͨ͠Γ͢Δ͜ ͱ͸Ͱ͖ͳ͍ɻ Platform benefits ࣗಈతʹόοΫΞοϓʹؚ·ΕΔɻ DaReΛαϙʔτɻ੡඼σʔλͱಉϨ ϕϧͷαϙʔτΛड͚Δɻ
  16. Scheduled triggers Create scheduled jobs όοΫάϥ΢ϯυͰ࣮ߦ͞ΕΔػೳ Λεέδϡʔϧ͢Δ͜ͱ͕Ͱ͖Δʂ Periods not time

    of day δϣϒͷ࣮ߦִؒͷ௕͞Λબ୒͠ ·͢ɻ Runs for every install ͢΂ͯͷΠϯετʔϧࡁΈͷαΠτ ͰɺΠϯλʔόϧ͝ͱʹ1ճɺؔ਺͕ ࣮ߦ͞Ε·͢ɻΦʔέετϨʔγϣ ϯ͸ෆཁʂ
  17. Async events (Queues) Create a queue όοΫάϥ΢ϯυͰॲཧ͞ΕΔ δϣϒΛΩϡʔʹ௥Ճ͢Δɻ Inbuilt retry

    support δϣϒ͕ࣦഊͨ͠৔߹ɺ஗ԆΛઃ͚ͯ কདྷ࠶ࢼߦ͢ΔΑ͏ʹ؆୯ʹઃఆͰ ͖Δʂ Batch processing ͢΂ͯͷ Jira ՝୊΍ Confluence ϖʔδʹର ͯ͠Կ͔Λ࣮ߦ͢Δඞཁ͕͋Γ·͔͢? Τ ϯςΟςΟ͝ͱʹδϣϒΛ࣮ߦ͠·͢ʂ Create the Queue Push events to the queue Consume events off the queue
  18. Web triggers What are they? HTTPϦΫΤετͷ݁Ռͱͯؔ͠਺Λ ݺͼग़͠·͢ɻ֎෦αʔϏε͕ΞϓϦ ͷΞΫγϣϯΛτϦΨʔ͠·͢ʂ Accessible from

    Code ͋ͳͨͷΞϓϦ͸ɺUI಺Ͱ΢ΣϒτϦ ΨʔͷURLΛఏڙ͢Δ͜ͱ͕Ͱ͖·͢ɻ ϢʔβʔʹϦϯΫΛఏڙ͠·͠ΐ͏ɻ Can return data ϨεϙϯεͰσʔλΛฦ͢͜ͱ͕ Ͱ͖Δɻ
  19. Product events (triggers) What are they? ੡඼ͰԿ͔͕ى͜Δͱɺ͋ͳͨͷΞϓϦ ʹΠϕϯτ͕ૹ৴͞Ε·͢ɻ(ྫɿissue ͕ߋ৽͞Εͨɺϖʔδ͕࡞੒͞Εͨͳ Ͳʣ

    Different event, different data Πϕϯτ͝ͱʹɺͦͷΠϕϯτͷχʔ ζʹ߹ΘͤͨҟͳΔϖΠϩʔυϑΥʔ Ϛοτ͕͋Δɻ
  20. Forge UI Flexibility you control UI KitͱCustom UI ͷؒͰɺॊೈੑ ͱ࢖͍΍͢͞ͷͲͪΒ͔Λબ୒

    Native rendering UI Kit ͸ϑϩϯτΤϯυ ίϯϙʔ ωϯτΛϨϯμϦϯάɻগͳ͍ϝ ϯςφϯεͰɺωΠςΟϒͳମݧ ͕ಘΒΕ·͢ɻ Your UI, hosted by us ΧελϜ UI Λ࢖༻͢Δͱɺϑϩ ϯτΤϯυ ϦιʔεΛϗετ͠ ͳ͕Βɺ೚ҙͷϑϩϯτΤϯυ ϑϨʔϜϫʔΫΛ࢖༻Ͱ͖·͢ɻ UI Kit Custom UI * Table, text, buttons, links * Dark mode for free * Complex UI components of my choice * Non-standard experience * Still fully hosted for me
  21. Forge Remote Whatever it takes ϓϥοτϑΥʔϜʹ଍Γͳ͍Կ͔ ͕ඞཁ? ҆શʹ֎෦͔Βௐୡ Front-end to

    remote ϑϩϯτΤϯυΛϦϞʔτʹ͠ ͯ࠷େ଎౓Λ࣮ݱ Access APIs and Storage Remotely ֎෦αʔϏε͸ Atlassian API ͱ Forge ετϨʔδʹ҆શʹΞΫη εͰ͖ɺಉ͡σʔλ ιʔεΛ࢖ ༻ͯ͠ Atlassian API ͷػೳΛ࠷େ ݶʹ׆༻
  22. Agenda NOW DONE DONE Forge ͱ͸? Forge͸ԿΛͯ͘͠ΕΔςΫϊϩδʔͳͷ͔ Forge ͷίϯηϓτ Forge͕ͲͷΑ͏ʹ഑ஔ͞ΕΔͷ͔ɺͳͥͦ͏ͳͷ͔

    Forge ͷϏϧσΟϯάϒϩοΫ ۩ମతʹͲΜͳػೳ͕ఏڙ͞ΕΔͷ͔ Forge Ͱͷ։ൃͷϙΠϯτ ։ൃ͢ΔͨΊʹඞͣ஌͓ͬͯ͘΂͖ϙΠϯτ DONE
  23. Screenshot media placeholder Simply drop your screenshot on to this

    media placeholder Manifest File What ForgeΞϓϦͷఆٛΛ͢ΔYAML ϑΝΠϧ Contents ϞδϡʔϧɺϦιʔεɺݖݶͳͲ ΞϓϦͰඞཁͱͳΔ͞·͟·ͳ ৘ใΛؚΉ
  24. Screenshot media placeholder Simply drop your screenshot on to this

    media placeholder Modules What ForgeΞϓϦ͕ΞτϥγΞϯ੡඼ ΛͲͷΑ͏ʹ֦ு͠ɺ΍ΓऔΓ ͢Δ͔ͷهड़ Contents ͢΂ͯͷ੡඼ʹڞ௨͢ΔϞδϡʔ ϧͱɺ੡඼ݻ༗ͷϞδϡʔϧ͕ ͋Δ
  25. Jira-Specific Modules What Jira Ϋϥ΢υͰ࢖༻͢ΔϞδϡʔ ϧɻ When to use it

    ৽͍͠ΧελϜϑΟʔϧυ΍՝୊ ύωϧɺ৽͍͠ϓϩδΣΫτϖʔ δͷ௥ՃͳͲɺJira ݻ༗ͷػೳΛ ֦ு͢ΔͨΊʹ࢖༻͠·͢ɻ
  26. Jira-Specific Modules: Custom Field Type What ಠࣗͷΧελϜϑΟʔϧυλΠϓ Λ࡞੒Ͱ͖·͢ɻ When to

    use it ϫʔΫϑϩʔΛվળ͢ΔͨΊʹ ৽͍͠ϑΟʔϧυ͕ඞཁ͕ͩɺط ੡ͷΧελϜϑΟʔϧυλΠϓͰ ͸ར༻Ͱ͖ͳ͍৔߹ɺ͜ͷϞδ ϡʔϧ͕໾ཱͪ·͢ɻ
  27. Jira-Specific Modules: Issue Panel What ՝୊ϏϡʔͷΞΫςΟϏςΟύω ϧͷ্ʹɺݟ΍͍͢৽͍͠ηΫ γϣϯ͕௥Ճ͞Ε·͢ɻ When to

    use it ͜Ε͸ɺจࣈ৘ใ͓Αͼ/·ͨ͸ ࢹ֮৘ใΛϢʔβʔʹදࣔ͢Δ ͨΊʹ࢖༻Ͱ͖Δɻ
  28. Common Modules: Function What ͜͜ͰΞϓϦͷಈ࡞͕ఆٛ͞ Εɺࢀর͞ΕΔɻ When to use it

    ΄ͱΜͲͷέʔεͰ࢖༻͞ΕΔɻ ଞͷϞδϡʔϧ͸ಛఆͷಈ࡞Λ ཁٻ͢ΔͷͰɺ΄ͱΜͲͷ৔ ߹ɺ͜ΕΒͷϞδϡʔϧ͸ͦΕ Βͷಈ࡞Λఆٛ͢Δؔ਺Λࢀর ͢Δɻ