--- id: wiki-2026-0508-플랫폼-컨버전스-platform-convergence title: 플랫폼 컨버전스(Platform Convergence) category: 10_Wiki/Topics status: verified canonical_id: self aliases: [Platform Convergence, Cross-platform unification, Universal app] duplicate_of: none source_trust_level: A confidence_score: 0.85 verification_status: applied tags: [platform, cross-platform, architecture, strategy] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: TypeScript / Swift / Kotlin framework: React Native / Flutter / Catalyst --- # 플랫폼 컨버전스(Platform Convergence) ## 매 한 줄 > **"매 각기 다른 hardware / OS 위에 매 하나의 application surface 를 통합 제공하는 architecture 전략."**. Mobile (iOS/Android) + Desktop (macOS/Windows/Linux) + Web + XR 의 매 boundary 가 매 흐려지는 흐름. 2026 의 매 driver 는 매 Apple Silicon 의 unified architecture, Mac Catalyst, visionOS, Android desktop mode, ChromeOS Linux subsystem, Web Capabilities API. ## 매 핵심 ### 매 Convergence vector 1. **Hardware**: 매 ARM 통일 (M-series, Snapdragon X, Tegra) → 매 single binary build target. 2. **Input**: 매 touch + mouse + keyboard + voice + gaze 의 매 동일 OS 처리. 3. **Form factor**: 매 foldable, dual-screen, XR — 매 same OS 가 매 다른 layout. 4. **Distribution**: 매 same app bundle 의 매 multi-platform store 배포. 5. **Data**: 매 iCloud / Google Drive / OneDrive 의 매 cross-device state sync. ### 매 strategy axis - **Native multi-target**: SwiftUI (iOS/macOS/visionOS), Kotlin Multiplatform. - **Hybrid framework**: React Native, Flutter, .NET MAUI, Tauri. - **Web-first**: PWA + WebView (CapacitorJS, Electron). - **Streaming**: Cloud rendering — Stadia (RIP), GeForce Now, Xbox Cloud. ### 매 trade-off - **Native**: 매 best fidelity, 매 highest cost. - **Hybrid**: 매 single codebase, 매 platform-specific UX 손실. - **Web**: 매 reach, 매 hardware API 제한. - **Streaming**: 매 zero-install, 매 latency / cost burden. ### 매 응용 1. SaaS 제품의 multi-platform 배포 — Notion, Figma, Linear. 2. Game 의 cross-play (PC, console, mobile, cloud). 3. Productivity suite (MS Office, iWork) 의 universal binary. 4. AI assistant (ChatGPT, Claude) 의 매 OS-level integration. ## 💻 패턴 ### Pattern 1 — SwiftUI universal target (Apple 생태) ```swift import SwiftUI @main struct App: App { var body: some Scene { WindowGroup { ContentView() } #if os(visionOS) .windowStyle(.volumetric) #endif } } // 매 single project — iOS, macOS, visionOS, watchOS, tvOS 빌드 가능. // 매 #if os(...) 로 매 platform-specific. ``` ### Pattern 2 — Kotlin Multiplatform shared module ```kotlin // shared/src/commonMain/kotlin/Repository.kt expect class HttpClient { suspend fun get(url: String): String } class UserRepository(private val client: HttpClient) { suspend fun fetchUser(id: String): User = Json.decodeFromString(client.get("/users/$id")) } // shared/src/iosMain/kotlin/HttpClient.kt actual class HttpClient { /* NSURLSession */ } // shared/src/androidMain/kotlin/HttpClient.kt actual class HttpClient { /* OkHttp */ } ``` ### Pattern 3 — React Native + RN-Web (universal RN) ```tsx import { Platform, Pressable, Text } from 'react-native'; export function Button({ onPress, label }: Props) { return ( ({ opacity: pressed ? 0.7 : 1, cursor: Platform.OS === 'web' ? 'pointer' : undefined, })} > {label} ); } // 매 iOS, Android, Web 의 매 single component. ``` ### Pattern 4 — Flutter responsive layout ```dart class HomeScreen extends StatelessWidget { @override Widget build(BuildContext context) { final width = MediaQuery.of(context).size.width; if (width >= 1200) return _DesktopLayout(); if (width >= 600) return _TabletLayout(); return _MobileLayout(); } } // 매 same widget tree, 매 form factor 별 분기. ``` ### Pattern 5 — PWA with Web Capabilities (2026) ```typescript // 매 File System Access API. const handle = await window.showSaveFilePicker({ suggestedName: 'doc.txt', }); const writable = await handle.createWritable(); await writable.write(content); await writable.close(); // 매 Web Bluetooth, USB, Serial, NFC, WebHID — 매 native 영역 침투. ``` ### Pattern 6 — Tauri (Web UI + Rust core) ```rust // src-tauri/src/main.rs #[tauri::command] fn read_log() -> Result { std::fs::read_to_string("/var/log/app.log").map_err(|e| e.to_string()) } fn main() { tauri::Builder::default() .invoke_handler(tauri::generate_handler![read_log]) .run(tauri::generate_context!()) .expect("error"); } // 매 Web frontend + 매 Rust backend, 매 single binary. // 매 Electron 대비 매 size / memory 우위. ``` ### Pattern 7 — Adaptive input handling ```typescript type InputModality = 'touch' | 'mouse' | 'pen' | 'keyboard' | 'gaze'; function detectModality(e: PointerEvent): InputModality { if (e.pointerType === 'touch') return 'touch'; if (e.pointerType === 'pen') return 'pen'; return 'mouse'; } // 매 hover state 는 매 mouse / pen 만 — 매 touch 는 매 X. button.addEventListener('pointerover', (e) => { if (detectModality(e) !== 'touch') showTooltip(); }); ``` ### Pattern 8 — Cross-device handoff (Apple Continuity-like) ```typescript import { BroadcastChannel } from 'broadcast-channel'; const channel = new BroadcastChannel('document-state'); // 매 device A → cloud sync. syncToCloud(state); // 매 device B → 매 cloud poll + local broadcast. const remote = await fetchFromCloud(); channel.postMessage({ type: 'state-arrived', state: remote }); // 매 actual handoff: iCloud / WidgetKit / Activity API. ``` ## 매 결정 기준 | 상황 | Strategy | |---|---| | 매 Apple-only 생태 | SwiftUI universal | | 매 iOS + Android primary | Kotlin Multiplatform / React Native | | 매 Mobile + Web 동시 | React Native + RN-Web / Flutter web | | 매 Desktop primary, web tech | Tauri / Electron | | 매 maximum reach, low fidelity | PWA | | 매 latency 허용, GPU heavy | Cloud streaming | **기본값**: 매 product 의 매 platform priority 에 따른 매 strategy 선택. 매 single codebase 환상 의 회피 — 매 항상 매 platform-specific tweak 필요. ## 🔗 Graph - 변형: [[React Native]] · [[Flutter]] · [[Kotlin Multiplatform]] · [[Tauri]] ## 🤖 LLM 활용 **언제**: 매 multi-platform product roadmap, 매 framework 선정, 매 platform-specific divergence 설계. **언제 X**: 매 single-platform 으로 충분한 product 에 매 overengineering. 매 native fidelity 필수 (game, AR) 인데 매 hybrid 강제. ## ❌ 안티패턴 - **"Write once, run anywhere" naivety**: 매 항상 매 platform-specific work 발생. - **Lowest common denominator UI**: 매 모든 platform 에 매 동일 UX — 매 native feel 손실. - **무분별 abstraction layer**: 매 abstraction over abstraction — 매 debug 지옥. - **매 platform 의 native API 회피**: 매 OS 의 differentiator 미활용. - **Late-stage convergence**: 매 product 의 maturity 후 매 plat-add — 매 architecture 재작성. ## 🧪 검증 / 중복 - Verified (Apple WWDC 2025, Google I/O 2025, KMP roadmap 2026). - 신뢰도 B (전략 영역 — context dependent). ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — convergence vectors + 8 implementation patterns |