Skip to main content

๐ŸŽฏ AI ์ฑŒ๋ฆฐ์ง€์— ๋„์ „ํ•˜๋ผ! Uno Platform์œผ๋กœ ๋งŒ๋“œ๋Š” ํฌ๋กœ์Šคโ€‘ํ”Œ๋žซํผ ์•ฑยท์ด 3,000โ€ฏUSD ์ƒ๊ธˆ ํš๋“ ๊ธฐํšŒ

Published 3 min readMarkdown

# 1๏ธโƒฃ AI ์ฑŒ๋ฆฐ์ง€๋ž€?

2024โ€ฏ๋…„โ€ฏ11โ€ฏ์›”โ€ฏ15โ€ฏ์ผ๋ถ€ํ„ฐ 12โ€ฏ์›”โ€ฏ7 ๊นŒ์ง€ ์ง„ํ–‰๋˜๋Š” AI ์ฑŒ๋ฆฐ์ง€๋Š” Uno Platform ๊ณต์‹ ์ฃผ๊ด€์œผ๋กœ, AI ๋ชจ๋ธ์„ ํ™œ์šฉํ•œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์•ฑ์„ ๋งŒ๋“  ํŒ€์—๊ฒŒ ์ด 3,000โ€ฏUSD(1์œ„โ€ฏ$2,000, 2์œ„โ€ฏ$800, 3์œ„โ€ฏ$200)์˜ ์ƒ๊ธˆ์„ ์ˆ˜์—ฌํ•ฉ๋‹ˆ๋‹ค.

| ๊ตฌ๋ถ„ | ๋‚ด์šฉ |

|------|------|

| ์ฃผ์ œ | AIยท๋จธ์‹ ๋Ÿฌ๋‹ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ WindowsยทmacOSยทiOSยทAndroidยทWebAssembly ์ง€์› ์•ฑ |

| ๋Œ€์ƒ | ํ•™์ƒยท์ง์žฅ์ธยทํ”„๋ฆฌ๋žœ์„œยท์Šคํƒ€ํŠธ์—… ๋“ฑ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž (์ดˆ๋ณด์ž ํ™˜์˜) |

| ํ‰๊ฐ€ ํ•ญ๋ชฉ | AI ํ™œ์šฉ ์ ์ ˆ์„ฑ, UI/UX, ์ฝ”๋“œ ํ’ˆ์งˆยท๋ฌธ์„œํ™”, ํฌ๋กœ์Šคโ€‘ํ”Œ๋žซํผ ํ˜ธํ™˜์„ฑ |

| ์ œ์ถœ ํ˜•์‹ | GitHub ๋ ˆํฌ์ง€ํ† ๋ฆฌ(READMEยทCONTRIBUTING ํฌํ•จ) + ์‹œ์—ฐ ์˜์ƒ(์ตœ๋Œ€ 3๋ถ„) |

ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ : AI ์ฑŒ๋ฆฐ์ง€, ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์•ฑ, Uno Platform


# 2๏ธโƒฃ Uno Platform์ด ์ดˆ๋ณด์ž์—๊ฒŒ ์ข‹์€ ์ด์œ 

  1. ๋‹จ์ผ C# ์ฝ”๋“œ โ†’ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋งŒ์œผ๋กœ 5๋Œ€ OS๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  2. XAML ๊ธฐ๋ฐ˜ UI โ†’ ๊ธฐ์กด WPFยทUWP ๊ฒฝํ—˜์ด ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ , ๋ฌธ๋ฒ•์ด ์ง๊ด€์ ์ด๋ผ ๋ฐฐ์šฐ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

  3. ๋ฌด๋ฃŒยท์˜คํ”ˆ์†Œ์Šค โ†’ ๋ผ์ด์„ ์Šค ๋น„์šฉ์ด ์—†์œผ๋‹ˆ ์ดˆ๊ธฐ ๋น„์šฉ ๋ถ€๋‹ด์ด ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค.

Tip

  • Visual Studio 2022 + โ€œUno Platform Extensionโ€๋งŒ ์„ค์น˜ํ•˜๋ฉด ๋ฐ”๋กœ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ์™„์„ฑ๋ฉ๋‹ˆ๋‹ค.

# 3๏ธโƒฃ ์ฑŒ๋ฆฐ์ง€ ์ฐธ๊ฐ€ ๋‹จ๊ณ„ (์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ)

# 3โ€‘1. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ

bash

# 1๏ธโƒฃ VS Code ๋˜๋Š” Visual Studio 2022 ์„ค์น˜

# 2๏ธโƒฃ Uno Platform ํ…œํ”Œ๋ฆฟ ์„ค์น˜

dotnet new -i Uno.ProjectTemplates

