SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ミニアプリを作って楽しく学ぶSwift

【作って学ぶSwiftアプリ開発入門】SF Symbolsを活用して「福笑いゲーム」を作ろう!

ミニアプリを作って楽しく学ぶSwift入門 第7回

  • X ポスト
  • このエントリーをはてなブックマークに追加

福笑いゲーム画面を作成する

 最後に福笑いのゲームを行う画面を作成します。新規ファイル作成手順で、LuckyLaughGameView.swiftを追加してください。また作成後のViewのコードも次のように変更します。

import SwiftUI

struct LuckyLaughGameView: View {
    var body: some View {
        ZStack {
            Image(systemName: "capsule.portrait.fill")
                .resizable()
                .frame(width: 240, height: 320)
                .foregroundStyle(.yellow)
        }
    }
}

#Preview {
    LuckyLaughGameView()
}

 LuckyLaughフォルダ内にLuckyLaughGameView.swiftが追加されて、次のようになっていれば問題ありません。

 Image(systemName: "capsule.portrait.fill")は福笑いゲームの顔の輪郭になる部分です。ZStackを使用している理由は、これから追加する顔のパーツを重ねられるようにするためです。

 次にドラッグできる顔のパーツを配置するために、作成したDraggableImage(systemName: )ZStack内に記述します。

 SFSymbolsには目、鼻、口のような形のシンボルも用意されており、今回はそれを使用します。

struct LuckyLaughGameView: View {
    var body: some View {
        ZStack {
            Image(systemName: "capsule.portrait.fill")
                .resizable()
                .frame(width: 240, height: 320)
                .foregroundStyle(.yellow)
            
            // ここを追加↓
            DraggableImage(systemName: "eye")
            DraggableImage(systemName: "eye")
            DraggableImage(systemName: "nose")
            DraggableImage(systemName: "mouth")
                .foregroundStyle(.red)
            DraggableImage(systemName: "rectangle.ratio.3.to.4.fill")
        }
    }
}

 DraggableImage(systemName: "rectangle.ratio.3.to.4.fill")はモヒカンヘアー用のパーツです。DraggableImageで追加したViewが画面の左上に表示されます。

 それでは、実際にプレビュー上でドラッグをしてパーツを移動させて福笑いゲームで遊んでみましょう。

 これでゲーム画面も完成です。

アプリを完成させる

 これまで作成したLuckyLaughGameViewLuckyLaughRuleViewをひとつの画面上の中でタブを使用して切り替えられるようにします。

 すでに作成済みのLuckyLaughViewの変数bodyの中を次のように変更します。

struct LuckyLaughView: View {
    var body: some View {
        TabView {
            Tab("ゲーム", systemImage: "gamecontroller") {
                // ここを変更↓
                LuckyLaughGameView()
            }
            
            Tab("ルール", systemImage: "questionmark.circle") {
                // ここを変更↓
                LuckyLaughRuleView()
            }
        }
    }
}

 各Tab内のコンテンツに作成済みのゲーム画面とルール画面を設定しています。プレビューでもタブを選択することで画面を切り替えられるようになりました。

左:ゲーム画面 右:ルール画面
左:ゲーム画面 右:ルール画面

 以上で福笑いゲームの完成です。

まとめと次回

 今回はアプリを作る過程で、システムで用意されている画像の使い方や自前で用意した画像の使い方、ドラッグで対象のViewを移動させる方法を学びました。

 特にSF Symbolsは、高品質でさまざまなバリエーションもあるため、アプリ開発を助けてくれます。今回紹介したシンボルはほんのひと握りのものなので、ぜひ色々と見て、使ってみてください。

 次回はいよいよ最終回です。これまで作成したアプリをひとまとめにしたアプリを作成します。お楽しみに!

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ミニアプリを作って楽しく学ぶSwift連載記事一覧

もっと読む

この記事の著者

リルオッサ(リルオッサ)

 ブレイクダンサー、時々iOSエンジニア。元ブレイクダンス世界2位。 現在は、楽しいことを追い求め、iOSアプリを作ったり、ビールを飲んだり、絵を書いたり、技術記事を書いたり、海外登壇チャレンジしたり、ブレイクダンスの大会を企画したりしています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/20804 2025/05/08 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング