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

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

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

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

同期

複数のディレクトリに存在するファイルを更新した場合に、すべてのファイルにも更新が行われる事、又は、同じ記憶領域に同時にアクセスして内容の整合性が失われてしまう事をを防ぐ制御などを同期と呼びます。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Swift

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

Q&A

解決済

2回答

3288閲覧

同期処理、非同期処理について理解するにはどう言うことから学んでいけばいいか

mememehollow

総合スコア6

iOS

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

同期

複数のディレクトリに存在するファイルを更新した場合に、すべてのファイルにも更新が行われる事、又は、同じ記憶領域に同時にアクセスして内容の整合性が失われてしまう事をを防ぐ制御などを同期と呼びます。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Swift

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

0グッド

1クリップ

投稿2020/04/17 02:54

前提・実現したいこと

同期処理、非同期処理の理解

###質問の詳細
ここに質問の内容を詳しく書いてください。
こんにちは、情報系初心者の学生です。
今、アプリの開発を行っているのですが、Appleの公式リファレンスに良く書いてある同期処理、非同期処理とはなんのことか良くイメージできていません、実際に調べてみても、今の自分の頭じゃあまり理解できないです。そこで、同期処理、非同期処理のイメージを掴むためにはなにから勉強していったらいいか教えていただけないでしょうか?どうかよろしくお願いします。

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

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

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

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

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

miyabi_takatsuk

2020/04/17 03:01

学生さんとのことですが、学校ではアプリを学ばれてるのでしょうか? そして、学校の講師さんには聞いてみたのでしょうか? (講師さんに聞けない理由の有無を確認したい)
mememehollow

2020/04/17 03:19

こんにちは!ご返信どうもありがとうございます! 私は学校ではアプリ開発を学んでいません。 学校の専攻としては人工知能系なので、周りの先生でそう言ったシステム開発に詳しい方はおられないのです。
guest

回答2

0

ベストアンサー

ざっくり簡単に説明します。

同期処理

同期処理は、順番通り(だいたいの言語は上の行から)直列で順番に処理が行われることです。
ある処理が先に走ったとき、その処理が終了するまで、次の処理は実行されません。
だいたいの言語で、普通に処理を書けば、この同期処理になります。
変数の値保証が基本的にされるので、
非同期にしたいなど特に無ければ、同期処理のままにするのが基本です。

非同期処理

メインの処理が動きつつも、並行して実行させる処理です。
ゆえに、メインの処理が実行されてる間に、同時に処理を進めることができるので、
重い処理をバックグラウンド(非同期)で実行させることにより、
メインの処理、表示に影響を出さずにいれます。
ようは、重い処理の終了を同期的に待たずに、軽い処理やメインの処理を先に実行、とすることができるというわけです。
よく使われる処理としては、HTTP通信でのAPI使用時に、レスポンスを受け取るとかです。
また、読み込みの処理や、デバイス内の重いデータの読み込みなんかにもよく使用されます。
利点としては上記の通りですが、
デメリットというか、注意点としては、非同期で変数を定義、代入としたときに、
メインの処理でその変数を使いたいってときに、変数にまだ値が入ってない!ってことが起きやすいことです。
よって、非同期処理の際は、基本的に、処理が終わった際に実行されるコールバックを用意し、
そのコールバックで、メインの処理の変数に代入、処理の続きを行う、ということをします。
Swiftでよく使うフレームワークである、
UIKit/AppKitにおいては、非同期処理の多くは、デリゲートを使用しています。

また、今回の話は、スレッドについても深く関係してきますので、
より理解するには、学習が必要かと思います。

上記二つの他、並列処理というものがありますが、(非同期処理と非常に似てるが、違う)
本件では割愛します。

各用語に関しては、ご自身でお調べください。

学習の仕方ですが・・・、一番いいのは、WebAPI用意してー、ですが、(最近はよくAPI処理をする案件がほとんどのため)
デバイス内の重いファイルに対しての非同期処理、といった形で練習すればいいのではないでしょうか?
APIに関しては、書籍もいっぱいありますし、
画像や動画処理に関しては、書籍もいっぱいありますし、
Swiftの練習としてはかなりいい教材になると思いますよ。

投稿2020/04/17 04:37

編集2020/04/17 09:28
miyabi_takatsuk

総合スコア9528

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

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

MasakiHori

2020/04/17 04:54

deletegaを多用するのはUIKit/AppKitというフレームワークの特徴と思います
miyabi_takatsuk

2020/04/17 05:06

ご指摘ありがとうございます!! なるほどですね・・・。 回答修正します。
TsukubaDepot

2020/04/17 07:53

重箱の隅突くようで申し訳ないですが、「同期処理」は複数スレッド(キュー)とセマフォを用いて「息を合わせる」処理のことも言うと思います。 処理は単一スレッド(シングルスレッド)処理と、複数(マルチスレッド)処理と大きく分けられ、そのうち複数スレッド処理は同期処理と非同期処理に細分化される、という感じでしょうか(さらに直列処理も必要?)。 もっとも、質問者さんがどの資料をみてこの疑問を抱いたかわからないと答えようもないですよね...
miyabi_takatsuk

2020/04/17 09:21

TsukubaDepotさん > ご指摘ありがとうございます・・・! ひとまず、スレッド関係なく、同期処理と非同期処理、って説明の言い回しの方がよさそうですね・・・。 回答修正していきます。
mememehollow

2020/04/19 07:34

遅くなってしまい申し訳ありません。 詳しく教えていただき、本当にありがとうございます!
guest

0

回答というほどではないので、軽く見てください。

iOSでの非同期処理のさわり

Swiftでの非同期処理のさわり

投稿2020/04/17 06:05

freemann

総合スコア264

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

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

mememehollow

2020/04/19 07:33

遅くなってしまい申し訳ありません。 どうもありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問