10 คะแนน โดย GN⁺ 2025-10-25 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ขณะที่ภาษา Swift เติบโตเต็มที่และขยายไปสู่ คลาวด์, Windows, เบราว์เซอร์, ไมโครคอนโทรลเลอร์ ตอนนี้ก็ได้มีการเปิดตัว Swift SDK สำหรับ Android แล้ว
  • SDK นี้เป็นผลลัพธ์จากความพยายามตลอดหลายเดือนของ Swift Android Workgroup ซึ่งช่วยให้นักพัฒนาสามารถสร้าง แอปเนทีฟ Android ด้วย Swift ได้
  • SDK นี้ รวมอยู่ในตัวติดตั้งสำหรับ Windows หรือสามารถ ดาวน์โหลดแยกสำหรับ Linux และ macOS ได้ พร้อมโค้ดตัวอย่างและคู่มือการใช้งาน
  • ผ่านโครงการ swift-java ทำให้รองรับ การทำงานร่วมกันแบบสองทิศทาง ระหว่าง Swift และ Java พร้อมการสร้าง binding อัตโนมัติเพื่อคงทั้งประสิทธิภาพและความปลอดภัย
  • การเปิดตัวครั้งนี้ถูกมองว่าเป็นจุดเปลี่ยนที่เร่งการขยาย ระบบนิเวศข้ามแพลตฟอร์ม ของ Swift และเปิดความเป็นไปได้ใหม่ให้กับการพัฒนาแอปมือถือ

ภาพรวมของ Swift SDK for Android

  • จากที่ภาษา Swift ได้ขยายตัวตลอด 10 ปีที่ผ่านมา ตั้งแต่ บริการคลาวด์ไปจนถึง Windows, เบราว์เซอร์, ไมโครคอนโทรลเลอร์ ตอนนี้การรุกเข้าสู่แพลตฟอร์ม Android ก็ได้รับการประกาศอย่างเป็นทางการแล้ว
    • ด้วยความสามารถด้าน interoperability ของ Swift จึงทำให้การแชร์โค้ดข้ามหลายแพลตฟอร์มทำได้ง่าย
  • Android workgroup เป็นกลุ่มเปิดที่ทุกคนสามารถเข้าร่วมได้ โดยมีเป้าหมายเพื่อขยาย Swift ไปสู่ Android
  • การประกาศครั้งนี้หมายถึงการเผยแพร่ nightly (preview) build ของ Swift SDK for Android ซึ่งเป็นผลลัพธ์จากความร่วมมือของชุมชนมาอย่างยาวนาน

ความสามารถหลักของ SDK และรูปแบบการแจกจ่าย

  • ตอนนี้นักพัฒนาสามารถใช้ Swift เพื่อพัฒนา แอปพลิเคชันเนทีฟบน Android ได้โดยตรง
    • สิ่งนี้เปิดโอกาสใหม่สำหรับ การพัฒนาข้ามแพลตฟอร์ม
    โฆษณา
  • SDK นี้ถูก บันเดิลมากับตัวติดตั้ง Windows และสามารถ ดาวน์โหลดแยกสำหรับ Linux และ macOS ได้
  • Swift.org ให้คำแนะนำวิธีตั้งค่าโค้ด Swift บนอุปกรณ์ Android ผ่านคู่มือ “Getting Started”
    • รีโพซิทอรี Swift for Android Examples บน GitHub สาธิต เวิร์กโฟลว์แอปแบบ end-to-end

ความเข้ากันได้ของแพ็กเกจและการขยายตัวของชุมชน

  • ผ่าน Swift SDK ทำให้สามารถ พอร์ตแพ็กเกจ Swift เดิมไปยัง Android ได้
    • แพ็กเกจมากกว่า 25% ใน Swift Package Index รองรับการบิลด์บน Android แล้ว
    • หน้า Community Showcase จะแสดงว่าเข้ากันได้กับ Android หรือไม่
  • การขยายตัวนี้นำไปสู่การเสริมความแข็งแกร่งด้าน การรองรับหลายแพลตฟอร์ม ของระบบนิเวศ Swift

โครงการ swift-java และการทำงานร่วมกัน

  • โครงการ swift-java เป็นทั้ง ไลบรารีและตัวสร้างโค้ด ที่มอบ interoperability ระหว่าง Swift และ Java
    • ระบบจะจัดการ การผสานรวมแบบสองทิศทาง ระหว่าง Swift และ Java โดยอัตโนมัติ พร้อมสร้าง binding ที่ปลอดภัยและประสิทธิภาพสูง
    โฆษณา
  • นักพัฒนาสามารถใช้สิ่งนี้เพื่อ ย้าย business logic ไปยัง Android ได้ และดูรายละเอียดเพิ่มเติมได้จากวิดีโอบรรยายของ Swift Server Side Meetup

