ã¯ã˜ã‚ã«
 å‰å›žã¯ã€ã‚¢ãƒ—リ「やるã®ã‹ã‚„らãªã„ã®ã‹ã‚³ã‚¤ãƒ³ãƒˆã‚¹ã€ã‚¢ãƒ—リを作りã¾ã—ãŸã€‚コイントスã§å³æ±ºã§ãるよã†ã«ãªã£ãŸã§ã—ょã†ã‹ï¼Ÿ ç§ã¯æ±ºæ–ã«è¿·ã£ãŸã‚‰ã„ã¤ã‚‚助ã‘ã¦ã‚‚らã£ã¦ã„ã¾ã™ã€‚
 アプリ作æˆã®ç¬¬3å¼¾ã¯ã€Œæ„šã£ç—´ã‚‹ - ã“ã“ãŒç§ã®æ„šç—´ã‚’åã出ã™å ´æ‰€ã€ã‚’作りã¾ã™ã€‚人間生ãã¦ã„ã‚Œã°ã€æ„šç—´ã‚ŠãŸã„時ã ã£ã¦ã‚ã‚Šã¾ã™ã€‚人目を気ã«ã›ãšã€æ€ã„切ã£ã¦æ„šç—´ã‚‹ã“ã¨ãŒã§ãã‚‹å ´æ‰€ãŒã‚ã‚Œã°ã„ã„ãªã¨æ€ã£ãŸã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“ã‹ï¼Ÿä»Šå›žã¯ãã‚“ãªã‚ãªãŸã ã‘ã®æ„šç—´ã‚‹å ´æ‰€ã‚’作ã£ã¦ã„ãã¾ã—ょã†ï¼
開発環境
 ã“ã®é€£è¼‰ã§ã¯ã€æ¬¡ã®ç’°å¢ƒã‚’使用ã—ã¦ã„ã¾ã™ã€‚
- macOS Sequoia 15.1
- Xcode 16.1
プãƒã‚¸ã‚§ã‚¯ãƒˆã®ç«‹ã¡ä¸Šã’ã‚‹
 今回もå‰å›žã¨åŒã˜ã‚ˆã†ã«ã€ä½œã£ãŸãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã®ä¸ã«æ–°è¦ãƒ•ã‚¡ã‚¤ãƒ«ã‚’作æˆã—ã¦é€²ã‚ã¦ã„ãã¾ã™ã€‚ãã‚Œã§ã¯ã€Xcodeã‹ã‚‰ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã‚’é–‹ã„ã¦ã€ã‚¢ãƒ—リ作りを進ã‚ã¦ã„ãã¾ã—ょã†ã€‚

アプリ 「愚ã£ç—´ã‚‹ - ã“ã“ãŒç§ã®æ„šç—´ã‚’åã出ã™å ´æ‰€ã€ã‚’作る
ファイルを新è¦ä½œæˆ
 愚ã£ç—´ã‚‹ç”¨ã®ã‚³ãƒ¼ãƒ‰ã‚’記述ã™ã‚‹ãŸã‚ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’æ–°è¦ä½œæˆã—ã¾ã™ã€‚
