Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
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,327

受講生

699

受講レビュー

296

回答

5.0

講座評価

7

講座

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

제가 공부하면서 겪었던 시행착오를 쉽게 풀어내어
지식을 공유할 수있는 개발자가 되고싶습니다.

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

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

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


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

we.love.code.allen@gmail.com


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

カリキュラム

全体

32件 ∙ (8時間 9分)

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

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

受講レビュー

全体

59件

5.0

59件の受講レビュー

  • sujinnaljin님의 프로필 이미지
    sujinnaljin

    受講レビュー 3

    平均評価 5.0

    5

    97% 受講後に作成

    이 강의를 들으시면 좋은 분들은 다음과 같습니다 - "비동기 처리"라는 말만 들으면 "ㅎ.. 큰일 났다.. 어떻게하지..?" 라고 생각하는 분 - 구글링해서 해결은 하지만, 왜 코드가 이렇게 작성되는 건지, 요구사항에 맞는 로직인건지는 전혀 모르겠는분 바로 과거의 저입니다.. ◠‿◠.. 동시성, 비동기 등을 이해하기 위해 GCD 관련 자료도 꽤 많이 찾아 읽어봤지만 이해도는 제로였고 어떤 상황에서 왜, 어떻게 쓰는지 이해하지 못한채로 계속 개발을 해왔습니다. 그러다가 회사에서 지정한 iOS 개발 필수 강의에 해당 강의가 포함되어 있길래 "이거다!" 하고 듣게 되었고, 1강을 듣자마자 알았습니다.. 이 강의는 오랫동안 미지의 영역으로 남아있던 GCD를 끝내러온 단 하나의 강의라는 것을요.. 매 강의마다 그림과 예시로 설명해주시는데.. 와.. 진짜 그림이 신의 한수고.. 그냥.. 그냥.. 최고됩니다.. 이제 해당 내용을 접하면 그림이 머리속으로 그려져요. 영역과 상관없이 제가 지금껏 수강해온 모든 온오프라인 개발 강의 중 단 하나의 강의를 꼽자면 바로 이 강의라고 자신있게 말할 수 있습니다. 궁금한 점도 질문으로 남기면 길게, 자세히, 친절히 답변해주셔서 강의를 100% 자신의 것으로 가져갈 수 있습니다. 마지막으로 해당 강의는 언어에 상관없이 비동기 / 동시성 이해하는데 큰 도움이 됩니다. 얼마 전에 자바스크립트의 async와 await 관련 글을 읽을 기회가 있었는데, 그냥 술술 읽혀서 와 진짜 이건 갓강의다.. 생각이 다시 한번 들었거든요. 튼... 한마디로 요약하자면.. "최고의 강의 추천합니다!" 앨런님 적게 일하고 많이 버시길.. 들숨에 재력을 날숨에 건강을 얻으시길...........!!!!!!!!!!!!!!!!!!!

    • 브라이언제이님의 프로필 이미지
      브라이언제이

      受講レビュー 5

      平均評価 5.0

      5

      100% 受講後に作成

      일단 강사님께서 비전공자라 그런지 비전공자의 마음을 잘 아시고 설명하실 때 엄청! 자세하게 설명해 주셔서 너무 좋습니다.(저도 비전공자입니다.) 누구나 들어도 이해할 수 있을겁니다. 또한 어디에서도 이렇게 동기 / 비동기에 관련된 내용을 가르쳐주지 않습니다. 통신할 때 무조건 비동기를 써야 한다고 해서 쓰기만 했지, 이유에 대해선 정확히 알 수없었는데, 수업을 듣고 알게되었습니다. 하지만 공부라는게 한번만 듣는다고 완벽한 건 아니잖아요? 근데 이 강의는 한번 사두면 무제한 반복적으로 들을 수 있기에 좋습니다. 감사합니다. (마지막으로 PDF 자료라든가 코드들도 다 있어서 너무 너무 좋아요! 강추!! 개인적으로 1.25배속으로 들었습니다. 중간중간 화질이 낮아지는 현상이 있는데 그건 오른쪽 하단 설정창에 보시면 화질을 선택할 수 있습니다. 제일 높은걸로 선택하시면 다시 돌아옵니다.)

      • 이상범님의 프로필 이미지
        이상범

        受講レビュー 3

        平均評価 5.0

        5

        47% 受講後に作成

        동기/비동기에 대한 이해가 많이 부족해서 이 강의를 선택 하였는데 현재 듣고 있는 중에도 강좌의 퀄리티가 상당하며 다음 강의는 언제 찍으실까? 라는 생각을 해보는 강좌입니다. 완전 좋습니다. 너무 추천합니다.!

        • 왈왈234님의 프로필 이미지
          왈왈234

          受講レビュー 3

          平均評価 5.0

          5

          100% 受講後に作成

          지금껏 많은 강의를 들었지만, 대부분의 강의는 초보자를 대상으로 기초만 설명하는 강의가 대부분이었습니다. 하지만 이 강의는 기초적인 부분부터 심화까지 정말 잘 다루신 것 같고, 강의 자체가 설계부터 강의 자료 준비까지 시간을 많이 들이신 게 느껴졌습니다. 다음에 또 이런 강의를 낸다면 재밌게 들을 수 있을 것 같네요! 개인적으로 강의자분께서 함수형 프로그래밍과 Rx와 관련된 강의를 하신다면 한 번 더 결제해서 재밌게 들어볼 것 같습니다. 좋은 강의 감사합니다!

          • SGK님의 프로필 이미지
            SGK

            受講レビュー 6

            平均評価 5.0

            5

            100% 受講後に作成

            간만에 고퀄리티 강의를 들었습니다. 어려운 주제인데 이미지를 곁들여서 쉽게 설명해 주신 부분이 인상적이었습니다. 다른 강의들 할인 할 때 본 강의는 할인을 하지 않아 섭섭 했으나 완강 후에는 당연하단 생각이 드네요. 좋은 지식 나눠 주셔서 감사하고 건승하십시오.

            ¥7,829

            allenの他の講座

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

            似ている講座

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