19 คะแนน โดย GN⁺ 2024-08-30 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • Skip เป็นเครื่องมือที่ช่วยขยายการพัฒนาแอป Swift ไปยัง Android
  • สามารถพัฒนาแอปเนทีฟได้ทั้งบน iOS และ Android โดยใช้ Swift และ Xcode
  • วิธีการทำงานของ Skip
    • เมื่อพัฒนาแอป Swift และ SwiftUI ใน Xcode ปลั๊กอิน Xcode ของ Skip จะทำการแปลงเป็น Kotlin และ Jetpack Compose
    • สามารถพัฒนาไลบรารีหรือทั้งแอปบนทั้งสองแพลตฟอร์มได้ โดยยังคงประสิทธิภาพและส่วนติดต่อผู้ใช้แบบเนทีฟไว้

ข้อดีของแอป Skip

เนทีฟอย่างแท้จริง

  • แอป Skip ไม่ได้แค่ "ดูเหมือนเนทีฟ" แต่เป็นเนทีฟจริง ๆ
  • บน iOS ใช้ Swift และ SwiftUI ส่วนบน Android ใช้ Kotlin และ Compose

โปร่งใสอย่างสมบูรณ์

  • เมื่อใช้ Skip ทุกส่วนของแอปจะเปิดเผยให้ผู้พัฒนาเห็น
  • สามารถแปลงโค้ด Swift เป็นซอร์สโค้ด Kotlin โดยตรงเพื่อตรวจสอบและปรับแต่งได้

น้ำหนักเบา

  • เมื่อใช้ SkipZero แอป iOS จะไม่พึ่งพาเฟรมเวิร์กของ Skip
  • แอป Android ต้องการเพียงไลบรารีโอเพนซอร์สของ Skip ไม่กี่ตัวเท่านั้น

ประสิทธิภาพด้านหน่วยความจำ

  • เนื่องจากไม่มี managed runtime เพิ่มเติม แอป Skip จึงมีประสิทธิภาพสูงที่สุดเท่าที่เป็นไปได้บนทั้งสองแพลตฟอร์ม
  • บน iOS ใช้ bare metal และบน Android ใช้ ART bytecode

IDE ที่เหมาะที่สุด

  • IDE ของ Skip คือ Xcode ซึ่งเป็นสภาพแวดล้อมที่ยอดเยี่ยมที่สุดสำหรับการพัฒนา iOS
  • สำหรับการปรับแต่งฝั่ง Android สามารถเปิดโค้ดที่สร้างขึ้นใน Android Studio ได้โดยตรง

การผสานรวมที่สมบูรณ์

  • Skip สร้าง Kotlin และ Compose มาตรฐาน จึงผสานรวมกับไลบรารี Android ได้ง่าย
  • สามารถเรียกใช้โค้ด Kotlin และ Java อื่น ๆ ได้โดยตรง

อยู่บนพื้นฐานโอเพนซอร์ส

  • ตัว transpiler ของ Skip เป็นเพียงครึ่งหนึ่งของเรื่องราวเท่านั้น
  • เฟรมเวิร์กอย่าง Foundation และ SwiftUI ที่รองรับการพัฒนาแอป iOS สามารถใช้งานบน Android ได้เช่นกัน ผ่านอิมพลีเมนเทชันโอเพนซอร์สฟรีของ Skip

เป็นมิตรกับ CI

  • Skip แปลง unit test ได้ด้วย
  • สามารถรันทดสอบได้ทั้งแบบโลคัลหรือระยะไกล เพื่อรับประกันว่าลอจิกเดียวกันจะทำงานได้เหมือนกันข้ามแพลตฟอร์ม

ความสามารถในการแยกตัวออก

  • ทั้งอินพุต Swift และเอาต์พุต Kotlin เป็นของผู้พัฒนา
  • ไม่จำเป็นต้องพึ่งพา Skip transpiler อย่างต่อเนื่อง

สรุปของ GN⁺

  • Skip เป็นเครื่องมือที่ช่วยขยายแอป Swift ไปยัง Android โดยยังคงประสิทธิภาพและส่วนติดต่อผู้ใช้แบบเนทีฟไว้บนทั้งสองแพลตฟอร์ม
  • รองรับทั้ง Xcode และ Android Studio ทำให้นักพัฒนาทำงานได้อย่างมีประสิทธิภาพมากขึ้น
  • มีพื้นฐานเป็นโอเพนซอร์ส จึงให้ทั้งความโปร่งใสและความสามารถในการปรับแต่ง
  • เป็นมิตรกับ CI และสามารถรับประกันประสิทธิภาพที่สอดคล้องกันข้ามแพลตฟอร์มผ่านการทดสอบ
  • โปรเจ็กต์ที่มีความสามารถคล้ายกันคือ Kotlin Multiplatform

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

 
ing03201 2024-08-30

