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
ReactiveCocoaで日本語入力
Search
Jiro Nagashima
January 15, 2015
Technology
0
1.8k
ReactiveCocoaで日本語入力
iOSのカスタムキーボードでReactiveCocoaを利用して日本語入力を試みた内容です。
Jiro Nagashima
January 15, 2015
Tweet
Share
More Decks by Jiro Nagashima
See All by Jiro Nagashima
グロースを加速するLooker活用 / Leveraging Looker to accelerate growth
hedjirog
3
2.4k
プロダクトの成長を支えるKPI / KPIs for growing your product
hedjirog
17
3.6k
UIViewPropertyAnimatorで実現するリッチなアニメーション表現
hedjirog
4
1.9k
ReactorKit at Wantedly
hedjirog
2
790
ReactorKitを利用した緩やかなアーキテクチャの移行
hedjirog
3
1.3k
限られたリソースで進める段階的なSwit移行
hedjirog
2
4.9k
エンジニア・デザイナーで取り組むグロースハック
hedjirog
6
2.2k
iOS 10 時代のアニメーション / Introduction to UIViewPropertyAnimator
hedjirog
3
2.9k
How we use fastlane at Wantedly
hedjirog
9
11k
Other Decks in Technology
See All in Technology
OpenTelemetry実践 はじめの一歩
taxin
0
320
技術広報として2023年度に頑張ったこと / What we did well in FY2023 as a DevRel
pauli
5
490
検証からプロダクトへ: シームレスなLLM開発の ためのしくみ作り
nunukim
1
200
TypeScript Quiz (Encraft #12 Frontend Quiz Night)
uhyo
6
660
Tohoku.Tech #1 「Cursorを使ったRaspberry Piの開発」by ねこまた
jun2882
0
250
GitHub最新情報キャッチアップ 2024年3月
dzeyelid
17
3.2k
あらゆる商品を扱う商品データベースを再設計した話 / product db re-architecture
rince
8
3.8k
KubeCon EU: Unlocking new Platform Experiences with Open Interfaces
salaboy
1
380
生成AIの不確実性と向き合うためのオブジェクト指向設計
tkikuchi1002
2
680
Challenges - Open Farming Hackdays 2024
loleg
0
570
GraphQLに入門してみた
chiroruxx
2
130
社内共通ルールを値オブジェクトにして社内ライブラリとして運用してみた話
leveragestech
2
1.2k
Featured
See All Featured
Producing Creativity
orderedlist
PRO
335
39k
Building Better People: How to give real-time feedback that sticks.
wjessup
350
18k
Unsuck your backbone
ammeep
661
56k
Building Applications with DynamoDB
mza
88
5.6k
The Invisible Customer
myddelton
114
12k
Designing Experiences People Love
moore
135
23k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.8k
Building Effective Engineering Teams - LeadDev
addyosmani
25
1.8k
How GitHub (no longer) Works
holman
301
140k
Docker and Python
trallard
33
2.6k
Fireside Chat
paigeccino
19
2.6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
18
1.7k
Transcript
3FBDUJWF$PDPB Ͱ ຊޠೖྗ !IFEKJSPH
ͳ͕͠·͡Ζ͏ !IFEKJSPH 4BOTBOגࣜձࣾ&JHIU
Γ͍ͨ͜ͱ
3FBDUJWF$PDPB ϦΞΫςΟϒϓϩάϥϛϯά
ʓ4USFBN ʷ.77. ʷCJOEJOH ͢͜ͱ
ʲ༁ʳ͋ͳ͕ͨٻΊ͍ͯͨϦΞΫςΟϒϓϩάϥϛϯάೖ Θ͔Γ͍͢ʂʂ
ຊޠೖྗ
Ωʔೖྗ
I P O O ΞϧϑΝϕοτ
ม Τϯδϯ
΄ Μ ͻΒ͕ͳ
ຊޠೖྗ ͻΒ͕ͳม Ωʔೖྗ ΞϧϑΝϕοτ ͻΒ͕ͳ
ຊޠೖྗ ͻΒ͕ͳม Ωʔೖྗ ΞϧϑΝϕοτ ͻΒ͕ͳ 4USFBN 4USFBN 3FBDUJWF$PDPB
ͬͨ͜ͱ
IFEKJSPH3FBDUJWF,FZCPBSE
IFEKJSPH3FBDUJWF,FZCPBSE ˣˣˣGPSLˣˣˣ LJTIJLBXBLBUTVNJ +BQBOFTF,FZCPBSE,JU
Ωʔೖྗ RACSignal *signal = [self rac_signalForSelector:@selector(buttonDidTouchUp:)]; return [[[signal reduceEach:^(KeyboardButton *button){
return button; }] filter:^BOOL(KeyboardButton *button) { return button.keyIndex < KeyboardButtonIndexShift; }] map:^(KeyboardButton *button) { NSString *inputCharacter = [button titleForState:UIControlStateNormal]; return inputCharacter; }]; ΞϧϑΝϕοτͷ 4USFBN 4JHOBM ˞3"$$PNNBOEͰՄ I P O O
I P O O RACSignal *vowelSignal = [[inputSignal filter:^BOOL(NSString *inputCharacter)
{ return [@[@"A", @"I", @"U", @"E", @"O"] containsObject:inputCharacter]; }] map:^(id _) { NSMutableString *mutableBuffer; mutableBuffer = [NSMutableString stringWithString:self.buffer]; CFStringTransform((CFMutableStringRef)mutableBuffer, NULL, kCFStringTransformLatinHiragana, FALSE); return [NSString stringWithString:mutableBuffer]; }]; Ի ͷ 4USFBN ม Τϯδϯ ͻΒ͕ͳ ͷ 4USFBN ΄ ΞϧϑΝϕοτ ͷ 4USFBN
࿈ଓจࣈ ͷ 4USFBN ͻΒ͕ͳ ͷ 4USFBN ΞϧϑΝϕοτ ͷ
4USFBN I P O O RACSignal *consecutiveSignal = [[[bufferedInputConnection.signal combinePreviousWithStart:@"" reduce:^(NSString *previous, NSString *current) { return [NSSet setWithArray:@[previous, current]]; }] filter:^BOOL(NSSet *characters) { return [characters count] == 1; }] map:^(NSSet *characters) { NSString *consecutiveCharacter = [characters anyObject]; return ([consecutiveCharacter isEqualToString:@"N"]) ? @"Μ" : @"ͬ"; }]; ม Τϯδϯ Μ
ʷ ͻΒ͕ͳ ͷ 4USFBN ͻΒ͕ͳ ͷ 4USFBN RACSubject *transformedCharacter
= [RACSubject subject]; [[[RACSignal merge:@[vowelSignal, consecutiveSignal]] doNext:^(id _) { self.buffer = [[NSMutableString alloc] init]; }] subscribe:transformedCharacter]; ม Τϯδϯ ΄ ม Τϯδϯ Μ ΄ Μ
ͳͥͬͨͷ͔
049༻ͷ4,,"RVB4,, ϝϯςφϯεऴྃʂʂ
DPEFpSTUBRVBTLL ༗ࢤʹΑΔमਖ਼൛͋Δ͕ʜ
ʘઈࢍ։ൃதʂʂʗ 4USFBN4,, Ծ