ElementaryUI – 브라우저에서 돌아가는 Swift

ElementaryUI – Swift, in the Browser

elementary.codes ▲ 120 댓글 36 frizlab

요약

ElementaryUI는 SwiftUI와 비슷한 문법으로 쓴 Swift 앱을 브라우저에서 실행하는 프레임워크입니다.

ElementaryUI는 WebAssembly(브라우저에서 실행되는 바이너리 형식)로 Swift 코드를 돌리는 오픈소스 웹 UI 프레임워크입니다. 작성자는 HN 댓글에서 Swift로 웹사이트를 만들 수 있는지 시험해 보려고 시작했다고 밝혔습니다.

왜 중요한가

  • 웹 앱까지 Swift 언어와 도구 하나로 만들려는 개발자에게 생태계 안의 선택지가 생깁니다.
  • kB 규모 번들을 내세우지만, 작성자도 번들 크기와 wasm 모듈 분할을 아직 풀 과제로 꼽았습니다.

핵심 내용

  • SwiftUI와 비슷한 API로 화면을 선언하고, @State, @Environment, @Reactive로 상태를 자동 관리합니다.
  • Embedded Swift(작은 환경용 경량 Swift)를 지원해 wasm 번들이 MB가 아닌 kB 규모라고 설명합니다.
  • CSS 기반 애니메이션 시스템에 자동 FLIP 전환(요소 위치 변화를 부드럽게 잇는 기법)을 갖췄습니다.
  • Vite 기반 개발 서버로 핫 리로드(코드를 고치면 화면에 바로 반영)를 지원합니다.
  • 애플과 제휴하거나 애플의 승인을 받은 프로젝트는 아니라고 밝혔습니다.

HN 반응

  • TypeScript가 있는데 왜 필요하냐는 물음에 앱과 로직을 공유할 수 있다는 답과 언어를 통일할 수 있다는 답이 나왔습니다.
  • 애플 의존을 걱정하는 의견이 있었고, 작성자는 애플이 언어 개발을 공개적으로 지원해 왔다며 괜찮을 것이라고 답했습니다.

댓글

