inflearn logo
知識共有
inflearn logo

アラン iOS Concurrency(並行処理) - Dispatch QueueとOperation Queueの理解

並行性(Concurrency)プログラミング - iOSプログラミングで必要となる同期・非同期の概念、およびそれを拡張したGCDやOperationに関するすべての内容を扱います。

難易度 初級

受講期間 無制限

iOS
iOS
Swift
Swift
concurrent
concurrent
iOS
iOS
Swift
Swift
concurrent
concurrent

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

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

5.0

5.0

asdfaa22

47% 受講後に作成

本当の助けがたくさんありました。一人でコードを調べて、投稿をいくら見ても理解できなかったものが理解になりました。そして、フレンドリーな答えは、とにかく良いです。

5.0

eunjin

25% 受講後に作成

asyncとconcurrentが同じ言葉だと思いましたが、本当に本当に大きな悟りを得ました。いつもこちらの勉強のたびに100%みんな理解できなかった気分だったので、蒸した。 講師の絵基盤の説明、完璧な講義の構成に感心が出てきます。 本当に私の人生の講義です...講師の絵の頭の中に必ず保存して住んでいます。 とても愛しています。

5.0

sujinnaljin

97% 受講後に作成

この講義を聞くと、良い人は次のようになります - "非同期処理"という言葉だけ聞いたら "ㅎ.. - グーグルして解決はするが、なぜコードがこう書かれるのか、要求事項に合うロジックなのかは全く分からない方 まさに過去の私です。 その後、会社が指定したiOS開発必須講義に該当講義が含まれているので"これだ!"一つの講義ということですよ.. 毎講義ごとに絵と例で説明してくれますが……………………………………………………………………………………………………………………………………。私が今まで受講してきたすべてのオンオフライン開発講義の一つの講義を挙げれば、まさにこの講義だと自信を持って話すことができます。残すと長く、詳しく、親切に答えてくださって講義を100%自分のものに持っていけます。 最後に、その講義は言語に関係なく、非同期/同時性を理解するのに大きな助けになります。聞いたんです。 まあ…一言でまとめると… "最高の講義をお勧めします!" アラン様少なく働き、たくさんバシギル。

受講後に得られること

  • iOS並列処理(Concurrency)プログラミング

  • iOSにおける最適化の理解(パフォーマンス/応答性)

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

  • iOS ディスパッチキュー (GCD) に関する理解

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

  • iOSのOperationQueue(オペレーションキュー)に関する理解

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

  • GCD/Operationに関するAからZまで

  • スレッドセーフ(Thread-Safety)に関する理解

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

  • これらすべての内容を簡単に(図解で)直感的に理解する

🙋🏻‍♂️ セルフ診断表

 

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

  • ディスパッチキューの概念について明確に理解している。 (Yes/No)
  • ディスパッチキューの種類とサービス品質(QoS)について理解している。 (Yes/No)
  • ほとんどの場合、Syncメソッドを使用してはいけない理由を知っており、必ずSyncメソッドを使用しなければならない場合との違いを理解している。(Yes/No)
  • ディスパッチグループの概念について理解している。 (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)
  • ディスパッチキューから拡張されたオペレーション(Operation)の概念、およびその違いについて理解している。(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) https://medium.com/what-i-talk-about-when-i-talk-about-ios-developmen/the-thread-safet y-of-lazy-variables-in-swift-b20184ef5a38

 

 

🙋🏻‍♂️ 講義の内容は<講義制作の参考資料>と大きな違いがありますか?

 

本当に大きな違いがあります。

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

 

そして、このような図の内容はフルタイムで2ヶ月以上の期間をかけて直接整理した内容ですので、(海外の資料を含む)どこでもこのような方式の説明や、これほど詳細な説明は目にすることはないと思います。例えば、参考資料(raywenderlichの動画講義)でたった一行「lazy varに関連してもこのような問題がある可能性があります」と提示された内容があったとすれば、lazy varに関連するすべての問題を調べて私が直接整理し、図で直感的な理解を助けながら解決策を提示しています。

 

図解(全体像)を理解すれば、コードは非常に簡単に書けるという命題の下、図解による理解とコードによる活用を最大限バランスよく両立させようとしたため、他の参考資料とは大きな違いがあります。他の資料と比較して、はるかに詳細で直感的かつ豊富な資料、そして一貫性のある分かりやすい説明が明確な差別化ポイントであるとお伝えしたいです。

 

 

🐠 提供されるコード(code)について

 

当該テーマに関する理解を深めるため、コードファイルが提供されており、授業内容でも扱っています。提供されているコードは、ライセンスが許可する範囲内で、大部分をRayWenderlichのGCD動画講義で提供されているコードから採用しており採用箇所は明示されています)、ライセンスが許可されない部分(RayWenderlichの書籍で提供されているコード)については、私が直接コードを作成し、大きな枠組みにおける核心的な部分は同様に作成することで、提供しているコードに対する信頼性を確保しようと努めました。

 

 

また、提供するコードの理解を助けるために順序を入れ替え、より詳細な説明のためのコードも多数追加しており、多様な例とともに本講義内容の理解を助けています。

 

 

🤔 授業の価格設定について

 

