Files
2nd/10_Wiki/Topics/Architecture/플랫폼_컨버전스(Platform_Convergence).md
T
Antigravity Agent f8b21af4be Wiki cleanup: error-doc removal, dedup merge, link normalization
10_Wiki/Topics 대규모 정리:
- 오류 캡처/미완성 stub 문서 227개 제거
- 교차폴더 중복 43클러스터 병합 (63파일 → redirect)
- 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건
- 카테고리 MOC 6개 신규 생성
- Graph 섹션 미해결 related-keyword 링크 10,058건 제거

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 23:52:15 +09:00

7.5 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-플랫폼-컨버전스-platform-convergence 플랫폼 컨버전스(Platform Convergence) 10_Wiki/Topics verified self
Platform Convergence
Cross-platform unification
Universal app
none A 0.85 applied
platform
cross-platform
architecture
strategy
2026-05-10 pending
language framework
TypeScript / Swift / Kotlin 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 생태)

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

// 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)

import { Platform, Pressable, Text } from 'react-native';

export function Button({ onPress, label }: Props) {
  return (
    <Pressable
      onPress={onPress}
      style={({ pressed }) => ({
        opacity: pressed ? 0.7 : 1,
        cursor: Platform.OS === 'web' ? 'pointer' : undefined,
      })}
    >
      <Text>{label}</Text>
    </Pressable>
  );
}
// 매 iOS, Android, Web 의 매 single component.

Pattern 4 — Flutter responsive layout

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)

// 매 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)

// src-tauri/src/main.rs
#[tauri::command]
fn read_log() -> Result<String, String> {
    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

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)

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

🤖 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