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
B2Cモバイル開発のいまとこれから #forcedotcomjp
Search
Naoya Ito
September 06, 2013
Technology
54
8k
B2Cモバイル開発のいまとこれから #forcedotcomjp
Salesforce Developer Conference Tokyo 2013 での発表資料
Naoya Ito
September 06, 2013
Tweet
Share
More Decks by Naoya Ito
See All by Naoya Ito
Functional TypeScript
naoya
14
5.8k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
65
30k
シェルの履歴とイクンリメンタル検索を使う
naoya
8
3.1k
20230227-engineer-type-talk.pdf
naoya
89
71k
関数型プログラミングと型システムのメンタルモデル
naoya
62
94k
TypeScript による GraphQL バックエンド開発
naoya
28
31k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
67
24k
「問題から目を背けず取り組む」 一休の開発チームが6年間で学んだこと
naoya
144
58k
一休の現在と、ここまでの道のり
naoya
90
41k
Other Decks in Technology
See All in Technology
Developer Summit 2025 [14-D-1] Yuki Hattori
yuhattor
19
6.2k
なぜ私は自分が使わないサービスを作るのか? / Why would I create a service that I would not use?
aiandrox
0
730
飲食店予約台帳を支えるインタラクティブ UI 設計と実装
siropaca
7
1.8k
クラウドサービス事業者におけるOSS
tagomoris
1
720
地方拠点で エンジニアリングマネージャーってできるの? 〜地方という制約を楽しむオーナーシップとコミュニティ作り〜
1coin
1
230
RECRUIT TECH CONFERENCE 2025 プレイベント【高橋】
recruitengineers
PRO
0
160
The Future of SEO: The Impact of AI on Search
badams
0
190
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
140
急成長する企業で作った、エンジニアが輝ける制度/ 20250214 Rinto Ikenoue
shift_evolve
3
1.3k
Swiftの “private” を テストする / Testing Swift "private"
yutailang0119
0
130
アジャイル開発とスクラム
araihara
0
170
ホワイトボードチャレンジ 説明&実行資料
ichimichi
0
130
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Bash Introduction
62gerente
611
210k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Typedesign – Prime Four
hannesfritz
40
2.5k
Code Review Best Practice
trishagee
67
18k
Rails Girls Zürich Keynote
gr2m
94
13k
Music & Morning Musume
bryan
46
6.3k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
Building an army of robots
kneath
303
45k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
174
51k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
Transcript
#$͔ΒΈͨ ϞόΠϧΞϓϦέʔγϣϯ։ൃͷ ͍·ͱ͜Ε͔Β /BPZB*UP JOBPZB!HNBJMDPN
NAOYA ITO
None
None
None
ࡢࠓͷϞόΠϧࣄ
h"p://www.kpcb.com/insights/2013-‐internet-‐trends
h"p://www.kpcb.com/insights/2013-‐internet-‐trends
ྫ͑ɺ&$ • ϞόΠϧ͕ݗҾ – ஹԯԁ – ஹԯԁ • ͏͕ͪϞόΠϧ ܦࡁ࢈ۀলൃද "NB[PODPKQ
ʮࠓޙϞόΠϧͰΓ͍ͨʯ
ਓʑ͕ϞόΠϧͰࢥ͍ු͔ΔϞϊ 1BUI 5XJUUFS
None
ʰ͍ͭʹΤϯυϢʔβʔͷٯऻ͕࢝·ͬͨrاۀγεςϜʹ͓͚ΔίϯγϡʔϚʔΠϊϕʔ γϣϯ/PUIJOHWFOUVSFE OPUIJOHHBJOFEʱ h"p://takora"a.hatenablog.com/entry/20120329/1333033813
None
None
ϞόΠϧ։ൃैདྷͷ։ൃͱҧ͏
h"ps://speakerdeck.com/vitalyg/designing-‐for-‐mobile-‐commerce
ϞόΠϧΞϓϦ։ൃͷ 69ͷ։ൃ ˞एׯͬͯ·͕࣮͢ײͱͯ͠
69։ൃΛ͏·͘ਐΊΔʹ ࢼߦࡨޡͷճΛ૿͢
ࢼߦࡨޡͷճΛ࠷େԽ • #$ͷ։ൃϓϩηεͦͷ࠷దԽͷ݁Ռ – ϦʔϯɺΞδϟΠϧ։ൃɺ$*ɺ$%ɺ %FW0QTŋŋŋ
ͳͥϦϦʔεසΛ্͛Δͷ͔ h"p://www.gaku.net/ukki/なぜリリース頻度を上げるのか
None
None
5IF$POTVNFSJ[BUJPO0G*5
ϞόΠϧΞϓϦ։ൃͷ࣮ࡍ
ελʔτΞοϓॳظ͔Β6*։ൃ ʹྗΛೖΕ͍ͯΔ 1BUI 4NBSU/FXT
ͳͥͳΒ • ͦͦ69͕Α͘ͳ͍ͱϢʔβʔʹͬ ͯΒ͑ͳ͍͔Β • 6*ͷ࣮ίετ͕ߴ͍ͷͰɺॳظʹίϯ ηϓτΛ͔ͬ͠ΓݻΊ͍ͨ
ࢴͰֆΛॻ͘ 『はてブiPhone・Androidアプリの開発プロセス – ninjinkun's diary』 h"p://ninjinkun.hatenablog.com/entry/20110213/1297586340
ϖʔύʔϓϩτλΠϐϯά
101 ϖʔύʔϓϩτλΠϐϯά༻ΞϓϦ
'MJOUPɺ'JMF4RVBSFFUD
6*࡞ʹ͋ͨͬͯ • 6*ίϯϙʔωϯτͷύλʔ ϯΛ͓ͬͯ͘͜ͱ͕େ – Ͳ͏ͬͯ 㱺ޙड़ • ΨΠυϥΠϯඞಡ – J04ώϡʔϚϯΠϯλʔϑΣΠ
εΨΠυϥΠϯ – %FTJHOc"OESPJE %FWFMPQFST ʰεϚʔτϑΥϯͷͨΊͷ6*σβΠϯʱ ా࢘
6*,JU'SBNFXPSL
6*,JUͷ੍ • ૉʹै͏ͱJ04Β͍͠69ʹ্͕ΔΑ ͏ʹͳ͍ͬͯΔ – ྫը໘ભҠ"1*ͳͲࢥ͍ͬͯΔΑΓͣͬͱબ ࢶ͕গͳ͍ • pushViewController:animated: •
presentViewController:animated:completion : – ྫ: ϘλϯΛஔ͚Δॴܾ·͍ͬͯΔ
ͭ·Γŋŋŋ • ࣮Λߦ͍ͬͯΔϓϩάϥϚɺJ04ͷ6* ͕Ͳ͏͋Δ͖͔ΛΑ͍ͬͯ͘Δ • ϑϨʔϜϫʔΫͷཧղͳ͠ʹ6*ઃܭΛߦ ͏ͷԕճΓ
ۙͷ#$։ൃͷ • ʮϑϩϯτΤϯυ։ൃऀʯ – ϑϩϯτΤϯυ։ൃऀσβΠφͰ͋Δ͜ͱ h"p://www.theguardian.com/help/insideguardian/2009/sep/28/blogpost
1VMM3FRVFTU։ൃͱ6* ը໘ઃܭͷऀʹ։ൃϦςϥγ͕͋Ε (JUIVCͰͷίϥϘϨʔγϣϯ͕Մೳ
J04"OESPJE։ൃͷམͱ݀͠ ʮ"OESPJE൛J04൛ͱಉ͡σ βΠϯͰΑΖ͘͠ʂʯ
J04 • ը໘ભҠΞϓϦͷதͰجຊ݁͢Δ • ଞΞϓϦͱͷ࿈ܞ࠷ݶ
"OESPJE • ෦ભҠͱଞΞϓϦͷભҠ͕֓೦্ಉҰ • Σϒϒϥβͷߟ͑ํʹ͍ۙ – όοΫΩʔԿͷͨΊʹ͋Δʁ
6*ͷࠜຊͷࢥ͕ҧ͏ • J04ͱ"OESPJEͦΕͧΕ։ൃ͢Δํ ͕݁Ռతʹۙಓ • ϫϯιʔεɾΫϩεϓϥοτϑΥʔϜࠔ ͳಓ – ͨͩ͠ɺ6*ϑϨʔϜϫʔΫΛΘͳ͍։ൃ ྫ֎ ྫωΠςΟϒήʔϜ
)5.-Ͱ͍ͭΔͷ ࠓͰŋŋŋͳ͍
• 8FCϖʔδతͳͷ0, – ैདྷͷ8FC։ൃͱ΄΅มΘΒͳ͍ • ωΠςΟϒΞϓϦͷΑ͏ͳ )5.-ΞϓϦࠔͳಓ – &NCFEEFE8FC7JFXTͳͲ͍Ζ͍ΖΞϓϩʔν͋Δͷ ͷɺָܾͯ͠Ͱͳ͍
ϞόΠϧ։ൃͱ044 $PDPB1PETੵۃతʹར༻
$PDPB1PET • 3VCZͷHFNɺ1FSMͷ$1"/ • #VOEMFSͷΑ͏ͳґଘཧɺόʔδϣϯݻఆͷΈ # Podfile platform :ios,
'6.1' pod 'JSONKit' pod 'AFNetworking', '~> 1.3'
(JUIVCͱ044
$PDPB$POUSPMT
ΫϥυͱϞόΠϧ • *BB41BB4ɺ.#BB4ɺ4BB4 – ੵۃతʹ͍ͬͯ͘ – ੵۃతʹ͍ɺ։ൃαΠΫϧΛΊΔ • "1*ϑΝʔετ – όοΫΤϯυϑϩϯτΤϯυͷ୲ – ۀϩδοΫ"1*ͰΫϥυଆͰɻ6*Λ ΞϓϦͰ
όοΫΤϯυ*BB41BBT #$ͷ৽ن։ൃͰͨΓલ )FSPLV "84
ͳͥΫϥυʁ • ΠϯϑϥͷೲظΛॖΊ͍ͨ • %FW0QT͍ͨ͠ – #$ϞόΠϧ։ൃʹ͓͍ͯͪ͜Βͷཁ – ΠϯϑϥΛࣗಈԽ͠ɺࢼߦࡨޡճΛ૿͢
ϞόΠϧ#BB4 1BSTFDPN
.#BB4ͷఏڙ͢Δͷ • Ϣʔβొɾཧɾೝূ • ϝοηʔδϯά ϓογϡ௨ • ΫϥυετϨʔδ –
ϑΝΠϧετϨʔδ – ΦϒδΣΫτετϨʔδ • Ϋϥυ্Ͱͷܭࢉॲཧ • ՝ۚ *O"QQ1VSDITF • ར༻ੳ • ҐஔใɺιʔγϟϧͳͲͷίϯςΩετ
1BSTFJ044%, ίʔυ3VCZ.PUJPO # Push Notification を有効に # ParseのKVS
に deviceToken ó user_id のマッピングを保持 PFInstallation.currentInstallation.tap do |i| i.setDeviceTokenFromData deviceToken i.setObject @user_id, forKey:"owner" i.saveInBackground end
1BSTF3&45"1* # REST API で、push通知を端末に送るよう Parse に指令 curl -‐X
POST \ -‐H "X-‐Parse-‐Application-‐Id: "..." \ -‐H "X-‐Parse-‐REST-‐API-‐Key: "..." \ -‐H "Content-‐Type: application/json" \ -‐d '{ "data": { "where": { "owner": "naoya" } "alert": "Hello, World!" } }' \ https://api.parse.com/1/push ϓογϡ௨ʹ·ͭΘΔ໘ͳՕॴΫϥυଆͰͬͯ͘ ΕΔ ྫ"1/αʔόͱͷଓҡ࣋
"NB[PO4/4 • "84ͷϓογϡ௨αʔϏε • .#BB4΄Ͳͷػೳॊೈ͞ͳ͍͕ͱʹ ͔͍҆͘ – 64%ສ"1*ϦΫΤετ – .#BB4ΦϒδΣΫτετϨʔδ4%,ͱ ͷ࿈ܞ͕ڧΈ •
ࠓޙ"84͕#BB4తׂ୲͏
ϞόΠϧ#BB4ͷ࣮ࡍ • શͯΛ#BB4͕͏Θ͚Ͱͳ͍ – *BB41BB4ͱ͍͚ͳ͕Βɺ#BB4͕ಘҙ ͱ͢Δͱ͜ΖΛ୲ͤ͞Δͷ͕٢ 『モバイルBaaSの概観と最新動向 (2013/6/7)』 by Shnichi Tomita
h"p://www.slideshare.net/shinichitomita/mobile-‐baaslatest
)FMJPTCZ)FSPLV
։ൃΛॿ͚Δ4BB4 • ͲΜͲΜ͍ͬͯ͘ – 5FTU'MJHIUςετΞϓϦͷνʔϜͷ – #VH4FOTFΫϥογϡϨϙʔτ – /FX3FMJDϞχλϦϯά –
5SBWJT$*ܧଓతΠϯςάϨʔγϣϯ #VH4FOTF
ָͰ͖Δͱ͜ΖָΛ͢Δ ָͨͩ͠͠Ͳ͜ΖΛؒҧΘͳ͍
ʮ"OESPJE൛J04൛ͱಉ͡σ βΠϯͰΑΖ͘͠ʂʯ
·ͱΊ • #$ΞϓϦ։ൃͷϓϥΫςΟεΛհ • ैདྷ։ൃΑΓ69։ൃʹϦιʔεΛׂ͘ • ։ൃϓϩηεΠϯϑϥͷѻ͍Λચ࿅ͤ͞Δ͜ͱ ͰࢼߦࡨޡճΛ૿͢ – ݁Ռɺ6*։ൃͷϦιʔε֬อٴͼධՁ͕ॊೈʹͳΔ
• 044ΫϥυΛ࠷େݶ׆༻ • ͨͩ͠ɺָΛ͢ΔՕॴਖ਼͘͠ݟۃΊΔ – ΞϓϦૉʹɺී௨ͷΓํͰ࡞Δ – ʮָͦ͏͔ͩΒʯͱ͍͏ཧ༝͚ͩͰϫϯιʔε )5.-ࣗಈੜͳͲ͍ٻΊͳ͍ – पลڥʮڊਓͷݞͷ্ʯʹΔ