最新のIT技術を駆使して音楽関連サービスを展開しています。日々の活動内容から得た知識をお届けする開発ブログです。SwiftB!はじめにこんにちは。株式会社レコチョクの長島と申します。2022年4月に新卒で入社し、現在はiOSアプリの開発を行うグループに所属しています。Paletteというアルバムを今はよく聞いています。私はOJTとして既存アプリのモックを作成する課題を行っていたのですが、その中で、アクセスレベルという概念があることに気付きました。privateといったアクセス修飾子を見たことがありましたが、Swiftではどのような要素があるのか知らないことが多くありました。以下のような疑問がありました。publicの違いがどのような部分にあるのか普段のプロパティやクラスなどではアクセス修飾子の記載を省略しているがどのような扱いになるのか今回はそれらを調査して得られた結果として、Swiftのアクセスレベルの概要と実装例を紹介します。5.7.2アクセスレベルについて前提・モジュールについてSwiftにおけるアクセス制御は、モジュールとソースコードという概念に基づいています。importを利用して別のモジュールによってインポートできるフレームワークやアプリケーションと定義されています。Xcodeであれば、各ビルドターゲット(アプリバンドルなど)がSwiftにおいては個別のモジュールとして扱われます。アクセスレベルとはSwiftにはアクセスレベルという概念があります。あるコードへアクセスできる他のソースコードやモジュールの範囲に制限をかけられます。アクセスレベルはクラス・構造体・列挙型や、それに属するプロパティ・メソッド・イニシャライザ・サブスクリプトなどに割り当てることができます。これにより意図しない場所でコードが利用されることを防いだり、より広い場所でコードが利用できるように設定できます。アクセスレベルには以下の5つがあります。対象は任意のソースファイル内からアクセスできる。クラスとクラスメンバのみに適用できる。継承・オーバーライドが可能になる。対象は任意のソースファイル内からアクセスできる。対象は、同一モジュール内からアクセスできる。Swiftではデフォルトのアクセスレベルとして設定されている。対象は、同一ファイル内からアクセスできる。対象は、同一クラス・構造体などからアクセスできる。privateの修飾子を記載することで設定できます。SomeClass()ここから、より詳しく各アクセスレベルの特徴を見ていきます。publicはどこからでもアクセスできます。モジュールを隔てたとしても外部に公開されており、アクセス可能です。publicとは異なり、継承・オーバーライドが可能という差異があります。その性質上、クラス・クラスメンバにのみ適用可能です。internalinternalは同じモジュール内であればどこからでもアクセスできます。privatefileprivateは、同じファイル内であればアクセスすることができるレベルです。levelというエラーが発生します。levelというエラーが発生します。エラーアクセスが限られているため、意図しない場所でのアクセスがなくなります。setは、基本的にそのクラスや構造体のアクセスレベルの影響を受けます。<アクセスレベル>(set)を用いることで設定できます。setにかけています。1}}こうすることで、countへの直接的なアクセスを防ぐことができます。inaccessibleというエラーが出ることを確認できます。internalのままなので、クラス外からアクセス可能です。setよりも狭めてしまうとエラーが発生します。setterというエラーになります。internalが設定されます。internalのままです。クラスメンバも公開したい場合は、明示的にアクセスレベルを宣言する必要があります。internalではない場合があります。fileprivateになります。アクセス修飾子がないが、private}クラスメンバのアクセスレベルは、クラス自体のアクセスレベルよりも広く設定することができないため、このような動作になります。おわりにここまでの内容をまとめると以下のようになります。fileprivateなどのアクセスレベルが存在していることなど、多くの違いがあるということに気付きました。今回の記事を見て、アクセスレベルについての理解が進みましたら幸いです。こんにちは、iOSアプリ開発Gの深山です。...【iOSアプリ】VIPERアーキテクチャのプロダクトで配属されて3週間の新卒社員のOJTをした話。X]Finderからフォルダのパスを取得するこんにちは、新卒1年目の福成です。