# 3๏ธโƒฃ ์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

dotnet new unoapp -n MyAiApp

cd MyAiApp

dotnet run   # Windows, Android, iOS, Web ๋ชจ๋‘ ์‹คํ–‰ ํ™•์ธ

# 3โ€‘2. AI ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•˜๊ธฐ

| AI ์„œ๋น„์Šค | ์‚ฌ์šฉ ๋ฐฉ๋ฒ• (์˜ˆ์‹œ) |

|-----------|-----------------|

| Azure Cognitive Services | dotnet add package Azure.AI.TextAnalytics โ†’ ํ…์ŠคํŠธ ๊ฐ์ • ๋ถ„์„ API ํ˜ธ์ถœ |

| OpenAI GPTโ€‘4 | dotnet add package OpenAI โ†’ ChatCompletion ์œผ๋กœ ์ฑ—๋ด‡ ๊ตฌํ˜„ |

| ONNX Runtime | dotnet add package Microsoft.ML.OnnxRuntime โ†’ ๋กœ์ปฌ ์ด๋ฏธ์ง€ ๋ถ„๋ฅ˜ ๋ชจ๋ธ ๋กœ๋“œ |

๊ฐ„๋‹จ ์˜ˆ์‹œ โ€“ ํ…์ŠคํŠธ ๊ฐ์ • ๋ถ„์„์„ UI์— ์—ฐ๊ฒฐ

csharp

var client = new TextAnalyticsClient(new Uri(endpoint), new AzureKeyCredential(key));

var result = await client.AnalyzeSentimentAsync(inputText);

SentimentTextBlock.Text = $'๊ฐ์ •: {result.Value.Sentiment}';

# 3โ€‘3. UI ์„ค๊ณ„ (XAML)

xml

<Page

    x:Class='MyAiApp.MainPage'

    xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'

    xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>

    <StackPanel Padding='24' Spacing='12'>

        <TextBox x:Name='InputBox' PlaceholderText='๋ถ„์„ํ•  ๋ฌธ์žฅ์„ ์ž…๋ ฅํ•˜์„ธ์š”'/>

        <Button Content='๊ฐ์ • ๋ถ„์„' Click='OnAnalyzeClicked'/>

        <TextBlock x:Name='SentimentTextBlock' FontSize='18'/>

    </StackPanel>

</Page>

# 3โ€‘4. ๋นŒ๋“œยทํ…Œ์ŠคํŠธ

  • Windows : dotnet run โ†’ ๋ฐ์Šคํฌํ†ฑ ์ฐฝ ํ™•์ธ

  • Android : dotnet build -t:Run -f net6.0-android โ†’ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์‹คํ–‰

  • iOS : dotnet build -t:Run -f net6.0-ios โ†’ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์‹คํ–‰

  • WebAssembly : dotnet run -c Release -f net6.0-browserwasm โ†’ ๋ธŒ๋ผ์šฐ์ €์— ์ž๋™ ์—ด๋ฆผ


# 4๏ธโƒฃ ์‹œ์—ฐ ์˜์ƒยท์ œ์ถœ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

| ํ•ญ๋ชฉ | ์ƒ์„ธ ๋‚ด์šฉ |

|------|----------|

| README | ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ, AI ๋ชจ๋ธ ์„ค๋ช…, ์‹คํ–‰ ๋ฐฉ๋ฒ•, ์‚ฌ์šฉํ•œ UnoยทAI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ช…์‹œ |

| ์‹œ์—ฐ ์˜์ƒ | 30์ดˆ~3๋ถ„, ์•ฑ ์‹คํ–‰ โ†’ AI ๊ธฐ๋Šฅ ์ž‘๋™ โ†’ ๊ฐ ํ”Œ๋žซํผ์—์„œ UI๊ฐ€ ๋™์ผํ•˜๊ฒŒ ๋ณด์ด๋Š” ๊ณผ์ • |

| ์ฝ”๋“œ ํ’ˆ์งˆ | ์ฃผ์„ยท๋„ค์ด๋ฐ ๊ทœ์น™ ์ค€์ˆ˜, ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ ์ œ๊ฑฐ |

| CI/CD | GitHub Actions ๋กœ ์ž๋™ ๋นŒ๋“œยทํ…Œ์ŠคํŠธ ์„ค์ • (badge ์ถ”๊ฐ€ ๊ถŒ์žฅ) |

| ๋ผ์ด์„ ์Šค | ์‚ฌ์šฉํ•œ ์™ธ๋ถ€ APIยท๋ชจ๋ธ์˜ ๋ผ์ด์„ ์Šค ํ‘œ๊ธฐ (์˜ˆ: MIT, Apacheโ€‘2.0) |


