Slide 1

Slide 1 text

Android ͱ Bluesky Bluesky/ATProtocol ษڧձ#0 ח૔ / @akiomik

Slide 2

Slide 2 text

ࣗݾ঺հ ח૔ (@akiomik) ࠷ۙ͸ Bluesky Nostr ʹೖΓਁͬͯ Δ ໺ௗʹձ͍͍ͨ ࣸਅ͸ઌ݄ࡱͬͨΦφΨ ͔Θ͍͍Ͷ

Slide 3

Slide 3 text

੨Ӣ (seiun) Android ༻ͷࣗ࡞ Bluesky ΫϥΠΞ ϯτ ࡞Δ·ͰʹࢸͬͨܦҢ΍ Androidʹ ؔ͢Δ Bluesky ΛऔΓר͘ঢ়گʹͭ ͍͓ͯ࿩͠·͢

Slide 4

Slide 4 text

ΞδΣϯμ • Nostr ͱ Bluesky • Android Ϣʔβͱ Bluesky • ੨Ӣ • Android ΞϓϦ։ൃͱ Bluesky • Android ϢʔβΛऔΓר͘ঢ়گͷ·ͱΊ

Slide 5

Slide 5 text

Nostr ͱ Bluesky

Slide 6

Slide 6 text

Nostr Websocket ্Ͱಈ͘෼ࢄ SNS ༻ϓϩτίϧ ʮૄ݁߹ͳ෼ࢄγεςϜʯ + ʮރΕٕͨज़ ͷਫฏࢥߟ ʯͱ͍͏งғؾͰΤϯδχΞత ʹ༡ͼ͕͍͕͋Δ Bluesky ΋ Nostr ΋ ϊεഇͷ δϟοΫɾ υʔγʔ͕ग़ࢿ ʮBluesky ϦϦʔε·Ͱͷ଴ػॴʯͱᎏ᎐ʁ ͞ΕΔ (ͨ) ͜ͱ΋

Slide 7

Slide 7 text

2023/03/03

Slide 8

Slide 8 text

ޕલ2࣌ ট଴ίʔυΛೖखͯ͠ Bluesky ʹࢀ Ճ͢Δ Nostr ίϛϡχςΟͷॅຽ͕ ݱΕΔ (౰࣌͸·ͩ೔ຊίϛϡχςΟͰ͸ݶ ΒΕͨগ਺ͷΈ͕ࢀՃ͍ͯͨ͠)

Slide 9

Slide 9 text

ޕલ9࣌ Nostr ίϛϡχςΟͷॅਓ͕ Bluesky ಺෦ͰγΣΞ͞Ε͍ͯΔট ଴ίʔυΛ Nostr ʹ֦ࢄ Bluesky ೖΓ͢Δॅਓ͕ग़࢝ΊΔ

Slide 10

Slide 10 text

ன12࣌൒ ͦΕͰ΋ট଴ίʔυΛ֫ಘͰ͖ͳ͍ ॅਓ͸Blueskyͷ։ൃαʔόΛࣗલ Ͱݐͯͯ༡ͼ࢝ΊΔ

Slide 11

Slide 11 text

16࣌൒ Nostr ίϛϡχςΟͷਓʑ͕ଓʑͱ Bluesky ʹࢀՃͯ͠য͍ͬͯΔ

Slide 12

Slide 12 text

16࣌൒ ແࣄʹࢀՃͰ͖·ͨ͠🥰 (kaorit ͞Μ͋Γ͕ͱ͏🙏)

Slide 13

Slide 13 text

Ұํͦͷࠒ

Slide 14

Slide 14 text

ΩϨΔAndroidϢʔβ ͜ͷஈ֊Ͱ Bluesky ʹࢀՃͰ͖Δͷ͸ • ެࣜ iOS ΞϓϦ • ໺ྑΫϥΠΞϯτ (͔֬͜ͷஈ֊Ͱ͸ Ϗϡʔϫ) • curl ΍ެࣜϥΠϒϥϦͰ API Λ௚઀ୟ͘

Slide 15

Slide 15 text

