🍁

Swiftの挙動を確認したい時にCLTプロジェクトを使う

2024/05/26に公開

Swiftの挙動を簡単にチェックする方法としてPlaygroundがありますが、簡単なコードしか書いていないのに時々実行が遅かったりうまく動かなかったりする印象がありました。(数年前から使うのをやめているので最近のことは知りません)

そこで、私はmacOS向けのCommand Line Toolプロジェクトを使って普段からSwiftの挙動確認をしています。出来上がるものは普通のプロジェクトなので、Deployment TargetやSandBox、Entitlementsの動作確認もできますし、Swift Packageを試しに導入して使い勝手を確認することもできます。テキストファイルや画像リソースなどを読み込んで扱うこともできるので普通に万能です。

ただ、単純にプロジェクトを作るだけだとSwift Concurrencyのコードをさっと書いて確認することができないので一手間加えてあります。

  1. macOS向けのCommand Line Toolプロジェクトを作成
    CLT

  2. main.swiftファイルを捨てて別名のファイルを用意しConcurrency対応できるようにする

    Sample.swift
    import Foundation
    
    @main
    struct Sample {
        static func main() async throws {
            // Concurrencyのコードが使えるしちゃんと待機する
            try await Task.sleep(for: .seconds(3))
            Swift.print("Hello, World!")
        }
    }
    

    @mainをつけたstructの中にmainという名前のstaticな関数があれば、プロジェクトの実行時に自動的にその関数を実行してくれます。

  3. なんでも検証したいならSandBoxを無効にする
    Entitlementsファイルを追加して、SandBoxをNOにします。

Discussion