アクセス制御(public/internal/fileprivate/private)
public、internal(デフォルト)、fileprivate、privateを使って、ファイルやモジュールをまたぐAPIの公開範囲を制御します。公開すべきものと隠すべきものの判断も学びます。
「アクセス制御(public/internal/fileprivate/private)」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全3レッスンが含まれています。
アクセスレベルの概要
Swiftのアクセスレベル:
- public:他のモジュールから参照できます
- internal(デフォルト):同じモジュール内から参照できます
- fileprivate:このソースファイル内からのみ参照できます
- private:それを囲むスコープ(型またはextension)内から参照できます
internal(デフォルト)
修飾子を省略すると宣言はinternalになり、同じモジュール(パッケージまたはアプリのターゲット)内のどこからでも使用できます。
struct Greeter { // internal by default
func hello(_ name: String) -> String { "Hello, \\(name)" }
}
let g = Greeter()
print(g.hello("Ada"))public APIの公開範囲
他のモジュールに公開するAPIにはpublicを付け、ヘルパーはinternalのままにして公開範囲を小さく保ちます。
public struct Math {
public static func add(_ a: Int, _ b: Int) -> Int { a + b }
// internal helper remains hidden outside the module
static func double(_ x: Int) -> Int { x * 2 }
}
print(Math.add(1,2))fileprivateのスコープ
fileprivateは使用範囲を同じソースファイルに制限します。1つのファイル内で型のヘルパーを分割する場合に便利です。
// In FileA.swift
fileprivate func hiddenInFile() { print("Only in this file") }
struct A {
func call() { hiddenInFile() } // OK: same file
}
A().call()privateのスコープ
privateはアクセスをそれを囲むスコープ(型またはextension)に制限します。不変条件を厳密に守るために使います。
struct Box {
private var value = 0 // visible only inside Box declaration
mutating func set(_ v: Int) { value = v } // controlled write
func get() -> Int { value } // controlled read
}
var b = Box()
b.set(7)
print(b.get())
// b.value = 3 // error: 'value' is private設計のヒント
設計のヒント:
- デフォルトではinternalにし、利用者に必要なものだけをpublicとして公開します。
- APIを小さく保つため、ヘルパーにはprivateまたはfileprivateを優先します。
- メンバーのアクセスレベルは、その型より広くできません。
デフォルトのアクセスレベル
確認:デフォルトのアクセスレベルは何でしょうか。
まとめ
まとめ:他のモジュールに公開するにはpublicを使い、ほとんどのものはinternalにします。詳細を隠して不変条件を守るにはfileprivateまたはprivateを使います。
AI チューターと学ぶ Swift — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 122
- レッスン
- 409
よくある質問
「アクセス制御(public/internal/fileprivate/private)」レッスンは無料ですか?
はい。「アクセス制御(public/internal/fileprivate/private)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全3レッスンが含まれています。
「アクセス制御(public/internal/fileprivate/private)」で何を学びますか?
public、internal(デフォルト)、fileprivate、privateを使って、ファイルやモジュールをまたぐAPIの公開範囲を制御します。公開すべきものと隠すべきものの判断も学びます。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。
「アクセス制御(public/internal/fileprivate/private)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- メンバーごとのinitとmutatingメソッド
- 継承、オーバーライド、final
- アクセス制御(public/internal/fileprivate/private)