강의

멘토링

커뮤니티

BEST
Programming

/

Mobile Application Development

アラン iOS Concurrency(同時実行) - ディスパッチキューとオペレーションキューの理解

同時実行(Concurrency) - iOSプログラミングで必要な同期、非同期の概念、およびそれを拡張したGCDとOperationに関するすべてのものをカバーします。

  • allen
iOS
Swift
concurrent

学習した受講者のレビュー

受講後に得られること

  • iOS同時実行(Concurrency)プログラミング

  • iOSでの最適化の理解(パフォーマンス/反応性)

  • 非同期(async)/同期(sync)処理の基本概念の理解

  • iOSディスパッチキュー(GCD)の理解

  • ディスパッチグループ/非同期ディスパッチグループの理解

  • iOS Operation Queueの理解

  • GCD/Operationを適用した実際のプロジェクトの例

  • GCD/OperationのAから〜Zまで

  • Thread-Safetyの理解

  • スレッドセーフなオブジェクト設計の理解

  • これらすべてを簡単に(写真で)直感的に理解する

🙋🏻‍♂️自己診断表

授業の後は、以下の概念を明確に知って理解することができます。

  • ディスパッチキューの概念について明確に理解している。 (Yes/No)
  • ディスパッチキューの種類とサービス品質(Qos)について理解している。 (Yes/No)
  • ほとんどの場合、Syncメソッドを使用しない理由を知っており、必ずSyncメソッドを使用しなければならない場合について違いを理解している。 (Yes/No)
  • ディスパッチグループの概念について知っています。 (Yes/No)
  • ディスパッチグループで非同期関数を扱うときに注意すべき点について知っています。 (Yes/No)
  • ディスパッチワークアイテムの概念を知っていて、なぜ使うのか分かる。 はい/いいえ)
  • ディスパッチセマフォ(Semaphore)の概念を知っており、どのように使用するか知っている。 (Yes/No)
  • オブジェクトを設計するときは、複数のスレッドがアクセスできる可能性に注意すべき点を明確に理解し、正しいオブジェクトを設計することができます。 (Yes/No)
  • 画像をダウンロードするテーブルビュー/コレクションビュータイプのプロジェクトを作成するとき、非同期概念を処理するために注意すべき点を明確に知っています。 (Yes/No)
  • ディスパッチキューを使用するときに発生する可能性のある問題(複数のスレッドがデータにアクセスするとき)、特に競争状況(Race Condition)について明確に理解しており、 TSanの使用法(Thread Sanitizer Tool)を知っています。 (Yes/No)
  • Thread-safeしたコードの書き方について明確に理解している。 (Yes/No)
  • ディスパッチキューで拡張されたオペレーションの概念、そして違いについて知っている。 (Yes/No)
  • どのような場合にディスパッチキューではなくオペレーションキューを使用する必要があるかを区別して使用できます。 (Yes/No)
  • 非同期関数を扱うことができる、非同期操作(AsyncOperation)のコードについて理解しています。 (Yes/No)
  • オペレーションの主な機能(作業の順序設定、取り消し)を自由自在に使用できる。 (Yes/No)

📝講義目次

(大きくGCDOperation部分で構成されています。GCDについてよく理解していても、GCDで発展した概念であるOperation(作業クラス)については不慣れです。どんなブログや講義よりも明確で簡単に、講義の一度にすべてを理解できるように構成しました。)

🖼️絵の説明方法の例

(授業で使われる様々な図や図表の説明方式の例です。)

🌈講義で提供される資料 

以下の様々な資料が提供されています。

  1. GCD関連の整理PDF - 287章
  2. Operation関連クリーンアップPDF - 89章
  3. GCD関連説明のためのコード(プレイグラウンドファイル) - 19ページ(ソースファイルを除く)
  4. Operation関連の説明のためのコード(プレイグラウンドファイル) - 8ページ(ソースファイルを除く)
  5. iOSプロジェクトファイル- 8個
  6. 参考記事(2個)の解釈本

