Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
全角チルダ問題
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
tsuda.a
July 05, 2014
Programming
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
全角チルダ問題
全角チルダ問題
tsuda.a
July 05, 2014
More Decks by tsuda.a
See All by tsuda.a
Git を GUI で使う話
tsudaahr
0
95
マジカルインクリメントと指数表記
tsudaahr
0
250
バックアップしていますか?
tsudaahr
0
150
RDB以前のファイル設計の話でもしようか(ぇ
tsudaahr
0
160
NPUわからん
tsudaahr
0
210
計算量オーダーの話
tsudaahr
1
460
クラウド初学者が抱える不安について
tsudaahr
0
330
キューとは何か
tsudaahr
0
280
等幅は死んだ(ぇ
tsudaahr
0
130
Other Decks in Programming
See All in Programming
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
300
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
460
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
140
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
150
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
590
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
110
Oxlintのカスタムルールの現況
syumai
5
1k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.1k
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
1.1k
GitHub Copilot CLIのいいところ
htkym
2
1.3k
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.1k
AIエージェントの隔離技術の徹底比較
kawayu
0
460
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
160
How STYLIGHT went responsive
nonsquared
100
6.2k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
200
The Curious Case for Waylosing
cassininazir
1
370
Fireside Chat
paigeccino
42
3.9k
Raft: Consensus for Rubyists
vanstee
141
7.5k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
130
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
240
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
210
Un-Boring Meetings
codingconduct
0
310
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
420
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
390
Transcript
全角チルダ問題 @tsuda_ahr LTDD#5 2014/7/5
今回のネタの発端 こんな書き込みを見つけまして。
全角チルダ ~
波ダッシュ 〜
違いがわかりしたね?
問い) どっちが波ダッシュ? ~ ~
答え) どっちも全角チルダ(汗
なんでこんなことに? • しらん
参考) 確かめかた (Windows の場合) • 確かめたい文字をコピーします。 • WordPad を起動し、コピーした文字を貼り付けます。 •
確かめたい文字を一文字選択し、ALT + X を押します。 • コード (UCS-4) が表示されます。 • U+301C が波ダッシュ • U+FF5E が全角チルダ
基礎知識1) チルダとは何か? • こういうやつらしい。 ÃÕÑ • 鼻音に関する音をあらわす、ダイアクリティカルマークの一種 • ダイアクリティカルマークってこんなやつら (よくしらない)
À Á Â Ä Å Ă Ą Ā http://ja.wikipedia.org/wiki/%E3%83%80%E3%82%A4%E3%82%A2%E3%82%AF%E3%83%AA%E3%83 %86%E3%82%A3%E3%82%AB%E3%83%AB%E3%83%9E%E3%83%BC%E3%82%AF
基礎知識2) ダッシュとは何か • これではない (らしい) A’ • ダッシュとはこういうやつ (らしい) —
これは「プライム」というのが正解らしい…
ダッシュって何に使う記号? • ダッシュ (emダッシュ) 文と文の間、字句と字句の間に用いられて、時間の経過を表す 単語の後に用いられて省略を表す 用例) もう——だめだ。 たとえデスマーチになろうと ——
ダッシュ(enダッシュ) /ハイフン/マイナスの違い • 1 – 5 (ダッシュ) 1 から 5
• 1 – 5 (ハイフン) 1 の 5 • 1 – 5 (マイナス) 1 ひく 5 わけがわからん(汗 http://ja.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5 _(%E8%A8%98%E5%8F%B7)
Shift JIS (CP932) 時代 • 全角チルダはない。 • あったのは波ダッシュ。 • なので、全角/半角変換の際は、
~ (半角チルダ) は ~ (波ダッシュ) と交換してた ???
Unicode になってから ~ 〜 全角チルダ ( Yu Gothic ) 波ダッシュ
( Arial Unicode MS )
なんで? • Unicode の例示字形を載せる際に間違えたらしい(汗 • Windows XP 以前の 波ダッシュ(U+301C) はこの字形。
• よって、波ダッシュを使用すると、今まで使っていた字形と違うもの が表示されることになってしまう。
しかし規格書の字形例示は、今なお変更なし? http://www.unicode.org/charts/PDF/U3000.pdf
規格はそうだが… でも、さすがに 「〜」 は嫌ですよね?
対策? じゃあ波ダッシュ「〜」じゃなくて、全角チルダ「~」のほうを 使えばいいんじゃね? ↓ いいことに気が付いた! ウハwww 俺天才wwwww かくて Windows では
波ダッシュ が U+FF5C (=全角チルダ) に… 状況を予想するに、字形は Unicode 仕様書に準拠する以上変更ができないのに対して、 ・Shift JIS の 波ダッシュ を Unicode の何に対応させるかとか、 ・”~” の字形に相当する記号を MS-IME で何を候補として出すのかは、 規格があるわけではないので、”~”を 全角チルダに充てるのが一番ストレスがなかった、ってことではないかと…
かくてこういう関係が成り立つ Windows の場合 ASCII UTF SJIS 半角チルダ (0x7E) 全角チルダ (U+FF5E)
波ダッシュ (0x8160) 半角 - SJIS全角 変換 半角 - UTF全角 変換 波ダッシュ (U+301C) 使わない SJIS全角 - UTF全角 変換
でも本来的にはこうだよね 半角チルダ (0x7E) 全角チルダ (U+FF5E) 波ダッシュ (0x8160) SJIS全角 - UTF全角
変換 半角 - UTF全角 変換 波ダッシュ (U+301C) 波ダッシュ同士が 対応するべき 必要?(汗 ASCII UTF SJIS SJIS全角 - UTF全角 変換 半角 - SJIS全角 変換
• 処理系によって、変換方法が違う(汗 現実はこう Windows (CP932) の MAP 方法 Macとか? (ShiftJIS)
の MAP 方法 UTF SJIS 全角チルダ (U+FF5E) 波ダッシュ (0x8160) 波ダッシュ (U+301C)
何が起こるか? • データベースのキャラクターが Shift JIS • フロントエンド(Webページとか) は UTF •
Windows で入力した「~」はデータベースにどう記録されるのか? • iPad で入力した「~」はデータベースにどう記録されるのか? • 記録した文字を読みだして、それぞれの OS で表示させるとどうなる のか?
まとめ • Unicode の例示字形が間違ったのが混乱の源。 • 波ダッシュを全角チルダに充てたことが罪。 • そもそも、なぜ ShiftJIS 時代になかった全角文字が存在するのか…
• いまだに全角文字が使用されること自体も罪。 • 半角カナは今すぐ消えるべき。 文字コードの変換は闇。
ところで 全角チルダのコードですが、 U+FF5E って、やけに後ろのほうだと思いません?
こういうわけです。
半角形/全角形 • 互換用の領域。 • 互換文字とは、既存の文字コードとの互換性と往復変換のためだけに 収録された文字 • ユニコードコンソーシアムは、互換文字は使わないことを推奨 つまり、この領域の文字は使わないほうがよいです。 (極力使わないでください)
ご清聴ありがとうございました
余談 • LT後に質問などで答えたことをまとめておきます。
余談1) なぜ波ダッシュの例示字形を間違ったか? 縦書きの例示字形を 90° 回転させたから。 〜 〜 ちなみに縦/横 変換はいろいろなパターンがあるのです… 変換なし
… 一般の文字 左下⇔右上移動 … 句点/読点 90°回転 … 括弧、鍵括弧 多分、波ダッシュは例外ケース。
余談2) ダッシュは日本語? • ダッシュ記号は、一般句読点(General Punctuation)と呼ばれる U+2000~U+206F の領域にあります。 • 日本語のグループではありません。 •
ちなみに ”横の線” な記号は、たとえば以下のものがあります。 (以下がすべてではない) - U+002D Hyphen-Minus ‐ U+2010 Hyphen - U+2011 Non-Breaking Hyphen ‐ U+2012 Figure Dash – U+2013 En Dash — U+2014 Em Dash ― U+2015 Horizontal Bar ー U+30FC Katakana-Hiragana Prolonged Sound Mark (長音記号) ─ U+2500 Box Drawings Light Horizontal (罫線) ━ U+2501 Box Drawings Heavy Horizontal (罫線) 一 U+4E00 いち
余談3) 長音記号はいつから使われ始めたか? • わかりません(汗 • 歴史的かなづかいでは使われてないよね? • 多分明治から。 http://ja.wikipedia.org/wiki/%E9%95%B7%E9%9F%B3%E7%AC%A6#.E9.95.B7.E9.9F.B3.E7 .AC.A6.E3.81.AE.E6.AD.B4.E5.8F.B2
• 調べたところによると、初出は新井白石らしい。 http://www.shochian.com/cho‘onpu.htm
余談4) ¥記号とか • この手の問題は、波ダッシュやダッシュに限らず、その他にもいろい ろ出てきます。注意しましょう。 • ¥ 記号も同様です。 • 特に
¥ 記号は暗黙に変換されたりする場合があるので気を付けま しょう。 ¥ U+005C Reverse Solidus (Backslash) ¥ U+00A5 Yen Sign ¥ U+FFE5 Fullwidth Yen Sign