Posted at

【Swift】モジュール


モジュールとは

モジュールとは複数のソースコードなどの配布可能なプログラムのことを指します。

これはRubyでいうgemみたいなもので、他のプログラムへのインポートが可能です。


作成方法

モジュールの作成方法にはフレームワークとアプリケーションの二つがあり、前者は他のプログラムから使用されることを前提に作成され、後者は単独で実行可能です。双方のモジュール共に複数のファイルから構成されます。

そのためあるプログラムをフレームワークとしてまとめる事で、複数のプロジェクトで同じコードを記述する必要が無くなります。


フレームワーク

フレームワークとは、モジュールやリソース、コード著名といったプログラムを配布して再利用するために必要となるものを、1つのパッケージとしてまとめたものです。

スクリーンショット 2019-10-08 22.00.25.png

フレームワークを作成するには、まずxcodeを開いて「create a new xcode project」を選択肢以上のようなウィンドウが表示されたら、フレームワークを選択し、「NEXT」を押します。

スクリーンショット 2019-10-10 19.52.30.png

そして次のウィンドウで必要項目を入力して完了です。


アプリケーション

アプリケーションとは、単独で実行可能なプログラムのことを指します。例を出すと、皆さんが利用するテキストエディタやゲームなどのiOSアプリなどが挙げられます。つまり普段何気なく使っているアプリの類のものは、モジュールとしても分類できるということになります。

スクリーンショット 2019-10-10 20.00.09.png

作成方法は先ほどとほとんど同じで、違う点は「Single View App」を選択するということです。


名前空間

名前空間とは変数や定数などの名前が唯一無二のユニーク性を保てる範囲のことを指し、同じ名前の物が複数できることを防いでいます。

モジュールはその名前空間を区切る単位にもなっており、同じモジュール内では別のファイルの要素でも自由にアクセスできるため、基本的に同名の要素は使えません(引数など名前以外の別要因で差別化できない場合)。一方別モジュール同士の場合は、モジュールをインポートすることで同盟の要素でも使用できます。

//以下の文を宣言することでインポート可能

import モジュール名

先ほど別モジュール同士の場合は同名の要素を使用できると言いましたが、もちろん定義が曖昧で区別ができない場合はコンパイルエラーを引き起こします。

そのため、その名前の競合を防止するため以下のように使用することが可能です。

モジュール名.定数名

モジュール名と一緒に定数名を記述することで、他の要素と差別化できます。