カテゴリ: Swift 更新日: 2025/10/26

Swiftのアクセス修飾子を徹底解説!初心者でも理解できるpublic・private・internalの使い方

Swift アクセス修飾子(public, private, internal)の解説
Swift アクセス修飾子(public, private, internal)の解説

先生と生徒の会話形式で理解しよう

生徒

「Swiftのクラスでpublicとかprivateって見かけるけど、これは何の意味ですか?」

先生

「それはアクセス修飾子と呼ばれるもので、プログラムの中で、どこから使えるかを決めるルールなんです。」

生徒

「じゃあ、どこから見えるかってことですか?ちょっとイメージが湧かないかも…」

先生

「大丈夫です。家のドアやカギに例えて、ゆっくり説明していきましょう!」

1. アクセス修飾子とは?

1. アクセス修飾子とは?
1. アクセス修飾子とは?

Swiftのアクセス修飾子は、変数や関数、クラスなどが「どこから使えるか」を制御するための機能です。家にたとえると、「玄関のドアは誰でも通れるけど、自分の部屋には家族しか入れない」といった感じです。

アクセス修飾子を正しく使うことで、プログラムの中で「他の人に見せたくない部分」や「安心して使ってもらいたい部分」を分けて、安全で管理しやすいコードを書くことができます。

2. Swiftのアクセス修飾子の種類

2. Swiftのアクセス修飾子の種類
2. Swiftのアクセス修飾子の種類

Swiftには、主に3つのアクセス修飾子があります。

  • public(パブリック):どこからでも使える
  • internal(インターナル):同じモジュール(アプリの中)からだけ使える
  • private(プライベート):同じファイルや同じクラスの中だけで使える

それぞれの違いを具体的に見ていきましょう。

3. public:誰でも使える玄関

3. public:誰でも使える玄関
3. public:誰でも使える玄関

publicは、まるで家の玄関のようなものです。誰でもアクセスできる場所なので、外部のコードからでもその関数や変数を使うことができます。

ライブラリや他のアプリからも使ってもらいたいときに使います。


public class Greeting {
    public func sayHello() {
        print("こんにちは!")
    }
}

このように書くと、GreetingクラスやsayHelloメソッドは他のファイルやモジュールからも呼び出せます。

4. internal:家族だけが使えるリビング

4. internal:家族だけが使えるリビング
4. internal:家族だけが使えるリビング

internalは、デフォルト(何も書かないとき)のアクセスレベルで、同じアプリ内であれば自由に使えます。ただし、他のモジュール(別のライブラリなど)からは見えません。

たとえば、アプリの中だけで完結する機能に使うことが多いです。


class Calculator {
    func add(a: Int, b: Int) -> Int {
        return a + b
    }
}

このコードはinternalと同じ扱いになり、他のファイルからでも使えますが、アプリの外からは使えません。

5. private:自分の部屋だけの秘密

5. private:自分の部屋だけの秘密
5. private:自分の部屋だけの秘密

privateは、同じクラスや構造体の中でしか使えません。まさに「自分の部屋」みたいなもので、外から触られたくないデータや処理に使います。


class BankAccount {
    private var balance: Int = 0

    func deposit(amount: Int) {
        balance += amount
    }

    func showBalance() -> Int {
        return balance
    }
}

ここではbalanceprivateなので、外部から直接アクセスできません。これは、お金を安全に守るための「鍵付き金庫」のようなものです。

6. それぞれの違いを比較してみよう

6. それぞれの違いを比較してみよう
6. それぞれの違いを比較してみよう

以下の表は、それぞれのアクセス修飾子の違いを簡単にまとめたものです。

アクセス修飾子 アクセスできる範囲 よく使う場面
public どこからでも ライブラリや他のモジュールに公開したいとき
internal 同じモジュール内 アプリ内で完結する機能
private 同じ型・同じファイル内 外部から触られたくないデータ

7. アクセス修飾子を使う理由

7. アクセス修飾子を使う理由
7. アクセス修飾子を使う理由

アクセス修飾子を使うと、プログラムがより安全整理された設計になります。たとえば、銀行のシステムでお金の残高に誰でもアクセスできたら困りますよね?

そのため、「ここは触ってもいい場所」「ここは外から触っちゃダメ」という線引きをするのが、アクセス修飾子の役割なんです。

8. Swiftにおけるアクセス修飾子の注意点

8. Swiftにおけるアクセス修飾子の注意点
8. Swiftにおけるアクセス修飾子の注意点
  • デフォルトはinternal:何も書かないとinternalになります。
  • ネストした型には別の修飾子も必要:クラスの中にクラスを定義するようなときは、アクセスレベルを明確にする必要があります。
  • 見せたいところだけpublicにする:全部をpublicにすると危険なので、必要なところだけ公開しましょう。

9. 練習問題:アクセス修飾子を使ってみよう

9. 練習問題:アクセス修飾子を使ってみよう
9. 練習問題:アクセス修飾子を使ってみよう

最後に、実際にアクセス修飾子を使ってみる練習として、以下のクラスを書いてみましょう。


class SecretNote {
    private var secret: String = "これは秘密です"

    func read() -> String {
        return secret
    }
}

このコードでは、secretprivateなので、read()メソッドを通さないと内容を見ることができません。

カテゴリの一覧へ
新着記事
Go言語の関数でエラーハンドリングする基本的な方法
Go言語のスライス・マップ・配列をまとめて比較してみよう!初心者でもわかる使い分けの基本
Go言語の条件分岐の見やすい書き方を徹底解説!初心者でもわかるif文の使い方
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.2
Java&Spring記事人気No2
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.3
Java&Spring記事人気No3
Kotlinのデータクラス(data class)とは?便利な特徴と使い方を初心者向けにやさしく解説!
No.4
Java&Spring記事人気No4
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応