-
Xcode上部メニューãƒãƒ¼ã‹ã‚‰
File
>New
>File from Template…
ã‚’é¸æŠžã—ã¾ã™ã€‚ -
テンプレートをé¸æŠžã™ã‚‹ç”»é¢ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚①プラットフォームã¯
iOS
ã‚’é¸æŠžã—ã€User Interface下ã®â‘¡SwiftUI View
ã‚’é¸æŠžã€â‘¢Next
を押ã—ã¾ã™ã€‚ -
ä¿å˜å…ˆã‚’é¸æŠžã™ã‚‹ç”»é¢ã§ã¯ã€â‘£ã®ãƒ•ã‚¡ã‚¤ãƒ«åã«
ComplaintView
を入力ã—ã€â‘¤ã®é …ç›®ãŒåŒæ§˜ã®å€¤ã«ãªã£ã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã€â‘¥Create
を押ã—ã¾ã™ã€‚ -
作æˆãŒå®Œäº†ã™ã‚‹ã¨ã€Xcodeã®ãƒŠãƒ“ゲーターエリアã«ä½œæˆã—ãŸ
ComplaintView.swift
ファイルãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ -
変数
body
ã®ã‚³ãƒ¼ãƒ‰ã‚’以下ã®ã‚³ãƒ¼ãƒ‰[1]ã«æ›¸ãæ›ãˆã¦ä¸‹ã•ã„。 -
次ã®ã‚ˆã†ãªãƒ—レビューãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚
import SwiftUI struct ComplaintView: View { var body: some View { VStack { Text("Good Chill") .font(.system(size: 56)) .fontWeight(.black) .foregroundStyle(.red) Button(action: { // ボタン押下時ã®å‡¦ç† }, label: { Text("æ„šç—´ã‚‹") .font(.largeTitle) }) } } }
Viewを横ã«ä¸¦ã¹ã‚‹
 Viewを横ã«ä¸¦ã¹ã‚‹ã«ã¯ã€HStack
を使用ã—ã¾ã™ã€‚ã™ã§ã«å¦ã‚“ã§ã„ã‚‹VStack
ã¨ä½¿ã„æ–¹ã¯åŒã˜ã§ã™ã€‚Text(“Good Chillâ€)
を二ã¤ã®Text
ã«åˆ†è§£ã—ã¦ã€HStack
を使用ã—ã¦é…ç½®ã—ã¦ã¿ã¾ã™ã€‚
struct ComplaintView: View { var body: some View { VStack { // ã“ã“を変更↓ HStack(spacing: 16) { Text("Good") .font(.system(size: 56)) .fontWeight(.black) .foregroundStyle(.red) Text("Chill") .font(.system(size: 56)) .fontWeight(.black) .foregroundStyle(.red) }
 Text
を横並ã³ã«é…ç½®ã§ãã¾ã—ãŸã€‚HStack
ã§ã‚‚spacing
ã«å€¤ã‚’è¨å®šã™ã‚‹ã“ã¨ã§ã€é…ç½®ã—ã¦ã„ã‚‹å„è¦ç´ ã®ã‚¹ãƒšãƒ¼ã‚¹ã‚’è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

View内ã®å…¨ã¦ã®è¦ç´ ã«ãƒ¢ãƒ‡ã‚£ãƒ•ã‚¡ã‚¤ã‚¢ã‚’é©ç”¨ã™ã‚‹
 HStack(spacing: 16) {
内ã®ãƒ¢ãƒ‡ã‚£ãƒ•ã‚¡ã‚¤ã‚¢ã‚’ã¿ã‚‹ã¨ã€.font(.system(size: 56))
ã‚„.fontWeight(.black)
ãªã©åŒã˜ãƒ¢ãƒ‡ã‚£ãƒ•ã‚¡ã‚¤ã‚¢ãŒãã‚Œãžã‚Œã«è¨˜è¿°ã•ã‚Œã¦ã„ã‚‹ãŸã‚ã€ã‚³ãƒ¼ãƒ‰ã®æ•´ç†ã‚’ã—ã¦ã„ãã¾ã™ã€‚
 次ã®ã‚ˆã†ã«ãƒ¢ãƒ‡ã‚£ãƒ•ã‚¡ã‚¤ã‚¢ã‚’HStack
ã®}
後ã‚ã«ç§»å‹•ã•ã›ã¾ã™ã€‚
struct ComplaintView: View { var body: some View { VStack { // ã“ã“を変更↓ HStack(spacing: 16) { Text("Good") Text("Chill") } .font(.system(size: 56)) .fontWeight(.black) .foregroundStyle(.red)
 é‡è¤‡ã—ãŸãƒ¢ãƒ‡ã‚£ãƒ•ã‚¡ã‚¤ã‚¢ã¯ç„¡ããªã‚Šã¾ã—ãŸãŒã€ãƒ—レビューã®è¦‹ãŸç›®ã¯å¤‰ã‚ã‚Šã¾ã›ã‚“。ã“ã‚Œã¯HStack
å´ã«ãƒ¢ãƒ‡ã‚£ãƒ•ã‚¡ã‚¤ã‚¢ã‚’付ã‘ã‚‹ã“ã¨ã§ãã®ä¸ã®å…¨è¦ç´ ã«ã‚‚モディファイアã®åŠ¹æžœãŒé©ç”¨ã•ã‚Œã‚‹ãŸã‚ã§ã™ã€‚
 ãŸã ã—ã€ä¸ã®è¦ç´ ã«ã™ã§ã«åˆ¥ã®ãƒ¢ãƒ‡ã‚£ãƒ•ã‚¡ã‚¤ã‚¢ãŒä»˜ã„ã¦ã„ã‚‹å ´åˆã¯ã€å¤–å´ã®ãƒ¢ãƒ‡ã‚£ãƒ•ã‚¡ã‚¤ã‚¢ã®åŠ¹æžœãŒãã®è¦ç´ ã«åæ˜ ã•ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。実際ã«ã€Text("Chill")
ã«è‰²ã‚’ã¤ã‘ã¦ç¢ºèªã—ã¦ã¿ã¾ã—ょã†ã€‚
struct ComplaintView: View { var body: some View { VStack { HStack(spacing: 16) { Text("Good") Text("Chill") // ã“ã“を変更↓ .foregroundStyle(.yellow) } .font(.system(size: 56)) .fontWeight(.black) .foregroundStyle(.red)
 プレビューを確èªã™ã‚‹ã¨ã€HStack
å´ã®foregroundStyle
ã¯.red
ã«ã—ã¦ã„ã¾ã™ãŒã€Text("Chill")
ã«ã¤ã‘ãŸ.foregroundStyle(.yellow)
ã®å¤‰æ›´ã‚‚æ£ã—ãåæ˜ ã•ã‚Œã¦ã„ã‚‹ã®ãŒç¢ºèªã§ãã¾ã™ã€‚

ボタンã«ã‚¹ã‚¿ã‚¤ãƒ«ã‚’é©ç”¨ã™ã‚‹
 愚痴るボタンã«ã‚¹ã‚¿ã‚¤ãƒ«ã‚’é©ç”¨ã—ã¦ã€ã‚ˆã‚Šãƒœã‚¿ãƒ³ã®ã‚ˆã†ãªè¦‹ãŸç›®ã«å¤‰æ›´ã—ã¦ã„ãã¾ã™ã€‚Button
ã«ã¯.buttonStyle
ã¨ã„ã†ãƒ¢ãƒ‡ã‚£ãƒ•ã‚¡ã‚¤ãŒç”¨æ„ã•ã‚Œã¦ãŠã‚Šã€ä»»æ„ã®ã‚¹ã‚¿ã‚¤ãƒ«ã‚’è¨å®šã™ã‚‹ã“ã¨ã§ã€ãƒœã‚¿ãƒ³ã®è¦‹ãŸç›®ã‚’変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
 次ã®ã‚ˆã†ã«.buttonStyle
ã‚’è¨å®šã™ã‚‹ã¨ã€ãƒœã‚¿ãƒ³ã«ã‚¹ã‚¿ã‚¤ãƒ«ãŒé©ç”¨ã•ã‚Œã¾ã™ã€‚
Button(action: { // ボタン押下時ã®å‡¦ç† }, label: { Text("æ„šç—´ã‚‹") .font(.largeTitle) }) // ã“ã“ã‚’è¿½åŠ â†“ .buttonStyle(.borderedProminent)