18࣌൒ ೔ຊ Android ͷձͰཧࣄ (͑Β͍) Λ͍ͯ͠Δ kojira ͞Μ͕ΞΧ΢ϯτ ࡞੒πʔϧͷ࡞੒Λґཔ

Slide 16

Slide 16 text

19࣌ ఔͳͯࣗ͘͠෼ͱ rain ͞Μ͕΄΅ಉ ࣌ʹΞΧ΢ϯτ࡞੒ϑΥʔϜΛϦ Ϧʔε ͜ΕͰ Android Ϣʔβ΋ট଴ίʔυ ͑͋͞Ε͹ΞΧ΢ϯτ࡞੒͕Մೳʹ

Slide 17

Slide 17 text

Bluesky Account Creator https://bluesky-account- creator.vercel.app/

Slide 18

Slide 18 text

ΫϥΠΞϯτ։ൃ RTA ͕ ҰؾʹՃ଎

Slide 19

Slide 19 text

ཌޕલ1࣌ ࣮༻తͳ web ΫϥΠΞϯτ͕΍͹ ͍଎౓ͰϦϦʔε͞Εͯ͠·͏

Slide 20

Slide 20 text

ޕલ0࣌൒͝Ζ ࣗ෼΋AndroidͷΞϓϦͷ։ൃΛ࢝ Ίͯ…

Slide 21

Slide 21 text

23࣌ ଞͷ web ΫϥΠΞϯτʹ஗ΕΛͱ Γͭͭ΋ॳظ൛ͷ apk ΛϦϦʔε ౰࣌͸ϩάΠϯͯ͠ TL ද͕ࣔͰ͖ Δ͚ͩ

Slide 22

Slide 22 text

48࣌ؒ [Ad] Nostr ଜ͸໘ന͍͜ͱ͕ຖ೔ͨ͘͞Μى͖͍ͯΔΑɻࠓ͙͢νΣοΫʂɹ

Slide 23

Slide 23 text

੨Ӣ

Slide 24

Slide 24 text

੨Ӣ (͓ͦΒ͘) ੈքͰ།ҰϦϦʔε͞Ε͍ͯ Δ Bluesky ༻ͷ Android ΫϥΠΞϯτ ࡢ೔ Google Play Store ͰΦʔϓϯςε τΛ։࢝ https://play.google.com/store/apps/ details?id=io.github.akiomik.seiun

Slide 25

Slide 25 text

ػೳ • ϑΥϩʔ • ϓϩϑΟʔϧӾཡɾมߋ • Ҿ༻Ϧϙετ Ҏ֎͸େମͰ͖Δ😇 (΋͏ͪΐͬͱ଴ͬͯͯͶ…)

Slide 26

Slide 26 text

࢖༻ٕज़ Lang: Kotlin API: Retro fi t2 + Moshi + Eithernet UI: Jetpack compose + Material 3 Android ॳֶऀͳΓʹؤுͬͯ࡞ͬ ͍ͯ·͢🥺

Slide 27

Slide 27 text

Bluesky/ATPʹ͓͚Δ Android ։ൃࣄ৘

Slide 28

Slide 28 text

ΫϥΠΞϯτϥΠϒϥϦ͕ͳ͍

Slide 29

Slide 29 text

ΫϥΠΞϯτϥΠϒϥϦ͕ͳ͍ • ެ͔ࣜΒఏڙ͞Ε͍ͯΔͷ͸ node ͱ golangͷΈ • ATP ༻ͷ SDK Λࣗ෼Ͱ։ൃ͢Δඞཁ͕͋Δ NOTE: Dart༻ͷ΋ͷͳΒՃ౻͞Μ࡞ͷϥΠϒϥϦ͕͋Δ • https://pub.dev/documentation/atproto/latest/

Slide 30

Slide 30 text

SDK։ൃ XRPC ༻ͷΫϥΠΞϯτΛ࣮૷͢Δ ެࣜυΩϡϝϯτ ΛಡΊ͹OK…ͱݴ͍ ͍ͨͱ͜Ζ͕ͩɺ͋·ΓࢀߟʹͳΒͳ͍ 😇 Lexicon ͷ֓؍Λ௫ΜͩΒ @atproto/ api ͷ API ·ͨ͸ίʔυ͔Β௚઀Ͱ͖Δ ͜ͱΛ୳ͨ͠ํ͕ૣ͍

