macOS   SwiftUIプログラミング   初めの一歩

ホーム

コーディングだけで macOS アプリが作れたらな、と思っていましたが、3年前から SwiftUI を使って、コーディングだけで macOS アプリが作れるようになっていると知り、さっそく始めてみることにしました。

一応、任意のテキストエディタでコードを記述し、 ターミナルを使ってビルドする方法を紹介しています。 Xcode を使う場合は、 Xcodeで作業する場合 をご一読ください。

なお、Swift コンパイラや SwiftUI フレームワークなどを Mac にインストールするために Xcode をインストールして、 一度起動させなければなりません。Xcode で作業しない場合は、 一度起動した後は、 Xcodeを終了しても大丈夫です。

なお、アプリケーションを App Storeに提出するには、 Xcode を使わなければならないかもしれません。 どこかで Xcode を使わずに提出する方法を見たような気もするのですが...

私の開発環境は次のとおりです。

  • MacBook Air 2018年モデル、メモリ8G
  • macOS Monterey 12.4
  • Xcode 13.4.1

更新履歴
2022/07/06 Xcodeで作業する場合を別のページに分割しました。

初めの一歩

任意のテキストエディタで次の二つのファイルを作成します。

Main.swift

ファイル名は自由ですが、 大文字で始めなければなりません。Swift ファイルの拡張子は .swift です。 Xcode で作業をする場合は、FooApp.swift(プロダクト名 App)に次のコードを記述します。


import SwiftUI

// SwiftUI のプログラムは @main と書かれた所から始まる決まりになっています。
@main
struct FooApp: App {
    @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

// 次のクラスは、アプリケーションのウィンドウが閉じたら、
// アプリケーションも終了するようにするためのコードです。
// macOS のデフォルトではウィドウを閉じてもアプリケーションは終了しません。
class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate {

    func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
        return true
   }
}
	


Sub.swift

ファイル名は自由ですが、 大文字で始めなければなりません。Swift ファイルの拡張子は .swift です。 Xcode で作業を進める場合は、ContentView.swift に次のコードを記述します。


import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Hello, world!")
            .font(.largeTitle)
            .fontWeight(.thin)
        }
        .frame(minWidth: 300, maxWidth:.infinity, minHeight: 200, maxHeight: .infinity)
    }
}
	


ビルド

ターミナルを起動して、前述の2つのファイルがあるディレクトリに移動します。


// コンパイル
swiftc Main.swift Sub.swift -o foo
// アプリケーションバンドルの作成
mkdir Foo.app
// ビルドファイルをアプリケーションバンドルへ移動
mv foo Foo.app
	

Xcode で作業を進めている場合は、Product メニューの Run をクリックするか、 Xcode の左上の右三角 ▶︎ をクリックします。

実行

作成した Foo アプリ(アプリケーションバンドル)をダブルクリックします。
Xcode で作業を進めている場合は何もする必要はありません。 しばらく待つとアプリケーションが起動します。

  1. ウィンドウはリサイズ・最大化・最小化ができます。
  2. 簡易的な方法で作りましたので アプリケーションバンドルの名前がアプリケーションの名前になります。
  3. Xcode で作業を進めている場合は、 プロダクト名がアプリケーションの名前になります。
  4. Quit メニューだけでなく、ウィンドウを閉じても、 アプリケーションが終了します。



129 visits
Posted: Jun. 22, 2022
Update: Jul. 06, 2022

ホーム   目次