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

Swift Programming in Japanese

Swift Programming in Japanese

In Swift, you can define identifiers not only in English but also in various natural languages.
Recently, I released a Shogi app for all Apple platforms, including Apple Vision Pro. In this app, I wrote almost all identifiers in Japanese—except for reserved words and imported frameworks.
In this talk, I'll share insights from my experience with Swift programming using Japanese identifiers.

Avatar for FlipByBlink

FlipByBlink

April 10, 2025
Tweet

Other Decks in Programming

Transcript

  1. l4XJGUQSPHSBNNJOHJO+BQBOFTFz w 4XJGUTPVSDF fi MFTBSFFODPEFEJO65' w 4XJGUJTEFTJHOFEUPBMMPXOPO&OHMJTIJEFOUJ fi FST w

    3FTFSWFEXPSETBOEGSBNFXPSLJEFOUJ fi FSTSFNBJOJO&OHMJTI w 6TJOH+BQBOFTFGPSOBNJOHJEFOUJ fi FST
  2. 1SFNJTFPGUIJTUBML w .BD w 9DPEF w 4XJGU w "QQMF`TEFWFMPQNFOUUPPMTBOEGSBNFXPSLTPOMZ w

    /PTQFDJBMUPPMTBOEDPO fi HT w #BTFEPOTQFBLFS`TQFSTPOBMFYQFSJFODF
  3. Out of Scope for This Talk • Advantages and disadvantages

    of non-English speakers using their native language for programming. • Whether non-English speakers should program in English.
  4. )JSBHBOBDIBSBDUFST ͋ ͍ ͏ ͑ ͓  ͔ ͖ ͘

    ͚ ͜  ͞ ͠ ͢ ͤ ͦ  ͨ ͪ ͭ ͯ ͱ  ͳ ʹ ͵ Ͷ ͷ  ͸ ͻ ; ΁ ΄  · Έ Ή Ί ΋  ΍ ɹ Ώ ɹ Α  Β Γ Δ Ε Ζ  Θ ɹ Λ ɹ Μ 5IFNPTUCBTJDUZQFTPG+BQBOFTFDIBSBDUFST
  5. Ξ Π ΢ Τ Φ  Χ Ω Ϋ έ

    ί  α γ ε η ι  λ ν π ς τ  φ χ ψ ω ϊ  ϋ ώ ϑ ϔ ϗ  Ϛ ϛ Ϝ ϝ Ϟ  Ϡ ɹ Ϣ ɹ Ϥ  ϥ Ϧ ϧ Ϩ ϩ  ϫ ɹ Ϯ ɹ ϯ ,BUBLBOBDIBSBDUFST 4JNJMBSJOVTBHFUPJUBMJDGPOUTJO&OHMJTI
  6. $IJOFTFDIBSBDUFSTBEPQUFEJOUP+BQBOFTFXSJUJOHTZTUFN Ұ ӈ Ӎ ԁ Ԧ Ի Լ Ր Ֆ

    ֋ ֶ ؾ ۝ ٳ ۄ ۚ ۭ ݄ ݘ ݟ ޒ ޱ ߍ ࠨ ࡾ ࢁ ࢠ ࢛ ࢳ ࣈ ࣖ ࣣ ं ख े ग़ ঁ খ ্ ৿ ਓ ਫ ਖ਼ ੜ ੨ ༦ ੴ ੺ ઍ ઒ ઌ ૣ ૲ ଍ ଜ େ உ ஛ த ஬ ொ ఱ ా ౔ ೋ ೔ ೖ ೥ ന ീ ඦ จ ໦ ຊ ໊ ໨ ཱ ྗ ྛ ࿡ ,BOKJDIBSBDUFST
  7. ɻ ɺ ʔ ~ ~ ʍ ʎ ʋ ʌ ʑ

    ʒ ʃ ʄ ɾ 㽍 ˇ ʢ ʣ ˋ ˍ ʮ ʯ ʰ ʱ ʲ ʳ ʂ ʁ ˞ Š ⋯ ʏ 4ZNCPMDIBSBDUFST
  8. w JOWBMJEDIBSBDUFST w $PNNBBOE1FSJPE w #SBDLFUT w 4ZNCPMTXSJUUFOBUUIFCFHJOOJOHPSFOE PGBTFOUFODF w

    5IFTFBSFHFOFSBMMZVOOFDFTTBSZGPS JEFOUJ fi FST *OWBMJE+BQBOFTFTZNCPMT ɻ *EFPHSBQIJD'VMM4UPQ ɺ *EFPHSBQIJD$PNNB ʮ -FGU$PSOFS#SBDLFU ʯ 3JHIU$PSOFS#SBDLFU ʰ -FGU8IJUF$PSOFS#SBDLFU ʱ 3JHIU8IJUF$PSOFS#SBDLFU ʲ -FGU#MBDL-FOUJDVMBS#SBDLFU ʳ 3JHIU#MBDL-FOUJDVMBS#SBDLFU ˞ 3FGFSFODF.BSL ⋯ .JEMJOF)PSJ[POUBM&MMJQTJT ʏ %JUUP.BSL Š &N%BTI* not prolonged sound mark ~ 8BWF%BTI* FullWidth-Tilde is valid
  9. B C D E F G H I J K

    L M N O P Q R S T U V W X Y Z [  " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; "MQIBCFUDIBSBDUFST ✔"MM0,
  10.          

    "SBCJDOVNFSBMTDIBSBDUFST ✔"MM0,
  11. +BQBOFTFDIBSBDUFST DBUFHPSZ DPVOU ✔ )JSBHBOB  ✔ ,BUBLBOB  ✔

    ,BOKJ  4ZNCPM  ✔ "MQIBCFU  ✔ "SBCJDOVNFSBMT  ✔ $PNCJOJOHDIBSBDUFS 
  12. +BQBOFTFDIBSBDUFST 3BSFMZVTFEJOQSBDUJDF * roughly estimation DBUFHPSZ DPVOU ✔ )JSBHBOB 

    and  ✔ ,BUBLBOB  and  ✔ ,BOKJ  and  4ZNCPM  and  ✔ "MQIBCFU  and  ✔ "SBCJDOVNFSBMT  and  ✔ $PNCJOJOHDIBSBDUFS 
  13. +BQBOFTFDIBSBDUFST "MNPTUBMM+BQBOFTF DIBSBDUFSTBSFWBMJE *OWBMJEDIBSBDUFSTBSF POMZTPNFTZNCPMT UPUBM  DBUFHPSZ DPVOU ✔

    )JSBHBOB  and  ✔ ,BUBLBOB  and  ✔ ,BOKJ  and  4ZNCPM  and  ✔ "MQIBCFU  and  ✔ "SBCJDOVNFSBMT  and  ✔ $PNCJOJOHDIBSBDUFS 
  14. w #VHHZ  w *TUIFCFIBWJPSEJ ff FSFOUJO&OHMJTI  w 1FSGPSNBODFESPQ

    /PQSPCMFN %PFT4XJGUDPNQJMFSCVJMEQSPQFSMZ
  15. w %PFTJUGVODUJPOQSPQFSMZBT+BQBOFTFUFYUFEJUPS  w %PTVHHFTUJPOTBOEPUIFSGFBUVSFTXPSLTNPPUIMZ  w *TUIFSFBOZDPO fl JDUXJUI+BQBOFTF*.&DPOWFSTJPO

     w %PFTJUEJTQMBZ+BQBOFTFGPOUDPSSFDUMZ  w 8PO`UHBSCMFEUFYUPDDVS  w 8PO`UJUBDDJEFOUBMMZEJTQMBZ$IJOFTFTUZMFGPOUEFTJHO  w "SF fi MFOBNFTIBOEMFEQSPQFSMZ  w *TCVJMUJO(JUJO9DPEFBMTPXPSLJOH fi OF %PFT9DPEFXPSLQSPQFSMZ /PQSPCMFN
  16. 6TJOH+BQBOFTFPVUTJEFPG4XJGUDBOCFSJTLZ w 9DPEFQSPKFDUOBNF w #VOEMF*EFOUJ fi FS w /BNFPG'JMF 'PMEFS

    PS5BSHFU * Only when using third-party development tools w 63- w $PEBCMF * Only when decoding the data with other tools
  17. As an aside w 5PQQBHF w 'FBUVSFQBHF "QQMFUSBOTMBUFTNVDIPGP ff i

    DJBMJOGPSNBUJPOGPSEFWFMPQFSTJOUP+BQBOFTF
  18. As an aside w 5PQQBHF w 'FBUVSFQBHF w /FXT "QQMFUSBOTMBUFTNVDIPGP

    ff i DJBMJOGPSNBUJPOGPSEFWFMPQFSTJOUP+BQBOFTF
  19. As an aside w 5PQQBHF w 'FBUVSFQBHF w /FXT w

    7JEFP UJUMF EFTDSJQUJPO TVCUJUMFT "QQMFUSBOTMBUFTNVDIPGP ff i DJBMJOGPSNBUJPOGPSEFWFMPQFSTJOUP+BQBOFTF
  20. w 5PQQBHF w 'FBUVSFQBHF w /FXT w 7JEFP UJUMF EFTDSJQUJPO

    TVCUJUMFT  w )VNBO*OUFSGBDF(VJEFMJOFT As an aside "QQMFUSBOTMBUFTNVDIPGP ff i DJBMJOGPSNBUJPOGPSEFWFMPQFSTJOUP+BQBOFTF
  21. w 5PQQBHF w 'FBUVSFQBHF w /FXT w 7JEFP UJUMF EFTDSJQUJPO

    TVCUJUMFT  w )VNBO*OUFSGBDF(VJEFMJOFT As an aside These provide strong support for Japanese speakers, especially in keeping up with OS updates + new devices. "QQMFUSBOTMBUFTNVDIPGP ff i DJBMJOGPSNBUJPOGPSEFWFMPQFSTJOUP+BQBOFTF
  22. As an aside w 5PQQBHF w 'FBUVSFQBHF w /FXT w

    7JEFP UJUMF EFTDSJQUJPO TVCUJUMFT  w )VNBO*OUFSGBDF(VJEFMJOFT /PUSBOTMBUJPO w developer.apple.com/documentation "1*3FGFSFODF 4BNQMFDPEF "SUJDMF FUD * mostly w 5VUPSJBMTFSJFT w 9DPEF`T6* "QQMFUSBOTMBUFTNVDIPGP ff i DJBMJOGPSNBUJPOGPSEFWFMPQFSTJOUP+BQBOFTF
  23. As an aside As an aside (2) 5IF4XJGU1SPHSBNNJOH-BOHVBHF ೔ຊޠ൛ 

    www.swiftlangjp.com 7PMVOUFFSUSBOTMBUFE+BQBOFTFWFSTJPO PGUIFP ffi DJBM4XJGUMBOHVBHFSFGFSFODF w 5PQQBHF w 'FBUVSFQBHF w /FXT w 7JEFP UJUMF EFTDSJQUJPO TVCUJUMFT  w )VNBO*OUFSGBDF(VJEFMJOFT /PUSBOTMBUJPO w developer.apple.com/documentation "1*3FGFSFODF 4BNQMFDPEF "SUJDMF FUD * mostly w 5VUPSJBMTFSJFT w 9DPEF`T6* "QQMFUSBOTMBUFTNVDIPGP ff i DJBMJOGPSNBUJPOGPSEFWFMPQFSTJOUP+BQBOFTF
  24. 3FRVFTUUP /PUIJOH 4XJGUBOE9DPEF No need to be changed into Japanese:


    Reserved words, Framework identi fi ers, Xcode’s UI