(上記のフォルダ内の資料はすべて提供されます。)

🙌講義の制作に参考資料

以下の資料を参考にしましたが、図の説明方式はすべて直接設計しました。

  1. ビデオレッスン( iOS Concurrency with GCD and Operations ) - レイウェンダーリッチ(raywenderlich) https://www.raywenderlich.com/3648-ios-concurrency-with-gcd-and-operations
  2. 書籍( Concurrency by Tutorials ) -レイウェンダーリッチ(raywenderlich) https://store.raywenderlich.com/products/concurrency-by-tutorials
  3. アーティクル( Operation and OperationQueue Tutorial in Swift ) -レイウェンダーリッチ(raywenderlich) https://www.raywenderlich.com/5293-operation-and-operationqueue-tutorial-in-swift
  4. アーティクル ( The thread safety of lazy variables in Swift )

🙋🏻‍♂️川の内容が<講義製作参考資料>と多くの違いがありますか?

本当に多くの違いがあります。

上記の参考資料だけで単に翻訳レベルの講義を作成しようとしたら、このような講義を企画しなかったでしょう。これらのトピックについて、効率的で効果的な説明、直接図、図表などを直接多手PPTで作成し、実際のスレッドがどのように動作しているかについての直感的な理解を助けるために最善の説明方法を選びました。上記でも申し上げましたが、参考資料を10回以上ずつ見て、その内容をすべて扱いながらも説明ははるかに簡単で多様な絵で直感的に理解できるようにすることを目指す講義です。

そして、これらの絵の内容は、フルタイム2ヶ月以上の期間を経て直接まとめた内容なので、 (海外資料を含む)どこでもこのような方法の説明およびこのような詳細な説明は見られないと思います。たとえば、参考資料(raywenderlichのビデオレッスン)では、1行で「lazy varに関してもこの問題がある可能性があります。」そして提示された内容があれば、lazy varに関連するすべての問題を見つけて、私が直接整理し、絵で直感的な理解を助け、解決策を提示しています。

絵(大きな枠組み)を理解すると、コードは非常に簡単に書くことができるというそのような命題の下で、できるだけ絵を通して理解し、コードを活用してバランスを維持しようとしたので、参考資料とは大きな違いがあります。参考資料と比較して、はるかに詳細で、直感的で豊かな資料、そして一貫性のある簡単な説明が明確な差別点だと言いたいと思います。

🐠提供されるコード(code)関連

これらのトピックに関する理解を深めるためにコードファイルが提供され、クラスの内容もカバーしています。提供されているコードは、ライセンスが許諾する範囲内で、ほとんどレイウェンダーリッチ(raywenderlich)のGCD動画講義で提供されるコードの多くを採用しており採用部分は明示されている)、ライセンスが許諾されない部分(レイウェンダーリッチ書籍で提供するコード)については、コードを直接提供しており、大きな枠組み確保しようとしました。

また、提供するコードの理解を助けるために順序配置を変え、より詳細な説明のためのコードも多数追加し、様々な例とともに本授業内容の理解を助けています。

🤔授業の価格設定関連

単一のテーマについて少しは高い価格で測定されており、疑わしいことがありますが、本当に多くの内容が込められており、価格に比べてはるかに高い満足感を得られることを申し上げたいと思います。この内容を説明するために直接作成したPDF資料がGCD関連287章Operation関連89章合計376ページの資料が提供されます。 (実際、私が動画講義内で説明するための資料は、コード除外PPT 830枚程度で構成されています。)

GCD/Operation に関して海外資料で見つけることができるほぼすべての内容を全て取り扱っており、この授業内容に含まれているほとんどの絵や図表は私が直接作成した内容です。本講義のためにかなり多くの時間と努力が入り、それだけ今後開発者の成長に関して重要なテーマだと思ったので、(私個人的な観点から) 「こういう資料、こんな講義があってほしい」という基準で企画して作られた講義です。