# 5๏ธโƒฃ ์„ฑ๊ณต์ ์ธ ์ˆ˜์ƒ ์ „๋žต 3๊ฐ€์ง€

  1. AI ๋ชจ๋ธ ํ™œ์šฉ ์ฐจ๋ณ„ํ™”

    • ๋‹จ์ˆœ API ํ˜ธ์ถœ๋ณด๋‹ค ๋‹ค์ค‘ ๋ชจ๋ธ ์—ฐ๋™(์˜ˆ: ์ด๋ฏธ์ง€ + ํ…์ŠคํŠธ)์œผ๋กœ ๊ธฐ๋Šฅ์„ ํ’๋ถ€ํ•˜๊ฒŒ ๋งŒ๋“ค๋ฉด ํ‰๊ฐ€ ์ ์ˆ˜๊ฐ€ ๋†’์•„์ง‘๋‹ˆ๋‹ค.
  2. UI/UX ์ผ๊ด€์„ฑ

    • Uno Platform์€ ๋™์ผ XAML์ด ๋ชจ๋“  ํ”Œ๋žซํผ์— ์ ์šฉ๋˜์ง€๋งŒ, ํ”Œ๋žซํผ๋ณ„ ์ž‘์€ UI ์กฐ์ •(๋ฒ„ํŠผ ํฌ๊ธฐ, ํ„ฐ์น˜ ์˜์—ญ)์œผ๋กœ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ตœ์ ํ™”ํ•˜์„ธ์š”.
  3. ๋ฌธ์„œยทํ…Œ์ŠคํŠธ ์ถฉ์‹ค

    • ์ž๋™ํ™”๋œ Unit Test์™€ UI Test๋ฅผ ํฌํ•จํ•˜๋ฉด ์‹ฌ์‚ฌ์œ„์›์ด ์ฝ”๋“œ ์‹ ๋ขฐ์„ฑ์„ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# 6๏ธโƒฃ ๋งˆ๋ฌด๋ฆฌ โ€“ ์ง€๊ธˆ ๋ฐ”๋กœ ์‹œ์ž‘ํ•ด ๋ณด์„ธ์š”!

1๏ธโƒฃ ๋งํฌ(https://dev.to/devteam/join-the-ai-challenge-for-cross-platform-apps-3000-in-prizes-25c3)์—์„œ ์ฑŒ๋ฆฐ์ง€ ๊ณต์‹ ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜๊ณ , ๊ทœ์น™ยท์ผ์ •์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ Uno Platform ํ…œํ”Œ๋ฆฟ์„ ์ด์šฉํ•ด ๊ธฐ๋ณธ ์•ฑ์„ ๋งŒ๋“  ๋’ค, ์œ„์—์„œ ์†Œ๊ฐœํ•œ AI ์„œ๋น„์Šค ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ GitHub์— ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์˜ฌ๋ฆฌ๊ณ , ์‹œ์—ฐ ์˜์ƒ์„ ์ดฌ์˜ยท์—…๋กœ๋“œํ•˜๋ฉด AI ์ฑŒ๋ฆฐ์ง€ ์ฐธ๊ฐ€ ์™„๋ฃŒ!

ํ–‰๋™ ์œ ๋„

  • ์˜ค๋Š˜ ํ•˜๋ฃจ๋ผ๋„ โ€˜good first issueโ€™ ๋ผ๋ฒจ์ด ๋ถ™์€ Uno ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋ฅผ ํฌํฌํ•˜๊ณ , ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•ด ๋ณด์„ธ์š”.

  • ์ž‘์€ AI ๊ธฐ๋Šฅ(์˜ˆ: ํ…์ŠคํŠธ ๊ฐ์ • ๋ถ„์„)๋งŒ ๊ตฌํ˜„ํ•ด๋„ ์ถฉ๋ถ„ํžˆ ์‹ฌ์‚ฌ ๊ธฐ์ค€์„ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

AI ์ฑŒ๋ฆฐ์ง€๋Š” ํ•™์Šต โ†’ ์‹ค์ „ โ†’ ์ˆ˜์ƒ๊นŒ์ง€ ํ•œ ๋ฒˆ์— ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๊ณ ์˜ ๋ฌด๋Œ€์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋ฐ”๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , 3,000โ€ฏUSD์˜ ์ƒ๊ธˆ๊ณผ ํ•จ๊ป˜ ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ํ•œ ๋‹จ๊ณ„ ๋Œ์–ด์˜ฌ๋ฆฌ์„ธ์š”! ๐Ÿš€


SEO ํ‚ค์›Œ๋“œ: AI ์ฑŒ๋ฆฐ์ง€, ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์•ฑ, Uno Platform

No comments yet. Be the first to comment.

More from this blog