ファーストインプレッションを語る会がWantedly社が開催されたので参加し、「Swiftは名前空間あるって言ったのに公開されてるドキュメントに書かれてないのどういうことなの」的な相談をしてきました。結論は出なかったのですが、さっき寝てたら思いついたのでそのメモを残しておきます。名前空間からソースコード上で冗長な命名規則を用いなくても名前の衝突が起こらないようにし、しかもそれを容易に記述できるようにするためだけの概念とします。Typesは単純にクラスの中にクラス(もしくは構造体)を用意するだけです。これによりドット記法でアクセスすることは出来ます。それは冗長な命名規則とそれほど変わらないやり方ではないかと思います。UITableViewとUITableViewCellを継承したTableViewとTableViewCellが必要になった時、これらを名前の衝突が起こらないようにするためMyObjectクラスという命名用クラスを作るのであれば次のようになります。UIKit.UITableViewCell{}}名前の衝突を避けるためのクラスというのは実動作上の必要性が乏しく、なんだか結局冗長な命名規則の上に成り立っているように思えます。少なくともモダンじゃないなって感じですね。モジュールを利用する方法についてモジュールとはUIKitやFoundationのことです。ドキュメントによるとimportを使って呼び出すようですね。module.正直ピンと来ないんですが、Swiftソースコードではモジュールという概念の中にあるっぽいことだけは分かります。私が適当に書いたコードは何かのモジュールの中にあるということで、これはUIKitのモジュールとは区別されるのではないかな、という気になります。UITableViewCellというクラスを自前でも作りたくなった場合(実際は作りたくなったりすることはなく、たまたま同じクラス名になったら困るという話ですが)下記のように書いてみても実際は衝突することはありません。libraryにしたものはそのビルドした際のモジュールになっている気がしますCocoapodsで取得したSwiftのコードはひとつのワークスペース内で別プロジェクトとしてビルドされるのでこれも問題なさそうですCocoapodsで複数のObjCのコードを取得しビルドした場合、これはモジュールの概念がないので同じクラス名なら衝突すると思いますSwiftソースコードのみプロジェクトにコピーしてきた場合。同じモジュール内になるので同じクラス名だと衝突すると思いますまとめSwiftでは名前空間は暗黙的に利用されていてAppleのクラス名と衝突することはないですし、他のプロジェクトのSwfitで書かれたコードを読み込んだ場合にもクラス名が衝突することはないということです。6最後に勉強会の開催を行ってくださったWantedly社はSwiftなら誰にも負けないiOSエンジニア・ウォンテッド!!しているそうです。ちなみに「もうSwift飽きたわー、俺が一番最初に飽きたわー」という人ウォンテッド!!って募集するようなところが出てきたら今のうちだけ注目されると思いますのでぜひどこかやってみたらいかがでしょうか。コメントをキャンセル上に表示された文字を入力してください。