質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

798閲覧

Swift学習方法について

Ytan

総合スコア39

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/04/15 09:44

疑問点

ただいまSwiftの学習を始めて2.5ヶとなります。
書籍、Udemy(日本語)を活用し遷移からTableView、APIやFirebase(登録やログイン)をやってきたのですが、まだ基礎は定着いていないのですが、これから先はどのように学習を進めたらいいのか悩んでいます。
あまりSwiftを行なっている人がWeb系より少ないため記事やサイトが少ないのもあってこちらで質問させていただきます。

一般的には、自分でアプリをアウトプットとして行うとおものですが、基礎がまだ定着していないので見ながらという形にどうしてもなってしまいます。
この場合は、もう一度Udemyを見返すのか、応用としてレベルアップして新しい書籍(Swift実践みたいな)や英語のもっとレベルの高いUdemyのコースを取ったほうがいいですかね?

自分はまだ学生なので今すぐに就職しなければならないわけではなく、今のところはアプリ開発のフルリモートフリーランスとして働くつもりのですが、Swiftだけでなく今はFlutterかReact Nativeのどちらかを学びたいなと思っています。

自作アプリをなんとしてでも一本それなりなもを作ってから次の言語に移行したほうがいいのか基礎を実践的な教材使い何回も学び直して定着させた方がいいのか意見を聞かせてください。
スクールに通うという案は元々薄かったので、あまり詳しくないものなで、もしもこの状況下(コロナ)でもオンラインで実際受けて効率がよかったなどがありましたら教えてもらいたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

あくまで私の個人的な経験を踏まえた意見です。

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/15 13:37

TsukubaDepot

総合スコア5086

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ytan

2020/04/16 04:10

詳しいご回答ありがとうございます。 iOSアプリ設計パターンのような設計やJavaなどの入門を読みオブジェクト指向の理解を深めるなどSwiftではない部分も大事と聞きますが、そちらは今の段階では必要ですか?
TsukubaDepot

2020/04/16 04:19

本来は、オブジェクト指向とかデザインパターンは言語(SwiftとかJavaとか)に依らない一般的な考え方なのですが、実装となると少なからず言語の特徴に関わってきますよね。 一番はSwiftで書かれたこれらの書籍を読むことでしょうが、日本語じゃあまりない(知っている範囲だと回答中にある「Swiftデザインパターン」くらい)なので大変かもしれません。 Javaになればデザインパターン解説本もオブジェクト指向設計指南的な本も多いので、そういう意味でJavaが理解できると便利なのかもしれません(私はJavaやる機会を逃しましたが)。
TsukubaDepot

2020/04/16 04:25

今の段階で必要か否かは判断が難しいとおもいますが、「今やりたい」という動機があるのあれば、今やるのがいいと思います。 じゃあ、定番として参考にすべき資料は何かと聞かれたら、私はわからないので調べてもらう必要がありますが。
Ytan

2020/04/17 00:37

そうなのですね、わかりました。 自分の時間と現状を考えながら模索していきます。
guest

0

自作アプリをなんとしてでも一本それなりなもを作ってから次の言語に移行したほうがいいのか基礎を実践的な教材使い何回も学び直して定着させた方がいいのか意見を聞かせてください。

アプリ開発の実践で使えて、はじめてその言語を習得したと言えるので、まずは「一つのアプリを完成させる」というところを目標にしてはどうでしょうか。

もしアプリ開発で躓くところが多いのであれば、もう一度書籍を読み返すと良いと思います。

投稿2020/04/15 13:58

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ytan

2020/04/16 04:12

ご回答ありがとうございます。 そうですねやはり復習いながらアプリを作る必要がありますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問