Programmingについて解説します。Library(注1)を眺めていると,際立った特徴があります。Classが少ないのです。1つは継承でつながっているので実質3つ(図1)。Libraryそれに対してStructとEnumとProtocolはどっさりあります。これは何を意味するのか?SwiftにおいてClassというのはあくまでもObjective-Cの遺産を活用するためのものであって,Swift的なProgramとはStructやEnumをProtocolで「つなげて」活用することであるという「中の人の心の叫び」であると弾言しておきます。SwiftClassとStructやEnumの違いそれを理解するためには,ClassとStructやEnumの違いを理解しておく必要があります。細かい違いは数あれど,「若者のClass離れ」の理由を理解するために必要なのは,ただ1つです。Classは継承できるが,StructやEnumは継承できない。リスト1の事例のようなコードは書けないのです。参照型であるClassと異なり,StructやEnumには実体があるからです。上記の例ではインスタンス変数は実際3つあり,それが参照でつながっています。xにアクセスするには親クラスの親クラスまで参照をたぐらなければなりません。sizeofValue(cv3)はポインターのサイズである8。Classのインスタンスであれば,必ずそうなります。これに対し,StructやEnumは,必要なインスタンスはすべて自前で持っています。z:3)ここでsizeofValue(sv3)は,Doubleのきっかり3倍である24。確かに実体を持っています。StructやEnumは,何も共有していないのです。Nothingというは,並列プログラミングを格段に容易にします。共有は競合を産み,その競合をどう調停するかで我々はかなり苦労してきました。yourself)に反しない?」と反応した読者は鋭い。共有をやめるということは,型の数だけ実装がいるということでもあるのです。共通項を取り出してまとめるというのは,プログラミングの作法で最重要なものの1つなのに。それはソースのレベルの話であって,必要なマシンコードはコンパイラーのほうで生成してくればいいじゃん?――我々がしたいのは,ソースの共有であって,実体ではないのですから。それを可能にするのが,Protocolなのです。POP著者プロフィール小飼弾(こがいだん)1969年生まれ,東京都出身。GOのガチトレーナーのほうが有名になりつつある......かもしれない永遠のエンジニアオヤジ。https://twitter.com/dankogai,ニコニコチャンネルは,http://ch.nicovideo.jp/dankogai,blogはhttp://blog.livedoor.jp/dankogai/当社刊行書籍は『小飼弾のアルファギークに逢ってきた』『小飼弾のコードなエッセイ』など。