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

Voidと() - 意図を伝える“ユニット型”の世界- / Void vs () -The W...

Avatar for marcy731 marcy731
September 30, 2025
1

Voidと() - 意図を伝える“ユニット型”の世界- / Void vs () -The World of Expressing Intent

2025.09.30 チキチキ!モバイルLT大会 〜残暑編〜

Avatar for marcy731

marcy731

September 30, 2025
Tweet

Transcript

  1. ()

  2. let tuple1: (Int, String) = (42, “hello") let tuple2: (id:

    Int, name: String) = (id: 1, name: "Alice") ཁૉʹॱং͕͋Γɺ0͔ΒͷΠϯσοΫε΍ϥϕϧͰΞΫηεͰ͖Δ Tuple
  3. let tuple1: (Int, String) = (42, “hello") let tuple2: (id:

    Int, name: String) = (id: 1, name: "Alice") ϥϕϧΛ෇͚Ε͹ʮߏ଄ମʯͬΆ͘ѻ͑Δ Tuple
  4. 0ཁૉλϓϧ: () → ۭλϓϧɺ།Ұͷ஋͔͠ͳ͍ → Ϣχοτܕ 1ཁૉλϓϧ: ଘࡏ͠ͳ͍ʢ(Int) = Int

    ʹ௵ΕΔʣ 2ཁૉҎ্λϓϧ: (A, B, ...) ͱͯ͠ී௨ʹ࢖͑Δ λϓϧͷཁૉ਺͝ͱͷಛҟੑ
  5. 0ཁૉλϓϧ: () → ۭλϓϧɺ།Ұͷ஋͔͠ͳ͍ → Ϣχοτܕ 1ཁૉλϓϧ: ଘࡏ͠ͳ͍ʢ(Int) = Int

    ʹ௵ΕΔʣ 2ཁૉҎ্λϓϧ: (A, B, ...) ͱͯ͠ී௨ʹ࢖͑Δ λϓϧͷཁૉ਺͝ͱͷಛҟੑ Void
  6. ΫϩʔδϟͰͷҙਤදݱ let f: () -> Void = { } let

    g: () -> () = { } ܕγεςϜ্·ͬͨ͘ಉ͡ܕɻ ݺͼग़͠ํɾಈ࡞ʹҧ͍͸ͳ͍ɻ
  7. ΫϩʔδϟͰͷҙਤදݱ let f: () -> Void = { } let

    g: () -> () = { } Ͱ΋χϡΞϯε͸ҧ͏ɻ
  8. () -> Void let f: () -> Void = {

    } • ҙຯ߹͍: ʮ෭࡞༻͚ͩΛߦ͍ɺ໭Γ஋͸ͳ͍ʯ • ϝϦοτ: • ׳शతʹ࠷΋޿͘࢖ΘΕ͍ͯΔ • ඪ४ϥΠϒϥϦ΍ެࣜυΩϡϝϯτͰ΋ͪ͜Β͕جຊ • ʮฦ͢஋͸ͳ͍ʯͱ͍͏ҙਤ͕ଈ఻ΘΔʢಡΈ΍͍͢ʣ • ࣮຿తഎܠ: • νʔϜશମͰಡΜͩͱ͖ʹ Ұ؏ੑ͕͋Δ • ެࣜʹ฿͏ͷ͕ʮSwiftyʯͳॻ͖ํ • ܕͷཪଆʢۭλϓϧͷਖ਼ମʣΛҙࣝ͠ͳͯ͘΋Α͍ͨΊɺແବʹಡऀΛ໎Θͤͳ͍
  9. () -> () let g: () -> () = {

    } • ҙຯ߹͍: ʮۭλϓϧʢ།Ұͷ஋ʣΛฦ͢ʯ͜ͱΛ ͋Γͷ··ॻ͍ͨܗ • ϝϦοτ: • ܕཧ࿦ʹ͍ۙදهͰɺਖ਼͕֬͋͞Δ • σϝϦοτ: • ࣮຿Ͱ͸΄ͱΜͲݟ͔͚ͳ͍ → ಡΈख͕ʮͳΜͰͬͪ͜ʹͨ͠ΜͩΖ͏ʁʯͱҰॠ ߟ͑Δ • Ұൠతͳ Swift ίʔυελΠϧ͔Β֎ΕΔ → ʮSwifty ͡Όͳ͍ʯͱײ͡ΒΕ΍͍͢
  10. Result<Void, Error> ʮ੒ޭ͕ͩฦ͢஋͸ͳ͍ʯ func save(document: Data) async -> Result<Void, SaveError>

    { // ... do work guard hasSpace else { return .failure(.diskFull) } // อଘ੒ޭɻฦ͢σʔλ͸ແ͍ͷͰ Voidʢʹ()ʣ return .success(()) }
  11. Optional<Void> ʮBool ͩͱԿͷਅِ͔͕ᐆດɻVoid? ͸׬ྃͱ͍͏ग़དྷࣄΛܕͰදݱʯ private var presented: Void? = nil

    func presentIfNeeded() { guard presented == nil else { return } // طʹ࣮ߦࡁΈ presentOnboardingUI() presented = () // ࣮ߦࡁΈͷࠟ੻Λه࿥ }
  12. Reactive / Combine ʮ“Πϕϯτ͕ى͖ͨ”͚ͩΛ఻͑Δʯ final class ViewModel { let didTap

    = PassthroughSubject<Void, Never>() // ஋ͳ͠Πϕϯτ func onButtonTap() { didTap.send(()) // Voidܕͷ஋͸ () ΛૹΔ } }
  13. Neverͱͷରൺ func log() -> Void { } // ݺΜͩΒ໭Δ func

    crash() -> Never { fatalError() } // ݺΜͩΒ໭Βͳ͍
  14. ͳͥ () -> () ͸࣮຿Ͱ͸͋·Γݟ͔͚ͳ͍ͷ͔ʁ 1. ՄಡੑॏࢹͷจԽɿ() -> Void ͷํ͕௚ײత

    2. ެࣜAPIɾυΩϡϝϯτͷӨڹɿAppleඪ४ϥΠϒϥϦ͸Ұ؏ͯ͠ Void 3. ʮSwiftyʯ͞ͷ௥ٻɿSwiftจԽ͸ʮಡΈ΍͢͞ɾ׳शʯΛ༏ઌ 1. () -> Void = Swifty 2. () -> () = ਖ਼͍͚͠ͲҰॠҾ͔͔ͬΔ
  15. ·ͱΊ 1. ܕ͸υΩϡϝϯτҎ্ʹ༤ห 1. Void / () ͷ࢖͍෼͚͕ APIઃܭͰҙਤΛ఻͑ΔखஈʹͳΔ 2.

    Result<Void, Error> ΍ Optional<Void> Ͱʮແʯ΋ܕʹͰ͖Δ 3. Never ͱͷରൺͰʮฦ͞ͳ͍ʯͱʮฦͤͳ͍ʯ͕໌֬ʹ۠ผͰ͖Δ 4. ࣋ͪؼΓ: ʮ໭Γ஋ͳ͠ʯΛܰࢹͤͣɺܕͰҙਤΛਖ਼͘͠఻͑Α͏