Upgrade to Pro — share decks privately, control downloads, hide ads and more …

あなたの知らない連絡先の世界

coe
September 19, 2020

 あなたの知らない連絡先の世界

「iOSから連絡先をサーバーに同期させたい」
用件を受け、iOSにはContact APIがあるから楽勝でしょ、と思ったあなた。
しかしながら連絡先の構造はそんなに簡単なものではありません。
ミドルネーム?Suffix?振り仮名?旧姓?
そんなハマりやすい連絡先処理の説明やVCard変換など、
サーバーのテーブル設計にも役立つiOSのContact APIについてお話しします。
(Androidの連絡先にも若干触れる可能性あり)

iOSDC 2020

coe

September 19, 2020
Tweet

More Decks by coe

Other Decks in Technology

Transcript

  1. ి࿩൪߸ w ·Ͱͷ਺ࣈ w ελʔϚʔΫ ˌ Ҫܻ  w 

    w ιϑτϙʔζ  ϋʔυϙʔζ  w ΞϧϑΝϕοτ
  2. ॅॴɺి࿩൪߸ɺϝʔϧΞυϨε ੏ ໊ ॅॴ ి࿩൪߸  ϝʔϧΞ υϨε ॅॴ ʜ

    ॅॴɺి࿩൪߸ɺϝʔϧΞυϨεΛෳ਺ҰϨίʔυʹ࣋ͨͳ͖Ό͍͚ͳ͘ͳΔ
  3. J04ͷ࿈བྷઌߏ଄ w $/$POUBDU $/.VUBCMF$POUBDU  w /BNF w 8PSL w

    "EESFTT w 1IPOF w 4PDJBM1SPpMFT w #JSUIEBZ w /PUFT w *NBHFT w /PUFT w 3FMBUJPOTIJQ
  4. $/$POUBDU/BNF w OBNF1SFpY w HJWFO/BNF w NJEEMF/BNF w GBNJMZ/BNF w

    QSFWJPVT'BNJMZ/BNF w OBNF4V⒏Y w OJDLOBNF w QIPOFUJD(JWFO/BNF w QIPOFUJD.JEEMF/BNF w QIPOFUJD'BNJMZ/BNF ͍ͣΕͷཁૉ΋ɺҰͭͷ࿈བྷઌʹ͖ͭҰ͔ͭ࣋ͯ͠ͳ͍
  5. $/$POUBDU8PSL w KPC5JUMF w ໾৬ w EFQBSUNFOU/BNF w ෦ॺ w

    PSHBOJ[BUJPO/BNF w ձࣾ w QIPOFUJD0SHBOJ[BUJPO/BNF w ձ໊ࣾʢϑϦΨφʣ ͍ͣΕͷཁૉ΋ɺҰͭͷ࿈བྷઌʹ͖ͭҰ͔ͭ࣋ͯ͠ͳ͍
  6. $/$POUBDU"EESFTTFT w QPTUBM"EESFTTFT w ॅॴ w ϥϕϧ w FNBJM"EESFTTFT w

    ϝʔϧΞυϨε w ϥϕϧ w VSM"EESFTTFT w 63- w ϥϕϧ ͍ͣΕͷཁૉ΋ɺෳ਺࣋ͭ͜ͱ͕Ͱ͖Δ ·ͨɺϥϕϧΛ࣋ͭ͜ͱ͕Ͱ͖Δ
  7. "EESFTTFT w TUSFFU w Ҏ߱ͷॅॴ w DJUZ w ܊ࢢ۠ொଜ w

    TUBUF w ౎ಓ෎ݝ w QPTUBM$PEF w ༣ศ൪߸ w DPVOUSZ w ࠃ໊ ॅॴ͸୯ҰͷཁૉͰߏ੒͞Ε͍ͯΔΘ͚Ͱ͸ͳ͍ ͦΕͧΕͷཁૉͰΧϥϜΛ༻ҙ͢Δඞཁ͕͋Δ
  8. J04ͷ࿈བྷઌߏ଄ w $/$POUBDU $/.VUBCMF$POUBDU  w /BNF w 8PSL w

    "EESFTT w 1IPOF w 4PDJBM1SPpMFT w #JSUIEBZ w /PUFT w *NBHFT w /PUFT w 3FMBUJPOTIJQ ಉظ͢Δʢݩʹ໭͢ʣͨΊʹ͸ɺશͯͷσʔλ͕ඞཁ
  9. W$BSE w ిࢠ໊ࢗͷඪ४ن֨ϑΥʔϚοτ w ໊લ͕ͭͷίϯϙʔωϯτʢ1SFpY 'BNJMZOBNF (JWFOOBNF  .JEEMFOBNF 4V⒏Yʣʹ෼͔Ε͍ͯΔͷ΋ɺॅॴ͕ࡉ͔͘෼͔Ε͍ͯ

    Δͷ΋ɺW$BSEͷ࢓༷ʹҰக͢Δ w J04ʹ͸ɺW$BSEೖग़ྗʹରԠͨ͠ඪ४"1*͕͋Δ w J04͸ɺඪ४ن֨ʹఴͬͨϑΥʔϚοτͰ࿈བྷઌΛߏ੒͍ͯ͠Δ
  10. $/$POUBDU7$BSE4FSJBMJ[BUJPODPOUBDUT XJUI w W$BSE %BUB ͔Β࿈བྷઌ $/$POUBDU Λੜ੒Ͱ͖Δ w J04Ͱੜ੒Ͱ͖ΔW$BSEͷσʔλͷม׵͚ͩͰͳ͘ɺ"OESPJEͳͲͰ

    ੜ੒͞ΕΔͷσʔλ͔Βੜ੒΋Մೳ w "OESPJE͸$POUBDUT$POUSBDU$POUBDUT$0/5&/5@7$"3%@63*ͳ ͲͰW$BSEͷऔಘ͕Մೳ
  11. 1FSTPO/BNF$PNQPOFOUT'PSNBUUFS w QFSTPO/BNF$PNQPOFOUTGBNJMZ/BNFl"QQMFTFFE w QFSTPO/BNF$PNQPOFOUTHJWFO/BNFl+POBUIBO w QFSTPO/BNF$PNQPOFOUTNJEEMF/BNFl.BQMF w QFSTPO/BNF$PNQPOFOUTOBNF1SFpYl%S w

    QFSTPO/BNF$PNQPOFOUTOBNF4V⒏Yl&TRz w QFSTPO/BNF$PNQPOFOUTOJDLOBNF+PIOOZ QFSTPO/BNF$PNQPOFOUT'PSNBUUFSTUZMF %FGBVMU +POBUIBO"QQMFTFFE TIPSU +PIOOZ MPOH %S+POBUIBO.BQMF"QQMFTFFE&TR BCCSFWJBUFE +"
  12. 1FSTPO/BNF$PNQPOFOUT'PSNBUUFS w QFSTPO/BNF$PNQPOFOUTGBNJMZ/BNFl೔޲ w QFSTPO/BNF$PNQPOFOUTHJWFO/BNFlڧ w QFSTPO/BNF$PNQPOFOUTNJEEMF/BNFlφΠεϛυϧ w QFSTPO/BNF$PNQPOFOUTOBNF1SFpYlࡾ୅໨z w

    QFSTPO/BNF$PNQPOFOUTOBNF4V⒏Ylઌੜz w QFSTPO/BNF$PNQPOFOUTOJDLOBNFDP⒎FFHZVOZV QFSTPO/BNF$PNQPOFOUT'PSNBUUFSTUZMF %FGBVMU ೔޲ڧ TIPSU DP⒎FFHZVOZV MPOH ࡾ୅໨೔޲ڧφΠεϛυϧઌੜ BCCSFWJBUFE ೔޲
  13. ࿈བྷઌมߋཤྺͷऔಘ w ࿈བྷઌมߋཤྺΛऔಘ͢ΔͨΊʹ͸ɺ$/$POUBDU4UPSFʹରͯ͠ϦΫΤετ $/$IBOHF)JTUPSZ'FUDI3FRVFTU Λग़͢ඞཁ͕͋Δ w มߋཤྺϦΫΤετΛग़ͨ͢Ίͷ FOVNFSBUPS'PS$IBOHF)JTUPSZ'FUDI3FRVFTUFSSPS͸ɺ0CKFDUJWF$Ͱ ͔͠࢖͑ͳ͍ w

    มߋཤྺϦΫΤετͰऔಘͨ͠$/$IBOHF)JTUPSZ&WFOUʹରͯ͠ BDDFQU @ Λίʔϧ͢Δ͜ͱͰɺࢦఆͨ͠ $/$IBOHF)JTUPSZ&WFOU7JTJUPSͰɺ௥Ճɾมߋɾ࡟আʹରͯ͠ͷॲཧ͕ ߦ͑Δ