Slide 1

Slide 1 text

3FBDUJWF$PDPB Ͱ ೔ຊޠೖྗ !IFEKJSPH

Slide 2

Slide 2 text

ͳ͕͠·͡Ζ͏ !IFEKJSPH 4BOTBOגࣜձࣾ&JHIU

Slide 3

Slide 3 text

΍Γ͍ͨ͜ͱ

Slide 4

Slide 4 text

3FBDUJWF$PDPB ϦΞΫςΟϒϓϩάϥϛϯά

Slide 5

Slide 5 text

ʓ4USFBN ʷ.77. ʷCJOEJOH ࿩͢͜ͱ

Slide 6

Slide 6 text

ʲ຋༁ʳ͋ͳ͕ͨٻΊ͍ͯͨϦΞΫςΟϒϓϩάϥϛϯάೖ໳ Θ͔Γ΍͍͢ʂʂ

Slide 7

Slide 7 text

೔ຊޠೖྗ

Slide 8

Slide 8 text

Ωʔೖྗ

Slide 9

Slide 9 text

I P O O ΞϧϑΝϕοτ

Slide 10

Slide 10 text

ม׵ Τϯδϯ

Slide 11

Slide 11 text

΄ Μ ͻΒ͕ͳ

Slide 12

Slide 12 text

೔ຊޠೖྗ ͻΒ͕ͳม׵ Ωʔೖྗ ΞϧϑΝϕοτ ͻΒ͕ͳ

Slide 13

Slide 13 text

೔ຊޠೖྗ ͻΒ͕ͳม׵ Ωʔೖྗ ΞϧϑΝϕοτ ͻΒ͕ͳ 4USFBN 4USFBN 3FBDUJWF$PDPB

Slide 14

Slide 14 text

΍ͬͨ͜ͱ

Slide 15

Slide 15 text

IFEKJSPH3FBDUJWF,FZCPBSE

Slide 16

Slide 16 text

IFEKJSPH3FBDUJWF,FZCPBSE ˣˣˣGPSLˣˣˣ LJTIJLBXBLBUTVNJ +BQBOFTF,FZCPBSE,JU

Slide 17

Slide 17 text

Ωʔೖྗ 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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

࿈ଓจࣈ ͷ 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"]) ? @"Μ" : @"ͬ"; }]; ม׵ Τϯδϯ Μ

Slide 20

Slide 20 text

ʷ ͻΒ͕ͳ ͷ 4USFBN ͻΒ͕ͳ ͷ 4USFBN RACSubject *transformedCharacter = [RACSubject subject]; [[[RACSignal merge:@[vowelSignal, consecutiveSignal]] doNext:^(id _) { self.buffer = [[NSMutableString alloc] init]; }] subscribe:transformedCharacter]; ม׵ Τϯδϯ ΄ ม׵ Τϯδϯ Μ ΄ Μ

Slide 21

Slide 21 text

ͳͥ΍ͬͨͷ͔

Slide 22

Slide 22 text

049༻ͷ4,,"RVB4,, ϝϯςφϯεऴྃʂʂ

Slide 23

Slide 23 text

DPEFpSTUBRVBTLL ༗ࢤʹΑΔमਖ਼൛഑෍΋͋Δ͕ʜ

Slide 24

Slide 24 text

ʘઈࢍ։ൃதʂʂʗ 4USFBN4,, Ծ