あくまで私の個人的な経験を踏まえた意見です。
Udemyなどを参考に、とりあえずいくつかiOSアプリを開発し、その流れとSwiftという言語のことが大まかに分かったのであれば、ここで一度Swiftという言語の理解を深めることをお勧めします。
結論から言うと、Ytanさんがおっしゃられているように、「基礎を実践的な教材を使って何回も学び直し」つつ、体系づけて記述された言語解説本を読みながら言語としてのSwiftの理解を深めた方がいいと思います。
Swiftを使った入門用教材は新しく買う必要はないと思います。いま持っている教材を完全に理解できるまで繰り返し練習しつつ、そこにネットなどで見かけた新しい知識を加えながら理解を深めると言う方法が一番安上がりで、かつ確実に実力がつく方法だと思います。
その場合、日本語で記述された言語解説本としてお勧めできるものに選択肢は少なく、**荻原剛志・著「詳解Swift第5版」**が実質的な入門書になると思います。
この本は変数や制御構文の基本的な説明から入るものの、内容はかなり濃く、簡単には理解が進まない部分も多くあります。
しかし、書籍の全般にわたって実験的に説明したサンプルコードが記述してあり、単に「このように書く」という説明にとどまらず、「このように書いたらこのように失敗する」といった、理解を促進するような説明が施されているため、時間はかかったとしても理解につながる内容が多いと思います(荻原先生は大学で教鞭を取られているようですので、おそらく日常的な経験も背景にあるのだと思います)。
正直なところ、この書籍の内容はC言語の知識を背景とした記述も多いため、C言語や他言語の知識がないと結構骨が折れるところもありますが、この本の内容をきちんと抑えておくと、コードの理解力は間違いなく向上すると思います。
もちろん、お金をかけなくても、AppleのドキュメントとしてSwiftの文法解説サイトを読めば済むのですが、まずは日本語で理解を深めてからでも遅くないと思います。英語の技術書を読むときに、英文法で苦労する上、抽象的概念やそこで使われている単語の意味でも苦労するため、最初から英語で理解するのは大変だと思っています(技術英語なので、英文法的な難しさは口語に比べれば低いですが)。
逆に、一度日本語でしっかりと理論を身につけておけば、英語ドキュメントを読んだときにぶつかる壁は少ないはずです。単語の半分はカタカナとして覚えた言語的知識で理解できますし、その他の単語もかなり平易だと思います。
しかしながら、この書籍はあくまでも「言語としてのSwift」の解説本なので、これを読んだからと言ってアプリを作れるわけではありません。
言語の理解とアプリを作るためのセンスとはまた違ったところに存在すると思います。
Swiftを実践的に作るという立場で書かれている本の一つが、 **石川洋資、西山勇世・著「[改訂新版]Swift実践入門」**だと思います。この本には前述の荻原先生の本には書かれていない、Swiftを使って実践的なアプリを作るためのテクニックについて記載されています。たとえば、ディスパッチキューやネットワーク通信、エラー処理の方法を具体的にどのように記述すれば良いのかについて書いてありますし、具体的なアプリの例(といっても、macOSのコンソールアプリですが)として、GitHubとの通信クライアントの設計が挙げられています。
書籍全般にわたってかなり抽象的な設計を行うための技術が記述してあるのですが、それらの理解が深まると、いままでダラダラと書いていたコードをかなりシンプルにかけることがわかります(この本に対する私の理解が及んでいないところが多々ありますが)。
この2冊だけでも、理解するには結構大変です。なので、気分転換にアプリを作ってみたり、アプリ作りで文法に迷ったらこれらの本を読み返すなどして、不完全かつ具体的な利用方法が及んでいなかった部分の理解を促進するのがいいと思います。
GitHubなどで見かけた面白そうなフレームワークを使うためのサンプルを作ってみるのもいいと思います。
体育会系サークルではありませんが、基礎の繰り返しは重要だと思います。
簡単なアプリを作り、迷ったら言語仕様を確認し直す。
わからないところがあったら最低限だけの要素で作られたサンプルプログラムを作って、本質的な問題を理解する。
この流れはどの言語をやるにしても重要です。
逆に、この流れを継続させることで、かなり理解力が付くのではないでしょうか。
もちろん、これで終わりではありません。
いろんな方が書いたコードを見ていると、文法解説書には書かれていない、より深いレベル(別の言い方をすればプリミティブ、原始的なレベル)での理解が必要となることがあります。
先ほど挙げたディスパッチキューだけでなく、並列処理(古くはPOSIX Threadの例やGCDなど)やセマフォ、ネットワーク通信(Swiftや関連するフレームワークではある程度包括された形で記述できますが、最終的にはそこで具体的にどういう処理が行われているのか、またエラー処理の場合わけはどのようにすればいいのかという知識は間違いなく必要になる)など、かなり詳細に知っておくと良い技術も求められます。
私はたまたまUNIXでシステムコールなどを用いたプログラムを記述したことがあるため、その辺りの理解についてはあまり苦労はなかったのですが、もしかしたらこの辺りの理解にはSwiftとはまた違った学習方法が必要になるかもしれません。
そのほか、効率的というか、見通しが良いコードを書くとなるとデザインパターンを知っておくに越したことはないと思います。
こんな感じで、Swiftだけでもまだまだやるべきことはたくさんあります私はデザインパターンを体系づけて学んだことがないので、Adam Freeman・著の「Swiftデザインパターン」という本を読んでいるところです。Swift2で書かれた本なのですが、見通しの良いプログラムを書くためのヒントがかくされており、ページを進めるたびに目から鱗が落ちる思いをしています。
Swift以外もやってみたいという気持ちも悪くはないですし、いろいろ抑えておくのも悪くはないですが、現在のプログラミングにおいてSwiftで学べることは他の言語でも応用が効くとおもいますので、まずはSwiftをしゃぶり尽くして見るのはいかがでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/16 04:10
2020/04/16 04:19
2020/04/16 04:25
2020/04/17 00:37