การมีส่วนร่วมของชุมชนและโรดแมปในอนาคต

  • พรีวิวรีลีสครั้งนี้ได้เปิดโอกาสใหม่สำหรับ การปรับปรุงเครื่องมือและการขยายระบบนิเวศ
    • มีการแนะนำให้แบ่งปันประสบการณ์ ไอเดีย เครื่องมือ และแอปต่าง ๆ ใน หมวด Android ของ Swift Forums
    • ขณะนี้ประกาศดังกล่าวกำลังถูกพูดคุยกันอยู่ใน เธรดทางการ ของฟอรัมด้วย
  • ขณะนี้ Android workgroup กำลังจัดทำ vision document เพื่อเสนอ พื้นที่ลำดับความสำคัญและทิศทางในอนาคต ของ Swift on Android
    • สามารถติดตามความคืบหน้าหลักผ่าน project board และมีการดูแลคุณภาพ SDK ด้วย ระบบ CI อย่างเป็นทางการ
  • ทีม Swift สนับสนุนให้ชุมชนเข้ามามีส่วนร่วม โดยมีเป้าหมายเพื่อ เสริมความแข็งแกร่งให้กับสถานะของ Swift ในระบบนิเวศ Android

1 ความคิดเห็น

 
GN⁺ 2025-10-25
ความคิดเห็นจาก Hacker News
  • คำถามสำคัญของทุก cross-platform framework คือจะจัดการ UI อย่างไร
    ถ้าใช้ดีไซน์ซิสเต็มที่ให้ความรู้สึกแปลกแยกจากแต่ละแพลตฟอร์มแบบ Adobe Flex Builder สุดท้ายก็ต้องมาทำ อารมณ์แบบ native เองอยู่ดี
    Flutter พยายามจำลอง ธีม Cupertino ของ iOS ให้สมบูรณ์แบบ ส่วน React Native ใช้วิดเจ็ตพื้นฐานของแพลตฟอร์ม จึงทำให้องค์ประกอบอย่างการเลื่อนดูเป็นธรรมชาติ
    น่าเสียดายที่บทความบล็อกไม่ได้พูดถึงประเด็นสำคัญนี้
    ต่อให้ Apple ออก Swift สำหรับ Android ก็มีโอกาสที่จะยังดูแปลกบน Android เพราะปรัชญาการออกแบบเฉพาะตัวของ Apple
    ดูเหมือนว่าทิศทางในอนาคตจะขึ้นอยู่กับว่าโปรเจกต์นี้ Apple เป็นผู้ขับเคลื่อนเองโดยตรง หรือเป็นความพยายามแบบ โอเพนซอร์สที่ขับเคลื่อนโดยคอมมูนิตี้

    • ฉันชอบเฟรมเวิร์กที่ให้ เขียน Native UI ได้มากกว่าการแชร์ UI
      นั่นจึงเป็นเหตุผลที่ฉันชอบ KMP เพราะบน iOS ใช้ SwiftUI เขียน UI ได้ ส่วนบน Android ใช้ Kotlin และแชร์เฉพาะ business logic
      ถ้าพยายามแชร์ UI มักจะกลายเป็นฝันร้ายแบบ “เขียนครั้งเดียว ดีบักทุกที่”
      Swift for Android ก็ดูเหมือนจะทำให้ แชร์ logic ระดับภาษา ในลักษณะนี้ได้
    • Swift SDK for Android ไม่ได้บังคับแนวทางด้าน UI
      แม้แต่ในตัวอย่างก็ยังใช้ Jetpack Compose ตามเดิม แล้วเรียกใช้ logic ที่เขียนด้วย Swift
      มันยังคงโครงสร้างแบบเดียวกับ memory model แบบ reference counting ของ Swift จึงมีความสอดคล้องสูง
      ในฐานะคนที่ดูแลเครื่องมือสำหรับนักพัฒนาที่ Apple ฉันหวังว่าเทคโนโลยีนี้จะเป็นจุดตั้งต้นของนวัตกรรมใหม่
    • เหมือนกรณีที่ Browser Company พอร์ต SwiftUI ไปยัง Windows บน Android ก็อาจเป็นไปได้ที่จะมีการแมป SwiftUI ไปยัง Jetpack Compose
      เดิมที SwiftUI ไม่ใช่ “Native UI” โดยตรง แต่เป็น ภาษาประกาศเชิง declarative ที่ระบบตีความแล้วสร้าง UIView หรือ NSView ขึ้นมา
    • รีลีสนี้ยังไม่มีส่วนของ SwiftUI หรือ UIKit ที่ถูกพอร์ตไปยัง Android
      ถ้าไม่ทำการจำลองขึ้นมาเองแบบ Flutter ก็เป็นไปไม่ได้ที่จะใช้ Apple UI บน Android แบบเดิมทุกประการ
    • Swift SDK ไม่ได้กำหนดเทคโนโลยี UI
      แต่โปรเจกต์อย่าง Skip.tools จะช่วย bridge SwiftUI ไปยัง Jetpack Compose
      ดูตัวอย่างได้ใน แอป Skip Showcase
      ฉันเป็นสมาชิกทั้งของผลิตภัณฑ์ Skip และ Swift Android Workgroup และมีส่วนร่วมเป็น release manager ของ SDK ครั้งนี้
  • ดีใจมากที่มีการประกาศเป็นโปรเจกต์ทางการ
    เคยใช้ทั้ง RN และ Flutter แต่ปัญหาคือขาด ความเป็น native อยู่เสมอ
    แม้จะมี KMP แต่โดยมากนักพัฒนามักเริ่มจาก iOS แล้วค่อยขยายไป Android
    ถ้าแชร์โค้ดด้วย Swift Package ได้ กระบวนการนี้จะเป็นธรรมชาติมากขึ้นมาก

    • นักพัฒนา Android มีจำนวนมากกว่ามาก และการเผยแพร่ก็ง่ายกว่า
      ในทางกลับกัน นักพัฒนา Swift/Objective-C มีจำนวนน้อยกว่ามาก
      นอกสหรัฐฯ ส่วนแบ่งตลาด iPhone ต่ำกว่า ทำให้บริษัทต่าง ๆ มักคิดในเชิง Windows หรือเบราว์เซอร์เป็นศูนย์กลาง
    • การบอกว่า “เริ่มจาก iOS” ดูจะเป็น มุมมองแบบอเมริกาเป็นศูนย์กลาง
      KMP ถูกใช้แล้วในแอประดับใหญ่อย่าง Google Workspace และด้วยการลงทุนจาก Kotlin และ JetBrains ทำให้มี ความสุกงอม สูง
      ส่วน Flutter มีรอบการออกเวอร์ชันเร็วเกินไปจนตามไม่ทัน
    • business logic ที่อยู่บน JavaScript ก็ไม่ควรถูกมองข้าม
      ใช้ JavaScriptCore หรือ QuickJS ก็รันได้ทั้งบน iOS, Android และ Web พร้อมทั้งรองรับ hot reload
      แต่ด้วยนโยบายของ App Store การเปลี่ยนฟีเจอร์ใหญ่ทำได้ยาก จึงเหมาะกับการแก้บั๊กมากกว่า
      ในความเป็นจริงที่รอบการปล่อยแอปบนมือถือช้า แนวทางนี้ถือเป็นโอกาสใหญ่
    • ที่ Proton มีการแชร์ logic มากกว่า 80% ด้วย Rust และที่เหลือค่อยทำแยกตามแพลตฟอร์ม
    • จริง ๆ แล้วโครงสร้างแบบนี้ทำได้มานานแล้วด้วย .NET และ MvvmCross
      รูปแบบ shared core library + โปรเจกต์ Native UI ของแต่ละแพลตฟอร์มทำงานได้ดี
  • ฉันสงสัยว่าเกี่ยวข้องกับโปรเจกต์ที่ใช้ SKIP transpiler ที่เห็นใน บล็อก Skip.tools หรือเปล่า
    อยากย้ายแอป SwiftUI ไป Android แต่ก็อยากเลี่ยง RN

    • ใช่เลย Skip ใช้เวอร์ชันพรีวิวของ Swift SDK มานานกว่าหนึ่งปีแล้ว และใช้ โหมด Fuse เพื่อ build แอป SwiftUI แบบ native เต็มรูปแบบลง Android
      Skip มีสองโหมด: โหมด Lite ที่แปลงโค้ด Swift เป็น Kotlin และ โหมด Fuse ที่คอมไพล์ Swift ให้ทำงานบน Android โดยตรง
      สามารถใช้ทั้งสองโหมดร่วมกันเพื่อเชื่อมเข้ากับ ecosystem ของ Kotlin ได้ เช่น Lottie และ Firebase
      ดูรายละเอียดเปรียบเทียบเพิ่มเติมได้ที่ Skip Docs
      ดีใจที่มี SDK ทางการออกมา เพราะต่อจากนี้จะได้ใช้เวอร์ชันทางการแทนการ build เอง
    • Skip เป็นหนึ่งในผู้มีส่วนร่วมหลักของความพยายามครั้งนี้
    • ตอนนี้สามารถ รัน Swift แบบ native ได้แล้วโดยไม่ต้องใช้ transpiler และความเข้ากันได้ก็ดีขึ้นมาก
  • หวังว่าจะไม่จบลงแค่เป็น proof of concept แบบง่าย ๆ เหมือน Swift Embedded
    Swift เป็นภาษาที่สวยงามในเชิงภาษา แต่ก็มีบรรยากาศความไม่มั่นใจอยู่บ้างเกี่ยวกับภาวะผู้นำของคอมมูนิตี้

    • guard let self = self else { return } — เป็นมุกที่นักพัฒนา Swift คุ้นเคยกันดี
  • ไม่อยากเห็น RN กับ Flutter อีกแล้ว
    เบื่อ UI ที่ดูแข็งทื่อ และการตอบสนองต่อการแตะที่ช้า

    • ใน Flutter ก็ปรับ corner radius ได้ และประสิทธิภาพก็เร็ว
      ถ้าตอบสนองช้า อาจเป็นปัญหาจากการ implement ของแอปเองมากกว่า
    • ฉันเองก็ไม่ได้ชอบ RN กับ Flutter แต่ก็ไม่มีอะไรรับประกันได้ว่า Swift on Android จะดีกว่าพวกมัน
      Apple อาจ หมดความสนใจ ไปอย่างรวดเร็วก็ได้
  • “You got Kotlin in my iOS.”
    “You got Swift in my Android.” — เป็นคำเปรียบเปรยที่มีไหวพริบ

    • เป็นอุปมาที่สมบูรณ์แบบ อาจได้เห็นลูกผสมแบบโฆษณา Reese’s ที่ Kotlin กับ Swift ผสมกันจริง ๆ ก็ได้
    • Kotlin on iOS เป็น static compilation และ interoperable กับ Swift/ObjC แบบ native
      ดู ภาพรวม Kotlin Native
  • การประกาศครั้งนี้ดูเหมือนเป็นการพิสูจน์ความสำเร็จของ ระบบ Swift SDK แบบใหม่
    ในอดีตการรองรับแพลตฟอร์มอื่นยุ่งยากเพราะพัวพันกับ CMake แต่ตอนนี้ถ้าทำตามกฎของ SDK ก็พอร์ตไปแพลตฟอร์มไหนก็ได้
    นอกจาก Android แล้วยังมีแผนขยายไป Linux, wasm, embedded และเร็ว ๆ นี้ Windows
    การทำงานร่วมกับ JVM ยังไม่สมบูรณ์ แต่เห็นได้ชัดว่า ความเป็นอิสระจากแพลตฟอร์ม เพิ่มขึ้นมาก

  • ฉันชอบ Kotlin Multiplatform แต่ Swift for Android ก็น่าสนใจ
    การแชร์ Swift native library สำหรับงานที่ไวต่อหน่วยความจำน่าจะมีประโยชน์
    แต่ถ้าจะย้าย business logic ทั้งหมดไป Swift ตอนนี้ KMP ยังดูสุกงอมกว่า

    • เคยทำแอปเดสก์ท็อปด้วย KMP ไหม อยากรู้ ระดับความสุกงอม โดยรวม
  • เรื่องแชร์ business logic นั้นเป็นปัญหาที่แก้ได้มานานแล้ว
    ความเจ็บปวดจริงคือการต้อง เขียน UI ซ้ำสองครั้ง
    ต้องการ common UI framework ที่ไม่อึดอัดแบบ React Native

    • ช่วงหลัง React Native ดีขึ้นมากจากการเปลี่ยนไปใช้ New Architecture
      ถ้าใช้ร่วมกับ Expo ประสบการณ์พัฒนาก็ดีขึ้นมาก
  • ฉันแชร์โค้ดระหว่าง Android กับ iOS มานานแล้ว แต่การ แชร์ UI คือฝันร้าย
    เดิมทีแชร์เฉพาะ logic ที่ซับซ้อนด้วย C/C++/Rust สุดท้ายเลยมีภาษาถึงสามภาษา
    KMP และ Swift for Android ทำให้แชร์กันได้ด้วย Kotlin/Swift เท่านั้น จึงสะอาดตากว่ามาก
    แนวทางแบบนี้ สมจริงและมีประสิทธิภาพ กว่าเฟรมเวิร์กที่พยายามบังคับแชร์ UI มาก