๐ Docs: #21 TCA ์ปจ๋ฒค์ ๊ฐ์ด๋๋ผ์ธ ๋ฐ ์ฝ๋ ํ ํ๋ฆฟ ์์ฑ#26
๐ Docs: #21 TCA ์ปจ๋ฒค์
๊ฐ์ด๋๋ผ์ธ ๋ฐ ์ฝ๋ ํ
ํ๋ฆฟ ์์ฑ#26doyeonk429 wants to merge 2 commits into
Conversation
- DVPresentation ๋ชจ๋์ฉ TCA ์ปจ๋ฒค์ ๊ฐ์ด๋๋ผ์ธ ์์ฑ (docs/TCA_GUIDELINES.md) - AI ์ฝ๋ ๋ฆฌ๋ทฐ์ฉ ์ฒดํฌ๋ฆฌ์คํธ ๋ฐ ์ถ๋ ฅ ํฌ๋งท ์ ์ - tuist scaffold feature ํ ํ๋ฆฟ ์ถ๊ฐ (Feature/View ์๋ ์์ฑ) - TCA ์์กด์ฑ ๋ฒ์ 1.15.0 โ 1.25.0 ์ ๊ทธ๋ ์ด๋
- TCA ์ฒ์ ์ฌ์ฉ์๋ฅผ ์ํด ๋ง์ธ๋๋ชจ๋ธยท์ํฉ๋ณ ๊ฐ์ด๋(Cookbook) ์ ์ถ๊ฐ - ๊ฐ๋ ์ฑ์ฉ styled HTML ๋ฒ์ (TCA_GUIDELINES.html) ์ ๊ท ์ถ๊ฐ
Walkthrough
ChangesTCA ๋ฒ์ ์ ๋ฐ ํผ์ฒ ํ ํ๋ฆฟยท๊ฐ์ด๋ ์ถ๊ฐ
์ถ์ ์ฝ๋ ๋ฆฌ๋ทฐ ๋ ธ๋ ฅ๐ฏ 2 (Simple) | โฑ๏ธ ~10 minutes Suggested labels
Suggested reviewers
๐ฅ Pre-merge checks | โ 5โ Passed checks (5 passed)
โจ Finishing Touches๐ Generate docstrings
๐งช Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
.html ํ์ผ์ ์ด๋ฉด ๊ฐ๋ ์ฑ ์ข์ ํ์ผ๋ก ์ฝ์ ์ ์์ต๋๋ค. .md ํ์ผ์ AI agent๊ฐ ๋ฆฌ๋ทฐํ ๋ ์ฐธ๊ณ ํ ์ ์๋๋ก ํ๋กฌํํธ ์์ฑํ์๋ฉด ๋ฉ๋๋ค. |
There was a problem hiding this comment.
Actionable comments posted: 5
๐งน Nitpick comments (1)
Tuist/Templates/feature/Feature.stencil (1)
3-4: ๐ Maintainability & Code Quality | ๐ต Trivial | โก Quick win์์ฑ๋๋ Feature ์ค์ผ๋ ํค๋ ์ ์ฅ์ ์คํ์ผ์ ๋ฐ๋ก ๋ฐ๋ฅด๋๋ก ๋ง์ถฐ ์ฃผ์ธ์.
์ง๊ธ ํ ํ๋ฆฟ์
ComposableArchitecture๋ฅผFoundation๋ณด๋ค ๋จผ์ importํ๊ณ , Action ํ์ ์น์ ๋// MARK: Viewํ์์ผ๋ก ์์ฑํฉ๋๋ค. ์ค์บํด๋ ์ถ๋ ฅ๋ฌผ์ด ๊ณง๋ฐ๋ก ๋ฆฌ๋ทฐ ๊ธฐ์ค์ ํต๊ณผํ๊ฒ ํ๋ ค๋ฉด import ์์์// MARK: -ํ๊ธฐ๋ฅผ ํ ํ๋ฆฟ์์ ๋ง์ถฐ ๋๋ ํธ์ด ์ข์ต๋๋ค. As per path instructions, "**/*.swift:// MARK: -์์๋์ ๋น ์ค์ด ์๋์ง ํ์ธํ์ธ์." and "**/*.swift: ๋ชจ๋ ์ํฌํธ๊ฐ ์ํ๋ฒณ ์์ผ๋ก ์ ๋ ฌ๋์ด ์๋์ง ํ์ธํ์ธ์. (๋ด์ฅ ํ๋ ์์ํฌ ๋จผ์ , ๋น ์ค๋ก ์๋ํํฐ ๊ตฌ๋ถ)".์์ ์์
-import ComposableArchitecture import Foundation + +import ComposableArchitecture @@ - // MARK: View + // MARK: - View @@ - // MARK: Internal + // MARK: - Internal @@ - // MARK: Child + // MARK: - Child @@ - // MARK: Delegate + // MARK: - DelegateAlso applies to: 22-30
๐ค Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Tuist/Templates/feature/Feature.stencil` around lines 3 - 4, The Feature template is generating code that violates the repositoryโs Swift style by placing ComposableArchitecture before Foundation and by emitting MARK comments without the required separator format. Update the Feature.stencil template so the import block follows alphabetic order with built-in frameworks first and a blank line before third-party imports, and make sure the generated section headers use the `// MARK: -` convention with blank lines around them. Use the templateโs import declarations and MARK sections as the main points to adjust so all generated Feature scaffolds conform immediately.Source: Path instructions
๐ค Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/TCA_GUIDELINES.html`:
- Around line 373-377: The section link text in the read-note is inconsistent
with the target anchor, so update the โ11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์คํธโ label to match the
`#sec-12` destination. Adjust the text in the read-note block within the HTML
doc so the visible section number aligns with the linked section title, keeping
the existing `href` and surrounding guidance unchanged.
In `@docs/TCA_GUIDELINES.md`:
- Around line 67-69: Several fenced code blocks in TCA_GUIDELINES.md are missing
language tags, which triggers markdownlint warnings and removes syntax
highlighting. Update the affected fences to use the appropriate language
identifiers based on content, such as bash for shell commands, swift for Swift
snippets, and text for plain examples; check the nearby fenced blocks around the
referenced examples and make the same fix consistently across the document.
- Around line 10-12: The intro and cross-reference links in TCA_GUIDELINES.md
are pointing to the wrong checklist section number and fragment. Update the
links that currently reference โ11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์คํธโ so they match the actual heading
for the checklist section, using the same section name and anchor as the
existing โ12. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์คํธ (AI ์์ด์ ํธ์ฉ)โ heading, and verify any repeated references
in the document stay consistent.
- Around line 471-475: `CancelID` ์ค๋ช
์ด ๋ณธ๋ฌธ/์ฒดํฌ๋ฆฌ์คํธ์ ์๊ตฌ์ฌํญ๊ณผ ์์ ์์ ์๋ก ๋ค๋ฅด๊ฒ ๋ณด์ด๋ฏ๋ก,
`cancellable(id:)`์ ํจ๊ป ์ฐ๋ ์ทจ์ ์๋ณ์ ์ค๋ช
์ โcancellation ID์ฉ enumโ์ฒ๋ผ ์ผ๊ด๋ ํํ์ผ๋ก ๋ฐ๊พธ๊ณ
`CancelID` ์์์ ์ฒดํฌ๋ฆฌ์คํธ ๋ฌธ๊ตฌ๋ฅผ ๊ฐ์ ํํ๋ก ๋ง์ถ์ธ์. ํนํ `CancelID`์ ์ ์ ๋ฐฉ์๊ณผ ์์ ์์์ ์ฌ์ฉ ๋ฐฉ์์ด ๋ชจ์๋์ง
์๋๋ก ๋ฌธ์ฅ ์ ์ฒด๋ฅผ ํต์ผํด ๋
์๊ฐ ๋์ผํ ํจํด์ผ๋ก ๊ตฌํํ ์ ์๊ฒ ์ ๋ฆฌํ์ธ์.
- Around line 452-454: The `projectsResponse` example in the TCA guidelines uses
`Result { try await ... }`, which is not compatible with Swift 5.9. Update this
example to use a Swift 5.9-safe pattern such as `do/catch` or `TaskResult`, and
make the same replacement anywhere the same `Result { try await ... }` pattern
is repeated in the document. Use the surrounding `return .run { send in ... }`
snippet as the reference point when editing.
---
Nitpick comments:
In `@Tuist/Templates/feature/Feature.stencil`:
- Around line 3-4: The Feature template is generating code that violates the
repositoryโs Swift style by placing ComposableArchitecture before Foundation and
by emitting MARK comments without the required separator format. Update the
Feature.stencil template so the import block follows alphabetic order with
built-in frameworks first and a blank line before third-party imports, and make
sure the generated section headers use the `// MARK: -` convention with blank
lines around them. Use the templateโs import declarations and MARK sections as
the main points to adjust so all generated Feature scaffolds conform
immediately.
๐ช Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
โน๏ธ Review info
โ๏ธ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 14b95faf-ad31-4b72-8970-e25475668866
๐ Files selected for processing (6)
Tuist/Package.swiftTuist/Templates/feature/Feature.stencilTuist/Templates/feature/View.stencilTuist/Templates/feature/feature.swiftdocs/TCA_GUIDELINES.htmldocs/TCA_GUIDELINES.md
| <div class="read-note"> | ||
| <strong>์ด ๋ฌธ์๋ฅผ ์ฝ๋ ์ฌ๋์๊ฒ</strong><br> | ||
| TCA๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ค๋ฉด <a href="#sec-0">0. ์์ํ๊ธฐ ์ ์ โ ๋ง์ธ๋๋ชจ๋ธ</a>๋ถํฐ ์์๋๋ก ์ฝ์ผ์ธ์. | ||
| ์ด๋ฏธ ์ต์ํ๋ค๋ฉด <a href="#sec-12">11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์คํธ</a>๋ก ๋ฐ๋ก ๊ฐ๋ ๋ฉ๋๋ค. | ||
| ๋ณธ๋ฌธ ๊ฐ ์ ์๋ <em>์ธ์ ์ด๊ฑธ ์ฐ๋๊ฐ โ ์ ์ด๋ ๊ฒ ์ฐ๋๊ฐ โ ์ด๋ป๊ฒ ์ฐ๋๊ฐ</em> ์์๋ก ์ ๋ฆฌ๋ผ ์์ต๋๋ค. |
There was a problem hiding this comment.
๐ Maintainability & Code Quality | ๐ก Minor | โก Quick win
์น์ ๋งํฌ ํ ์คํธ๊ฐ ๋ณธ๋ฌธ ๋ฒํธ์ ์ด๊ธ๋ฉ๋๋ค.
href๋ #sec-12๋ก ๋ง๋๋ฐ, Line 376 ํ
์คํธ๋ ์์ง 11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์คํธ์
๋๋ค. HTML ๋ฒ์ ๋ง ์ฝ๋ ์ฌ๋๋ ํผ๋ํ๋ ๋ฒํธ๋ฅผ 12๋ก ๋ง์ถฐ ์ฃผ์ธ์.
๐ค Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/TCA_GUIDELINES.html` around lines 373 - 377, The section link text in
the read-note is inconsistent with the target anchor, so update the โ11. ๋ฆฌ๋ทฐ
์ฒดํฌ๋ฆฌ์คํธโ label to match the `#sec-12` destination. Adjust the text in the
read-note block within the HTML doc so the visible section number aligns with
the linked section title, keeping the existing `href` and surrounding guidance
unchanged.
| > **์ด ๋ฌธ์๋ฅผ ์ฝ๋ ์ฌ๋์๊ฒ** | ||
| > TCA๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ค๋ฉด [0. ์์ํ๊ธฐ ์ ์ โ ๋ง์ธ๋๋ชจ๋ธ](#0-์์ํ๊ธฐ-์ ์--๋ง์ธ๋๋ชจ๋ธ)๋ถํฐ ์์๋๋ก ์ฝ์ผ์ธ์. | ||
| > ์ด๋ฏธ ์ต์ํ๋ค๋ฉด [11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์คํธ](#11-๋ฆฌ๋ทฐ-์ฒดํฌ๋ฆฌ์คํธ-ai-์์ด์ ํธ์ฉ)๋ก ๋ฐ๋ก ๊ฐ๋ ๋ฉ๋๋ค. |
There was a problem hiding this comment.
๐ Maintainability & Code Quality | ๐ก Minor | โก Quick win
์ฒดํฌ๋ฆฌ์คํธ ๋งํฌ ๋ฒํธ์ fragment๋ฅผ ์ค์ ์น์ ์ ๋ง์ถฐ ์ฃผ์ธ์.
Line 12์ Line 79๊ฐ ์์ง 11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ๊ฐ๋ฆฌ์ผ์ ๋ฌธ์ ๋ด ์ด๋์ด ๊นจ์ง๋๋ค. ํ์ฌ ํค๋ฉ์ ## 12. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์คํธ (AI ์์ด์ ํธ์ฉ)์ด๋ฏ๋ก ๋งํฌ ํ
์คํธ์ fragment๋ฅผ ํจ๊ป ๋ง์ถฐ์ผ ํฉ๋๋ค.
Also applies to: 79-79
๐งฐ Tools
๐ช markdownlint-cli2 (0.22.1)
[warning] 12-12: Link fragments should be valid
(MD051, link-fragments)
๐ค Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/TCA_GUIDELINES.md` around lines 10 - 12, The intro and cross-reference
links in TCA_GUIDELINES.md are pointing to the wrong checklist section number
and fragment. Update the links that currently reference โ11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์คํธโ so they
match the actual heading for the checklist section, using the same section name
and anchor as the existing โ12. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์คํธ (AI ์์ด์ ํธ์ฉ)โ heading, and verify any
repeated references in the document stay consistent.
Source: Linters/SAST tools
| ```bash | ||
| tuist scaffold feature --name ProjectList | ||
| ``` |
There was a problem hiding this comment.
๐ Maintainability & Code Quality | ๐ก Minor | โก Quick win
์ฝ๋ ํ์ค ์ธ์ด๋ฅผ ์ง์ ํด ๋๋ ํธ์ด ์ข์ต๋๋ค.
ํ์ฌ ์ฌ๋ฌ fenced code block์ ์ธ์ด๊ฐ ๋น ์ ธ ์์ด์ markdownlint ๊ฒฝ๊ณ ๊ฐ ๋๊ณ , ๋ ๋๋ง ์ ํ์ด๋ผ์ดํ
๋ ์์ต๋๋ค. bash, swift, text์ฒ๋ผ block ์ฑ๊ฒฉ์ ๋ง๋ ์ธ์ด๋ฅผ ๋ถ์ฌ ์ฃผ์ธ์.
Also applies to: 73-77, 92-104, 556-569, 843-861, 1319-1336
๐ค Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/TCA_GUIDELINES.md` around lines 67 - 69, Several fenced code blocks in
TCA_GUIDELINES.md are missing language tags, which triggers markdownlint
warnings and removes syntax highlighting. Update the affected fences to use the
appropriate language identifiers based on content, such as bash for shell
commands, swift for Swift snippets, and text for plain examples; check the
nearby fenced blocks around the referenced examples and make the same fix
consistently across the document.
Source: Linters/SAST tools
| return .run { send in | ||
| await send(.projectsResponse(Result { try await projectClient.fetchAll() })) | ||
| } |
There was a problem hiding this comment.
๐ฏ Functional Correctness | ๐ก Minor | โก Quick win
๐งฉ Analysis chain
๐ Web query:
Does Swift 5.9 support initializing Resultwith an async throwing closure likeResult { try await foo() }?
๐ก Result:
As of June 30, 2026, Swift does not support initializing Result with an async throwing closure (e.g., Result { try await foo }) in Swift 5.9 [1]. This feature was added in Swift 6.4 via the proposal SE-0530, "Async Result Support" [1][2]. While the syntax await Result { try await foo() } is available in the current Swift versions (Swift 6.4+), it was not part of the language in Swift 5.9 [1]. In versions like Swift 5.9, developers typically handled this by manually performing the work in a do-catch block or by creating a custom extension to provide the missing async initializer [3][1][4].
Citations:
- 1: https://livsycode.com/swift/swift-6-4-adds-async-support-to-result-2/
- 2: https://forums.swift.org/t/se-0530-async-result-support/86346
- 3: https://github.com/apple/swift-evolution/blob/main/proposals/0530-async-result-support.md
- 4: https://www.hackingwithswift.com/swift/5.5/async-await
๐ Script executed:
#!/bin/bash
set -euo pipefail
file="docs/TCA_GUIDELINES.md"
# Show the relevant sections around both mentioned locations.
sed -n '440,465p' "$file"
printf '\n---\n'
sed -n '514,530p' "$file"Repository: DevaultProject/Devault-macOS
Length of output: 1158
Result { try await ... } ์์ ๋ Swift 5.9์ ๋ง์ง ์์ต๋๋ค.
Result์ async throwing initializer๋ Swift 6.4๋ถํฐ๋ผ์, ํด์ฒด์ธ 5.9 ๋
์๊ฐ ๊ทธ๋๋ก ๋ณต์ฌํ๋ฉด ์ปดํ์ผ์ด ๋งํ๋๋ค. do/catch ๋๋ TaskResult ์์ ๋ก ๋ฐ๊พธ๋ ํธ์ด ์์ ํฉ๋๋ค. ๊ฐ์ ํจํด์ด ์๋ ์์ ์๋ ๋ฐ๋ณต๋ฉ๋๋ค.
๐ค Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/TCA_GUIDELINES.md` around lines 452 - 454, The `projectsResponse`
example in the TCA guidelines uses `Result { try await ... }`, which is not
compatible with Swift 5.9. Update this example to use a Swift 5.9-safe pattern
such as `do/catch` or `TaskResult`, and make the same replacement anywhere the
same `Result { try await ... }` pattern is repeated in the document. Use the
surrounding `return .run { send in ... }` snippet as the reference point when
editing.
| ๊ฒ์ยท๋๋ฐ์ด์ค ๋ฑ **์ด์ ์์ ์ ์ทจ์ํด์ผ ํ๋ Effect**๋ `cancellable(id:)`๋ฅผ ์๋๋ค. | ||
| ID๋ enum case ์๋ `enum CancelID { case search }` ํจํด์ผ๋ก ์ ์ํฉ๋๋ค. | ||
|
|
||
| ```swift | ||
| private enum CancelID { case search } |
There was a problem hiding this comment.
๐ฏ Functional Correctness | ๐ก Minor | โก Quick win
CancelID ์ค๋ช
์ด ์์ ์ ๋ชจ์๋ฉ๋๋ค.
๋ณธ๋ฌธ๊ณผ ์ฒดํฌ๋ฆฌ์คํธ๋ "case ์๋ enum"์ ์๊ตฌํ์ง๋ง, ๋ฐ๋ก ์๋ ์์ ๋ CancelID.search๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ง๊ธ ํํ๋๋ก๋ฉด ๋
์๊ฐ ์๋ชป๋ ํ์
์ ๋ง๋ค๊ธฐ ์ฌ์ฐ๋ "cancellation ID์ฉ enum"์ฒ๋ผ ์ค๋ช
์ ๊ณ ์น๊ณ ์์ /์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ํํ์ผ๋ก ํต์ผํด ์ฃผ์ธ์.
Also applies to: 1276-1276
๐ค Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/TCA_GUIDELINES.md` around lines 471 - 475, `CancelID` ์ค๋ช
์ด ๋ณธ๋ฌธ/์ฒดํฌ๋ฆฌ์คํธ์
์๊ตฌ์ฌํญ๊ณผ ์์ ์์ ์๋ก ๋ค๋ฅด๊ฒ ๋ณด์ด๋ฏ๋ก, `cancellable(id:)`์ ํจ๊ป ์ฐ๋ ์ทจ์ ์๋ณ์ ์ค๋ช
์ โcancellation ID์ฉ
enumโ์ฒ๋ผ ์ผ๊ด๋ ํํ์ผ๋ก ๋ฐ๊พธ๊ณ `CancelID` ์์์ ์ฒดํฌ๋ฆฌ์คํธ ๋ฌธ๊ตฌ๋ฅผ ๊ฐ์ ํํ๋ก ๋ง์ถ์ธ์. ํนํ `CancelID`์ ์ ์ ๋ฐฉ์๊ณผ
์์ ์์์ ์ฌ์ฉ ๋ฐฉ์์ด ๋ชจ์๋์ง ์๋๋ก ๋ฌธ์ฅ ์ ์ฒด๋ฅผ ํต์ผํด ๋
์๊ฐ ๋์ผํ ํจํด์ผ๋ก ๊ตฌํํ ์ ์๊ฒ ์ ๋ฆฌํ์ธ์.
โจ What's this PR?
๐ ๊ด๋ จ ์ด์ (Related Issue)
๐งถ ์ฃผ์ ๋ณ๊ฒฝ ๋ด์ฉ (Summary)
docs/TCA_GUIDELINES.md)DVPresentation์TestDependencyKey, App ํ๊ฒ์liveValue. ์ฐ๋ฆฌ ํ๋ก์ ํธ์FetchSecretUseCase/SecretRepository๊ธฐ๋ฐSecretClient์ด๋ํฐ ์์ + ์์กด ๊ทธ๋ํ ์๋กdocs/TCA_GUIDELINES.html) โ TOC, syntax ํ์ด๋ผ์ดํธ, callout ๋ฐ์คTuist/Templates/feature/) โtuist scaffold feature --name X๋ก ๊ฐ์ด๋๋ผ์ธ ์ค์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์์ฑ๐งช ํ ์คํธ / ๊ฒ์ฆ ๋ด์ญ
docs/TCA_GUIDELINES.mdGitHub ๋ ๋๋ง ํ์ธdocs/TCA_GUIDELINES.html๋ธ๋ผ์ฐ์ ๋ ๋๋ง ํ์ธ (open docs/TCA_GUIDELINES.html)๐ฌ ๊ธฐํ ๊ณต์ ์ฌํญ
SecretListFeature๋ฑ ์ค์ Feature๋ ๋ฏธ๊ตฌํ ์ํ โ ์ฒซ Feature ๊ตฌํ ์ ๋ณธ ๊ฐ์ด๋์ 6.4 ํจํด์ ๊ทธ๋๋ก ์ ์ฉ ์์ ์ ๋๋ค.๐๐ปโโ๏ธ ๋ฆฌ๋ทฐ ๊ฐ์ด๋
+Live.swift๋ฅผ ๋๋ ๊ตฌ์กฐ์ ๋์ํ๋์ง ์๊ฒฌ ๋ถํ๋๋ ค์.