{"id":860,"date":"2026-03-07T20:00:00","date_gmt":"2026-03-07T11:00:00","guid":{"rendered":"https:\/\/syuji-engineer.com\/?p=860"},"modified":"2026-01-23T08:56:57","modified_gmt":"2026-01-22T23:56:57","slug":"swiftui%e3%81%a7%e4%bd%9c%e3%82%8b%e7%ad%8b%e3%83%88%e3%83%ac%e3%82%a2%e3%83%97%e3%83%aa%ef%bd%9c%e5%9b%9e%e6%95%b0%e3%82%ab%e3%82%a6%e3%83%b3%e3%83%88%ef%bc%8b%e4%bc%91%e6%86%a9%e3%82%bf%e3%82%a4","status":"publish","type":"post","link":"https:\/\/syuji-engineer.com\/?p=860","title":{"rendered":"SwiftUI\u3067\u4f5c\u308b\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\uff5c\u56de\u6570\u30ab\u30a6\u30f3\u30c8\uff0b\u4f11\u61a9\u30bf\u30a4\u30de\u30fc\u3092\u30ef\u30f3\u30bf\u30c3\u30d7\u5316\u3057\u305f\u8a71"},"content":{"rendered":"\n<p>\u524d\u56de\u3001\u56de\u6570\u3092\u6570\u3048\u308b\u3060\u3051\u306e\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\u3092SwiftUI\u3067\u81ea\u4f5c\u3057\u307e\u3057\u305f\u3002<br>\u8a18\u9332\u3082\u5206\u6790\u3082\u306a\u3057\u3002\u3068\u306b\u304b\u304f\u300c\u30c8\u30ec\u4e2d\u306b\u90aa\u9b54\u3057\u306a\u3044\u300d\u3092\u6700\u512a\u5148\u306b\u3057\u305f\u3084\u3064\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u524d\u56de\u306e\u7d9a\u304d\u3068\u3057\u3066\u3001\u4eca\u56de\u306f <strong>\u56de\u6570\u30ab\u30a6\u30f3\u30c8\uff0b\u4f11\u61a9\u30bf\u30a4\u30de\u30fc\u3092\u201c\u30ef\u30f3\u30bf\u30c3\u30d7\u904b\u7528\u201d\u306b\u5bc4\u305b\u305f<\/strong>\u8a71\u3092\u66f8\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5c0e\u5165\uff1a\u7b4b\u30c8\u30ec\u4e2d\u306f\u300c\u6b21\u306b\u4f55\u62bc\u3059\u3093\u3060\u3063\u3051\uff1f\u300d\u304c\u4e00\u756a\u306e\u6575<\/h2>\n\n\n\n<p>\u7b4b\u30c8\u30ec\u4e2d\u3063\u3066\u3001\u753b\u9762\u3092\u898b\u308b\u4f59\u88d5\u304c\u306a\u3044\u3053\u3068\u304c\u591a\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u624b\u304c\u585e\u304c\u308b<\/li>\n\n\n\n<li>\u606f\u304c\u4e0a\u304c\u308b<\/li>\n\n\n\n<li>\u6c57\u3067\u30b9\u30de\u30db\u89e6\u308a\u305f\u304f\u306a\u3044<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u306e\u72b6\u614b\u3067\u3001\u30dc\u30bf\u30f3\u304c\u8907\u6570\u3042\u308b\u3068\u4e00\u6c17\u306b\u4f7f\u308f\u308c\u306a\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u7d50\u8ad6\u306f\u30b7\u30f3\u30d7\u30eb\u3067\u3001<strong>1\u753b\u9762\uff0b1\u30dc\u30bf\u30f3\u3067\u72b6\u614b\u3092\u56de\u3059<\/strong>\u306e\u304c\u4e00\u756a\u30e9\u30af\u3067\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u8a18\u4e8b\u3067\u5f97\u3089\u308c\u308b\u3053\u3068\u306f\u4ee5\u4e0b\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30ef\u30f3\u30bf\u30c3\u30d7\u5316\u306e\u305f\u3081\u306e\u300c\u72b6\u614b\u8a2d\u8a08\uff08\u6700\u5c0f\uff09\u300d\u306e\u8003\u3048\u65b9<\/li>\n\n\n\n<li>\u56de\u6570\u30ab\u30a6\u30f3\u30c8\u3068\u4f11\u61a9\u30bf\u30a4\u30de\u30fc\u3092\u3064\u306a\u3050\u6700\u5c0f\u30b3\u30fc\u30c9<\/li>\n\n\n\n<li>\u8aa4\u30bf\u30c3\u30d7\u3084\u505c\u6b62\u6f0f\u308c\u3092\u6e1b\u3089\u3059\u305f\u3081\u306e\u5b9f\u88c5\u30dd\u30a4\u30f3\u30c8<\/li>\n<\/ul>\n\n\n\n<script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8421777867084732\"\n     crossorigin=\"anonymous\"><\/script>\n<!-- \u30b9\u30af\u30a8\u30a2 -->\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-8421777867084732\"\n     data-ad-slot=\"8629238674\"\n     data-ad-format=\"auto\"\n     data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\">\u524d\u63d0\uff1a\u591a\u6a5f\u80fd\u5316\u306f\u3057\u306a\u3044\uff08\u4eca\u56de\u3082\u5272\u308a\u5207\u308a\u5168\u632f\u308a\uff09<\/h2>\n\n\n\n<p>\u4eca\u56de\u306e\u65b9\u91dd\u306f\u524d\u56de\u3068\u540c\u3058\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u753b\u9762\u9077\u79fb\u306a\u3057<\/li>\n\n\n\n<li>\u8a2d\u5b9a\u306a\u3057\uff08\u79d2\u6570\u30ab\u30b9\u30bf\u30e0\u306f\u3057\u306a\u3044\uff09<\/li>\n\n\n\n<li>\u6c38\u7d9a\u5316\u306a\u3057<\/li>\n\n\n\n<li>\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u5bfe\u5fdc\u306f\u3057\u306a\u3044<\/li>\n<\/ul>\n\n\n\n<p>\u7b4b\u30c8\u30ec\u4e2d\u306b\u6b32\u3057\u3044\u306e\u306f\u3001\u6b63\u78ba\u3055\u3088\u308a\u300c\u90aa\u9b54\u3057\u306a\u3044\u3053\u3068\u300d\u3002<br>\u3053\u3053\u304b\u3089\u30d6\u30ec\u308b\u3068\u3001\u307e\u305f\u4f7f\u308f\u308c\u306a\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u554f\u984c\u306e\u6b63\u4f53\uff1a\u306a\u305c\u64cd\u4f5c\u304c\u8ff7\u3044\u306b\u306a\u308b\u306e\u304b<\/h2>\n\n\n\n<p>\u30ef\u30f3\u30bf\u30c3\u30d7\u5316\u306e\u524d\u306b\u3001\u4f55\u304c\u90aa\u9b54\u3057\u3066\u3044\u308b\u304b\u3092\u5206\u89e3\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30dc\u30bf\u30f3\u304c\u8907\u6570\u3042\u308b \u2192 \u5224\u65ad\u304c\u5897\u3048\u308b<\/li>\n\n\n\n<li>\u753b\u9762\u304c\u5206\u304b\u308c\u308b \u2192 \u9077\u79fb\u304c\u5897\u3048\u308b<\/li>\n\n\n\n<li>\u72b6\u614b\u304c\u898b\u3048\u306a\u3044 \u2192 \u3044\u307e\u30c8\u30ec\u4e2d\uff1f\u4f11\u61a9\u4e2d\uff1f\u304c\u66d6\u6627<\/li>\n\n\n\n<li>\u505c\u6b62\u6f0f\u308c\u304c\u8d77\u304d\u308b \u2192 \u30bf\u30a4\u30de\u30fc\u304c\u88cf\u3067\u52d5\u304d\u7d9a\u3051\u308b\u4e8b\u6545<\/li>\n<\/ul>\n\n\n\n<p>\u3064\u307e\u308a\u3001\u7b4b\u30c8\u30ec\u4e2d\u306e\u30a2\u30d7\u30ea\u3067\u4e00\u756a\u907f\u3051\u305f\u3044\u306e\u306f <strong>\u5224\u65ad<\/strong> \u3068 <strong>\u5fd8\u308c\u7269<\/strong> \u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u89e3\u6c7a\u7b56\uff1a\u72b6\u614b\u30922\u3064\u306b\u6f70\u3057\u3066\u3001\u30e1\u30a4\u30f3\u64cd\u4f5c\u30921\u30dc\u30bf\u30f3\u306b\u5bc4\u305b\u308b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1) \u72b6\u614b\u306f2\u3064\u3060\u3051\uff08training \/ rest\uff09<\/h3>\n\n\n\n<p>\u72b6\u614b\u304c\u5897\u3048\u308b\u307b\u3069\u3001\u30dc\u30bf\u30f3\u3068\u5206\u5c90\u304c\u5897\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u306a\u306e\u3067\u3001\u4eca\u56de\u306f\u5272\u308a\u5207\u3063\u3066\u3053\u3046\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>training\uff08\u30c8\u30ec\u4e2d\uff09<\/li>\n\n\n\n<li>rest\uff08\u4f11\u61a9\u4e2d\uff09<\/li>\n<\/ul>\n\n\n\n<p>\u8868\u793a\u3082\u52d5\u4f5c\u3082\u3001\u3053\u306e2\u3064\u3060\u3051\u3067\u56de\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2) \u30e1\u30a4\u30f3\u64cd\u4f5c\u3092\u300cNext\u30dc\u30bf\u30f3\u300d1\u3064\u306b\u56fa\u5b9a\u3059\u308b<\/h3>\n\n\n\n<p>\u7b4b\u30c8\u30ec\u4e2d\u306b\u3084\u308a\u305f\u3044\u306e\u306f\u3001\u3060\u3044\u305f\u3044\u3053\u308c\u3060\u3051\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30bb\u30c3\u30c8\u304c\u7d42\u308f\u3063\u305f \u2192 \u4f11\u61a9\u958b\u59cb\u3057\u305f\u3044<\/li>\n\n\n\n<li>\u4f11\u61a9\u304c\u7d42\u308f\u3063\u305f \u2192 \u6b21\u30bb\u30c3\u30c8\u3078\u884c\u304d\u305f\u3044<\/li>\n<\/ul>\n\n\n\n<p>\u306a\u3089\u3001\u30e1\u30a4\u30f3\u64cd\u4f5c\u306f1\u3064\u3067\u3044\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c8\u30ec\u4e2d\u306b\u62bc\u3059 \u2192 \u4f11\u61a9\u958b\u59cb\uff08\u30bf\u30a4\u30de\u30fcStart\uff09<\/li>\n\n\n\n<li>\u4f11\u61a9\u4e2d\u306b\u62bc\u3059 \u2192 \u6b21\u30bb\u30c3\u30c8\u3078\uff08\u30bf\u30a4\u30de\u30fcStop\uff09<\/li>\n<\/ul>\n\n\n\n<p>\u30dc\u30bf\u30f3\u306e\u30e9\u30d9\u30eb\u306f\u72b6\u614b\u3067\u5909\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>training\uff1a\u4f11\u61a9\u958b\u59cb<\/li>\n\n\n\n<li>rest\uff1a\u6b21\u30bb\u30c3\u30c8\u3078<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3060\u3051\u3067\u300c\u6b21\u306b\u4f55\u62bc\u3059\u304b\u300d\u304c\u6d88\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3) \u505c\u6b62\u6f0f\u308c\u306fUI\u3067\u9632\u304c\u305a\u3001\u30b3\u30fc\u30c9\u5074\u3067\u6f70\u3059<\/h3>\n\n\n\n<p>\u505c\u6b62\u30dc\u30bf\u30f3\u3092\u7f6e\u304f\u3068\u3001\u62bc\u3057\u5fd8\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u306a\u306e\u3067\u3001\u505c\u6b62\u306f\u300c\u72b6\u614b\u9077\u79fb\u3067\u5fc5\u305a\u8d70\u308b\u300d\u3088\u3046\u306b\u5bc4\u305b\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>training \u306b\u623b\u308b\u30bf\u30a4\u30df\u30f3\u30b0\u3067 <code>invalidate<\/code><\/li>\n\n\n\n<li>\u753b\u9762\u304c\u6d88\u3048\u308b\u3068\u304d\u3082 <code>invalidate<\/code><\/li>\n<\/ul>\n\n\n\n<p>\u7b4b\u30c8\u30ec\u4e2d\u306b\u201c\u81ea\u5206\u306e\u6ce8\u610f\u529b\u201d\u306b\u983c\u308b\u8a2d\u8a08\u306f\u8ca0\u3051\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u30b3\u30fc\u30c9\u30b5\u30f3\u30d7\u30eb\uff1a\u56de\u6570\uff0b\u4f11\u61a9\u3092\u30ef\u30f3\u30bf\u30c3\u30d7\u3067\u56de\u3059\u6700\u5c0f\u69cb\u6210<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u72b6\u614b\u5b9a\u7fa9<\/h3>\n\n\n\n<pre class=\"wp-block-verse\">import SwiftUI<br>import AudioToolbox<br><br>enum Mode {<br>case training<br>case rest<br>}<br><br>struct ContentView: View {<br>@State private var mode: Mode = .training<br>@State private var repCount: Int = 0<br><br>@State private var restSeconds: Int = 60<br>@State private var remainingTime: Int = 60<br>@State private var timer: Timer?<br><\/pre>\n\n\n\n<p><br><strong>\u30e1\u30a4\u30f3\u30dc\u30bf\u30f3\uff08\u3053\u308c\u304c\u4e3b\u5f79\uff09<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-verse\">    private func handleMainButtonTap() {<br>        switch mode {<br>        case .training:<br>            \/\/ \u4f11\u61a9\u958b\u59cb<br>            mode = .rest<br>            startRestTimer()<br><br>        case .rest:<br>            \/\/ \u6b21\u30bb\u30c3\u30c8\u3078<br>            stopTimer()<br>            mode = .training<br>            remainingTime = restSeconds<br>            \/\/ \u5fc5\u8981\u306a\u3089\u56de\u6570\u3092\u30ea\u30bb\u30c3\u30c8\uff08\u65b9\u91dd\u6b21\u7b2c\uff09<br>            \/\/ repCount = 0<br>        }<br>    }<\/pre>\n\n\n\n<p><strong>\u30bf\u30a4\u30de\u30fc\u958b\u59cb\u30fb\u505c\u6b62\uff0b\u97f3<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-verse\">    private func startRestTimer() {<br>        stopTimer()<br>        remainingTime = restSeconds<br><br>        timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { _ in<br>            if remainingTime &gt; 0 {<br>                remainingTime -= 1<br>            } else {<br>                stopTimer()<br>                playSound()<br>                \/\/ \u4f11\u61a9\u7d42\u4e86\u3067\u81ea\u52d5\u9077\u79fb\u3055\u305b\u308b\u304b\u306f\u597d\u307f\u3002<br>                \/\/ \u4eca\u56de\u306f\u300c\u30ef\u30f3\u30bf\u30c3\u30d7\u904b\u7528\u300d\u3092\u512a\u5148\u3057\u3066\u81ea\u52d5\u9077\u79fb\u306f\u3057\u306a\u3044\u3002<br>            }<br>        }<br>    }<br><br>    private func stopTimer() {<br>        timer?.invalidate()<br>        timer = nil<br>    }<br><br>    private func playSound() {<br>        AudioServicesPlaySystemSound(1005)<br>    }<\/pre>\n\n\n\n<p><strong>1\u753b\u9762\u306b\u307e\u3068\u3081\u308b\uff08\u8868\u793a\u306fmode\u3067\u5207\u66ff\uff09<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-verse\">    var body: some View {<br>        VStack(spacing: 16) {<br>            Text(mode == .training ? \"\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\" : \"\u4f11\u61a9\")<br>                .font(.headline)<br><br>            if mode == .training {<br>                Text(\"\\(repCount)\")<br>                    .font(.system(size: 72, weight: .bold))<br>            } else {<br>                Text(\"\\(remainingTime) \u79d2\")<br>                    .font(.system(size: 56, weight: .bold))<br>            }<br><br>            HStack(spacing: 12) {<br>                Button(\"\uff0b1\") { repCount += 1 }<br>                    .buttonStyle(.bordered)<br><br>                Button(\"\u22121\") { repCount = max(0, repCount - 1) }<br>                    .buttonStyle(.bordered)<br>            }<br><br>            Button(mode == .training ? \"\u4f11\u61a9\u958b\u59cb\" : \"\u6b21\u30bb\u30c3\u30c8\u3078\") {<br>                handleMainButtonTap()<br>            }<br>            .buttonStyle(.borderedProminent)<br><br>            Button(\"\u30ea\u30bb\u30c3\u30c8\") {<br>                stopTimer()<br>                mode = .training<br>                repCount = 0<br>                remainingTime = restSeconds<br>            }<br>            .buttonStyle(.bordered)<br>        }<br>        .padding()<br>        .onDisappear {<br>            stopTimer()<br>        }<br>    }<br>}<\/pre>\n\n\n\n<p>\u3053\u308c\u3067\u3001\u904b\u7528\u306f\u3053\u3046\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30bb\u30c3\u30c8\u7d42\u308f\u308a\u306b\u300c\u4f11\u61a9\u958b\u59cb\u300d<\/li>\n\n\n\n<li>\u97f3\u304c\u9cf4\u3063\u305f\u3089\u300c\u6b21\u30bb\u30c3\u30c8\u3078\u300d<\/li>\n<\/ul>\n\n\n\n<p>\u7b4b\u30c8\u30ec\u4e2d\u306b\u8003\u3048\u308b\u3053\u3068\u304c\u5897\u3048\u306a\u3044\u306e\u304c\u4e00\u756a\u306e\u52dd\u3061\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8\uff08\u5b9f\u88c5\u3067\u5b88\u308b\u30eb\u30fc\u30eb\uff09<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u72b6\u614b\u306f training\/rest \u306e2\u3064\u3060\u3051<\/li>\n\n\n\n<li>\u753b\u9762\u9077\u79fb\u306a\u3057\u30011\u753b\u9762\u3067\u5b8c\u7d50<\/li>\n\n\n\n<li>\u30e1\u30a4\u30f3\u64cd\u4f5c\u306f1\u30dc\u30bf\u30f3\uff08\u72b6\u614b\u3067\u30e9\u30d9\u30eb\u5909\u66f4\uff09<\/li>\n\n\n\n<li>\u72b6\u614b\u304c\u623b\u308b\u7d4c\u8def\u3067 timer \u3092\u5fc5\u305a\u6b62\u3081\u308b<\/li>\n\n\n\n<li>\u753b\u9762\u7834\u68c4\u3067\u3082 timer \u3092\u6b62\u3081\u308b\uff08onDisappear\uff09<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u5177\u4f53\u4f8b\uff08\u7b4b\u30c8\u30ec\u4e2d\u306e\u904b\u7528\u30d5\u30ed\u30fc\uff09<\/strong><\/h2>\n\n\n\n<p>\u7b4b\u30c8\u30ec\u4e2d\u306e\u64cd\u4f5c\u306f\u3001\u3053\u308c\u3060\u3051\u3067\u56de\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30bb\u30c3\u30c8\u304c\u7d42\u308f\u308b \u2192 \u4f11\u61a9\u958b\u59cb<\/li>\n\n\n\n<li>\u4f11\u61a9\u304c\u7d42\u308f\u308b\uff08\u97f3\u304c\u9cf4\u308b\uff09 \u2192 \u6b21\u30bb\u30c3\u30c8\u3078<\/li>\n\n\n\n<li>\u56de\u6570\u306f\u300c\uff0b1\u300d\u3060\u3051\u3067\u5897\u3084\u3059<\/li>\n<\/ul>\n\n\n\n<p>\u300c\u6b21\u306b\u4f55\u3092\u62bc\u3059\u304b\u300d\u3092\u8003\u3048\u306a\u3044\u8a2d\u8a08\u304c\u3001\u7d99\u7d9a\u306b\u76f4\u7d50\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u6b21\u306b\u3084\u308b\u306a\u3089\uff08\u3067\u3082\u3001\u5fc5\u8981\u306b\u306a\u308b\u307e\u3067\u3084\u3089\u306a\u3044\uff09<\/strong><\/h2>\n\n\n\n<p>\u30ef\u30f3\u30bf\u30c3\u30d7\u904b\u7528\u3092\u58ca\u3055\u305a\u306b\u4f38\u3070\u3059\u306a\u3089\u3001\u6b21\u306f\u3053\u306e\u7a0b\u5ea6\u304c\u9650\u754c\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u79d2\u6570\u30923\u30d1\u30bf\u30fc\u30f3\u56fa\u5b9a\u3067\u5207\u66ff\uff08\u81ea\u7531\u5165\u529b\u306f\u6cbc\uff09<\/li>\n\n\n\n<li>\u30c8\u30ec\u958b\u59cb\u3092\u3082\u3063\u3068\u96d1\u306b\uff08\u30dc\u30bf\u30f3\u914d\u7f6e\u306e\u6700\u9069\u5316\uff09<\/li>\n<\/ul>\n\n\n\n<p>\u305f\u3060\u3001\u5fc5\u8981\u306b\u306a\u308b\u307e\u3067\u3084\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p>\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\u306f\u201c\u80b2\u3066\u308b\u201d\u3088\u308a\u201c\u4f7f\u308f\u308c\u308b\u201d\u304c\u6b63\u7fa9\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u95a2\u9023\u8a18\u4e8b<\/strong><\/h2>\n\n\n\n<p>\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\u304c\u30b5\u30fc\u30d3\u30b9\u7d42\u4e86\u3002\u56de\u6570\u3092\u6570\u3048\u308b\u3060\u3051\u306eiOS\u30a2\u30d7\u30ea\u3092\u81ea\u4f5c\u3057\u305f\u8a71<\/p>\n\n\n<div class=\"sc_getpost\"><a class=\"clearfix\" href=\"https:\/\/syuji-engineer.com\/?p=689\"><div class=\"sc_getpost_thumb post-box-thumbnail__wrap\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODdhAQABAPAAAN3d3QAAACwAAAAAAQABAAACAkQBADs=\" width=\"1280\" height=\"720\" alt=\"\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\u304c\u30b5\u30fc\u30d3\u30b9\u7d42\u4e86\u3002\u56de\u6570\u3092\u6570\u3048\u308b\u3060\u3051\u306eiOS\u30a2\u30d7\u30ea\u3092\u81ea\u4f5c\u3057\u305f\u8a71\" loading=\"lazy\" data-src=\"https:\/\/syuji-engineer.com\/wp-content\/uploads\/2026\/01\/\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\u304c\u30b5\u30fc\u30d3\u30b9\u7d42\u4e86\u3002-\u56de\u6570\u3092\u6570\u3048\u308b\u3060\u3051\u306eiOS\u30a2\u30d7\u30ea\u3092-\u81ea\u4f5c\u3057\u305f\u8a71.png\" class=\"lazyload\"><\/div><div class=\"title\">\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\u304c\u30b5\u30fc\u30d3\u30b9\u7d42\u4e86\u3002\u56de\u6570\u3092\u6570\u3048\u308b\u3060\u3051\u306eiOS\u30a2\u30d7\u30ea\u3092\u81ea\u4f5c\u3057\u305f\u8a71<\/div><div class=\"date\">2026.1.15<\/div><div class=\"substr\">(adsbygoogle = window.adsbygoogle || []).push({}); \u306a\u305c\u4f5c\u3063\u305f\u304b\uff1f \u4f7f\u3063\u3066\u3044\u305f\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\u304c\u3001\u3042\u308b\u65e5\u7a81\u7136\u30b5\u30fc\u30d3\u30b9\u7d42\u4e86\u3057\u307e\u3057\u305f\u3002 \u4ee3...<\/div><\/a><\/div>\n\n\n\n<p>SwiftUI\u3067\u4f5c\u308b\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\uff5c\u56de\u6570\u30ab\u30a6\u30f3\u30c8\uff0b\u97f3\u3060\u3051\u306e\u30a4\u30f3\u30bf\u30fc\u30d0\u30eb\u30bf\u30a4\u30de\u30fc\u3092\u8ffd\u52a0\u3057\u305f\u8a71<\/p>\n\n\n<div class=\"sc_getpost\"><a class=\"clearfix\" href=\"https:\/\/syuji-engineer.com\/?p=703\"><div class=\"sc_getpost_thumb post-box-thumbnail__wrap\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODdhAQABAPAAAN3d3QAAACwAAAAAAQABAAACAkQBADs=\" width=\"1280\" height=\"720\" alt=\"SwiftUI\u3067\u4f5c\u308b\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\uff5c\u56de\u6570\u30ab\u30a6\u30f3\u30c8\uff0b\u97f3\u3060\u3051\u306e\u30a4\u30f3\u30bf\u30fc\u30d0\u30eb\u30bf\u30a4\u30de\u30fc\u3092\u8ffd\u52a0\u3057\u305f\u8a71\" loading=\"lazy\" data-src=\"https:\/\/syuji-engineer.com\/wp-content\/uploads\/2026\/01\/SwiftUI\u3067\u4f5c\u308b\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\uff5c-\u56de\u6570\u30ab\u30a6\u30f3\u30c8\uff0b\u97f3\u3060\u3051\u306e-\u30a4\u30f3\u30bf\u30fc\u30d0\u30eb\u30bf\u30a4\u30de\u30fc\u3092-\u8ffd\u52a0\u3057\u305f\u8a71.png\" class=\"lazyload\"><\/div><div class=\"title\">SwiftUI\u3067\u4f5c\u308b\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\uff5c\u56de\u6570\u30ab\u30a6\u30f3\u30c8\uff0b\u97f3\u3060\u3051\u306e\u30a4\u30f3\u30bf\u30fc\u30d0\u30eb\u30bf\u30a4\u30de\u30fc\u3092\u8ffd\u52a0\u3057\u305f\u8a71<\/div><div class=\"date\">2026.4.1<\/div><div class=\"substr\">(adsbygoogle = window.adsbygoogle || []).push({}); \u524d\u56de\u306e\u304a\u3055\u3089\u3044 \u524d\u56de\u3001\u56de\u6570\u3092\u6570\u3048\u308b\u3060\u3051\u306e\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\u3092SwiftUI\u3067\u81ea\u4f5c\u3057\u307e...<\/div><\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u304a\u308f\u308a\u306b<\/strong><\/h2>\n\n\n\n<p>\u7b4b\u30c8\u30ec\u4e2d\u306b\u6b32\u3057\u3044\u306e\u306f\u3001\u6a5f\u80fd\u3067\u306f\u306a\u304f <strong>\u8ff7\u3044\u30bc\u30ed<\/strong> \u3067\u3059\u3002<\/p>\n\n\n\n<p>\u72b6\u614b\u30922\u3064\u306b\u6f70\u3057\u3066\u3001\u30e1\u30a4\u30f3\u64cd\u4f5c\u30921\u30dc\u30bf\u30f3\u306b\u5bc4\u305b\u308b\u3002<\/p>\n\n\n\n<p>\u3053\u308c\u3060\u3051\u3067\u3001\u56de\u6570\u30ab\u30a6\u30f3\u30c8\uff0b\u4f11\u61a9\u30bf\u30a4\u30de\u30fc\u304c\u300c\u73fe\u5834\u3067\u4f7f\u3048\u308b\u5f62\u300d\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u672c\u65e5\u306f\u3053\u3053\u307e\u3067\u3002\u3067\u306f\u3001\u307e\u305f\u6b21\u306e\u8a18\u4e8b\u3067\u304a\u4f1a\u3044\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h3 class=\"wp-block-heading\">\u524d\u306e\u8a18\u4e8b\u3078<\/h3>\n\n\n<div class=\"sc_getpost\"><a class=\"clearfix\" href=\"https:\/\/syuji-engineer.com\/?p=695\"><div class=\"sc_getpost_thumb post-box-thumbnail__wrap\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODdhAQABAPAAAN3d3QAAACwAAAAAAQABAAACAkQBADs=\" width=\"1280\" height=\"720\" alt=\"\u82e6\u75db\u3092\u6d88\u3059\u306a\u3001\u5236\u5fa1\u305b\u3088\uff1a\u9577\u671f\u904b\u7528\u3067\u304d\u308b\u30a8\u30f3\u30b8\u30cb\u30a2\u306e\u7fd2\u6163\" loading=\"lazy\" data-src=\"https:\/\/syuji-engineer.com\/wp-content\/uploads\/2026\/01\/\u82e6\u75db\u3092\u6d88\u3059\u306a\u3001\u5236\u5fa1\u305b\u3088\uff1a-\u9577\u671f\u904b\u7528\u3067\u304d\u308b\u30a8\u30f3\u30b8\u30cb\u30a2\u306e\u7fd2\u6163.png\" class=\"lazyload\"><\/div><div class=\"title\">\u82e6\u75db\u3092\u6d88\u3059\u306a\u3001\u5236\u5fa1\u305b\u3088\uff1a\u9577\u671f\u904b\u7528\u3067\u304d\u308b\u30a8\u30f3\u30b8\u30cb\u30a2\u306e\u7fd2\u6163<\/div><div class=\"date\">2026.1.19<\/div><div class=\"substr\">\u203b\u672c\u8a18\u4e8b\u306f\u30a2\u30d5\u30a3\u30ea\u30a8\u30a4\u30c8\u5e83\u544a\uff08\u697d\u5929\u30a2\u30d5\u30a3\u30ea\u30a8\u30a4\u30c8\uff09\u3092\u542b\u307f\u307e\u3059\u3002 \u7d39\u4ecb\u3057\u3066\u3044\u308b\u66f8\u7c4d\u30fb\u30b5\u30fc\u30d3\u30b9\u306f\u3001\u79c1\u304c\u5b9f\u969b\u306b\u8aad\u3093\u3067\/\u4f7f\u3063\u3066\u6709\u7528\u3060\u3068\u611f\u3058\u305f\u3082\u306e\u3092\u4e2d\u5fc3\u306b\u9078\u3093\u3067\u3044\u307e\u3059\u3002 \u300c\u697d\u3057\u3044\u3053\u3068\u3060\u3051\u3084\u308c...<\/div><\/a><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h3 class=\"wp-block-heading\">\u6b21\u306e\u8a18\u4e8b\u3078<\/h3>\n\n\n<div class=\"sc_getpost\"><a class=\"clearfix\" href=\"https:\/\/syuji-engineer.com\/?p=703\"><div class=\"sc_getpost_thumb post-box-thumbnail__wrap\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODdhAQABAPAAAN3d3QAAACwAAAAAAQABAAACAkQBADs=\" width=\"1280\" height=\"720\" alt=\"SwiftUI\u3067\u4f5c\u308b\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\uff5c\u56de\u6570\u30ab\u30a6\u30f3\u30c8\uff0b\u97f3\u3060\u3051\u306e\u30a4\u30f3\u30bf\u30fc\u30d0\u30eb\u30bf\u30a4\u30de\u30fc\u3092\u8ffd\u52a0\u3057\u305f\u8a71\" loading=\"lazy\" data-src=\"https:\/\/syuji-engineer.com\/wp-content\/uploads\/2026\/01\/SwiftUI\u3067\u4f5c\u308b\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\uff5c-\u56de\u6570\u30ab\u30a6\u30f3\u30c8\uff0b\u97f3\u3060\u3051\u306e-\u30a4\u30f3\u30bf\u30fc\u30d0\u30eb\u30bf\u30a4\u30de\u30fc\u3092-\u8ffd\u52a0\u3057\u305f\u8a71.png\" class=\"lazyload\"><\/div><div class=\"title\">SwiftUI\u3067\u4f5c\u308b\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\uff5c\u56de\u6570\u30ab\u30a6\u30f3\u30c8\uff0b\u97f3\u3060\u3051\u306e\u30a4\u30f3\u30bf\u30fc\u30d0\u30eb\u30bf\u30a4\u30de\u30fc\u3092\u8ffd\u52a0\u3057\u305f\u8a71<\/div><div class=\"date\">2026.4.1<\/div><div class=\"substr\">(adsbygoogle = window.adsbygoogle || []).push({}); \u524d\u56de\u306e\u304a\u3055\u3089\u3044 \u524d\u56de\u3001\u56de\u6570\u3092\u6570\u3048\u308b\u3060\u3051\u306e\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\u3092SwiftUI\u3067\u81ea\u4f5c\u3057\u307e...<\/div><\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u56de\u3001\u56de\u6570\u3092\u6570\u3048\u308b\u3060\u3051\u306e\u7b4b\u30c8\u30ec\u30a2\u30d7\u30ea\u3092SwiftUI\u3067\u81ea\u4f5c\u3057\u307e\u3057\u305f\u3002\u8a18\u9332\u3082\u5206\u6790\u3082\u306a\u3057\u3002\u3068\u306b\u304b\u304f\u300c\u30c8\u30ec\u4e2d\u306b\u90aa\u9b54\u3057\u306a\u3044\u300d\u3092\u6700\u512a\u5148\u306b\u3057\u305f\u3084\u3064\u3067\u3059\u3002 \u524d\u56de\u306e\u7d9a\u304d\u3068\u3057\u3066\u3001\u4eca\u56de\u306f \u56de\u6570\u30ab\u30a6\u30f3\u30c8\uff0b\u4f11\u61a9\u30bf\u30a4\u30de\u30fc\u3092\u201c\u30ef\u30f3\u30bf\u30c3\u30d7\u904b\u7528\u201d\u306b\u5bc4\u305b\u305f\u8a71\u3092\u66f8\u304d\u307e\u3059\u3002 \u5c0e\u2026<\/p>\n","protected":false},"author":1,"featured_media":864,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[468],"tags":[554,551,220,242,550,555,244,556,471,553,552,470],"class_list":["post-860","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-468","tag-audiotoolbox","tag-ios","tag-swift","tag-swiftui","tag-timer","tag-ui","tag-244","tag-556","tag-471","tag-553","tag-552","tag-470"],"_links":{"self":[{"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/posts\/860","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=860"}],"version-history":[{"count":5,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/posts\/860\/revisions"}],"predecessor-version":[{"id":1191,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/posts\/860\/revisions\/1191"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=\/wp\/v2\/media\/864"}],"wp:attachment":[{"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=860"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=860"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/syuji-engineer.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=860"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}