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
LINE占い iOS アプリ開発の現状 / LINE DM 15 about a LINE F...
Search
H.Takeshita
July 29, 2016
Technology
1
630
LINE占い iOS アプリ開発の現状 / LINE DM 15 about a LINE Fortune development
This talk at LINE Developer Meetup in Fukuoka #15
H.Takeshita
July 29, 2016
Tweet
Share
Other Decks in Technology
See All in Technology
Javaで作る RAGを活用した Q&Aアプリケーション
recruitengineers
PRO
1
110
Observability infrastructure behind the trillion-messages scale Kafka platform
lycorptech_jp
PRO
0
140
製造業からパッケージ製品まで、あらゆる領域をカバー!生成AIを利用したテストシナリオ生成 / 20250627 Suguru Ishii
shift_evolve
PRO
1
140
GeminiとNotebookLMによる金融実務の業務革新
abenben
0
230
「良さそう」と「とても良い」の間には 「良さそうだがホンマか」がたくさんある / 2025.07.01 LLM品質Night
smiyawaki0820
1
200
GitHub Copilot の概要
tomokusaba
1
130
Amazon S3標準/ S3 Tables/S3 Express One Zoneを使ったログ分析
shigeruoda
4
540
AWS アーキテクチャ作図入門/aws-architecture-diagram-101
ma2shita
29
11k
Postman AI エージェントビルダー最新情報
nagix
0
120
PHP開発者のためのSOLID原則再入門 #phpcon / PHP Conference Japan 2025
shogogg
4
840
地図も、未来も、オープンに。 〜OSGeo.JPとFOSS4Gのご紹介〜
wata909
0
110
ひとり情シスなCTOがLLMと始めるオペレーション最適化 / CTO's LLM-Powered Ops
yamitzky
0
440
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
430
65k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Scaling GitHub
holman
459
140k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Balancing Empowerment & Direction
lara
1
380
The Art of Programming - Codeland 2020
erikaheidi
54
13k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Transcript
-*/&͍J04ΞϓϦ ։ൃͷݱঢ় -*/&'VLVPLB!UBLFUJO -*/&%FWFMPQFS.FFUVQJO'VLVPLB
ࣗݾհ w !UBLFUJO w ੜ·Ε w ݩ؟ڸ w J04։ൃྺ
ΞδΣϯμ w -*/&͍ʹ͍ͭͯ w αʔϏε։ൃϑϩʔ w ࠷ۙͷ։ൃํ w ࣾศརXFCαʔϏε
-*/&͍ʹ͍ͭͯ
-*/&͍ w -*/& αʔϏεͱͯ͠ϦϦʔε w ୯ಠΞϓϦ ͱͯ͠ϦϦʔε
-*/&͍ • ܳೳքͰͷεϐϦνϡ Ξϧঁࢠେੜ$)*&ɺήο λʔζ൧ాͳͲͷ͍ࢣʹ ΑΔʮຊ͍֨ʯ • 100໊Ҏ্ͷਓؾ͍ࢣͷ த͔ΒࣗͷΈʹ߹ͬ ͨ۩ମతͳΞυόΠεͱ
ؑఆΛड͚Δ͜ͱ͕Ͱ͖ ΔʮΈ૬ஊॴʯ
-*/&͍ w ରԠ04J04Ҏ্
None
݄ ݄ ݄ ݄ ݄ ϦϦʔε 7FSTJPO -*/&͍ ։ൃԬҠ J04DVU
7FSTJPO ݄ -*/&'VLVPLB ։ൃ্ཱࣨͪ͛
αʔϏε։ൃϑϩʔ
اը σβΠφ ΤϯδχΞ 2" 5& 5&
اը σβΠφ ΤϯδχΞ 2" 5& 5& ౦ژ Ԭ
اը σβΠφ ΤϯδχΞ 2" 5& 5&
اը σβΠφ ΤϯδχΞ 2" 5& 5& ΞΠσΞͩΑ
اը σβΠφ ΤϯδχΞ 2" 5& 5& ;Ή;ΉɺͰ͖ͦ͏ ΞΠσΞͩΑ
اը σβΠφ ΤϯδχΞ 2" 5& 5& ͬͱ͜͏͢ΕΑ͘Ͷʁ ΞΠσΞͩΑ
اը σβΠφ ΤϯδχΞ 2" 5& 5& ͬͱ͜͏͢ΕΑ͘Ͷʁ ͋ʔɺͳΔ΄ͲɻΠΠωɻ
اը σβΠφ ΤϯδχΞ 2" 5& 5& ͜͏͍͏ࣄ͠Α͏ͱࢥͬͯΔ
اը σβΠφ ΤϯδχΞ 2" 5& 5& ͜͏͍͏ࣄ͠Α͏ͱࢥͬͯΔ ϞοΫ࡞Γ·͢Ͷ
اը σβΠφ ΤϯδχΞ 2" 5& 5& ϞοΫ࡞ͬͨΑɻ ͜Μͳಈ͖ͯ͠Ͷɻ
اը σβΠφ ΤϯδχΞ 2" 5& 5& ͪΐɺݫ͘͠Ͷʁ ϞοΫ࡞ͬͨΑɻ ͜Μͳಈ͖ͯ͠Ͷɻ
اը σβΠφ ΤϯδχΞ 2" 5& 5& ͜Μͳײ͡ͰͲ͏ʁ ϞοΫ࡞ͬͨΑɻ ͜Μͳಈ͖ͯ͠Ͷɻ
اը σβΠφ ΤϯδχΞ 2" 5& 5& ͜Μͳײ͡ͰͲ͏ʁ Φοέʔɺ͡ΌΨΠυ࡞ΔͶ
اը σβΠφ ΤϯδχΞ 2" 5& 5& ΨΠυ࡞ͬͨΑ
اը σβΠφ ΤϯδχΞ 2" 5& 5& ΨΠυ࡞ͬͨΑ
اը σβΠφ ΤϯδχΞ 2" 5& 5& Αͬ͠Όɺ։ൃ͢ΔͰ ΨΠυ࡞ͬͨΑ
اը σβΠφ ΤϯδχΞ 2" 5& 5& Αͬ͠Όɺ։ൃ͢ΔͰ ΨΠυ࡞ͬͨΑ Μ͡Όςετέʔε࡞͓ͬͯ ͖·͢
اը σβΠφ ΤϯδχΞ 2" 5& 5& ։ൃதʜ
اը σβΠφ ΤϯδχΞ 2" 5& 5& Ͱ͖ͨ
اը σβΠφ ΤϯδχΞ 2" 5& 5& Ͱ͖ͨ σβΠϯ2"͠·͢Ͷ 2"։࢝͠·͢Ͷ
اը σβΠφ ΤϯδχΞ 2" 5& 5& Ͱ͖ͨ σβΠϯ2"͠·͢Ͷ 2"։࢝͠·͢Ͷ
اը σβΠφ ΤϯδχΞ 2" 5& 5& 2"தʜ
اը σβΠφ ΤϯδχΞ 2" 5& 5& ΦοέʔͰ͢ ΦοέʔͰ͢
اը σβΠφ ΤϯδχΞ 2" 5& 5& όΠφϦVQMPBEͨ͠Αʂ
اը σβΠφ ΤϯδχΞ 2" 5& 5& όΠφϦVQMPBEͨ͠Αʂ ͓͔ͭΕ͞ΜͰͨ͠ʔ
اը σβΠφ ΤϯδχΞ 2" 5& 5& "QQMFʹਃʂ
࠷ۙͷ։ൃํ
0CKFDUJWF$ͷίʔυྔͱϑΝΠϧ pOEOBNF NcXDM pOEOBNF NcYBSHTXDM
0CKFDUJWF$ͷίʔυྔͱϑΝΠϧ 4XJGUͷίʔυྔͱϑΝΠϧ pOEOBNF NcXDM pOEOBNF NcYBSHTXDM pOEOBNF TXJGUcXDM
pOEOBNF TXJGUcYBSHTXDM 12282
৽نίʔυવ4XJGUͰॻ͘
৽نίʔυવ4XJGUͰॻ͘ ͍ͭͰʹॻ͖͑Εͦ͏ͳ0CKFDUJWF $ϑΝΠϧ4XJGUͰϦϥΠτ͢Δʂ
৽نίʔυવ4XJGUͰॻ͘ ͍ͭͰʹॻ͖͑Εͦ͏ͳ0CKFDUJWF $ϑΝΠϧ4XJGUͰϦϥΠτ͢Δʂ ɻɻɻ
৽نίʔυવ4XJGUͰॻ͘ ͍ͭͰʹॻ͖͑Εͦ͏ͳ0CKFDUJWF $ϑΝΠϧ4XJGUͰϦϥΠτ͢Δʂ ʊਓਓਓਓਓʊ ʼɹͩΔ͍ɹʻ ʉ:?:?:?:ʉ
ίϯόʔτπʔϧ͓͏
(FOFSBUFE*OUFSGBDF
(FOFSBUFE*OUFSGBDF 9DPEFʙ
(FOFSBUFE*OUFSGBDF @interface ExampleModel : NSObject @property (nonatomic) NSNumber *amount; @property
(nonatomic, copy) NSString *datetime; @property (nonatomic, copy) NSString *title; @end public class ExampleModel : NSObject { public var amount: NSNumber! public var datetime: String! public var title: String! }
IUUQPCKDTXJGUZBIPPMBCTKQ PCKDTXJGU 8FC4FSWJDF
PCKDTXJGU 044
9$4XJGUS 9DPEF1MVHJO
9$4XJGUS 9DPEF1MVHJO
ॻ͖͑Δ·Ͱ࣌ؒऔΕͳ͍
ॻ͖͑Δ·Ͱ࣌ؒऔΕͳ͍ ʊਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓʊ ʼɹͤΊͯ0CKFDUJWF$Λڧ͘͠Α͏ɹʻ ʉ:?:?:?:?:?:?:?:?:?:?:?:?:?:ʉ
/VMMBCJMJUZ 9DPEFd -JHIU8FJHIU(FOFSJDT 9DPEFd
/VMMBCJMJUZ @property (nonnull, copy, nonatomic) NSString *name; @property (copy, nonatomic)
NSString * __nonnull name; @property (copy, nonatomic) NSString * _Nonnull name; @property (nullable, copy, nonatomic) NSString *name; @property (copy, nonatomic) NSString * __nullable name; @property (copy, nonatomic) NSString * _Nullable name; - (void)example:(nonnull NSArray<NSString *> *)param; - (void)example:(NSArray<NSString *> * _Nonnull)param;
/VMMBCJMJUZ // Objective-C + (NSString *)message; // ࣮ nil Λฦ͢ࣄ͕͋Δ
// Swift Ͱ func message() -> NSString! Example.message().characters // nil ฦͬͨ࣌ʹ Crash >< // Objective-C + (nullable NSString *)message; // nil ฦ͢ՄೳੑΛ໌ࣔ // Swift Ͱ func message() -> NSString? Example.message()?.characters // Optional Ͱ nil safe
/VMMBCJMJUZ ࠪൣғʢ"VEJUFE3FHJPOTʣ NS_ASSUME_NONNULL_BEGIN @interface ExampleModel : NSObject @property (copy, nonatomic)
NSString *name; @property (copy, nonatomic) NSString *country; @property (nullable, copy, nonatomic) NSString *hobby; @end NS_ASSUME_NONNULL_END
-JHIU8FJHIU(FOFSJDT + (NSArray <NSString *>*)someArray { NSArray<NSString *> *var =
@[@"test"]; return var; }
-JHIU8FJHIU(FOFSJDT // Objective-C + (NSArray *)someArray { NSArray *var =
@[@"test"]; return var; } // Swift Example.someArray()[0].characters
-JHIU8FJHIU(FOFSJDT // Objective-C + (NSArray <NSString *> *)someArray { NSArray<NSString
*> *var = @[@"test"]; return var; } // Swift Example.someArray()[0].characters
-JHIU8FJHIU(FOFSJDT // Objective-C + (NSArray <NSString *> *)someArray { UIImage
*image = [UIImage imageNamed:@"example.png"]; NSArray<UIImage *> *var = @[image]; return var; }
-JHIU8FJHIU(FOFSJDT // Objective-C + (NSArray <NSString *> *)someArray { UIImage
*image = [UIImage imageNamed:@"example.png"]; NSArray<UIImage *> *var = @[image]; return var; } // Swift Example.someArray()[0].characters
-JHIU8FJHIU(FOFSJDT NSMutableArray<UIView *> *array = [@[] mutableCopy]; // MyView
UIView ͷαϒΫϥε [array addObject:[MyView new]]; MyView *myView = array[0];
-JHIU8FJHIU(FOFSJDT NSMutableArray<__kindof UIView *> *array = [@[] mutableCopy]; // MyView
UIView ͷαϒΫϥε [array addObject:[MyView new]]; MyView *myView = array[0];
-JHIU8FJHIU(FOFSJDT Մಡੑ্ Swift ͱͷ૬ޓӡ༻ੑ্
ϨΠΞτ _textLabel.frame = (CGRect){ .origin.x = 0., .origin.y = CGRectGetMaxX(self.itemImageView.frame)
+ 3., .size.width = CGRectGetWidth(self.itemImageView.frame), .size.height = _textLabel.font.lineHeight * 2. + 7. };
ϨΠΞτ વ"VUP-BZPVU͏͔ΒYJCԽ͍ͯ͜͠͏ _textLabel.frame = (CGRect){ .origin.x = 0., .origin.y =
CGRectGetMaxX(self.itemImageView.frame) + 3., .size.width = CGRectGetWidth(self.itemImageView.frame), .size.height = _textLabel.font.lineHeight * 2. + 7. };
ϨΠΞτ @IBInspectable var borderColor: UIColor = UIColor.clearColor() { didSet {
layer.borderColor = borderColor.CGColor } } @IBInspectable var cornerRadius: CGFloat = 0 { didSet { layer.cornerRadius = cornerRadius } } *#*OTQFDUBCMF
ϨΠΞτ @IBInspectable var borderColor: UIColor = UIColor.clearColor() { didSet {
layer.borderColor = borderColor.CGColor } } @IBInspectable var cornerRadius: CGFloat = 0 { didSet { layer.cornerRadius = cornerRadius } } *#*OTQFDUBCMF
ϨΠΞτ 6*7JFX$POUSPMMFS4UPSZ#PBSEԽ
ϨΠΞτ 6*7JFX$POUSPMMFS4UPSZ#PBSEԽ import UIKit protocol StoryBoardable extension StoryBoardable where Self:
UIViewController { static func viewControllerFromStoryboard() -> Self { let storyboard = UIStoryboard(name: className, bundle: nil) return storyboard.instantiateViewControllerWithIdentifier( className ) as! Self } }
ϨΠΞτ 6*7JFX$POUSPMMFS4UPSZ#PBSEԽ // for Objective-C extension UIViewController { @available(*, unavailable)
@objc static func viewControllerFromStoryboard() -> UIViewController { let storyboard = UIStoryboard(name: className, bundle: nil) return storyboard. instantiateViewControllerWithIdentifier(className) } }
ϨΠΞτ 6*7JFX$POUSPMMFS4UPSZ#PBSEԽ // from Swift let vc = viewControllerFromStoryboard() //
from Objective-C MyViewController *viewController = (MyViewController *)[MyViewController viewControllerFromStoryboard];
ࣾศརXFCαʔϏε
O%FQMPZ
O%FQMPZ
"QQ%FQMPZ
/1VTI "1/4 ($. ֤αʔϏεαʔό /1VTIαʔό
/&-0
"QQ3FWJFXT
$IBU014 IVCPU
·ͱΊ 4XJGUͰॻ͚ͳ͍࣌0CKFDUJWF$ͷ৽͍͠ػೳͬͯ ૬ޓӡ༻ੑ্͍͛ͯ͜͏ "VUP-BZPVU͍Ͱ׳ΕΑ͏ -*/&ࣾศརπʔϧ͕ϞϦϞϦ͋Γ·͢ɻҰॹʹಇ͜͏ʂ 0CKFDUJWF$Λ4XJGUʹҠߦ͢Δͱ͖ίϯόʔτπʔϧ Λ͖͔͚ͬʹ͢ΔͱḿΔ