Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
B2Cモバイル開発のいまとこれから #forcedotcomjp
Search
Naoya Ito
September 06, 2013
Technology
54
8.1k
B2Cモバイル開発のいまとこれから #forcedotcomjp
Salesforce Developer Conference Tokyo 2013 での発表資料
Naoya Ito
September 06, 2013
Tweet
Share
More Decks by Naoya Ito
See All by Naoya Ito
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
21
6.9k
Functional TypeScript
naoya
17
6.5k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
75
36k
シェルの履歴とイクンリメンタル検索を使う
naoya
16
6.4k
20230227-engineer-type-talk.pdf
naoya
91
78k
関数型プログラミングと型システムのメンタルモデル
naoya
63
110k
TypeScript による GraphQL バックエンド開発
naoya
29
36k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
67
24k
「問題から目を背けず取り組む」 一休の開発チームが6年間で学んだこと
naoya
144
60k
Other Decks in Technology
See All in Technology
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.2k
AS59105におけるFreeBSD EtherIPの運用と課題
x86taka
0
310
Symfony AI in Action
el_stoffel
1
190
命名から始めるSpec Driven
kuruwic
1
640
mablでリグレッションテストをデイリー実行するまで #mablExperience
bengo4com
0
430
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
45k
マルチドライブアーキテクチャ: 複数の駆動力でプロダクトを前進させる
knih
0
12k
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
21k
学術的根拠から読み解くNotebookLMの音声活用法
shukob
0
500
TypeScript×CASLでつくるSaaSの認可 / Authz with CASL
saka2jp
2
160
SRE視点で振り返るメルカリのアーキテクチャ変遷と普遍的な考え
foostan
2
2.9k
IaC を使いたくないけどポリシー管理をどうにかしたい
kazzpapa3
1
180
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
140
7.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Building Applications with DynamoDB
mza
96
6.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Designing for humans not robots
tammielis
254
26k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
We Have a Design System, Now What?
morganepeng
54
7.9k
Become a Pro
speakerdeck
PRO
30
5.6k
Designing Experiences People Love
moore
142
24k
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.-ࣗಈੜͳͲ͍ٻΊͳ͍ – पลڥʮڊਓͷݞͷ্ʯʹΔ