【お知らせ】
SwiftUIで作った macOS Todo アプリ
ToDone
を100ダウンロードまで無料にしました。マニュアルページは、ToDone サポートページ です。
【本文】
コーディングだけで macOS アプリが作れたらな、と思っていましたが、3年前から SwiftUI を使って、コーディングだけで macOS アプリが作れるようになっていると知り、さっそく始めてみることにしました。
一応、任意のテキストエディタでコードを記述し、ターミナルを使ってビルドする方法で作業を進めていますが、ここでは、Xcode を使って作業を進める方法を説明します。
私の開発環境は次のとおりです。
Xdoeを起動して表示される Welcome to Xcode 画面で Create a new Xcode Project をクリックするか、File メニュー → New → Project... を選びます。
次の画面で macOS の App テンプレートを選び Next をクリックします。
次の画面で次のように設定して Next をクリックします。
次の画面で保存場所を決めて、Create をクリックします。 私の場合は、Create Git repository on may Mac のチェックは外しています。
ContentView(ContentView.swift)を次のコードに書き換えます。
他の章で、View.swift という名前で書かれたコードは、ここに書きます。
//
// ContentView.swift
// Foo
//
// Created by
//
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)
}
}
// 次のコードは、Xcode のプレビュー機能を有効にするためのコードです。
// プレビュー機能を使わない場合は必要ありません。
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
プロダクト名App(プロダクト名App.swift)を次のコードに書き換えます。
他の章で、App.swift という名前で書かれたコードは、ここに書きます。
なお、このファイルの名前はプロダクト名Appという名前に自動的に設定されます。
//
// FooApp.swift
// Foo
//
// Created by
//
import SwiftUI
// SwiftUI のプログラムは @main と書かれた所から始まる決まりになっています。
// FooApp: App の部分はファイル名と同じである必要はありません。
// 例えば、BarApp: App にしても問題ありません。
@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
}
}
Product メニューの Run をクリックするか、Xcode の左上の右三角 ▶︎ をクリックします。しばらく待つとアプリケーションが起動します。