プログラミング環境がもつ懐の深さと学習しやすさ、安全性
連載も中盤、Cocoaがこのような設計になっていることに感動して語ってみた回、って実は前回とさほど違うことを言っているわけではないのですが。
この当時はこう考えていましたが、これはあれですね、世間を知りませんでした、オレの30代。現実の話、なかなかそうも問屋はおろしません。
いや、確かに正しい、うん、でも若いね、オレ。それは大事なことなんだけど、人の成長には大事なことなんだけど、プロダクトの健全な維持のためにはちょっと不必要なコストではあったのではないかなぁと。チームで開発となるとね、各自の学習ペースの違いとかあるんでできることできないことがはっきりしていない状態というのはなかなか厳しい状況な訳です。あえて言いますがMac OS Xののんびりとした状況であればそれは許されたスピード感なのかもしれません。でもその後のiPhoneの時代になると明確にここでできる人とできない人が別れちゃったなぁという感覚。
世の中はインターネット全盛、わからないことはドキュメントではなくGoogleに聞く時代になると、体系だって勉強するよりは動くまでとりあえず手を動かしていくというやり方も無視できない割合で出てきます。とりあえず動いてしまうという面では、Cocoaのソフトな制約は裏に潜んでいる危険度、メモリ関連のバグに繋がることを考えると許されなくなってきたなぁという感じになったのではないかと感じてます。
というわけでそこで商売をしているプラットフォーム側としては、前回触れたARCなどの技術の必要性が急務で、Objective-Cに代わるより安全な言語を必要としてSwiftにつながるという流れだったのでしょう。
実際のところはどうなんでしょう?周りに若い人がすくないせいか、Swiftでプログラマになりました、という人を知らないのですが、オブジェクトの所有権という概念にはたどり着けるものなんでしょうか?Objective-Cではこの辺の概念は自然と身につき、メソッドから返すオブジェクトの状態などを自然と理解できて、Autorelease Poolの存在に感動したりして、自分では結構進化できた数年という自覚はあるのですが。
その代わりconst の概念なんかはObjectivbe-Cではもっと明確で、Swiftの方がアグレッシブに不変性、Imutabilityを言語に取り入れていて、そのおかげで得られるメリットをいまのSwiftプログラマの方が身につけているのかなと。
でも裏にはcopy-on-write のような技術が導入されているんだけどそれは知らないうちに動いている、ということまでちゃんと辿り着けているのかな、みんな?とたまに不安になることはあります。いや、いらない心配ですね。
というわけで、プログラマの皆さん、学び続けましょうね。