また個人的に考えるに、費用を出して講義聞く決定をするということは時間と費用を交換することだと思います。費用対効果 該当トピックに関する勉強時間を惜しむには十分な役割を果たすと考えており、時間を惜しんでより高い満足を得ていくことを願っています。価格よりも高い満足を差し上げるのに充実した内容でお返しさせていただきます。 ^^

💌講義内容ライセンス関連

本講義の内容は、私が少しでも絵などを参考にした場合にPDFに関連URLアドレスが残されています。そのような場合を除くすべての資料は私が作成した資料なので、部分別に講義の説明方式を参考にしてブログなどにまとめるときは、本講義の住所を残していただきますよう、丁寧にお願いします

それにもかかわらず、本講義の全般的な内容をブログにまとめることと、講義資料として使われるPDFファイルの共有は、いかなる場合にも禁止されます。

👀講義内容のプレビューを提供

受講を決める前に、講義スタイルに関して事前に確認していただけるようにしました。

  • (セクション 0. 1.GCD/Operation の前)に関連する1 時間ほどのプレビュー
  • (セクション 10. 1. Operation の前に)に関連する5 分ほどのプレビュー

プレビューが提供されている講義を見て、授業を決定します。 :)

こんな方に
おすすめです

学習対象は
誰でしょう?

  • Swift言語を少し身につけた方

  • iOSで同期非同期処理の基本概念を習得したい人

  • GCD(Grand Central Dispatch)ディスパッチキューの概念について知りたい人

  • ディスパッチグループについて知りたい人

  • Operation(オペレーション)/OperationQueue(オペレーションキュー)について知りたい人

  • Thread-safety概念について知りたい人

  • 秒〜中級iOS開発者

前提知識、
必要でしょうか?

  • Swift言語の理解

  • iOSプログラミングの理解

こんにちは
です。

7,503

受講生

736

受講レビュー

303

回答

5.0

講座評価

7

講座

iOS개발자 앨런입니다.
https://www.youtube.com/@allen_ios

"정확하게 아는 지식은, 쉽게 자신의 말로 설명할 수 있어야 한다."가 제 모토입니다.

그렇기에 제가 공부하면서 겪었던 시행착오를 쉽게 풀어내어
누구든 이해할 수 있는 언어로 지식을 공유할 수있는 개발자가 되고싶습니다.

저는 쉬운 주제로 빠른 시간 안에 겉핥기 식으로 쉽게만 가르치는 강의를 만드는 것에는 관심이 없습니다.
그런 강의는 얼마든지 빠르게 찍어내듯 만들 수 있겠지만, 결국 "좋은 개발자로 성장"하는 것은 그만큼 이론적인 기반의 밑거름이 탄탄해야 한다고 믿고 있기 때문입니다.

쉬운 강의보다는, 좋은 개발자(끊임없이 성장할 수 있는 개발자)가 되기 위해
반드시 알아야 하는 어려운 내용까지를 최대한 쉽게, 그리고 직관적으로 알려드리는 것.
그래서 제가 아닌 여러분 스스로 WHY(왜)를 고민/생각할 수 있는 밑거름을 만들어 드리는 것을 저의 강의 목표로 삼고 있습니다.

저 스스로도 내일은 더 좋은 개발자가 되자고 노력하는 만큼
제가 고민 했던 내용들을 깊이있게 전달 드리고 싶습니다.

 

면접에서 자꾸 떨어지거나, 쉬운 내용도 자신의 언어로 잘 표현하지 못하겠다는 것은 정확하게 알고 있지 않다는 의미라고도 생각합니다. 오히려 기본적인 내용, CS에 대해 "탄탄한 기본기"가 있어야, 빠르게 성장 가능하다고 믿습니다.


👇🏻문의는 아래의 이메일로 주시면 됩니다. 

we.love.code.allen@gmail.com


언어: Swift(스위프트), Python, Java, C#

カリキュラム

全体