単一のトピックに対して少し高めの価格設定になっているため、不思議に思われるかもしれませんが、非常に多くの内容が盛り込まれており、価格以上の高い満足感を得られることをお伝えしたいです。本内容を説明するために直接作成したPDF資料がGCD関連で287枚Operation関連で89枚あり、計376ページの資料が提供されます。 (実際に私が動画講義内で説明するための資料は、コードを除いてPPT 830枚ほどで構成されています。)

 

GCD/Operationに関して海外の資料で見つけられるほぼすべての内容を網羅しており、本講義の内容に含まれているほとんどの図や図表は私自身が直接作成したものです。本講義のためにかなりの時間と労力を費やしました。それほど今後の開発者の成長において重要なテーマだと考えたため、(私個人の観点から)「このような資料、このような講義があればいいな」という基準で企画し、制作された講義です。

 

また個人的な考えとして、費用を払って受講を決めるということは、時間と費用を交換することだと考えています。費用に対して、そのトピックに関する学習時間を節約する上では十分な役割を果たすものと確信しており、時間を節約してより高い満足感を得ていただけることを願っています。価格以上の満足をお届けできるよう、充実した内容で報いるように努めますので、こうした点をご理解いただけますよう、何卒よろしくお願い申し上げます。^^

 

 

💌 講義内容のライセンスについて

 

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

 

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

 

 

 

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

 

受講を決定される前に、講義スタイルについてあらかじめご確認いただけるようにいたしました。

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

 

 

プレビューが提供されている講義を確認してから、受講を決定していただければと思います。:)

こんな方に
おすすめです

学習対象は
誰でしょう?

  • Swift言語を少し習得された方

  • iOSで同期・非同期処理の基本概念を身につけたい方

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

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

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

  • スレッドセーフ(Thread-safety)の概念について知りたい方

  • 初〜中級iOSエンジニア

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

  • Swift言語に対する理解

  • iOSプログラミングに関する理解

こんにちは
allenです。

7,610

受講生

755

受講レビュー

311

回答

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件の受講レビュー

  • leedh20083569님의 프로필 이미지
    leedh20083569

    受講レビュー 3

    平均評価 5.0

    5

    100% 受講後に作成

    今まで多くの講義を聞きましたが、ほとんどの講義は初心者を対象に基礎だけを説明する講義がほとんどでしたが、この講義は基礎的な部分から深化まで本当によく取り上げられたようで、講義自体が設計から講義資料準備まで時間をたくさん聞いたことが感じられました。講義者が関数型プログラミングとRxに関連する講義をしている場合は、もう一度お支払いいただき、面白いと思います。

    • sangbum225213님의 프로필 이미지
      sangbum225213

      受講レビュー 3

      平均評価 5.0

      5

      47% 受講後に作成

      同期/非同期の理解が多く不足してこの講義を選んだが現在聞いている中でも講座のクオリティが相当で次の講義はいつ撮るのか?という考えをしてみる講座です。完全に良いです。とてもおすすめです。

      • brianj님의 프로필 이미지
        brianj

        受講レビュー 5

        平均評価 5.0

        5

        100% 受講後に作成

        一応講師様が非専攻者だとか、非専攻者の心をよく知って説明していただくとすごく!詳しく説明していただき、とても良いです。(私も非専攻者です。)また、どこでもこのように同期/非同期に関する内容を教えてくれません。通信するときに無条件に非同期を書かなければならないからといって書くだけで、理由については正確には分からなかったが、授業を聞いて知ることになりました。 しかし、勉強というのが一度だけ聞くと完璧なのではないでしょうか?ところが、この講義は一度買っておけば無制限に繰り返し聞くことができるのに良いです。ありがとうございます。 (最後にPDF資料とかコードも全部あってすごくいいですね!イチオシ! 個人的に1.25倍速で聞きました。 中途中の画質が低くなる現象がありますが、それは右下の設定ウィンドウに見れば画質を選択できます。最高のものを選んで戻ってきます。)

        • sujikang7936님의 프로필 이미지
          sujikang7936

          受講レビュー 3

          平均評価 5.0

          5

          97% 受講後に作成

          この講義を聞くと、良い人は次のようになります - "非同期処理"という言葉だけ聞いたら "ㅎ.. - グーグルして解決はするが、なぜコードがこう書かれるのか、要求事項に合うロジックなのかは全く分からない方 まさに過去の私です。 その後、会社が指定したiOS開発必須講義に該当講義が含まれているので"これだ!"一つの講義ということですよ.. 毎講義ごとに絵と例で説明してくれますが……………………………………………………………………………………………………………………………………。私が今まで受講してきたすべてのオンオフライン開発講義の一つの講義を挙げれば、まさにこの講義だと自信を持って話すことができます。残すと長く、詳しく、親切に答えてくださって講義を100%自分のものに持っていけます。 最後に、その講義は言語に関係なく、非同期/同時性を理解するのに大きな助けになります。聞いたんです。 まあ…一言でまとめると… &quot;最高の講義をお勧めします!&quot; アラン様少なく働き、たくさんバシギル。

          • youngilchung0015님의 프로필 이미지
            youngilchung0015

            受講レビュー 6

            平均評価 5.0

            5

            100% 受講後に作成

            肝臓に高品質講義を聞きました。 難しいテーマなのにイメージを添えて簡単に説明してくれた部分が印象的でした。他の講義たちを割引するとき、本講義は割引をしないで摂摂しましたが、頑強の後には当然下の気がしますね。良い知識を共有していただきありがとうございます。

            allenの他の講座

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

            似ている講座

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

            ¥8,467