Slide 31

Slide 31 text

ΏΔ;Θ XRPC • JWT Λ࢖ͬͨೝূ (Authorization: Bearer $accessJwt) • `type: query` ͸ GET ͰΫΤϦύϥϝʔλʹ৐ͤͯϦΫΤετ • `type: procedure` ͸ POST Ͱbody͸json (blobΛআ͘) • `type: record` ͱ `schemaϓϩύςΟ` ͕΍ΓͱΓ͢Δσʔλܕ

Slide 32

Slide 32 text

Retro fi t2 + Moshi + EitherNet ͍͔ͭ͘ϋϚΓͲ͜Ζ͕͋Δ͕ɺ XRPC Ͱ΋៉ྷʹॻ͚Δ

Slide 33

Slide 33 text

͍͔ͭ͘ͷ ϋϚΓͲ͜Ζ ͍ͨΔͱ͜ΖͰૺ۰͢Δ `type: unknown` `type: union` ͷѻ͍͕Ή͔ͣ͗͢͠Δ 㱺 ͍͍ײ͡ͷରࡦํ๏ืूதͰ͢😢

Slide 34

Slide 34 text

͍͔ͭ͘ͷϋϚΓͲ͜Ζ • Moshi ͷ೔࣌ܕ͸ RFC 3339 ͔͠ѻ͑ͳ͍͕ɺXRPC ͸ ISO 8601 • 㱺 Retro fi t ͷ Converter Adapter Λ࣮૷ (ਖ਼͘͠΍Δʹ͸) • EitherNet Ͱ͸ۭͷϨεϙϯεΛѻ͏͜ͱ͕Ͱ͖ͳ͍ • 㱺 EitherNet Λϥοϓͨ͠ Retro fi t ͷ Converter Adapter Λ࣮૷ • Blob ͷ౤͛ํ͕ௐ΂ͯ΋Θ͔Βͳ͔ͬͨ (ࠓ͸ RequestBody Λ࢖ͬͯΔ)

Slide 35

Slide 35 text

Google Play StoreͰͷ৹ࠪ

Slide 36

Slide 36 text

Google Play StoreͰͷ৹ࠪ • SNSΞϓϦͱͯ͠ఏग़͢Δ৔߹ɺ࠷௿ݶʮ௨ใʯͱʮϛϡʔτ (ϒ ϩοΫ)ʯͷ࣮૷͕ඞཁ • ςετ༻ͷΞΧ΢ϯτͷఏڙ΋ඞཁ • 㱺 ௨ใͱςετ༻ʹ2ΞΧ΢ϯτ͸ཉ͍͠ • boobee.blue ͷΑ͏ͳ֎෦ͷ PDS Λ࢖Θͤͯ΋Β͏ͷ΋ख

Slide 37

Slide 37 text

Android ϢʔβΛ औΓר͘ঢ়گ

Slide 38

Slide 38 text

ެࣜΫϥΠΞϯτ iOS ͱ Web (PC) ͷΈ (3/17 ݱࡏ) Android ޲͚ʹ PWA ԽΛਐΊΔͱ ͷ͜ͱ (3/16 ࣌఺ͷ৘ใ)

Slide 39

Slide 39 text

ΞΧ΢ϯτ࡞੒ ެࣜ Web ΫϥΠΞϯτͰOK PC͕ͳ͚Ε͹ҎԼͷ͍ͣΕ͔ • ੨Ӣ • Bluesky Account Creator • syui ͞Μ࡞ͷ bsky

Slide 40

Slide 40 text

BlueskyΛָ͠Ή ޷͖ͳΫϥΠΞϯτͰOKʂ ެࣜΫϥΠΞϯτ͸҆৺ײ͕͋Δ ໺ྑΫϥΠΞϯτ͸εϐʔυײ΍ ֤ʑͷ࡞ऀ͞Μͷ৭͕ग़ָ͍ͯͯ͠ ͍ ωΠςΟϒΞϓϦͳΒ੨Ӣ🙏

Slide 41

Slide 41 text

Have a nice sky 🤙 ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