ถ้ารองรับการทำให้โค้ดอ่านยากด้วยก็น่าจะดีมากเลยครับ

 
godrm 2024-08-30

โอ้โห น่าสนใจดีนะครับ แม้ตอนนี้จะยังไม่รู้เลยว่ามันจัดการอย่างไรและมากน้อยแค่ไหน แต่ก็ดูเป็นความพยายามที่ทั้งบ้าบิ่นและสนุกดีครับ

 
GN⁺ 2024-08-30
ความคิดเห็นจาก Hacker News
  • แชร์ประสบการณ์การพอร์ตแอปส่วนตัวไปยัง Android

    • กำลังพัฒนาแอป iOS ด้วย SwiftUI และพยายามพอร์ตไปเป็นเวอร์ชัน Android โดยลองใช้ React Native, Ionic, Ignite ฯลฯ แต่พบความยากลำบาก
    • เมื่อลองใช้ Skip แล้วรู้สึกพอใจมาก เพราะยังคงบริบทของ Swift ไว้และสามารถเขียนแอปด้วยภาษาเดียวได้
    • การเขียนโค้ดแยกตามแพลตฟอร์มทำได้ง่าย และสามารถรันแอปได้อย่างรวดเร็วโดยไม่ต้องเรียนรู้ Android
    • มีแผนจะพัฒนาแอปทั้งหมดด้วย Skip และเผยแพร่ลงทั้งสองแอปสโตร์
  • ข้อกังวลเกี่ยวกับ Skip

    • มีข้อสงสัยเกี่ยวกับไลเซนส์โอเพนซอร์ส (GPL vs MIT)
    • อยากรู้วิธีจัดการแพ็กเกจและการแยกเงื่อนไข iOS/Android
    • สงสัยว่า Apple service API จะถูกจัดการอย่างไรบน Android
    • ต้องการตัวอย่างโฆษณาและการซื้อภายในแอป
  • คำถามเกี่ยวกับการจัดการ dependency ของ Skip

    • สงสัยว่าสามารถใช้แพ็กเกจ Swift PM ในโปรเจกต์ Android ได้อย่างโปร่งใสหรือไม่
    • อยากรู้ว่า Kotlin สามารถเรียกใช้ไลบรารี Swift ได้อย่างโปร่งใสหรือไม่
  • ความเห็นเกี่ยวกับตลาดเป้าหมายของ Skip

    • ดูเหมือนเป็นผลิตภัณฑ์ที่มุ่งเป้าไปยังบริษัทในสหรัฐฯ/ยุโรปที่ต้องการแปลงแอป iOS ไปเป็น Android เป็นหลัก
    • ในภูมิภาคอื่นที่ Android เป็นกระแสหลัก มีเฟรมเวิร์กที่ดีกว่าอย่าง Flutter, React Native, Kotlin MP อยู่แล้ว
    • มีการชี้ปัญหาเรื่อง transpiling ของ Skip และความยากในการบำรุงรักษา
  • ประสบการณ์แปลงโค้ดด้วย ChatGPT และ Claude

    • ประสบความสำเร็จในการแปลงโค้ด SwiftUI ไปเป็น Kotlin, Jetpack Compose และ Material3
    • โค้ดที่ได้ทำงานได้แทบจะทันที และต้องแก้แค่เรื่องสไตล์/ธีม
  • แชร์ประสบการณ์การใช้งาน Skip

    • หลังจากใช้งานมาหลายเดือน พบว่ามีช่วงการเรียนรู้ แต่ช่วยแก้ปัญหาข้ามแพลตฟอร์มได้อย่างสมบูรณ์
  • เอกสารของ Skip และข้อจำกัดของการ transpile

    • สงสัยว่ามีข้อจำกัดของการ transpile หรือไม่เมื่อใช้ SwiftUI หรือไลบรารีแกนหลักอื่น ๆ
    • อาจเกิดปัญหาคล้ายกับความยากในการพัฒนา Xamarin
  • ข้อจำกัดของเฟรมเวิร์ก Skip

    • เนื่องจากแอป iOS ส่วนใหญ่ใช้เฟรมเวิร์กของแพลตฟอร์ม Apple การทำ implementation ขั้นต่ำของ Skip อาจมีข้อจำกัด
    • ปัจจุบันยังไม่มี implementation สำหรับ StoreKit, WebKit, SafariServices, UserNotifications, CryptoKit เป็นต้น
  • ความยากในการรวม Skip เข้ากับแอปเดิม

    • มีคำถามว่าการรวม Skip เข้ากับแอป SwiftUI + UIKit ที่มีอยู่เดิมนั้นยากหรือไม่
    • ต้องการตัวอย่างการย้ายแอปขนาดเล็กหรือขนาดกลางมาใช้ Skip
  • การแก้ปัญหาด้านประสิทธิภาพของ Skip

    • ช่วยได้มากในการแก้ปัญหาด้านประสิทธิภาพของเฟรมเวิร์กข้ามแพลตฟอร์ม