SwiftのOptional valueに苦戦中

XcodeのPlaygroundを使ってSwift言語を学習中ですが Swift言語のOptional Valueで苦戦中です。
Swiftでは通常は変数にnilを設定できない仕様になっていますが(エディター上でエラーになる) Optional Valueの変数に対しては設定が可能となっています。 Optional Valueは通常の変数と違って変数に「?」や「!」をつけます。 変数に「?」をつけるその変数に対しnilが代入できますが その変数を代入する変数も「?」をつける必要があるようです。 「!」も同様の機能があるようですが この「?」と「!」の違いが一体何なのでまだはっきりわかっていないので これからもっと調べて、わかったことを次回投稿したいと思います。