Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
サーバーサイドエンジニアのためのiOSアプリ開発入門
Search
typester
August 22, 2015
Technology
0
4.8k
サーバーサイドエンジニアのためのiOSアプリ開発入門
YAPC::Asia 2015
typester
August 22, 2015
Tweet
Share
More Decks by typester
See All by typester
Emacs実践入門 Perl編
typester
0
2.7k
XSにまつわる話
typester
4
2.2k
Perlハッカーは息をするようにCPANモジュールを書く
typester
5
7.4k
UV - libuv binding for Perl
typester
1
6.1k
Hacking Mac OS X Cocoa API from Perl
typester
2
420
Other Decks in Technology
See All in Technology
2025年 山梨の技術コミュニティを振り返る
yuukis
0
140
投資戦略を量産せよ 2 - マケデコセミナー(2025/12/26)
gamella
0
570
「駆動」って言葉、なんかカッコイイ_Mitz
comucal
PRO
0
130
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
3
250
ESXi のAIOps だ!2025冬
unnowataru
0
460
人工知能のための哲学塾 ニューロフィロソフィ篇 第零夜 「ニューロフィロソフィとは何か?」
miyayou
0
270
2025-12-27 Claude CodeでPRレビュー対応を効率化する@機械学習社会実装勉強会第54回
nakamasato
4
1.4k
20251222_サンフランシスコサバイバル術
ponponmikankan
2
160
小さく、早く、可能性を多産する。生成AIプロジェクト / prAIrie-dog
visional_engineering_and_design
0
300
戰略轉變:從建構 AI 代理人到發展可擴展的技能生態系統
appleboy
0
170
_第4回__AIxIoTビジネス共創ラボ紹介資料_20251203.pdf
iotcomjpadmin
0
170
ECS_EKS以外の選択肢_ROSA入門_.pdf
masakiokuda
1
120
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
41
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Building the Perfect Custom Keyboard
takai
2
670
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Google's AI Overviews - The New Search
badams
0
880
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Balancing Empowerment & Direction
lara
5
830
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
110
Transcript
αʔόʔαΠυΤϯδχΞ ͷͨΊͷJ04ΞϓϦ։ൃೖ !UZQFTUFS :"1$"TJB
J04ΞϓϦ։ൃ w 4XJGU w (PPECZF0CKFDUJWF$ w ແྉͰ࣮ػసૹՄೳʹ 9DPEFҎ߱ IUUQTEFWFMPQFSBQQMFDPNYDPEF
EPXOMPBET
࢝ΊΔʹྑ͍࣌ظʂ
1FSMUP4XJGU
$MBTT package Foo; use Moose; 1;
$MBTT class Foo { }
*OIFSJUBODF package Dog; use Moose; extends ‘Animal’; 1;
*OIFSJUBODF class Dog: Animal { }
JOTUBODFWBSJBCMF package Dog; use Moose; extends ‘Animal’; has
‘name’ => ( is => ‘rw’, isa => ‘Str’, ); 1;
JOTUBODFWBSJBCMF class Dog: Animal { var name: String = “”
}
MB[Z package Dog; use Moose; extends ‘Animal’; has
‘name’ => ( is => ‘rw’, isa => ‘Str’, lazy => 1, default => sub { “John”; }, ); 1;
MB[Z class Dog: Animal { @lazy var name: String =
{ return “John” }() }
JOJUJBMJ[FS package Dog; use Moose; extends ‘Animal’; sub
BUILD { my ($self) = @_; # . . . } 1;
JOJUJBMJ[FS class Dog: Animal { init() { // . .
. } }
JOTUBODFGVODUJPO package Dog; use Moose; extends ‘Animal’; sub
print_info { my ($self) = @_; printf ‘name=%s\n’, $self->name; } 1;
JOTUBODFGVODUJPO my $dog = Dog->new; $dog->print_info;
JOTUBODFGVODUJPO class Dog: Animal { var name: String = “”
func print_info() { println(“name=\(self.name)”) } }
JOTUBODFGVODUJPO var dog = Dog() dog.print_info()
େମΠϝʔδΘͬ ͨͰ͠ΐ͏͔
࣮ࡍʹ4XJGUͷ΄͏͕ΊͪΌ ͪ͘Όػೳ๛ͳͷͰɺ͜ͷ Γํʹແཧ͕͋Γ·͢ স
1FSM͍͕4XJGUʹདྷͯ ҧײͷͳ͍࠷େͷϙΠϯτ
ϦϑΝϨϯεΧϯτ ํࣜ
1FSMͰΑ͘Δϛε my $t = AnyEvent->timer( after => 10, cb =>
sub { $self->do_something; }, );
1FSMͰΑ͘Δϛε my $t = AnyEvent->timer( after => 10, cb =>
sub { $self->do_something; }, );
1FSMͰΑ͘Δϛε my $t = AnyEvent->timer( after => 10, cb =>
sub { $self->do_something; }, ); Scalar::Util::weaken($self);
*OTXJGU var t = Timer(10, cb: { () -> Void
in self?.do_something() })
*OTXJGU var t = Timer(10, cb: { [weak self] ()
-> Void in self?.do_something() })
;FSPJOHXFBL w 4XJGU0CKFDUJWF$ͷXFBLࢀর ;FSPJOHXFBLͱݺΕΔ w 1FSMͷXFBLࢀরϦϑΝϨϯεΧϯτ͕ ͞ Εͳ͍͚ͩ w 4XJGUͷ߹͞ΒʹɺࢀরΧϯτ͕ʹͳΔ
ͱɺXFBLࢀর͍ͯ͠Δม͕ࣗಈతʹOJM [FSP ʹͳΔ
1FSMʹͳ͍͚ͲॏཁͳͭΒ w 0QUJPOBMͱ͍͏֓೦ w 1SPUPDPM
0QUJPOBMͱ͍͏֓೦ w 4XJGUͰ WBSGPP4USJOH ͱఆٛͨ͠มʹ4USJOHҎ֎ೖΕΒΕͳ͍
0QUJPOBMͱ͍͏֓೦ w WBSGPP4USJOH ͱఆٛ͢ΔͱPQUJPOBMʹͳΔ w OJMPS4USJOH͕ೖՄೳ
0QUJPOBMͱ͍͏֓೦ w ΞΫηε͢Δ࣌ w TFMGGPP OJMͩͬͨ࣌DSBTI w JGMFUGPPTFMGGPP\ ^
͕͓ͬͪ͜͢͢Ί
0QUJPOBMͱ͍͏֓೦ w JGMFUCB[TFMGGPP CBS CB[\ ^ w 0QUJPOBMΛશ෦ͨͲͬͯ࠷ޙ·ͰOJM͡Όͳ͔ͬ ͚ͨ࣌ͩ
0QUJPOBMͱ͍͏֓೦ w TFMGGPP EP@TPNFUIJOH w GPP͕OJMͩͬͨΒԿ͓͖ͳ͍
1SPUPDPM w (Pͷ*OUFSGBDFΈ͍ͨͳͷ w 4USVDU 1SPUPDPMͰɺ΄Μͱʹ(PΈ͍ͨͳॻ ͖ํՄೳ
$1"/$BSUPO
$PDPB1PET
w DQBOpMF1PEpMF w DBSUPOJOTUBMM'PP QPEJOTUBMM'PP
ͳΜ͔࡞ΔσϞ
ϙΠϯτ w ࠷ॳ͔ΒᘳͳͷΛ࡞Ζ͏ͱ͠ͳ͍ w ζϧͰ͖Δͱ͜Ζζϧ͢Δ w ͔͔ࣗͭ͑͠ͳͯ͘ྑ͍ w ඞཁʹͳͬͨͷ͚͍֮ͩ͑ͯ͘ͷָ͕ͩ͠ ʹͭ͘
ϙΠϯτ w ຊ৬ αʔόαΠυ ͷೳྗΛۦ w ΫϥΠΞϯταΠυΊͬͪΌखൈ͖Ͱ͖ΔΑ ͏ʹαʔόͰ͕ΜΔ
ϙΠϯλ w ੲͱ͕ͪͬͯใ͕ͦΖ͍ͬͯΔͷͰ ͋Μ·Γۤ࿑͠ͳ͍ͣ w ެࣜνϡʔτϦΞϧ 4UBSU%FWFMPQJOHJ04"QQT 4XJGU w
Ұ෦ຊޠʹͳͬͯ·͢ IUUQTEFWFMPQFSBQQMFDPNKQEPDVNFOUBUJPO w ϐϯϙΠϯτʹΓ͍ͨ͜ͱɾ͏ϑϨʔϜϫʔΫ໊ͰάάΔ ˠ4UBDLPWFSqPX RJJUB
2VFTUJPOT