32件 ∙ (8時間 9分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

63件

5.0

63件の受講レビュー

  • sujikang7936님의 프로필 이미지
    sujikang7936

    受講レビュー 3

    平均評価 5.0

    5

    97% 受講後に作成

    Here are some people who would benefit from this lecture: - People who think, "Oh no... What should I do?" when they hear the term "asynchronous processing" - People who solve problems by Googling, but have no idea why the code is written this way or if the logic matches the requirements That's me in the past. ◠‿◠.. I searched and read a lot of GCD-related materials to understand concurrency, asynchrony, etc., but my understanding was zero, and I continued to develop without understanding why and how to use it in what situation. Then, when I found out that this lecture was included in the mandatory iOS development lectures designated by the company, I thought, "This is it!" I heard about it and as soon as I listened to the first lecture, I knew that this lecture is the only lecture that I have come to finish GCD, which has been an unknown area for a long time. Every lecture is explained with pictures and examples. Wow.. The pictures are really God's work.. It's just.. It's the best.. Now, when I come across the content, the pictures are drawn in my head. Regardless of the field, I can confidently say that this is the only lecture among all the online and offline development lectures I have taken so far. If you leave a question, they will answer it in detail and kindly, so you can make the lecture 100% your own. Lastly, this lecture is a great help in understanding asynchrony/concurrency regardless of the language. I had a chance to read an article about async and await in JavaScript a while ago, and it was so easy to read that I thought, wow, this is a really great lecture. Well... To summarize in one word.. "I recommend the best lecture!" Mr. Alan, I hope you work less and earn more.. I hope you inhale wealth and exhale health...........!!!!!!!!!!!!!!!!!!!

    • brianj님의 프로필 이미지
      brianj

      受講レビュー 5

      平均評価 5.0

      5

      100% 受講後に作成

      First of all, the instructor is a non-major, so he understands the minds of non-majors very well and explains in great detail. It's really great. (I'm a non-major, too.) Anyone can understand it. Also, nowhere else do they teach synchronous/asynchronous content like this. I used to use asynchronous when communicating, but I didn't know exactly why, but I learned it after taking the class. However, studying isn't something that you can do perfectly just by listening to it once, right? But this lecture is great because you can listen to it repeatedly as many times as you want once you buy it. Thank you. (Lastly, there are PDF materials and codes, so I really, really like it! Highly recommended!! I personally listened at 1.25x speed. There are times when the image quality goes down, but you can select the image quality in the settings window on the bottom right. If you select the highest, it will go back up.)

      • sangbum225213님의 프로필 이미지
        sangbum225213

        受講レビュー 3

        平均評価 5.0

        5

        47% 受講後に作成

        I chose this course because I lack a lot of understanding of synchronous/asynchronous, but even while I'm listening to it now, the quality of the course is quite high, and it's a course that makes me think, "When will the next lecture be filmed?" It's really good. I highly recommend it!

        • leedh20083569님의 프로필 이미지
          leedh20083569

          受講レビュー 3

          平均評価 5.0

          5

          100% 受講後に作成

          I've taken many lectures so far, but most of them are for beginners and only explain the basics. However, this lecture covers everything from the basics to the advanced, and I felt that a lot of time was spent on the design of the lecture itself and the preparation of the lecture materials. If you give another lecture like this, I think I'll enjoy it! Personally, if the lecturer gives a lecture related to functional programming and Rx, I think I'll pay again and enjoy it. Thank you for the great lecture!

          • youngilchung0015님의 프로필 이미지
            youngilchung0015

            受講レビュー 6

            平均評価 5.0

            5

            100% 受講後に作成

            It's been a while since I've heard such a high-quality lecture. It was a difficult topic, but I was impressed by the part where you explained it easily with images. I was disappointed that this lecture wasn't discounted when other lectures were discounted, but after completing the course, I think it's natural. Thank you for sharing good knowledge, and I hope you continue to prosper.

            ¥8,296

            allenの他の講座

            知識共有者の他の講座を見てみましょう!

            似ている講座

            同じ分野の他の講座を見てみましょう!