Pro Yearly is on sale from $80 to $50! »

縦書きエディタを6プラットフォームで開発してみて / On development of multi-platform text editor for vertical writing

2e72046813bf3dc01173fe54919a6d1d?s=47 cc4966
September 06, 2019

縦書きエディタを6プラットフォームで開発してみて / On development of multi-platform text editor for vertical writing

縦書きエディタを6プラットフォームで開発してみて
iOSDC Japan 2019 2019/09/06 10:50〜 Track E 技術パッション共有トーク(60分)

Windows / macOS / Ubuntu / iOS / Android / UWP向けに縦書きのできるテキストエディタを趣味で開発しています。
小説や脚本などでいまだに根強い需要のある縦書きのテキスト入力を6プラットフォームに提供する唯一のプロダクトを目指しています。
(Windows / macOS / Ubuntu / Androidでリリース済み、iOS版リリース予定、UWP版プロトタイプ完成済み)

このプロダクトでは全プラットフォームで同じ描画結果を手に入れるためにテキスト描画エンジンから自前で作っています。
トークでは文字とコンピュータの関係、縦書きという特殊な書字方式とその裏側の実装、テキストエディタや組版、iOSやAndroidに限らないクロスプラットフォームなアプリ開発について話します。

内容
- テキストを表示するために必要な文字コードとフォントの知識
- コア機能をC++で作る理由
- デスクトップアプリとモバイルアプリを開発するための環境
- デスクトップアプリのテキスト入力とモバイルアプリのテキスト入力
- プラットフォームで千差万別なIMEという特異点
- iOS / Androidの標準TextViewのUIとその縦書きでの再実装

2e72046813bf3dc01173fe54919a6d1d?s=128

cc4966

September 06, 2019
Tweet

