$30 off During Our Annual Pro Sale. View Details »

Swift プロトコル指向なCのラッパーを作る

Swift プロトコル指向なCのラッパーを作る

Yusuke Ito

April 21, 2016
Tweet

More Decks by Yusuke Ito

Other Decks in Programming

Transcript

  1. $PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE
    4XJGUϓϩτίϧࢦ޲ͳ
    $ͷϥούʔΛ࡞Δ
    ϦʔυΞʔΩςΫτ

    ҏ౻༞ี :VTVLF*UP
    !OPWJ@
    നϠΪίʔϙϨʔγϣϯ
    5PLZP4FSWFS4JEF4XJGU.FFUVQ


    View Slide

  2. $PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE

    View Slide

  3. ΄͔े਺ࣾ
    ΧϝϦΦͷΞϧΰϦζϜΛαʔϏεͱͯ͠"1*ఏڙ

    View Slide

  4. $PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE
    αʔόʔαΠυ
    4XJGUΤϯδχΞืूதʂ

    ΋ͪΖΜɺJ04ɾ"OESPJE΋

    View Slide

  5. $PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE
    $PSF"VEJP
    w J04.BD -JOVYͰ͸࢖͑ͳ͍͕ʜ
    ༻ͷԻ੠ॲཧɾ
    ϋʔυ΢ΣΞ੍ޚ༻ͷ"1*
    w ݁ߏݹͯ͘.BD049ʙɺJ1IPOF04ܥʙ
    w "1*͸$ݴޠ
    w ࠓ͸"7'PVOEBUJPOܥΛ࢖͏͜ͱ͕ଟ͍ͷͰ௚઀ୟ
    ͘͜ͱ͸গͳ͍͔΋

    View Slide

  6. $PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE
    ྫΦʔσΟΦσόΠεҰཡ
    Λऔಘ
    w $PSF"VEJPͷ)"- )BSEXBSF"CTUSBDUJPO
    -BZFS
    Λ࢖༻
    w (JTUOPWJEFWJDFTD IUUQTHJTUHJUIVCDPN
    OPWJ

    w ՕॴͰ΋Կ͔ؒҧ͑ΔͱɺΤϥʔɾ஋͕ฦͬͯ͜
    ͳ͍ɾམͪΔͷͰ ࠓͱͳͬͯ͸
    ͭΒ͍

    View Slide

  7. $PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE
    ೖग़ྗ੍ޚͷ"1*
    w "VEJP0CKFDU(FU1SPQFSUZ%BUB

    σόΠεɾετϦʔϜͳͲͷϓϩύςΟΛऔಘ
    w "VEJP0CKFDU4FU1SPQFSUZ%BUB

    ಉϓϩύςΟΛઃఆ

    View Slide

  8. $PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE
    ϓϩύςΟͱܕ

    ϓϩύςΟ ఆ਺
    ϓϩύςΟ ಺༰
    ର৅ ܕ
    L"VEJP)BSEXBSF1SPQFS
    UZ%FWJDFT
    ઀ଓ͞Ε͍ͯΔ

    σόΠε

    "VEJP%FWJDF*%
    6*OU

    L"VEJP%FWJDF1SPQFSUZ
    %FWJDF/BNF$'4USJOH
    σόΠεͷ໊લ "VEJP%FWJDF*% $'4USJOH3FG
    L"VEJP%FWJDF1SPQFSUZ
    7PMVNF4DBMBS
    ݱࡏͷԻྔ "VEJP%FWJDF*% 'MPBU
    L"VEJP%FWJDF1SPQFSUZ
    4USFBNT
    σόΠεͷ͍࣋ͬͯΔ
    ετϦʔϜ
    "VEJP%FWJDF*% "VEJP4USFBN*%
    L"VEJP4USFBN1SPQFSUZ
    1IZTJDBM'PSNBU
    ରԠ͍ͯ͠Δप೾਺ɾ
    Ϗοτਂ౓
    "VEJP4USFBN*%
    "VEJP4USFBN#BTJD%
    FTDSJQUJPO

    View Slide

  9. $PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE
    ϓϩύςΟͱܕ
    w ೖྗ ϓϩύςΟ
    ͷఆ਺͕ܾ·Ε͹ɺग़ྗͷܕ΋ࣗ
    ಈతʹܾ·Δ (FUͷ΄͏

    w 4XJGUͰ͸ೖྗͷܕʹରԠ͢Δग़ྗͷܕͱͯ͠දݱ
    Ͱ͖Δɻ 1SPUPDPMͷBTTPDJBUFEUZQF

    w "1*,JUͳͲͰ΋ಉ͡ߟ͑ํ 3FRVFTUͷܕ͕ܾ·Ε
    ͹3FTQPOTFͷܕ͕ܾ·Δ


    View Slide

  10. $PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE
    )"-"VEJP
    w IUUQTHJUIVCDPNOPWJ)"-"VEJP
    w $PSF"VEJPͷ)"-Λ4XJGU͔Β؆୯ʹ҆શʹ࢖͑ΔΑ͏ʹ͢Δ
    w ೖྗͷܕ ϓϩτίϧ

    "VEJP0CKFDU1SPQFSUZ"EESFTT5ZQF
    w ग़ྗͷܕ ϓϩτίϧ

    "VEJP0CKFDU1SPQFSUZ5ZQF
    w ΤϥʔϋϯυϦϯά͸USZDBUDI

    View Slide

  11. $PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE
    GVODHFU5"VEJP0CKFDU1SPQFSUZ"EESFTT5ZQF BEES5
    UISPXT

    <51SPQFSUZ5ZQF>\ʜ^
    QSPUPDPM"VEJP0CKFDU1SPQFSUZ5ZQF\^
    FYUFOTJPO6*OU"VEJP0CKFDU1SPQFSUZ5ZQF\^
    QSPUPDPM"VEJP0CKFDU1SPQFSUZ"EESFTT5ZQF\
    BTTPDJBUFEUZQF1SPQFSUZ5ZQF"VEJP0CKFDU1SPQFSUZ5ZQF
    ^
    ϓϩτίϧ্Ͱͷදݱ

    QSPUPDPMͱGVODͷ੍໿ DPOTUSBJOUT
    Λ࢖ͬͯදݱ͢Δ
    GVODTFU5"VEJP0CKFDU1SPQFSUZ"EESFTT5ZQF WBMVFT
    <51SPQFSUZ5ZQF> BEES5
    UISPXT7PJE\ʜ^

    View Slide

  12. $PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE
    EFNP

    View Slide

  13. $PQZSJHIU4IJSPZBHJ$PSQPSBUJPO"MMSJHIUTSFTFSWFE
    ϓϩτίϧͷ৔߹ͷ੍໿
    w ίϯετϥΫλͷ͋Δܕ ΠϯελϯεԽՄೳͳܕɾ
    DMBTT TUSVDU FOVN
    ΛҰ࿈ͷ੍໿ͷதʹೖΕΔ͜
    ͱ͕Ͱ͖ͳ͍ɻ

    ٯʹɺϥούʔଆ͸࣮ࡍͷܕͷఆ͕ٛແ͍ͷͰɺΞ
    ϓϦέʔγϣϯଆͰͲΜͳܕͰ΋ TUSVDUͰ΋ DMBTT
    Ͱ΋
    ࢖͏͜ͱ͕Ͱ͖Δͷ͕ϝϦοτɻ
    w ϓϩτίϧࣗମʹ஋͸࣋ͨͤΒΕͳ͍ DPNQVUFE
    QSPQFSUZͳΒՄೳ


    View Slide