Swift Academy · レッスン

アクセス制御(public/internal/fileprivate/private)

public、internal(デフォルト)、fileprivate、privateを使って、ファイルやモジュールをまたぐAPIの公開範囲を制御します。公開すべきものと隠すべきものの判断も学びます。

レッスン 3/38 ステップ

「アクセス制御(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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. メンバーごとのinitとmutatingメソッド
  2. 継承、オーバーライド、final
  3. アクセス制御(public/internal/fileprivate/private)
← Swift Academyに戻る