30개 표시 · 전체 36개
  1. adrusi HN

    이제 18년 된 Cappuccino 프로젝트가 떠오르네요 https://www.cappuccino.dev/

  2. frizlab HN

    놀랍게도 아직 살아 있는 프로젝트예요.

  3. jdminhbg HN

    마지막 릴리스와 블로그 글이 2018년인데, 정말 살아 있는 건가요?

  4. joelkesler HN

    네! GitHub 저장소를 보면 최근 5일 안에 올라온 커밋이 있어요.

    https://github.com/cappuccino/cappuccino/commits/main/

  5. thejazzman HN

    최신 버전: 1.0.0 (2018년 9월 4일)

  6. frizlab HN

    v2를 준비하느라 지금도 작업이 아주 많이 진행되고 있어요.

  7. sapphire4 HN

    그걸로 만든 Keynote 웹 버전은 정말 대단했어요.

  8. sampton HN

    저는 인터페이스 빌더에 20달러를 냈는데 끝내 받지 못했어요.

  9. gosen HN

    브라우저에서 Swift를 쓰면 어떤 이점이 있는지 알 수 있게 벤치마크나 비교 자료가 있으면 흥미로울 것 같습니다. 더 빠른가요? 유지보수가 더 쉬운가요? 아니면 이 프로그래밍 언어에 대한 호감이 더 큰 이유인가요?

    어쨌든 정말 멋진 작업입니다!

  10. simonleeb HN

    ElementaryUI 제작자입니다.

    js framework benchmark에 elementaryui라는 이름으로 올라가 있으니, 현재 성능이 어느 정도인지 직접 확인하실 수 있습니다. https://krausest.github.io/js-framework-benchmark/current.html

    저는 대부분의 용도에 "충분히 빠르게" 유지할 수 있다고 확신합니다. 번들 크기는 여전히 약점이고, wasm 모듈을 제대로 번들링하고 분할하는 일은 의지를 갖고 만들어 내야 하지만, 꽤 매끄러운 경험을 가로막을 장애물은 보이지 않습니다.

    솔직히 처음엔 "나는 Swift가 좋은데, 이걸 어디에서나 쓸 수 있을까?" 하는 도전에 가까웠습니다. 하지만 최신 언어와 개발 환경 안에 온전히 머무를 수 있다는 실질적인 이점도 있습니다. 제 생각에 Swift는 아주 깔끔하고 강력한 언어라 이 분야에 잘 맞으니, 웹 프로젝트에서도 편하게 쓸 방법을 만들어 볼 만하다고 봤습니다.

  11. gosen HN

    좋네요, 자세한 설명과 답변 감사합니다! JS/TS를 좋아하는 사람들에게 Swift를 써 보라고 설득하기는 어렵겠지만, 해볼 만한 시도라고 생각해요 :D

  12. leecommamichael HN

    재미있는 프로젝트네요. 곁가지 얘기지만, 애플은 Swift 컴파일러 좀 고쳐 주세요. 너무 느려요. 정말정말 느리다고요.

  13. Someone HN

    컴파일러 탓만은 아닌 것 같습니다. 타입 추론이 극도로 유연하다 보니 컴파일러가 해야 할 일이 많아집니다.

    (예시는 https://www.swiftbysundell.com/basics/type-inference/ 에 있습니다)

  14. pjmlp HN

    조금씩, 적어도 일부 사람들에게는 그리운 브라우저 플러그인이 돌아오고 있네요.

  15. jan_m_savage HN

    언젠가는 이런 일이 일어날 줄 알았어요. Swift는 Haskell 같은데, 더 근사하고 프로그래머 친화적이에요.

  16. isodev HN

    선택권이 있다면 저는 애플에 그렇게 가까이 다가가지 않겠어요. 애플은 언제든 방향을 틀 수 있잖아요. "Swift 새 버전은 99.99달러부터 시작합니다" 이런 식으로요. /s

  17. simonleeb HN

    ElementaryUI 제작자입니다(그래서 편향되어 있습니다).

    그게 현실적인 위험이라는 데는 동의합니다. 다만 제 생각에 지금까지의 행보를 보면 "애플"다운 애플과 오픈소스를 하는 애플이 둘 다 공존할 수 있고, 아마 별문제 없을 겁니다.

    긍정적인 면을 말하자면, 애플은 수많은 실제 인력을 투입해 이 언어와 도구를 발전시키고 있고, 대부분 탄탄한 커뮤니티 작업과 함께 공개적으로 진행합니다.

  18. jan_m_savage HN

    경제적 맥락을 무시하고 계시네요. 언어는 진공 속에 존재하지 않아요.

    무료 대안이 늘 있으니 애플은 절대 그러지 않을 거예요. Scala와 Kotlin이 둘 다 아주 가까이 있잖아요.

  19. earthnail HN

    Swift 새 버전은 진정한 크로스 플랫폼입니다. iOS, iPadOS, MacOS, HomeOS, VisionOS, WatchOS는 물론 BodyOS, BrainOS, iThinkOS까지 지원합니다.

    개발자가 미래에 집중할 수 있도록 Swift 9부터는 리눅스, 윈도, 웹 같은 구식 플랫폼 지원을 중단합니다.

    /s

    사실 저는 Swift 개발자예요. 훌륭한 언어이긴 하지만 저도 애플 생태계에 푹 빠져 사는 사람이라, 그 바깥에서는 선택하지 않을 거예요.

  20. brailsafe HN

    jQuery에 jsx와 ember나 angular를 섞어 놓은 것 같아 보이네요.

  21. beans6543 HN

    데모가 불안정해서, 최신 Firefox에서는 가끔 하이드레이션(hydration)에 실패해요.

  22. maxdo HN

    왜 만들었는지 이유나 동기가 있나요?

  23. simonleeb HN

    ElementaryUI 제작자입니다.

    솔직한 처음 동기는 대부분 "웹사이트를 Swift로 만들 수 있을까?"였습니다. 하지만 그 밑바닥에는 제 개발 작업 전부를 유능하고 현대적인 하나의 언어(그리고 그 생태계와 도구)로 해결하고 싶다는 마음이 있습니다. 어떤 종류의 웹 앱이든 만들 수 있는, 생태계 안의 네이티브 해법도 거기에 포함됩니다. 누군가는 만들어야 하니까요...

    최근 이 내용을 swift.org 블로그에 조금 썼습니다. https://www.swift.org/blog/whats-new-in-swift-august-2026/

  24. kamisori-daijin HN

    멋져요!

  25. pipeline_peak HN

    이미 TypeScript가 있는데, 이게 무슨 쓸모가 있는지 모르겠어요.

  26. frizlab HN

    Swift가 훌륭하니까요, 아마도요! 좀 더 진지하게 말하면, iOS·안드로이드 앱과 로직을 공유하려는 목적이 아닐까 싶어요.

  27. alsetmusic HN

    그 사람들이 Swift를 Rust로 다시 쓰는 날을 기다려 보세요.

  28. frizlab HN

    Rust보다는 Swift를 Swift로 다시 쓸 가능성이 더 커요(사실 이미 조금은 그렇게 했어요).

  29. monster_truck HN

    Swift는 그다지 좋지 않아요. 한 세대의 개발자들이 LLM에게 자기 앱을 ObjC와 UIKit으로 다시 쓰게 한 뒤, 최적화를 그리 깊게 파고들지도 않았는데 성능이 3배 좋아지는 걸 보면서 이 사실을 서서히 깨닫고 있어요.

  30. frizlab HN

    제대로 작성하면 Swift가 Rust를 이길 수 있어요[1]. (물론 Rust 프로젝트도 Swift 프로젝트가 쓴 것과 같은 최적화 기법을 쓰면 따라잡을 수 있겠지만, 제 요점은 성능 면에서 Swift가 Rust에 꿇릴 게 없다는 거예요.)

    Swift의 철학은 "먼저 쓰기 쉽게 하되, 성능이 필요하면 더 낮은 수준으로 내려갈 수 있다"예요. Rust의 철학은 그 반대에 가깝고요. 저는 Swift의 철학도 타당하고 Rust의 철학보다 더 흥미롭다고 생각하지만, 취향은 각자 다른 법이죠.

    ObjC/UIKit으로 옮겼다는 얘기는, 이런 주장을 하실 거면 근거 자료를 올려 주세요. SwiftUI에서 UIKit으로 옮기면 성능이 좋아질 수는 있겠지만, 그건 Swift 자체와는 아무 상관이 없어요. 제가 알기로 SwiftUI는 사실 대부분 C++로 작성되어 있고요.

    [1] https://news.ycombinator.com/item?id=50178103

Hacker News에서 보기 ↗