スクラムフェス名古屋2026で登壇させていただいた
スクフェスが地元名古屋で開催ということで、初参加しました。 ありがたいことにプロポーザルを採択いただき登壇もさせていただきました。
続きを読むButtonからジェネリック構造体を学ぶ
Github CopilotにButtonを作って欲しいと依頼したら下記のコードが生成された。
Button {
isTap = true
} label: {
Label("Button")
}
.buttonStyle(.plain)
.cornerRadius(8)
.padding(.horizontal, 8)
おおよそ上から何をしているのかは直感的にわかる。
- ボタンを宣言している
- タップ時の動作を定義している
- ボタンに表示する文字列を定義している
- 見た目を調整している
しかし、なぜこのような書き方になるのか、構文の意味や裏側の仕組みがイメージできなかった。 そこで、Buttonの定義やSwiftの言語仕様を調べてみた。
本稿では、主に以下の点を整理している。
- 波括弧
{}は何を意味しているのか label:は何を意味しているのか@escaping、@MainActor、Trailing closureとは何か
ちなみに初学者がChatGPTに聞きながら公式ドキュメントなどを参照して理解したことをまとめているので、正しい定義ではないかも。
続きを読むXcode - SwiftLintとSwiftFormatの導入手順
はじめに
本稿ではXcodeでSwiftを開発する際に利用するLinterとFormatter(SwiftLint, SwiftFormat)を導入する手順を記載します。
最終的なゴールは以下の通りです。
- Linterのルール則り、Xcode上で警告が発生すること
- アプリビルド時に自動整形されること
SwiftLintとSwiftFormatの導入方法はbrewを利用する他、さまざまな導入方法がありますが、本稿ではSPM(Swift Package Manager)を利用します。
開発端末のローカルに設定する手順では、初回の導入手順が開発者毎に必要となります。
SPMを利用してプロジェクトに追加すると、コードをcloneした直後から同じ環境となる、バージョン固定が容易などのメリットがあります。
反面、初回のビルドが少し遅くなる等のデメリットもありますが、チーム開発における共有性の高さを優先する場合にはSPMを選択すると良いと思います。
公式ドキュメント
- GitHub - realm/SwiftLint: A tool to enforce Swift style and conventions.
- GitHub - nicklockwood/SwiftFormat: A command-line tool and Xcode Extension for formatting Swift code
環境
% xcodebuild -version Xcode 16.4 Build version 16F6 % swift --version swift-driver version: 1.120.5 Apple Swift version 6.1.2 (swiftlang-6.1.2.1.2 clang-1700.0.13.5) Target: arm64-apple-macosx15.0続きを読む