#17 Swiftで学ぶモジュールとパッケージの基本
Swiftのファイル整理は、他の言語に比べて手軽なのが特徴です。この記事では、Swiftにおけるモジュールの考え方と、アクセス制御の仕組みを解説します。
同じモジュール内は自動的に使える
Swiftでは、同じプロジェクト(モジュール)の中にあるファイルであれば、importを書かなくても、他のファイルの関数やクラスをそのまま使えます。
// Utils.swift
func greet(name: String) {
print("こんにちは、\(name)さん")
}
// main.swift
greet(name: "太郎") // importなしで使える
外部のモジュールを読み込む
以前の記事で触れた外部ライブラリなど、別のモジュールの機能を使う場合はimportが必要です。
import Foundation
import SwiftUI
アクセス制御という仕組み
Swiftにはprivate・internal・publicなど、以前のクラスの記事で触れた以上に細かいアクセス制御の仕組みがあります。モジュールの外に公開したい機能にはpublicを付けます。
public func greet(name: String) {
print("こんにちは、\(name)さん")
}
private func internalHelper() { ... }
何も指定しない場合はinternalという既定のレベルになり、「同じモジュール内であればどこからでも使えるが、モジュールの外には公開されない」という状態になります。
Swift Package Managerというパッケージ管理の仕組み
複数のプロジェクトで再利用するコードをライブラリとして配布・利用する際は、「Swift Package Manager(SPM)」という公式のツールがよく使われます。Package.swiftというファイルに依存関係を書き加えることで、外部のライブラリを取り込めます。
Swiftならではの注意点
「同じプロジェクト内ならimport不要」という仕様は、Java・Kotlinなどの経験がある人ほど意外に感じるポイントです。ファイルを分けても、特別な準備なしにそのまま使い合えるのがSwiftの手軽さです。ライブラリを設計する際は、外部に見せる必要のない実装の詳細にはprivateを付けて隠しておくと、後から内部実装を変更しやすくなります。
まとめ
Swiftは同じモジュール内であればimportなしでファイルをまたいで使えます。外部モジュールの読み込みや、public・internal・privateによる公開範囲の制御も合わせて理解しておきましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Swiftをもっと学びたい方には「これからつくる iPhoneアプリ開発入門」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