Transcript

  1. ॎॻ͖ΤσΟλΛ ϓϥοτϑΥʔϜͰ ։ൃͯ͠Έͯ J04%$+BQBO5SBDL&ʙ ࿡ʑ!@ ˞,FZOPUF ʹ ॎ ॻ ͖

    ͕ ࣮ ૷ ͞ Ε · ͠ ͨ ʂ
  2. ࣗݾ঺հ w ࿡ʑʢΖ͘Ζ͘ʣ w  !@ w ށ੶໊3ZP/POBLB !2

  3. աڈͷൃද w J04%$ʮ6*7JFXͱ6*5FYU*OQVUͰ࡞Δॎॻ͖ͷ 5FYU7JFXʯ w IUUQTTQFBLFSEFDLDPNDDWFSUJDBM UFYUWJFXCBTFEPOVJWJFXXJUIVJUFYUJOQVU !3

  4. աڈͷൃද w %SPJE,BJHJʮθϩ͔Β࣮૷͢Δॎॻ͖5FYU7JFXͱ ͦͷपลٕज़ʯ w IUUQTTQFBLFSEFDLDPNDDWFSUJDBM UFYUWJFXGSPNTDSBUDIBOESFMBUFEUFDIOPMPHJFT !4

  5. झຯ w ςΩετΤσΟλ։ൃ w Ξχϝؑ৆ d࿩ि͘Β͍ɺࠓظ͸࿩ि  w Ξχϝөըؑ৆ dຊ೥͘Β͍

    !5
  6. झຯ w ςΩετΤσΟλ։ൃ w 5"5&EJUPSͱ͍͏ॎॻ͖ΤσΟλΛݸਓ։ൃ w J04"OESPJE൛͸ετΞͰެ։த w NBD048JOEPXT6CVOUV൛͸αΠτͰެ։த w

    681൛͸࡞੒தʢ·ͩϓϩτλΠϓͷΈʣ w IUUQTXXXDDOFU w ։ൃɺӡӦɺαϙʔτɺσβΠϯΛશ෦΍ͬͯΔ !6
  7. झຯ w 5"5&EJUPSͱ͸ w ϧϏ͕ৼΕΔ ;Γ͕ͳ w 1%'Λग़ྗͰ͖Δ w ϖʔδදࣔͰ͖ΔʢσεΫτοϓ൛ͷΈʣ

    !7
  8. ϦϦʔε͠·ͨ͠ w 5"5&EJUPSGPSJ04 w ϦϦʔε w 5"5&EJUPSGPS"OESPJE w ϦϦʔε !8

  9. ςΩετΤσΟλ։ൃ w ͦ΋ͦ΋ͳͥ։ൃ͍ͯ͠Δͷ͔ w ೥ࠒɺখઆ޷͖͕ߴͯ͡খઆΛॻ͍ͨΓ͍ͯͨ͠ w 6OJDPEFΛѻ͑Δແྉͷॎॻ͖ΤσΟλ͕ͳ͔ͬͨ w ࠓ͸খઆΛॻ͘ਓ͕૿͑Δॿ͚ʹͳΕ͹͍͍ͳ͋ͱ͍ ͏ࢥ͍Ͱ։ൃ

    !9
  10. ࠓճ࿩͍ͨ͜͠ͱ w ٕज़ύογϣϯڞ༗τʔΫͱ͍͏͜ͱͰʜʜ w ೥ॎॻ͖ΤσΟλΛͲ͏։ൃ͖͔ͯͨ͠ w σεΫτοϓ͔ΒϞόΠϧʹͲ͏Ҡߦ͔ͨ͠ w ॎॻ͖ΤσΟλ։ൃʹඞཁͳ৘ใΛ͍͍ͩͨશ෦ w

    ΰʔϧ w ςΩετΤσΟλ͕04ඪ४Ͱଘࡏ͢Δ͜ͱʹײँ͢Δ w ॎॻ͖ΤσΟλΛ࡞ΔͨΊʹඞཁͳཁ݅Λڞ༗͢Δ !10
  11. Ξ΢τϥΠϯ  ൃදλΠτϧʹ͍ͭͯ  ॎॻ͖ΤσΟλΛ࡞Δ  σεΫτοϓͱϞόΠϧ  ·ͱΊ !11

    JPTEDF࣭໰Ͱ ࣭໰πΠʔτͯ͠΋Β͑Δͱ ޙͰҾ༻πΠʔτͰճ౴͠·͢
  12. ॎॻ͖ΤσΟλΛ ϓϥοτϑΥʔϜͰ ։ൃͯ͠Έͯ

  13. ʮॎॻ͖ΤσΟλʯΛ ʮϓϥοτϑΥʔϜʯͰ ʮ։ൃʯͯ͠Έͯ

  14. ʮॎॻ͖ΤσΟλʯΛ ʮϓϥοτϑΥʔϜʯͰ ʮ։ൃʯͯ͠Έͯ

  15. ॎ ॻ ͖ Τ σ ỹ λ w ॎ ॻ

    ͖ ͕ Ͱ ͖ Δ ς Ω ε τ Τ σ ỹ λ !15
  16. ॎॻ͖ w ॎ ॻ ͖ ͷ ༻ ్  w

    খ આ  w ٭ ຊ ỏ γ φ Ϧ Φ  w ৽ ฉ ỏ ࡶ ࢽ ͷ ه ࣄ  w ޿ ࠂ !16
  17. ॎॻ͖ w ॎ ॻ ͖ Τ σ ỹ λ ͷ

    ༻ ్  w ࠷ ऴ త ʹ Ξ ΢ τ ϓ ỽ τ ͞ Ε Δ ঢ় ଶ ʹ ۙ ͍ ݟ ͨ ໨ Ͱ จ ষ Λ ॻ ͖ ͨ ͍ ͱ ͍ ͏ ध ཁ !17
  18. ίϯϐϡʔλͱॎॻ͖ w ςΩετΛॎॻ͖Ͱදࣔ͢ΔϑΝΠϧܗࣜ w 1%' w $.BQ8.PEFͳϑΥϯτΛ࢖͏ w 47( w

    XSJUJOHNPEFUCUCSM w )5.-$44 w XSJUJOHNPEFWFSUJBMSMWFSUJDBMMS !18
  19. ςΩετͱॎॻ͖ w ॎॻ͖ͷςΩετͱ͍͏΋ͷ͸ͳ͍ w σʔλ্ͷςΩετͷਐߦํ޲͸ͻͱͭ w ഑ྻͷJOEFY͕૿͑Δํ޲͚ͩ w ͋c͍c͏c͑c͓caOc͋ w

    ҰํͰը૾͸࣍ݩ৘ใ w σΟεϓϨΠ্ʹςΩετͷਐߦํ޲͸ແ਺ʹ͋Δ w ͦͷҰ͕ͭॎॻ͖ !19
  20. ॻࣈํ޲ w ςΩετΛදࣔ͢Δࡍʹ͸ॻࣈํ޲ͱ͍͏΋ͷ͕͋Δ w ԣॻ͖ w ࠨ͔Βӈʢࠨԣॻ͖ʣ w )FMMP XPSME

    w ӈ͔Βࠨʢӈԣॻ͖ʣ w ملاعلابابحرم !20 w ॎ ॻ ͖  w ্ ͔ Β Լ  w ͜ Μ ʹ ͪ ͸ ỏ ੈ ք ʂ
  21. վ ߦ ํ ޲ w վ ߦ ํ ޲ ͸

    ॻ ࣈ ํ ޲ ͱ ௚ ަ ͢ Δ ํ ޲  w ԣ ॻ ͖ ớ ্ ͔ Β Լ Ờ  w ӈ ॎ ॻ ͖ ớ ӈ ͔ Β ࠨ ỏ $44 ͷ WFSUJDBMSM Ờ  w ೔ ຊ ޠ  w ࠨ ॎ ॻ ͖ ớ ࠨ ͔ Β ӈ ỏ $44 ͷ WFSUJDBMMS Ờ  w Ϟ ϯ ΰ ϧ ޠ ớ Ϟ ϯ ΰ ϧ จ ࣈ Λ ࢖ ỳ ͨ ৔ ߹ Ờ  w ࠓ ͸ Ω Ϧ ϧ จ ࣈ ͕ Ұ ൠ ʹ ࢖ Θ Ε ͯ ͍ Δ !21 ը૾/PEFVF$$#:4"
  22. ͦͷଞͷॻࣈํ޲ w ڇߞࣜʢ#PVTUSPQIFEPOʣ w ॻࣈํ޲͕ӈ͔Βࠨɺࠨ͔ΒӈͱަޓʹมΘΔ w ݹ୅ΪϦγϟޠ w ཐટܗ w

    ϑΝΠετεԁ൫ʢະղಡจࣈʣ w 6OJDPEFʹ΋ऩ࿥͞Ε͍ͯΔ w 6 %d6 '% !22 ࣸਅ)FMJY$$#:4" ը૾3BOWFJH$$#:4"
  23. ʮॎॻ͖ΤσΟλʯΛ ʮϓϥοτϑΥʔϜʯͰ ʮ։ൃʯͯ͠Έͯ

  24. ϓϥοτϑΥʔϜ w σεΫτοϓ w NBD04 w 8JOEPXT w 6CVOUV (5,

     w ϞόΠϧ w J04 w "OESPJE w 681 !24
  25. ϓϥοτϑΥʔϜ w σεΫτοϓɿ(6*πʔϧΩοτ͸ϥΠϒϥϦʢXY8JEHFUTʣ w NBD04 w 8JOEPXT w 6CVOUV (5,

     w ϞόΠϧɿ(6*πʔϧΩοτ͸ωΠςΟϒͦͷ·· w J04 w "OESPJE w 681 !25
  26. σεΫτοϓ !26 OS ݴޠ ։ൃ؀ڥ Windows C++ Visual Studio macOS

    C++ / Objective-C Xcode Ubuntu (GTK+) C++ Eclipse → Makefile
  27. ϞόΠϧ !27 OS ݴޠ ։ൃ؀ڥ iOS Swift / Objective-C /

    C++ Xcode Android Kotlin / Java / C++ Android Studio UWP C# / C++ Visual Studio
  28. ʮॎॻ͖ΤσΟλʯΛ ʮϓϥοτϑΥʔϜʯͰ ʮ։ൃʯͯ͠Έͯ

  29. ։ൃͷาΈ w ೥ w ࣗ෼ͷཉ͍͠ॎॻ͖ΤσΟλͷͨΊʹϓϩάϥϛϯά Λ࢝ΊΔ w ࠷ॳʹ໨తΛ࣋ͬͯ࡞ͬͨͷ͸ϑΥϯτϑΝΠϧΛಡΈ ࠐΜͰॎॻ͖ͷจࣈྻΛදࣔ͢ΔϓϩάϥϜ w

    0QFO5ZQFϑΥϯτͷ࢓༷ΛಡΜͩ !29
  30. ։ൃͷาΈ w ʙ೥ w 8JOEPXT޲͚ϕʔλ൛Λग़͢ w (6*πʔϧΩοτ͸XY8JEHFUT w 6OJDPEFจࣈྻΛ໰୊ͳ͘ѻ͑ΔϥΠϒϥϦͩͬͨ !30

  31. ։ൃͷาΈ w ʙ೥ w NBD048JOEPXT6CVOUVʹରԠ w XY8JEHFUT͸ΫϩεϓϥοτϑΥʔϜϥΠϒϥϦ w ͔ͤͬ͘ͳͷͰରԠϓϥοτϑΥʔϜΛ૿΍ͨ͠ w

    ΧϥʔֆจࣈରԠ !31
  32. ։ൃͷาΈ w ʙ೥ w 1%'ग़ྗʢ1%'ͷ࢓༷ॻΛಡΜͰ࡞ͬͨʣ w ϖʔδදࣔʢ1%'ग़ྗΛ8:4*8:(ʹͨ͠ʣ w ࡿ࿈൑ʢxy࠲ඪܥͰ͸ͳ͘rθʹͯ͠Έͨʣ w

    HJUಋೖʢͦΕ·Ͱ೴಺؅ཧ͍ͯͨ͠ʣ !32
  33. σεΫτοϓ։ൃ !33 OS ݴޠ ։ൃ؀ڥ Windows C++ Visual Studio macOS

    C++ / Objective-C Xcode Ubuntu (GTK+) C++ Eclipse → Makefile
  34. ιʔείʔυͷߏ੒ !34 5"5&EJUPSͷ
 શͯͷίʔυ XY8JEHFUT NBD048JOEPXT6CVOUV

  35. ։ൃͷาΈ w ೥ʙ w J04"OESPJE681Ͱͷ։ൃΛ࢝ΊΔ w ࢓ࣄͰJ04ͱ"OESPJEΛ֮͑ͨ !35

  36. ϞόΠϧ։ൃ !36 OS ݴޠ ։ൃ؀ڥ iOS Swift / Objective-C /

    C++ Xcode Android Kotlin / Java / C++ Android Studio UWP C# / C++ Visual Studio
  37. ϞόΠϧ։ൃ !37 5"5&EJUPSͷ શίʔυ
 $ XY8JEHFUT $ NBD048JOEPXT6CVOUV J04 "OESPJE

    681
  38. ϞόΠϧ։ൃ !38 5"5&EJUPSͷ શίʔυ
 $ XY8JEHFUT $ 4XJGU ,PUMJO $

    NBD048JOEPXT6CVOUV J04 "OESPJE 681
  39. ϞόΠϧ։ൃ !39 5"5&EJUPSͷ શίʔυ
 $ XY8JEHFUT $ 4XJGU ,PUMJO $

    શίʔυ
 4XJGU શίʔυ
 ,PUMJO શίʔυ
 $ NBD048JOEPXT6CVOUV J04 "OESPJE 681
  40. શίʔυ
 4XJGU શίʔυ
 ,PUMJO શίʔυ
 $ ϞόΠϧ։ൃ !40 5"5&EJUPSͷ શίʔυ


    $ XY8JEHFUT $ 4XJGU ,PUMJO $ NBD048JOEPXT6CVOUV J04 "OESPJE 681
  41. ϞόΠϧ։ൃ !41 ςΩετฤूςΩετඳը
 ϥΠϒϥϦԽ $ (6*෦෼ $ XY8JEHFUT $ 4XJGU

    ,PUMJO $ NBD048JOEPXT6CVOUV J04 "OESPJE 681
  42. ϞόΠϧ։ൃ !42 (6*෦෼ $ XY8JEHFUT $ 4XJGU ,PUMJO $ NBD048JOEPXT6CVOUV

    J04 "OESPJE 681 $ ͸Ͳͷ؀ڥͰ΋࢖͑ͯศར $ ڞ௨ϥΠϒϥϦ ςΩετฤूςΩετඳը
  43. ϞόΠϧ։ൃ !43 XY8JEHFUT $ 4XJGU ,PUMJO $ NBD048JOEPXT6CVOUV J04 "OESPJE

    681 $ ڞ௨ϥΠϒϥϦ ςΩετฤूςΩετඳը (6*෦෼ $ (6*෦෼ (6*෦෼ (6*෦෼
  44. ϞόΠϧ։ൃ w ༨ஊɿ4XJGU͔Β$ ϥΠϒϥϦΛ࢖͏ͨΊʹ͸ w 4XJGU͔Βݺ΂Δ0CKFDUJWF$ͷϥΠϒϥϦΛ࡞Δ w 0CKFDUJWF$ͷϥΠϒϥϦ͔Β$ ϥΠϒϥϦΛݺͿ !44

  45. ։ൃ࢙ w ೥ࠒɿ։ൃ։࢝ w ʙ೥ɿ8JOEPXT൛ެ։ w ʙ೥ɿNBD046CVOUV൛ެ։ ΧϥʔֆจࣈରԠ w ʙ೥ɿ1%'ग़ྗɾࡿ࿈൑Ϟʔυʢ׬શʹझຯʣ

    w ೥ʙɿΞϓϦ൛ϓϩτλΠϓ࡞੒ w ೥ɿJ04"OESPJE൛ެ։ !45
  46. XY8JEHFUT $ 4XJGU ,PUMJO $ NBD048JOEPXT6CVOUV J04 "OESPJE 681 (6*෦෼

    $ (6*෦෼ (6*෦෼ (6*෦෼ ࠓճͷൃද಺༰ !46 $ ڞ௨ϥΠϒϥϦ ςΩετฤूςΩετඳը ʢϓϥοτϑΥʔϜʹΑΒͣʣ ςΩετΛॎॻ͖Ͱදࣔ͢Δ࿩
  47. XY8JEHFUT $ 4XJGU ,PUMJO $ NBD048JOEPXT6CVOUV J04 "OESPJE 681 (6*෦෼

    $ (6*෦෼ (6*෦෼ (6*෦෼ ࠓճͷൃද಺༰ !47 $ ڞ௨ϥΠϒϥϦ ςΩετฤूςΩετඳը ֤ϓϥοτϑΥʔϜͰ ςΩετΛฤू͢Δ࿩
  48. XY8JEHFUT $ 4XJGU ,PUMJO $ NBD048JOEPXT6CVOUV J04 "OESPJE 681 (6*෦෼

    $ (6*෦෼ (6*෦෼ (6*෦෼ ࠓճͷൃද಺༰ !48 $ ڞ௨ϥΠϒϥϦ ςΩετฤूςΩετඳը σεΫτοϓͱϞόΠϧͰͷ ςΩετΤσΟλͷ6*ͷҧ͍ͷ࿩
  49. Ξ΢τϥΠϯ  ൃදλΠτϧʹ͍ͭͯ  ॎॻ͖ΤσΟλΛ࡞Δ  ςΩετΤσΟλ  ςΩετΛදࣔ͢Δʢʴॎॻ͖ʣ 

    ςΩετΛฤू͢Δ  σεΫτοϓͱϞόΠϧ  ·ͱΊ !49 JPTEDF࣭໰Ͱ ࣭໰πΠʔτͯ͠΋Β͑Δͱ ޙͰҾ༻πΠʔτͰճ౴͠·͢
  50. ॎ ॻ ͖ Τ σ ỹ λ ͸  Ͳ

    ͏ ࡞ Δ ͷ ͔
  51. ॎॻ͖ΤσΟλ w ςΩετΤσΟλͰදࣔ͞ΕΔςΩετΛॎॻ͖ʹ͢Δ !51

  52. ॎॻ͖ΤσΟλ w ςΩετΤσΟλͬͯͳʹ w J04ͩͱ6*5FYU7JFX͕ςΩετΤσΟλ !52

  53. ॎॻ͖ΤσΟλ w ςΩετΤσΟλ 6*5FYU7JFXͷΑ͏ͳίϯϙʔωϯτ  w Ͳͷ04Ͱ΋ඪ४తʹ༻ҙ͞Ε͍ͯΔ !53 OS ඪ४࣮૷

    iOS UITextView Android android.widget.TextView UWP TextBox Windows MSFTEDIT_CLASS / Text box macOS NSTextView GTK+ GtkTextView
  54. ॎॻ͖ΤσΟλ w 2VFTUJPO w ඪ४ͷςΩετΤσΟλΛॎॻ͖ʹͰ͖Δͷ͔ʁ !54

  55. ॎॻ͖ΤσΟλ w "OTXFS w Ͱ͖ͳ͍Ͱ͢Ͷ !55

  56. ςΩετΤσΟλΛ ࠶࣮૷͢Δ

  57. ςΩετΤσΟλ w ςΩετΤσΟλ͸γϯϓϧͳίϯϙʔωϯτʁ !57

  58. ςΩετΤσΟλ w ςΩετΤσΟλ͸γϯϓϧͳίϯϙʔωϯτͰ͸ͳ͍ !58

  59. ςΩετΤσΟλ w ༷ʑͳొ৔ਓ෺͕૬ޓʹӨڹ͠߹͏ࠞಱͱͨ͠৔ॴ w ೖग़ྗʢਓؒͱίϯϐϡʔλͷք໘ʣ w 04 w ΞϓϦ w

    *.&ʢ೔ຊޠೖྗͳͲʣ w ͔͠΋͜ΕΒશ͕ͯঢ়ଶΛ΋͍ͬͯΔ !59
  60. ςΩετΤσΟλ w ςΩετΤσΟλʹඞཁͳ͜ͱ w ը໘ʹςΩετΛදࣔͰ͖Δ w ը໘ͷςΩετΛฤूͰ͖Δ !60

  61. ςΩετΤσΟλ w ςΩετΤσΟλʹඞཁͳ͜ͱ w ը໘ʹςΩετΛදࣔͰ͖Δ w จࣈίʔυͱϑΥϯτͱը૾ͷ࿩ w ը໘ͷςΩετΛฤूͰ͖Δ w

    04ͱ*.&ͱ6*ͷ࿩ !61
  62. ςΩετΤσΟλ w ςΩετΤσΟλʹඞཁͳ͜ͱ w ը໘ʹςΩετΛදࣔͰ͖Δ w จࣈίʔυͱϑΥϯτͱը૾ͷ࿩ w େ෦෼͕QMBUGPSNJOEFQFOEFOU w

    ը໘ͷςΩετΛฤूͰ͖Δ w 04ͱ*.&ͱ6*ͷ࿩ w େ෦෼͕QMBUGPSNTQFDJpD !62
  63. ςΩετΤσΟλ w ςΩετΤσΟλʹඞཁͳ͜ͱ w ΈΔʢ7JFXFSʣ w ฤू͢Δʢ&EJUPSʣ !63

  64. ςΩετͷදࣔ

  65. ςΩετͷදࣔ w ςΩετ͕දࣔ͞ΕΔ w ʹσΟεϓϨΠʹจࣈͷॻ͔Εͨը૾͕ग़Δ !65

  66. ςΩετͷදࣔ w J04ͰςΩετΛදࣔ͢Δํ๏͸͍͔ͭ͋͘Δ w 6*-BCFM w 4USJOHESBX 6*7JFXESBX  w

    $5'POU%SBX(MZQIT $PSF5FYU ॎॻ͖΋Մೳ !66
  67. ςΩετͷදࣔ w $PSF5FYU͸ඇৗʹྑ͍ϑϨʔϜϫʔΫͳͷͰ͕͢ʜʜ w 5"5&EJUPSͰ͸ҎԼͷཧ༝͔ΒςΩετͷදࣔΛಠ࣮ࣗ૷ w શͯͷϓϥοτϑΥʔϜͰಉ͡ඳը݁Ռ͕ཉ͍͠ w 1%'Λ8:4*8:(Ͱग़ྗ͍ͨ͠ w

    ϓϥοτϑΥʔϜͷจࣈඳը͸࣌ʑյΕΔ w ॎॻ͖Λશ͘αϙʔτ͠ͳ͍04΋͋Δʢ"OESPJEʣ w ࣮૷։࢝࣌ظ͕೥લ w झຯ͔ͩΒ !67
  68. ςΩετͷදࣔ w จࣈྻඳըܥΛθϩ͔Β࡞͍ͬͯ͘ !68 ςΩετ ը૾

  69. ςΩετͷදࣔ w จࣈྻඳըܥΛθϩ͔Β࡞͍ͬͯ͘ !69 6**NBHFESBX 6**NBHF7JFX ςΩετ ը૾

  70. ςΩετͷදࣔ w จࣈྻඳըܥΛθϩ͔Β࡞͍ͬͯ͘ !70 ςΩετ ը૾ จࣈྻඳըܥ

  71. ςΩετͷදࣔ ςΩετ ը૾ จࣈྻඳըܥ w ը૾ʹ3(#"ͷ഑ྻ w શ04ͰදࣔͰ͖Δ !71

  72. ศརͳശ ςΩετͷදࣔ !72 ςΩετ ը૾ จࣈྻඳըܥ

  73. ςΩετͷදࣔ w ศརͳശͷΠϝʔδ !73 extension UIImage { convenience init(text: String)

    { ... } }
  74. ศརͳശ ςΩετͷදࣔ !74 ը૾ จࣈྻඳըܥ ςΩετ ʢόΠτྻʣ

  75. ςΩετͷදࣔ !75 ςΩετ ʢόΠτྻʣ ը૾ จࣈྻඳըܥ จࣈίʔυͱ ϑΥϯτͷ஌ࣝ

  76. จࣈίʔυ w ػց΍ͦΕΛ࢖͏ਓಉ࢜Ͱͷϓϩτίϧ w ͜ͷόΠτྻ͸͜ͷจࣈʹ૬౰͢Δ΋ͷͱͯ͠ѻ͍· ͠ΐ͏ͱ͍͏໿ଋ w Ͱ͔͍ͬද w ϓϩτίϧΛऔΓҧ͑ͯ͠·͏ͷ͕͍ΘΏΔจࣈԽ͚

    w ࠷ۙͩͱ͍͍ͩͨ6OJDPEF !76
  77. ϑΥϯτ w จࣈྻ͔ΒਓؒͷͨΊͷը૾Λੜ੒͢Δͷʹඞཁͳશͯ ͷ৘ใΛ֨ೲͨ͠ϑΝΠϧ w Ͳͷจࣈ͕Ͳ͏͍͏ܗͳͷ͔ w จࣈͷେ͖͞͸ͲΕ͘Β͍ͳͷ͔ w ࠷ۙͩͱ͍͍ͩͨ0QFO5ZQFϑΥϯτ

    !77 https://www.freetype.org/freetype2/docs/glyphs/glyphs-3.html
  78. ςΩετͷදࣔ !78 ςΩετ ʢόΠτྻʣ ը૾ จࣈྻඳըܥ 6OJDPEFͱ 0QFO5ZQFͷ ࢓༷

  79. 6OJDPEF w จࣈྻΛόΠτྻʹͯ͠ѻ͏ͨΊͷن֨ w 6OJDPEF͸ූ߸Խจࣈू߹ͷͻͱͭ w 6 d6 ''''ͷූ߸ΛจࣈʹରԠ͚ͮͨ΋ͷ w

    6 ͷޙΖ͸ਐ਺දه w 65'65'65'͸จࣈූ߸Խܗࣜ w 6 d6 ''''ͷCJUͷ৘ใΛͲͷΑ͏ʹό ΠτྻͰදݱ͢Δ͔ΛఆΊͨ΋ͷ !79
  80. ίʔυϙΠϯτ w 6OJDPEF಺ͷจࣈͷ࠷খ୯ҐΛίʔυϙΠϯτͱ͍͏ w ऩ࿥͞Ε͍ͯΔจࣈͻͱͭΛࣔ͢΋ͷ w ྫɿ w 6 "aO

    w 6 " w 6 ͋ w 6 #҆ !80
  81. 4XJGUͱ6OJDPEF w 4USJOHͷ಺෦දݱ͸65' w 4USJOHDPVOUHSBQIFNFDMVTUFSͷ਺ w !DPVOU w 4USJOHVOJDPEF4DBMBSTDPVOUίʔυϙΠϯτͷ਺ w

    !VOJDPEF4DBMBSTDPVOU w 4USJOHVUGDPVOU65'Ͱͷ௕͞ w !VUGDPVOU !81
  82. 0QFO5ZQF w ϑΥϯτϑΝΠϧͷ࢓༷ͷͻͱͭ w จࣈΛ࠷େݸ֨ೲͰ͖Δ w ࠷ॳͷͭ͸OPUEFGͱఆΊΒΕ͍ͯΔ w ͍ΘΏΔ౾෗ !82

  83. άϦϑ w ϑΥϯτ಺ͷจࣈͷ࠷খ୯ҐΛάϦϑͱ͍͏ w ऩ࿥͞Ε͍ͯΔ֤จࣈʢܗঢ়ʣͷ͜ͱ w ӈͷਤΈ͍ͨͳΠϝʔδ w جຊతʹϕΫλʔը૾ w

    දࣔʹ͸ϥελϥΠζ͕ඞཁ !83 http://fontforge.github.io/en-US/documentation/interface/charview/
  84. 0QFO5ZQFϑΥϯτ w ϑΝΠϧߏ଄ʢৄ͘͠͸0QFO5ZQFͷ࢓༷ΛݟΔͱྑ͍ʣ w ϔομʔͱσʔλͰߏ੒͞ΕΔόΠφϦ w ϔομʔɿͲ͜ʹͲ͏͍͏ςʔϒϧ͕͋Δ͔ॻ͔Ε͍ͯΔ w ςʔϒϧɿ࢓༷Ͱఆٛ͞ΕͨσʔλʢҎԼ͸୅දతͳ΋ͷʣ w

    HMZG5SVF5ZQFͷάϦϑ৘ใ w $''㾐1PTU4DSJQUͷάϦϑ৘ใ w $''7BSJBCMF'POUͰ࢖ΘΕΔάϦϑ৘ใ w ͜ΕΛਖ਼͘͠ղऍ͢ΔͱจࣈΛදࣔͰ͖Δ !84
  85. ςΩετͷදࣔ !85 ςΩετ ʢόΠτྻʣ ը૾ จࣈྻඳըܥ 6OJDPEFͱ 0QFO5ZQFͷ ࢓༷ ϑΥϯτ

  86. 04ͱϑΥϯτ w ࢓༷͚ͩͰ͸ͳ࣮͘ࡍͷϑΥϯτ͕ςΩετදࣔʹඞཁ w ͦΕͰϑΥϯτ͸Ͳ͜ʹʁ w ˠ୺຤ʹΠϯετʔϧ͞Ε͍ͯΔ΋ͷΛ࢖͏ !86

  87. 04ͱϑΥϯτ !87 OS ϑΥϯτͷऔಘ औಘͰ͖Δ΋ͷ iOS CGFontCopyTableForTag όΠφϦʢஅยʣ Android /system/etc/fonts.xml

    ϑΝΠϧύε UWP IDWriteLocalFontFileLoader ϑΝΠϧύε Windows IDWriteLocalFontFileLoader / GetFontData ϑΝΠϧύε / 
 όΠφϦ macOS CGFontCopyTableForTag όΠφϦʢஅยʣ GTK+ fontconfig ϑΝΠϧύε
  88. ςΩετͷදࣔ !88 ςΩετ ʢόΠτྻʣ ը૾ จࣈྻඳըܥ 6OJDPEFͱ 0QFO5ZQFͷ ࢓༷ ϑΥϯτ

  89. ςΩετͷදࣔ !89 ςΩετ ʢόΠτྻʣ ը ૾ ί ʔ υ ϙ

    Π ϯ τ ྻ ά Ϧ ϑ ྻ ϥ ε λ ϥ Π ζ 6OJDPEF ը ૾ ྻ
  90. ςΩετͷදࣔ !90 ςΩετ ʢόΠτྻʣ ը ૾ ί ʔ υ ϙ

    Π ϯ τ ྻ ά Ϧ ϑ ྻ ϥ ε λ ϥ Π ζ 6OJDPEF ը ૾ ྻ ʁ
  91. 6OJDPEFͱ0QFO5ZQFΛͭͳ͙ w 0QFO5ZQFͷDNBQςʔϒϧ w ίʔυϙΠϯτ͔ΒάϦϑͷ*%΁ͷม׵ද w άϦϑ*%ͷ͸OPUEFGͱݺ͹ΕΔ͍ΘΏΔ౾෗จࣈ w ίʔυϙΠϯτ͸ສ͘Β͍ w

    άϦϑ͸ϑΥϯτͭ͋ͨΓ࠷େ
  92. 6OJDPEFͱ0QFO5ZQFΛͭͳ͙ w 0QFO5ZQFͷDNBQςʔϒϧ w ίʔυϙΠϯτ͔ΒάϦϑͷ*%΁ͷม׵ද w άϦϑ*%ͷ͸OPUEFGͱݺ͹ΕΔ͍ΘΏΔ౾෗จࣈ !92 cmap ίʔυϙΠϯτ

    U+0041 U+0042 U+3042 U+3043 U+5B89 U+1F389 άϦϑID ܗঢ় 0 1 A 2 B 3 ҆ 4 ͋ 5 ͍
  93. ςΩετͷදࣔ !93 ςΩετ ʢόΠτྻʣ ը ૾ ί ʔ υ ϙ

    Π ϯ τ ྻ ά Ϧ ϑ ử ϕ Ϋ λ ʔ ը ૾ ྻ ϥ ε λ ϥ Π ζ 6OJDPEF ը ૾ ྻ ϑ Ỽ ϯ τ ͷ DNBQ ʁ
  94. άϦϑͷϥελϥΠζ w ϑΥϯτͷಡΈࠐΈʹ͸'SFF5ZQFͱ͍͏$ݴޠͰॻ͔Ε ͨϥΠϒϥϦ͕Α͘࢖ΘΕΔ w ίʔυϙΠϯτ͔ΒάϦϑ*%΁ͷม׵ w άϦϑ*%Λࢦఆͯ͠ϕΫλʔը૾ΛϥελϥΠζ w 1PTU4DSJQU

    $'' ܥɺ5SVF5ZQFܥͷϑΥϯτΛ·ͱ Ίͯѻ͑Δ !94
  95. ςΩετͷදࣔ !95 ςΩετ ʢόΠτྻʣ ը ૾ ί ʔ υ ϙ

    Π ϯ τ ྻ ά Ϧ ϑ ྻ 6OJDPEF ը ૾ ྻ ϑ Ỽ ϯ τ ͷ DNBQ 'SFF5ZQF ͱ ͔ ഑ ஔ ʁ
  96. άϦϑͷ഑ஔ w ҎԼΛ܁Γฦ͢ w άϦϑΛஔ͘ w άϦϑͷ෯͚ͩඳըҐஔΛਐΊΔ w ͨͩ͠ɺվߦจࣈ΍ંΓฦ͠Ͱ࣍ͷߦʹδϟϯϓ͢Δ !96

    https://www.freetype.org/freetype2/docs/glyphs/glyphs-3.html
  97. վߦจࣈ w 8JOEPXTͷվߦ͸aSaOͰͭͷվߦ w $BSSJBHF3FUVSOߦ಄ʹ໭Δ w -JOF'FFEߦΛਐΊΔ !97 U+000D CARRIAGE

    RETURN \r Mac OS 9·Ͱ U+000A LINE FEED \n Linux / macOS U+000C FORM FEED \f U+000B LINE TABULATION \v U+2028 LINE SEPARATOR U+2029 PARAGRAPH SEPARATOR U+0085 NEW LINE
  98. ͱΓ͋͑ͣ w ؆୯ͷͨΊ·ͣ͸ԣॻ͖ !98

  99. จࣈΛฒ΂ͨ w ඳըྖҬ͔Β͸Έग़ͯ͠·ͬͨͷͰંΓฦ͞ͳ͍ͱ !99

  100. ંΓฦ͠ w UFYUBSFBͱ͍͏ӳ୯ޠ͕෼ׂ͞Εͯ͠·ͬͨʜʜ !100

  101. 6"96OJDPEF-JOF #SFBL"MHPSJUIN w 6OJDPEFඪ४ͷҰ෦ w ςΩετͷͲ͕͜ંΓฦ͠Մೳ͔Λఆ͍ٛͯ͠Δ w ߦ಄ߦ຤ېࢭɾ෼ׂېࢭͳͲ΋ !101

  102. 6"96OJDPEF-JOF #SFBL"MHPSJUIN w *$6 *OUFSOBUJPOBM$PNQPOFOUGPS6OJDPEF  w ΋ͱ΋ͱ*#.ओಋͷ044Ͱࠓ͸6OJDPEFʹଐͯ͠Δ w *$6ʹ͋Δ-JOF#SFBL*UFSBUPSΛ࢖͏ͱંΓฦ͠Մೳͳ

    ৔ॴ͕Θ͔Δ !102
  103. ԣॻ͖ͷ׬੒ w ͖ͪΜͱંΓฦͤ·ͨ͠ !103

  104. ςΩετͷදࣔʴॎॻ͖ w ԣॻ͖͔Βॎॻ͖ʹม͑Δ w จࣈΛਫฏํ޲Ͱ͸ͳ͘ɺਨ௚ํ޲ʹਐΊΔ w ߦΛਨ௚ํ޲Ͱ͸ͳ͘ɺਫฏํ޲ʹਐΊΔ !104

  105. ςΩετͷදࣔʴॎॻ͖ !105

  106. ςΩετͷදࣔʴॎॻ͖ !106

  107. ςΩετͷදࣔʴॎॻ͖ !107

  108. ςΩετͷදࣔʴॎॻ͖ w ԣॻ͖͔Βॎॻ͖ʹม͑Δ w จࣈΛਫฏํ޲Ͱ͸ͳ͘ɺਨ௚ํ޲ʹਐΊΔ w ߦΛਨ௚ํ޲Ͱ͸ͳ͘ɺਫฏํ޲ʹਐΊΔ w ϑΥϯτͷॎॻ͖༻ͷάϦϑΛ࢖༻͢Δ w

    ʮɻʯʮɺʯʮΐʯʮ₃ʯʮʢʯʮʣʯʮʔʯ w ΞϧϑΝϕοτ౳ͷจࣈΛ౓ճసͤ͞Δ w ൒֯ͩͱճస͢Δɺશ֯ͩͱճస͠ͳ͍ !108
  109. 6"96OJDPEF7FSUJDBM 5FYU-BZPVU w ͭʹ෼ྨͯ͠ఆٛ͞Ε͍ͯΔʢ656S5Sʣ w ೥ʹυϥϑτͷ࢓༷͕ࡦఆ͞Εͨ !109 ෼ྨ ಺༰ ର৅ίʔυϙΠϯτ

    U (Upright) ਖ਼ཱʢͦͷ··ʣͰදࣔ ׽ࣈ౳ R (Rotated) ࣌ܭճΓʹճసͯ͠දࣔ Alphabet etc... Tu (Transformed, upright) U͕ͩઐ༻άϦϑ͕ඞཁ ɺɻΐ₃ Tr (Transformed, rotated) R͕ͩઐ༻άϦϑ͕ඞཁ ʢʣʔ ỏ Ố Ỷ ⼌
  110. 6"96OJDPEF7FSUJDBM 5FYU-BZPVU w ͭʹ෼ྨͯ͠ఆٛ͞Ε͍ͯΔʢ656S5Sʣ w ೥ʹυϥϑτͷ࢓༷͕ࡦఆ͞Εͨ !110 ෼ྨ ಺༰ ର৅ίʔυϙΠϯτ

    U (Upright) ਖ਼ཱʢͦͷ··ʣͰදࣔ ׽ࣈ౳ R (Rotated) ࣌ܭճΓʹճసͯ͠දࣔ Alphabet etc... Tu (Transformed, upright) U͕ͩઐ༻άϦϑ͕ඞཁ ɺɻΐ₃ Tr (Transformed, rotated) R͕ͩઐ༻άϦϑ͕ඞཁ ʢʣʔ ͋ʔ
  111. 6"96OJDPEF7FSUJDBM 5FYU-BZPVU w ͭʹ෼ྨͯ͠ఆٛ͞Ε͍ͯΔʢ656S5Sʣ w ೥ʹυϥϑτͷ࢓༷͕ࡦఆ͞Εͨ !111 ෼ྨ ಺༰ ର৅ίʔυϙΠϯτ

    U (Upright) ਖ਼ཱʢͦͷ··ʣͰදࣔ ׽ࣈ౳ R (Rotated) ࣌ܭճΓʹճసͯ͠දࣔ Alphabet etc... Tu (Transformed, upright) U͕ͩઐ༻άϦϑ͕ඞཁ ɺɻΐ₃ Tr (Transformed, rotated) R͕ͩઐ༻άϦϑ͕ඞཁ ʢʣʔ ͋ ʔ ൃදࢿྉΛ࡞͍ͬͯͯݟ͚ͭ ͯ͠·ͬͨͷͰ͕͢ɺ"QQMFͷ จࣈྻඳըܥͷόάͰ͢Ͷ ʢNBD04J04Ͱ֬ೝʣ ͋ʔ
  112. !112 w ରԠ͢Δ0QFO5ZQFͷ࢓༷ w (46# (MZQI4VCTUJUVUJPO  w άϦϑΛผͷάϦϑʹஔ׵͢Δػೳ w

    ॎॻ͖ͷ৔߹͸άϦϑ↦άϦϑ w WFSUWSUWSUSͱ͔ͷλάͷ΋ͷ w ଞͷ༻్ͩͱ/άϦϑ↦.άϦϑͷ৔߹΋͋Δ 6"96OJDPEF7FSUJDBM 5FYU-BZPVU
  113. ׬੒ !113

  114. ςΩετͷදࣔʴΧϥʔֆจࣈ w ౾෗ !114

  115. ςΩετͷදࣔʴΧϥʔֆจࣈ w ౾෗ͷਖ਼ମ w ϑΥϯτͷάϦϑ*%ͷจࣈ w ϑΥϯτʹରԠ͢ΔάϦϑ͕ͳ͍৔߹ʹ࢖༻͞ΕΔ w ࣮ࡍʹ͸Λද͍ࣔͨ͠ w

    ଟ͘ͷ৔߹ಛผͳϑΥϯτ͕༻ҙ͞Ε͍ͯΔ w "QQMF$PMPS&NPKJ/PUP$PMPS&NPKJ4FHPF 6*&NPKJ !115
  116. ΧϥʔֆจࣈͱϑΥϯτ w 0QFO5ZQFͷ࢓༷ w Χϥʔֆจࣈͷ࢓༷͸େ͖͘छྨ !116 ܗࣜ ओͳϓϥοτϑΥʔϜ த਎ͷܗࣜ $#%5$#-$

    "OESPJE-JOVY 1/(ը૾ $0-3$1"- 8JOEPXT ී௨ͷάϦϑͱ৭৘ใ 47(㾐 $1"- "EPCF.P[JMMB 47(ը૾ʢͱ৭৘ใʣ TCJY "QQMF NBD041/(ը૾ J04FNKDը૾ʢಠࣗܗࣜʣ
  117. 6546OJDPEF&NPKJ w 6OJDPEFͷΧϥʔֆจࣈͷ࢓༷ w Χϥʔֆจࣈͷ෼ྨ w ࠃض w ғΈ਺ࣈ w

    ݁߹จࣈ ;8+  w 1SFTFOUBUJPO4FMFDUPS w &NPKJ.PEJpFS w 5BH4FRVFODF !117
  118. ςΩετͷදࣔͱΧϥʔֆจࣈ w ࢓༷͕ͨ͘͞Μ͋ͬͯେม w Χϥʔֆจࣈʹؔ͢Δ੹຿͕ࢄΒ͹͍ͬͯΔͷͰେม w 6OJDPEFͷྖҬ w ԿΛͲ͏දࣔ͢΂͖͔ͱ͍͏࢓༷ w

    ϑΥϯτͷྖҬ w දࣔ͢Δ͜ͱͷͰ͖Δจࣈͷఏڙ w จࣈྻඳըܥͷྖҬ w ΧϥʔֆจࣈΛ࢖͏͔നࠇจࣈΛ࢖͏͔ͷ൑அ !118
  119. ς Ω ε τ ͷ ද ࣔ 
 ɹ ɹ

    ɹ ɹ ʴ Χ ϥ ʔ ֆ จ ࣈ w ς Ω ε τ ͕ ॎ ॻ ͖ Ͱ ද ࣔ Ͱ ͖ · ͠ ͨ !119
  120. ςΩετͷදࣔʴͦͷଞ w ࠓճѻΘͳ͔ͬͨ΋ͷ w ίʔυϙΠϯτ㱠άϦϑ w *74ʢҟମࣈηϨΫλʣ w (46# w

    ೔ຊޠҎ֎ͷςΩετͷॲཧ w CJEJʢ૒ํ޲ςΩετɾΞϥϏΞޠʣ w (104 w ౳ʑ !120
  121. ςΩετͷฤू

  122. ςΩετͷฤू w จࣈྻΛબ୒͢Δ w બ୒ൣғΛจࣈྻͰஔ׵͢Δ !122

  123. ςΩετͷฤू w จࣈྻΛબ୒͢Δʢ࠷ޙʹ࿩͠·͢ʣ w ΩʔϘʔυૢ࡞ʹΑΔมߋ w Ϛ΢εૢ࡞ɾλονૢ࡞ʹΑΔมߋ w બ୒ൣғΛจࣈྻͰஔ׵͢Δ w

    ΩʔϘʔυ͔Βड͚औͬͨจࣈྻͰஔ׵ w ΫϦοϓϘʔυͷจࣈྻͰஔ׵ !123
  124. σεΫτοϓͷ5FYU7JFX !124 ਓؒ ೖྗ૷ஔ ग़ྗ૷ஔ 04 ΞϓϦ 5FYU7JFX ςΩετදࣔ ςΩετʁ

  125. σεΫτοϓͷ5FYU7JFX !125 ਓؒ ೖྗ૷ஔ ग़ྗ૷ஔ 04 ΞϓϦ 5FYU7JFX ςΩετදࣔ Ωʔίʔυ

    ςΩετʁ
  126. 5FYU7JFXͱ͸ʁ w ΩʔίʔυͷετϦʔϜ͔ΒͲ͏ʹ͔ͯ͠ςΩετΛੜ੒ ͠ͳ͍ͱ͍͚ͳ͍ w ΞϧϑΝϕοτ͸͍͍ͱͯ͠೔ຊޠ͸ʜʜʁ w ͜ΕΛղܾ͢ΔͨΊʹ*.&ͱ͍͏΋ͷ͕͋Δ
 ʢJ04Ͱ͸͜Ε͕ΩʔϘʔυͱݺ͹Ε͍ͯΔʣ !126

  127. σεΫτοϓͷ5FYU7JFX !127 ਓؒ ೖྗ૷ஔ ग़ྗ૷ஔ *.& ΞϓϦ 5FYU7JFX 04 ςΩετදࣔ

    Ωʔίʔυ ςΩετ
  128. εϚϗͷ5FYU7JFX !128 ਓؒ ೖग़ྗ૷ஔ *.& ΞϓϦ 5FYU7JFX 04 ςΩετදࣔ ςΩετ

  129. 5FYU7JFXͱ*.&ͷؔ܎ !129 ਓؒ ೖྗ૷ஔ ग़ྗ૷ஔ *.& ΞϓϦ 5FYU7JFX 04 ςΩετදࣔ

    Ωʔίʔυ ςΩετ
  130. 5FYU7JFXͱ*.&ͷؔ܎ w Ͳ͏΍ͬͯ*.&ͱ7JFX͕৘ใΛ΍ΓऔΓ͢Δͷʁ w 4%,ʁ w ௨৴ϓϩτίϧʁ !130

  131. 5FYU7JFXͱ*.&ͷؔ܎ !131 ਓؒ ೖྗ૷ஔ ग़ྗ૷ஔ *.& ΞϓϦ 04ͷ༻ҙͨ͠ *.&"1* 5FYU7JFX

    04 ςΩετදࣔ
  132. *.&"1*ͱ͸ w 04͕5FYU7JFXΛ࣮૷͢ΔͨΊʹ༻ҙ͢Δ7JFXͱ*.&ͷ ΠϯλʔϑΣʔε w ۩ମతͳ࣮૷Λ஌Δ͜ͱͳ͘7JFX͕*.&Λར༻Ͱ͖Δ w *.&͸4%,ͳͲΛ༻ҙͤͣʹ7JFXʹػೳΛఏڙͰ͖Δ !132

  133. *.&"1*ͷҰཡ !133 04 *.&"1*ͷ໊শ
 7JFXଆ ίϝϯτ 8JOEPXT *5FYU4UPSF"$1 ೉ղ͚ͩͲߴػೳ NBD04

    /45FYU*OQVU$MJFOU BUUSJCVUFE4USJOH ͕ͭΒ͍ (5, (UL*.$POUFYU ΍͚ʹυΩϡϝϯτ͕গͳ͍ J04 6*5FYU*OQVU J04Ͱ৭ʑվળ͞ΕΔ "OESPJE #BTF*OQVU$POOFDUJPO ᴈ໌ظͷҋ͕֞ؒݟ͑Δ 681 8JOEPXT6*5FYU$PSF ॎॻ͖͕͋Ε͹ʜʜ
  134. *.&"1*ͷ֓؍ w *.&"1*͕7JFXʹཁٻ͢Δͷ͸ w ςΩετͷऔಘͱมߋ w બ୒ൣғͷऔಘͱมߋ w 7JFX্ͰͷจࣈͷҐஔ৘ใ w

    ະ֬ఆจࣈྻͷ؅ཧʢྫɿεΫγϣͷʮม׵ʯ͕ະ֬ ఆจࣈྻʣ w 7JFXʹΑΔςΩετɾબ୒ൣғɾϨΠΞ΢τมߋͷ௨ ஌ !134
  135. จࣈΛೖྗ͢Δ w ਓ͕ؒΩʔϘʔυ͔ΒจࣈΛೖྗ͢Δࡍͷϧʔϓ  ਓ͕ؒΩʔϘʔυΛୟ͘  *.&͕ΩʔίʔυΛड͚औΔ  *.&͕ΞϓϦʹςΩετPSະ֬ఆจࣈྻΛ౉͢ 

    ΞϓϦ͕*.&͔ΒจࣈྻΛड͚औΔ  ΞϓϦ΍*.&͕ݱࡏͷঢ়ଶΛσΟεϓϨΠʹදࣔ͢Δ  ਓ͕ؒσΟεϓϨΠΛݟΔ !135
  136. *.&"1*ͱॎॻ͖ !136 04 *.&"1*ͷ໊শ
 7JFXଆ ॎॻ͖ରԠ
 ʢॎॻ͖Ͱ͋ΔࣄΛ఻͑Δํ๏ʣ 8JOEPXT *5FYU4UPSF"$1 ͋Γ

    NBD04 /45FYU*OQVU$MJFOU ͋Γ (5, (UL*.$POUFYU ͋Γ(ULҎ߱
 ʢͨͩ͠ରԠ*.&͕ͳ͍ؾ͕͢Δʣ "OESPJE #BTF*OQVU$POOFDUJPO ෆՄೳͰ͸ͳ͍͸ͣ
 ʢ$VSTPS"ODIPS*OGPͷTFU.BUSJYʣ 681 8JOEPXT6*5FYU$PSF ͳ͠ J04 6*5FYU*OQVU ͳ͍ͷͱಉ͡
  137. ॎ ॻ ͖ ೖ ྗ ͷ ׬ ੒ w *.&"1*

    Λ 7JFX ʹ ࣮ ૷ ͢ Ε ͹ ỏ 04 ඪ ४ ͷ ς Ω ε τ Τ σ ỹ λ Ҏ ֎ Ͱ ΋ จ ࣈ ೖ ྗ ͕ Ͱ ͖ Δ !137
  138. Ξ΢τϥΠϯ  ൃදλΠτϧʹ͍ͭͯ  ςΩετΤσΟλºॎॻ͖  ςΩετΤσΟλΛ࡞Δ  ςΩετΛදࣔ͢Δ 

    ςΩετΛฤू͢Δ  σεΫτοϓͱϞόΠϧ  ·ͱΊ !138
  139. σεΫτοϓͱϞόΠϧ

  140. σεΫτοϓͱϞόΠϧ w ΞϓϦͷ6*͸ɺσεΫτοϓͷ࣌୅͔Βେ͖͘มΘͬͨ w σΟεϓϨΠͱΩʔϘʔυɾϚ΢ε͸཭Ε͍ͯͨ w දࣔͱૢ࡞͕ಠཱ͍ͯ͠Δ w ϞόΠϧͰ͸දࣔ΋ૢ࡞΋খ͍͞σΟεϓϨΠ͚ͩ w

    දࣔͱૢ࡞͕ಉډ͍ͯ͠Δ !140
  141. σεΫτοϓͱϞόΠϧ w ςΩετΤσΟλͷ6*΋େ͖͘มΘͬͨ w ςΩετͷೖྗ w ςΩετͷબ୒ !141

  142. σεΫτοϓͱϞόΠϧ w σεΫτοϓͷςΩετΤσΟλͷ6* w ௕೥ͷ஝ੵͰ΄΅ڞ௨ͷܗ w ϞόΠϧͷςΩετΤσΟλͷ6* w ຖ೥ͷ04Ξοϓσʔτͱͱ΋ʹਐԽத w

    Ϣʔβʔ͸࢖͍ͬͯΔ04ݻ༗ͷςΩετೖྗମݧʹ׳ Ε͍ͯΔͷͰɺॎॻ͖ΤσΟλ΋ͦΕʹै͏Α͏ͳ6*Λ ఏڙ͢Δඞཁ͕͋Δ !142
  143. σεΫτοϓͱϞόΠϧ w جຊతͳจࣈྻબ୒ͷ6*ʢΩʔϘʔυҎ֎͔Βͷૢ࡞ʣ w ςΩετૠೖҐஔͷมߋ w ςΩετͷฤूϝχϡʔͷදࣔ w ςΩετͷબ୒ w

    ςΩετબ୒ൣғͷमਖ਼ !143
  144. σεΫτοϓͱϞόΠϧ w ςΩετૠೖҐஔͷมߋ !144 ૢ࡞ ίϝϯτ σεΫτοϓ w ࠨΫϦοΫ ϐΫηϧ୯Ґͷૢ࡞ਫ਼౓

    J04 w λοϓ w ϩϯάλοϓʴҠಈ ิਖ਼खஈͱͯ͠ͷϩϯά λοϓ "OESPJE w λοϓ w ΩϟϨοτͷυϥοά ิਖ਼खஈͱͯ͠ͷυϥο ά
  145. σεΫτοϓͱϞόΠϧ w ςΩετૠೖҐஔͷมߋ !145 ૢ࡞ ίϝϯτ σεΫτοϓ w ࠨΫϦοΫ ϐΫηϧ୯Ґͷૢ࡞ਫ਼౓

    J04 w λοϓ w ϩϯάλοϓʴҠಈ ิਖ਼खஈͱͯ͠ͷϩϯά λοϓ "OESPJE w λοϓ w ΩϟϨοτͷυϥοά ิਖ਼खஈͱͯ͠ͷυϥο ά
  146. σεΫτοϓͱϞόΠϧ w ςΩετͷฤूϝχϡʔͷදࣔ !146 ૢ࡞ ίϝϯτ σεΫτοϓ w ӈΫϦοΫ Ϣʔβʔ͕໌ࣔతʹ։͘

    J04 w จࣈྻબ୒࣌ʢૢ࡞தҎ֎ʣ w ϩϯάλοϓͰૠೖҐஔΛมߋޙ w ૠೖҐஔΛλοϓ Ϣʔβʔૢ࡞͔ΒࣗಈͰ දࣔ͞ΕΔ͜ͱ͕͋Δ "OESPJE w จࣈྻબ୒࣌ʢૢ࡞தҎ֎ʣ w ΩϟϨοτͷϋϯυϧΛλοϓ Ϣʔβʔૢ࡞͔ΒࣗಈͰ දࣔ͞ΕΔ͜ͱ͕͋Δ
  147. σεΫτοϓͱϞόΠϧ w ςΩετͷฤूϝχϡʔͷදࣔ !147 ૢ࡞ ίϝϯτ σεΫτοϓ w ӈΫϦοΫ Ϣʔβʔ͕໌ࣔతʹ։͘

    J04 w จࣈྻબ୒࣌ʢૢ࡞தҎ֎ʣ w ϩϯάλοϓͰૠೖҐஔΛมߋޙ w ૠೖҐஔΛλοϓ Ϣʔβʔૢ࡞͔ΒࣗಈͰ දࣔ͞ΕΔ͜ͱ͕͋Δ "OESPJE w จࣈྻબ୒࣌ʢૢ࡞தҎ֎ʣ w ΩϟϨοτͷϋϯυϧΛλοϓ Ϣʔβʔૢ࡞͔ΒࣗಈͰ දࣔ͞ΕΔ͜ͱ͕͋Δ
  148. σεΫτοϓͱϞόΠϧ w ςΩετͷબ୒Ϟʔυ։࢝ !148 ૢ࡞ ίϝϯτ σεΫτοϓ w ΫϦοΫԡԼ Ϛ΢εΛҠಈͰൣғมߋ

    J04 w ϩϯάλοϓ͔Β%λον w %λον͔ΒԣεϫΠϓ ࢦΛҠಈͰൣғมߋ "OESPJE w ϩϯάλοϓ w ԣʹ௕͘εϫΠϓ ࢦΛҠಈͰൣғมߋ
  149. σεΫτοϓͱϞόΠϧ w ςΩετͷબ୒Ϟʔυ։࢝ !149 ૢ࡞ ίϝϯτ σεΫτοϓ w ΫϦοΫԡԼ Ϛ΢εΛҠಈͰൣғมߋ

    J04 w ϩϯάλοϓ͔Β%λον w %λον͔ΒԣεϫΠϓ ࢦΛҠಈͰൣғมߋ "OESPJE w ϩϯάλοϓ w ԣʹ௕͘εϫΠϓ ࢦΛҠಈͰൣғมߋ
  150. σεΫτοϓͱϞόΠϧ w ςΩετͷબ୒Ϟʔυऴྃ !150 ૢ࡞ ίϝϯτ σεΫτοϓ w ΫϦοΫΛ཭͢ J04

    w ࢦΛ཭͢ "OESPJE w ࢦΛ཭͢
  151. σεΫτοϓͱϞόΠϧ w ςΩετͷબ୒Ϟʔυมߋ !151 ૢ࡞ ίϝϯτ σεΫτοϓ w μϒϧλοϓԡԼ͔Β࢝ΊΔ w

    τϦϓϧλοϓԡԼ͔Β࢝ΊΔ w ճλοϓԡԼ͔Β࢝ΊΔ ͦΕͧΕ୯ޠɾจষɾஈ མ୯Ґͷબ୒Ϟʔυ ͍ͣΕ΋ͳ͍͜ͱ͕͋Δ J04 w %λονͰ୯ޠ୯ମબ୒Ϟʔυ w μϒϧ%λονͰจষબ୒Ϟʔυ w τϦϓϧ%λονͰஈམબ୒Ϟʔυ ϩϯάλοϓதʹάοά ͬͱԡ͢ͱͰ͖Δ "OESPJE w ͳ͠
  152. σεΫτοϓͱϞόΠϧ w ςΩετͷબ୒Ϟʔυมߋ !152 ૢ࡞ ίϝϯτ σεΫτοϓ w μϒϧλοϓԡԼ͔Β࢝ΊΔ w

    τϦϓϧλοϓԡԼ͔Β࢝ΊΔ w ճλοϓԡԼ͔Β࢝ΊΔ ͦΕͧΕ୯ޠɾจষɾஈ མ୯Ґͷબ୒Ϟʔυ ͍ͣΕ΋ͳ͍͜ͱ͕͋Δ J04 w %λονͰ୯ޠ୯ମબ୒Ϟʔυ w μϒϧ%λονͰจষબ୒Ϟʔυ w τϦϓϧ%λονͰஈམબ୒Ϟʔυ ϩϯάλοϓதʹάοά ͬͱԡ͢ͱͰ͖Δ "OESPJE w ͳ͠
  153. σεΫτοϓͱϞόΠϧ w ςΩετͷબ୒ !153 ૢ࡞ ίϝϯτ σεΫτοϓ w μϒϧΫϦοΫ w

    τϦϓϧΫϦοΫ w ճΫϦοΫ ͦΕͧΕ୯ޠɾจষɾஈ མ୯Ґͷબ୒ ͍ͣΕ΋ͳ͍͜ͱ͕͋Δ J04 w μϒϧλοϓ w %λον "OESPJE w μϒϧλοϓ
  154. σεΫτοϓͱϞόΠϧ w ςΩετͷબ୒ൣғͷमਖ਼ !154 ૢ࡞ ίϝϯτ σεΫτοϓ w 4IJGUΩʔʴΫϦοΫ ։࢝Ґஔͷมߋ͸Ͱ͖ͳ

    ͍ J04 w બ୒ൣғͷΧʔιϧΛυϥοά બ୒ൣғΛमਖ਼Ͱ͖Δ "OESPJE w બ୒ൣғͷΧʔιϧΛυϥοά બ୒ൣғΛमਖ਼Ͱ͖Δ
  155. σεΫτοϓͱϞόΠϧ w ςΩετͷબ୒ൣғͷमਖ਼ !155 ૢ࡞ ίϝϯτ σεΫτοϓ w 4IJGUΩʔʴΫϦοΫ ։࢝Ґஔͷมߋ͸Ͱ͖ͳ

    ͍ J04 w બ୒ൣғͷΧʔιϧΛυϥοά બ୒ൣғΛमਖ਼Ͱ͖Δ "OESPJE w બ୒ൣғͷΧʔιϧΛυϥοά બ୒ൣғΛमਖ਼Ͱ͖Δ
  156. σεΫτοϓͱϞόΠϧ w جຊతͳจࣈྻબ୒ͷ6*ʢΩʔϘʔυҎ֎͔Βͷૢ࡞ʣ w ࢦͷૢ࡞ਫ਼౓͕௿͍ͷͰͦΕΛิ͏ૢ࡞͕ଟ͍ w J04ͱ"OESPJEͰ΋͚ͬ͜͏ҧ͏ !156

  157. ༨ஊJ04ͱςΩετ w TFU"UUSJCVUFE.BSLFE5FYUʹΑΔະ֬ఆจࣈྻͷ૷০ w IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOVJLJU VJUFYUJOQVUTFUBUUSJCVUFENBSLFEUFYU w ະ֬ఆจࣈྻͷαʔυύʔςΟΩʔϘʔυ΁ͷ։์ w IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOVJLJU

    VJUFYUEPDVNFOUQSPYZTFUNBSLFEUFYU w IUUQTXXXBQQMFDPNKQJPTJPTQSFWJFXGFBUVSFT w ຊࢦεϫΠϓͰͷऔΓফ͠ɾ΍Γ௚͠ w ຊࢦͰͷίϐʔɾΧοτˍϖʔετ w ճλοϓճλοϓͰจষஈམͷબ୒ !157
  158. σ ε Ϋ τ ỽ ϓ ͱ Ϟ ό Π

    ϧ w σ ε Ϋ τ ỽ ϓ  w ෺ ཧ Ω ʔ Ϙ ʔ υ  w Ϟ ό Π ϧ  w ι ϑ τ ΢ ỻ Ξ Ω ʔ Ϙ ʔ υ ɾ Ի ੠ ೖ ྗ  w ॎ ॻ ͖ Τ σ ỹ λ ಛ ༗ ͷ ໰ ୊  w ι ϑ τ Ω ʔ Ϙ ʔ υ WT Ϧ ϑ ϩ ʔ !158
  159. "OESPJE࣮૷ w "OESPJEͷ࣮૷ w BOESPJEXJEHFU5FYU7JFXͷΑ͏ͳΧελϜ7JFX w ςΩετϏϡʔΞΛ࣮૷ w ςΩετબ୒ͷ6*Λ࣮૷ w

    7JFXͰPO$SFBUF*OQVU$POOFDUJPOΛ࣮૷ w Ωʔϫʔυɿ#BTF*OQVU$POOFDUJPO !159
  160. "OESPJE࣮૷ʹ͍ͭͯৄ͘͠ w %SPJE,BJHJʮθϩ͔Β࣮૷͢Δॎॻ͖5FYU7JFXͱ ͦͷपลٕज़ʯ w IUUQTTQFBLFSEFDLDPNDDWFSUJDBM UFYUWJFXGSPNTDSBUDIBOESFMBUFEUFDIOPMPHJFT !160

  161. J04࣮૷ w J04ͷ࣮૷ w 6*5FYU7JFXͷΑ͏ͳΧελϜ7JFX w ςΩετϏϡʔΞΛ࣮૷ w ςΩετબ୒ͷ6*Λ࣮૷ w

    6*7JFXͰ6*5FYU*OQVUΛ࣮૷ !161
  162. J04࣮૷ʹ͍ͭͯৄ͘͠ w J04%$ʮ6*7JFXͱ6*5FYU*OQVUͰ࡞Δॎॻ͖ͷ 5FYU7JFXʯ w IUUQTTQFBLFSEFDLDPNDDWFSUJDBM UFYUWJFXCBTFEPOVJWJFXXJUIVJUFYUJOQVU !162

  163. ·ͱΊ

  164. ·ͱΊ w ॎॻ͖ΤσΟλͷ࡞Γํ w QMBUGPSNJOEFQFOEFOUͳ࿩ w จࣈίʔυ w ϑΥϯτඳը w

    QMBUGPSNTQFDJpDͳ࿩ w *.&ͱͷΠϯλϑΣʔεʹ͍ͭͯ w ୺຤಺ͷϑΥϯτಡΈࠐΈํ๏ w ਐԽ͢ΔϞόΠϧͷςΩετΤσΟλͷ6* !164
  165. ͓·͚

  166. 8&#ʹ͍ͭͯิ଍ w 8&#ϒϥ΢βͰॎॻ͖ฤू͢Δ৔߹ w XSJUJOHNPEFWFSUJDBMSMWFSUJDBMMS w DPOUFOUFEJUBCMFUSVF !166 ϒϥ΢β දࣔ/ฤू

    Firefox Մೳ Enge Մೳ Safari Մೳ Google Chrome ෆՄೳͰ͸ͳ͍ ʢ্Լࠨӈʹਖ਼͘͠ಈ͚ͳ͍ʣ
  167. ࠓޙ w 8&#Ϋϥ΢υػೳ w σεΫτοϓ൛ͷ࠶࣮૷ w 6*͕΍͹͍ w (16ʹΑΔϨϯμϦϯά w

    .VMUJDIBOOFM4%' w 47(ΧϥʔֆจࣈରԠ !167