Submit Search
Upload
なんとなく理解するActor 〜Actorと仲良くしよう〜 @DMM.swift #1
•
0 likes
•
168 views
Y
Yuuki Noseda
Follow
SwiftにおけるActorを感覚で捉えるために語源などにも当たって解説した資料です
Read less
Read more
Technology
Report
Share
Report
Share
1 of 52
Download now
Download to read offline
Recommended
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
Fumiya Sakai
アジャイル開発はWhyから始まる
アジャイル開発はWhyから始まる
toshihiro ichitani
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
Fumiya Sakai
人は1ヶ月でエンジニアになれるのか
人は1ヶ月でエンジニアになれるのか
Yamaura Kiyoto
プログラミング支援AI GitHub Copilot すごいの話
プログラミング支援AI GitHub Copilot すごいの話
Mitsushige Ishiguro
TextMeshProを使った絵文字対応について
TextMeshProを使った絵文字対応について
ssuserfefa74
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Recommended
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
Fumiya Sakai
アジャイル開発はWhyから始まる
アジャイル開発はWhyから始まる
toshihiro ichitani
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
Fumiya Sakai
人は1ヶ月でエンジニアになれるのか
人は1ヶ月でエンジニアになれるのか
Yamaura Kiyoto
プログラミング支援AI GitHub Copilot すごいの話
プログラミング支援AI GitHub Copilot すごいの話
Mitsushige Ishiguro
TextMeshProを使った絵文字対応について
TextMeshProを使った絵文字対応について
ssuserfefa74
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
sairoutine
フロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkan
Itsuki Kuroda
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
GLSLtech2018 レイマーチングで半歩差のつく小技集
GLSLtech2018 レイマーチングで半歩差のつく小技集
Kei Mesuda
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
Livesense Inc.
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
Shuichi Tsutsumi
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
SEGADevTech
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
Unity Technologies Japan K.K.
正しくないものをつくらない。7つの失敗パターン
正しくないものをつくらない。7つの失敗パターン
toshihiro ichitani
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
Fumiya Sakai
結果的に組織がAgileな状態であること #agile #scrum #leanstartup
結果的に組織がAgileな状態であること #agile #scrum #leanstartup
Itsuki Kuroda
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
toshihiro ichitani
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
firewood
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
アジャイル開発の中の設計
アジャイル開発の中の設計
Takuya Okamoto
脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
DMM meetup #23 アドプラットフォームグループの取組.pdf
DMM meetup #23 アドプラットフォームグループの取組.pdf
Koji Miyata
さよなら満員電車^^Pepperがあればだれでも簡単♪VRテレイグシステムの完全版
さよなら満員電車^^Pepperがあればだれでも簡単♪VRテレイグシステムの完全版
Takuya Noaki
More Related Content
What's hot
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
sairoutine
フロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkan
Itsuki Kuroda
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
GLSLtech2018 レイマーチングで半歩差のつく小技集
GLSLtech2018 レイマーチングで半歩差のつく小技集
Kei Mesuda
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
Livesense Inc.
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
Shuichi Tsutsumi
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
SEGADevTech
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
Unity Technologies Japan K.K.
正しくないものをつくらない。7つの失敗パターン
正しくないものをつくらない。7つの失敗パターン
toshihiro ichitani
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
Fumiya Sakai
結果的に組織がAgileな状態であること #agile #scrum #leanstartup
結果的に組織がAgileな状態であること #agile #scrum #leanstartup
Itsuki Kuroda
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
toshihiro ichitani
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
firewood
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
アジャイル開発の中の設計
アジャイル開発の中の設計
Takuya Okamoto
脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
What's hot
(20)
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
フロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkan
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
GLSLtech2018 レイマーチングで半歩差のつく小技集
GLSLtech2018 レイマーチングで半歩差のつく小技集
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
正しくないものをつくらない。7つの失敗パターン
正しくないものをつくらない。7つの失敗パターン
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
結果的に組織がAgileな状態であること #agile #scrum #leanstartup
結果的に組織がAgileな状態であること #agile #scrum #leanstartup
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
アジャイル開発の中の設計
アジャイル開発の中の設計
脱RESTful API設計の提案
脱RESTful API設計の提案
Similar to なんとなく理解するActor 〜Actorと仲良くしよう〜 @DMM.swift #1
DMM meetup #23 アドプラットフォームグループの取組.pdf
DMM meetup #23 アドプラットフォームグループの取組.pdf
Koji Miyata
さよなら満員電車^^Pepperがあればだれでも簡単♪VRテレイグシステムの完全版
さよなら満員電車^^Pepperがあればだれでも簡単♪VRテレイグシステムの完全版
Takuya Noaki
ドコモのクラウドとビックデータJpi版
ドコモのクラウドとビックデータJpi版
Osaka University
プロダクトマネージャーこそプロジェクトマネジメントを学ぼう (2).pdf
プロダクトマネージャーこそプロジェクトマネジメントを学ぼう (2).pdf
SaitoRyoPalekuma
AWS re:Inforce 2019 re:Cap LT
AWS re:Inforce 2019 re:Cap LT
Hiroki Moriya
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
Serverworks Co.,Ltd.
Developers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよ
Shinichi Hirauchi
ドリコム的Railsアプリ開発流儀
ドリコム的Railsアプリ開発流儀
Takafumi ONAKA
.NET Standard で SQLServer と接続してみた
.NET Standard で SQLServer と接続してみた
m ishizaki
アンドロイダーが取り組むXamarin開発
アンドロイダーが取り組むXamarin開発
Daisuke Tsutsumi
20120512 第5回Zabbix勉強会LT
20120512 第5回Zabbix勉強会LT
Kiyoshi Hirose
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Yoshiki Takeoka
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Akito Tsukahara
DataTable
DataTable
m ishizaki
Similar to なんとなく理解するActor 〜Actorと仲良くしよう〜 @DMM.swift #1
(14)
DMM meetup #23 アドプラットフォームグループの取組.pdf
DMM meetup #23 アドプラットフォームグループの取組.pdf
さよなら満員電車^^Pepperがあればだれでも簡単♪VRテレイグシステムの完全版
さよなら満員電車^^Pepperがあればだれでも簡単♪VRテレイグシステムの完全版
ドコモのクラウドとビックデータJpi版
ドコモのクラウドとビックデータJpi版
プロダクトマネージャーこそプロジェクトマネジメントを学ぼう (2).pdf
プロダクトマネージャーこそプロジェクトマネジメントを学ぼう (2).pdf
AWS re:Inforce 2019 re:Cap LT
AWS re:Inforce 2019 re:Cap LT
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
Developers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよ
ドリコム的Railsアプリ開発流儀
ドリコム的Railsアプリ開発流儀
.NET Standard で SQLServer と接続してみた
.NET Standard で SQLServer と接続してみた
アンドロイダーが取り組むXamarin開発
アンドロイダーが取り組むXamarin開発
20120512 第5回Zabbix勉強会LT
20120512 第5回Zabbix勉強会LT
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
DataTable
DataTable
Recently uploaded
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Recently uploaded
(8)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
なんとなく理解するActor 〜Actorと仲良くしよう〜 @DMM.swift #1
1.
© DMM © DMM なんとなく理解するActor Actorと仲良くしよう 野瀬田
裕樹(@ynoseda) 2024/1/29
2.
© DMM 野瀬田 裕樹(@ynoseda) 2023年9月
合同会社DMM.com 中途入社 開発統括本部 アプリ開発室 自己紹介 2
3.
© DMM 3 みなさん、Actor理解してますか?
4.
© DMM 4 私は全然理解できてません(とりあえずMainActorあるある)
5.
© DMM 5 ということで
6.
© DMM 6 今日は私と一緒になんとなくでも理解できるようになりましょう
7.
© DMM Actorとは SwiftにおけるActorについてはSwift.orgに記載がある https://docs.swift.org/swift-book/documentation/the-swift-programmi ng-language/concurrency/#Actors 7
8.
© DMM Actorとは You can
use tasks to break up your program into isolated, concurrent pieces. Tasks are isolated from each other, which is what makes it safe for them to run at the same time, but sometimes you need to share some information between tasks. Actors let you safely share information between concurrent code. Like classes, actors are reference types, so the comparison of value types and reference types in Classes Are Reference Types applies to actors as well as classes. Unlike classes, actors allow only one task to access their mutable state at a time, which makes it safe for code in multiple tasks to interact with the same instance of an actor. 8
9.
© DMM 9 読む気にならないですね
10.
© DMM 10 Google翻訳しましょう
11.
© DMM 1. タスクについての記載 ●
タスクを使うとプログラムを独立していて同時に実行できるパーツに分 割できる ● タスクは分離されていて安全に同時実行できるが、場合によってはタス ク間で情報を共有する必要がある Actorとは 11
12.
© DMM 2. Actorについての記載 ●
アクターを使用すると、安全にタスク間で情報を共有できる ● アクターはクラスと同様に参照型である ● アクターはクラスとは異なり、一度に 1 つのタスクのみが可変状態にア クセスできる Actorとは 12
13.
© DMM 13 字面ではわかるがわからん
14.
© DMM 14 そういう時はActorという単語の意味を調べましょう
15.
© DMM https://www.merriam-webster.com/dictionary/actor 1 :
one that acts : DOER 2 a : one who acts in a play, movie, television show, etc. b : one who behaves as if acting a part 3 : one that takes part in any affair : PARTICIPANT Actorという単語の意味 15
16.
© DMM https://www.merriam-webster.com/dictionary/actor 1 :
one that acts : DOER 2 a : one who acts in a play, movie, television show, etc. b : one who behaves as if acting a part 3 : one that takes part in any affair : PARTICIPANT 要するになんらかの行動をするもの、役に従って振る舞うものを表す Actorという単語の意味 16
17.
© DMM 17 じゃあなぜタスク間で安全に情報を共有できる参照型がActorなのか?
18.
© DMM A universal
modular ACTOR formalism for artificial intelligence https://www.ijcai.org/Proceedings/73/Papers/027B.pdf というpaperが初出らしい プログラミングにおけるActorの初出は? 18
19.
© DMM このpaperの概要の次に記載されている一文がActorの重要な概念 > Programs
should not only work, but they should appear to work as well. プログラミングにおけるActorの初出は? 19
20.
© DMM このpaperの中にActorについての概要が記載されている > この作業の過程で、私たちは
ACTOR という 1 つの基本概念を中心に形 式主義を統一することに成功しました。 直観的には、ACTOR は、スクリプト に従ってキューの役割を果たすアクティブなエージェントです。モデルにお ける制御とデータ フローの不可分性を強調するために、ACTOR の比喩を 使用します。 プログラミングにおけるActorの初出は? 20
21.
© DMM ● スクリプトに従ってキューの役割を果たすアクティブなエージェントのこ と ●
どのタイミング・条件でどういった振る舞いをするべきか、つまり制御と データフローはセットで考えるべきで、それらがセットになったものを Actorという比喩で表現している 元々のActorとは 21
22.
© DMM このpaperの中にActorについての性質も記載されている > 私たちの形式主義は、すべての動作モードが
1 種類の動作、つまり ACTORにメッセージを送信するという観点からどのように定義できるかを示 しています。 ACTORは、再帰関数、データ構造、またはプロセスとして動作 するかどうかに関係なく、常にまったく同じ方法で均一に呼び出されます。 (中略)すべてのACTORには、メッセージが送信されるACTORの前提条件 とコンテキストが満たされていることを確認する INTENTION があります。 INTENTIONとは、ACTORが外の世界と結ぶ契約です。ACTORが契約をど のように履行するかは、ACTOR自身の仕事です。 Actorの性質 22
23.
© DMM Actorの性質 23 全てがActor 統一された呼出
Intension
24.
© DMM ● 全てがActorで表現できる ○
Monotheism is the answer ○ データ構造、関数、セマフォなど多岐にわたる概念を包括している ● 統一された呼び出し方法 ○ Actorは内部でどのように振る舞っていたとしても、同じ方法で一貫して呼び出し される ● Intention(意図) ○ 外の世界とActorの間には契約があり、その契約に従ってActorは振る舞う 元々のActorとは 24
25.
© DMM https://github.com/apple/swift-evolution/blob/main/proposals/0306-act ors.md SE-0306で背景や詳細が確認できる SwiftにおけるActor 25
26.
© DMM ● 従来のclassにおける課題感 ○
データ競合回避が難しい ○ データ競合のような並行処理における不具合を静的に検出できない SwiftにおけるActor導入の背景 26
27.
© DMM 27 いい感じにデータ競合を回避する方法は何かないか?
28.
© DMM 28 例えばデータのフローと制御をセットで扱って、 データ競合がおきないように いい感じの条件、タイミングで状態を扱ってくれるような
29.
© DMM 29 あっ、これ A universal
modular ACTOR formalism for artificial intelligence でやったところだ!
30.
© DMM ● プログラムは単に機能するだけではだめ ●
ちゃんと外から見たときに利用側の期待通りに振る舞ってくれるということ が大切 ● Actorはこちらの期待した役をきちんと演じてくれる役者さん ● データ競合がおきないように状態を扱って欲しいなぁの期待に応えてくれ るのがActor Actorに対するイメージ 30
31.
© DMM SwiftにおけるActor 31
32.
© DMM SwiftにおけるActor 32
33.
© DMM SwiftにおけるActor 33
34.
© DMM SwiftにおけるActor 34
35.
© DMM ● Actorはその性質から、警告が出ないようにちゃんと実装すれば基本的 にはデータ競合を防ぐことができるはず ●
コンパイラを頼りにActorの使い方を勉強しよう ● Build SettingsのSWIFT_STRICT_CONCURRENCYをcompleteにする と、モジュール全体にわたってSendableの制約とactor isolationのチェッ クを強制してくれる SwiftにおけるActor 35
36.
© DMM ● 送信可能って日本語訳わかりにくいよね ●
コピーすることで、ある非同期処理のドメインから別のドメインに渡せるも の ● 単純な値型で構成されているstructとか、そういうコピーした後に書き込 みしても前のデータに影響しないものが該当する ● Sendableなデータはactor同士のやり取りで使える Sendableって何? 36
37.
© DMM 発生する警告の例 37
38.
© DMM 発生する警告の例(actor-isolationチェック) 38
39.
© DMM 発生する警告の例(actor-isolationチェック) 39
40.
© DMM 発生する警告の例(actor-isolationチェック) 40
41.
© DMM 発生する警告の例(Sendable制約) 41
42.
© DMM 発生する警告の例(Sendable制約) 42
43.
© DMM 発生する警告の例(キャプチャでも起きるよ) 43
44.
© DMM 発生する警告の例(キャプチャでも起きるよ) 44
45.
© DMM ● Actorと一口にいっても、単なるactorもあればMainActorのように特殊な Actorもある ●
DistributedActor ● GlobalActor ● MainActor ● AnyActor 色んなActor 45
46.
© DMM ● 一番良く使うMainActorくらいは定義を見ておこう MainActor 46
47.
© DMM MainActor 47
48.
© DMM actorはインスタンスが違うと違うactorだよ 48
49.
© DMM GlobalActor 49
50.
© DMM ● Actorは結構古くからある概念で、元の論文を読むとイメージが掴めるか も ●
Actorというだけで静的にデータ競合を回避できるなんて凄いよね ● コンパイラのサポートを使って上手にデータ競合を回避しよう まとめ 50
51.
© DMM ご静聴ありがとうございました
52.
© DMM Audience Q&A
Session ⓘ Click Present with Slido or install our Chrome extension to show live Q&A while presenting.
Download now