Submit Search
Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖
Download as PPTX, PDF
0 likes
1,516 views
A
Atsushi Nakamura
C# Tokyo オンライン LT 大会 2020/07の発表資料です
Software
Read more
1 of 83
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
More Related Content
PPTX
結果を出すチームビルディング術
Mao Ohnishi
PDF
ChatGPT、 何が「できる」「みえる」ようになってきたのか!
Jingun Jung
PDF
Mind maps pathology
Nicolas Lévy
PPTX
振り返り(アジャイルレトロスペクティブズ)
Keisuke Tameyasu
PDF
AgileJapan2010 佐賀県庁でもできる!プロジェクトファシリテーション
Kenji Hiranabe
PDF
サイエンス領域におけるMLOpsの取り組み #yjtc
Yahoo!デベロッパーネットワーク
PDF
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
Yusuke Suzuki
PDF
MPIによる並列計算
HPCシステムズ株式会社
結果を出すチームビルディング術
Mao Ohnishi
ChatGPT、 何が「できる」「みえる」ようになってきたのか!
Jingun Jung
Mind maps pathology
Nicolas Lévy
振り返り(アジャイルレトロスペクティブズ)
Keisuke Tameyasu
AgileJapan2010 佐賀県庁でもできる!プロジェクトファシリテーション
Kenji Hiranabe
サイエンス領域におけるMLOpsの取り組み #yjtc
Yahoo!デベロッパーネットワーク
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
Yusuke Suzuki
MPIによる並列計算
HPCシステムズ株式会社
What's hot
(20)
PDF
Introduction to boost test
Kohsuke Yuasa
PDF
第 1 回 Jetson ユーザー勉強会
NVIDIA Japan
PDF
MoveItの新機能、 OMPL Constrained Planningを試してみた
Ryo Kabutan
PDF
アジャイルとスクラムとは 原則、価値、プラクティス
Yasui Tsutomu
PDF
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
PDF
ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社
Satoru Yamamoto
PDF
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
Yasuyuki Sugai
PDF
Digitaltransformation Journey
toshihiro ichitani
PDF
いまさら聞けないarmを使ったNEONの基礎と活用事例
Fixstars Corporation
PDF
歩行支援機能を有する前腕支持型四輪歩行器の開発に関する研究
harmonylab
PDF
ソースコードの品質向上のための効果的で効率的なコードレビュー
Moriharu Ohzu
PDF
Casewise Corporate Modeler
Jesus Perez Cota
PPTX
軟體開發之路甘苦談(Gelis)
Gelis Wu
PDF
やりなおせる Git 入門
Tomohiko Himura
PPTX
ChatGPT以後の時代をどう生きるか PWA Night vol.51
hedachi
PDF
Git LFSを触ってみた
Yuto Suzuki
PDF
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
PPTX
研究オープンデータにおける大学と研究者の役割
National Institute of Informatics (NII)
PPTX
今さら聞けないITエンジニアのための7つの習慣
Keisuke Tameyasu
PDF
TensorRT Inference Serverではじめる、 高性能な推論サーバ構築
NVIDIA Japan
Introduction to boost test
Kohsuke Yuasa
第 1 回 Jetson ユーザー勉強会
NVIDIA Japan
MoveItの新機能、 OMPL Constrained Planningを試してみた
Ryo Kabutan
アジャイルとスクラムとは 原則、価値、プラクティス
Yasui Tsutomu
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社
Satoru Yamamoto
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
Yasuyuki Sugai
Digitaltransformation Journey
toshihiro ichitani
いまさら聞けないarmを使ったNEONの基礎と活用事例
Fixstars Corporation
歩行支援機能を有する前腕支持型四輪歩行器の開発に関する研究
harmonylab
ソースコードの品質向上のための効果的で効率的なコードレビュー
Moriharu Ohzu
Casewise Corporate Modeler
Jesus Perez Cota
軟體開發之路甘苦談(Gelis)
Gelis Wu
やりなおせる Git 入門
Tomohiko Himura
ChatGPT以後の時代をどう生きるか PWA Night vol.51
hedachi
Git LFSを触ってみた
Yuto Suzuki
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
研究オープンデータにおける大学と研究者の役割
National Institute of Informatics (NII)
今さら聞けないITエンジニアのための7つの習慣
Keisuke Tameyasu
TensorRT Inference Serverではじめる、 高性能な推論サーバ構築
NVIDIA Japan
Ad
More from Atsushi Nakamura
(20)
PPSX
Settings SyncとCodespaceで体験する新世代へのパラダイムシフト
Atsushi Nakamura
PPTX
C#メタプログラミング概略 in 2021
Atsushi Nakamura
PPTX
世界一わかりやすいClean Architecture - DroidKaigiバージョン
Atsushi Nakamura
PPTX
世界一わかりやすいClean Architecture
Atsushi Nakamura
PPTX
世界一わかりやすいClean Architecture release-preview
Atsushi Nakamura
PPTX
世界一わかりやすいClean Architecture alpha-1
Atsushi Nakamura
PPTX
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
Atsushi Nakamura
PPTX
Desktop app dev strategy for .net core 3.0
Atsushi Nakamura
PPTX
継続的にテスト可能な設計を考える
Atsushi Nakamura
PPTX
継続的にテスト可能な設計を考える ベータ版
Atsushi Nakamura
PPTX
α版 継続的にテスト可能な設計を考える
Atsushi Nakamura
PDF
App center analyticsを使い倒そう
Atsushi Nakamura
PPTX
Old:App center analyticsを使い倒そう
Atsushi Nakamura
PPTX
Xamarin.forms navigation overview
Atsushi Nakamura
PPTX
App center analyticsを使い倒そう
Atsushi Nakamura
PPTX
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
PPTX
Blue monkey architecture overview
Atsushi Nakamura
PPTX
Xamarin Dev days 2 xamarin.forms ja
Atsushi Nakamura
PPTX
Why prism for xamarin.forms
Atsushi Nakamura
PPTX
Enterpriseから見たXamarinの可能性
Atsushi Nakamura
Settings SyncとCodespaceで体験する新世代へのパラダイムシフト
Atsushi Nakamura
C#メタプログラミング概略 in 2021
Atsushi Nakamura
世界一わかりやすいClean Architecture - DroidKaigiバージョン
Atsushi Nakamura
世界一わかりやすいClean Architecture
Atsushi Nakamura
世界一わかりやすいClean Architecture release-preview
Atsushi Nakamura
世界一わかりやすいClean Architecture alpha-1
Atsushi Nakamura
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
Atsushi Nakamura
Desktop app dev strategy for .net core 3.0
Atsushi Nakamura
継続的にテスト可能な設計を考える
Atsushi Nakamura
継続的にテスト可能な設計を考える ベータ版
Atsushi Nakamura
α版 継続的にテスト可能な設計を考える
Atsushi Nakamura
App center analyticsを使い倒そう
Atsushi Nakamura
Old:App center analyticsを使い倒そう
Atsushi Nakamura
Xamarin.forms navigation overview
Atsushi Nakamura
App center analyticsを使い倒そう
Atsushi Nakamura
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
Blue monkey architecture overview
Atsushi Nakamura
Xamarin Dev days 2 xamarin.forms ja
Atsushi Nakamura
Why prism for xamarin.forms
Atsushi Nakamura
Enterpriseから見たXamarinの可能性
Atsushi Nakamura
Ad
Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖
1.
Copyright 2020 @nuits_jp Unicodeで半角全角を扱う Ambiguous(曖昧さ)とUncertainty(不確実性)の恐怖 Atsushi
Nakamura
2.
Copyright 2020 @nuits_jp Easiest
Clean Architecture About Me
3.
Copyright 2020 @nuits_jp
Slide 3 About Me 中村 充志 / Atsushi Nakamura • リコージャパン株式会社 所属 • Enterprise(おもに金融)系SIerのITアーキテクト • 「持続可能なソフトウェア」の探求がライフワーク • 2020年の目標 1. 「CleanArchitecture」について登壇したい 2. 「xUnit & Moqハンズオン」開催 3. 構成管理フレンドリーなERモデリングツール作成 • Blog http://www.nuits.jp • Blog(英語) https://blog.nuits.jp • Twitter @nuits_jp
4.
Copyright 2020 @nuits_jp
Slide 4 Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖 みなさん、こんな経験はありませんか?
5.
Copyright 2020 @nuits_jp
Slide 5 例えばこんなとき • 新しいAPIをお試しで利用するとき、その結果を表示させたい • 簡単なツールを作るのだがGUIはやりすぎなのでCUIでつくりたい そして・・・ Overview Slide 5
6.
Copyright 2020 @nuits_jp
Slide 6 コンソールにテーブル形式で結果表示したい!
7.
Copyright 2020 @nuits_jp
Slide 7 そんなときの心強い味方 「ConsoleTales」 • https://github.com/khalidabuhakmeh/ConsoleTables ConsoleTables Slide 7
8.
Copyright 2020 @nuits_jp
Slide 8 でもこれ・・・
9.
Copyright 2020 @nuits_jp
Slide 9 全角を使うとレイアウトが崩れてしまいます 全角が・・・
10.
Copyright 2020 @nuits_jp
Slide 10 と、いうわけで・・・
11.
Copyright 2020 @nuits_jp
Slide 11 全角対応テキストテーブルライブラリを作るしか!?
12.
Copyright 2020 @nuits_jp
Slide 12Slide 12 できました!
13.
Copyright 2020 @nuits_jp
Slide 13 FluentTextTable FluentTextTable • https://github.com/nuitsjp/FluentTextTable 簡単で、柔軟かつ流暢(Fluent)にレイアウトをカスタマイズできるテキスト テーブルライブラリです。 NuGetから利用可能です。 Slide 13
14.
Copyright 2020 @nuits_jp
Slide 14 Basic
15.
Copyright 2020 @nuits_jp
Slide 15 Markdown対応
16.
Copyright 2020 @nuits_jp
Slide 16 改行や配列を含むプロパティ対応
17.
Copyright 2020 @nuits_jp
Slide 17 アライメントや詳細なフォーマットに対応 箇条書きとか!
18.
Copyright 2020 @nuits_jp
Slide 18 Borderのカスタマイズ
19.
Copyright 2020 @nuits_jp
Slide 19 MarginとPadding
20.
Copyright 2020 @nuits_jp
Slide 20 まぁ・・・振り返って気がつきました・・・
21.
Copyright 2020 @nuits_jp
Slide 21 やりすぎました!
22.
Copyright 2020 @nuits_jp
Slide 22Slide 22 でもこれ実は
23.
Copyright 2020 @nuits_jp
Slide 23Slide 23 苦難の連続でした
24.
Copyright 2020 @nuits_jp
Slide 24Slide 24 そんな訳で聞いてください
25.
Copyright 2020 @nuits_jp
Slide 25 Unicodeで半角全角を扱う Ambiguous(曖昧さ)とUncertainty(不確実性)の恐怖 Atsushi Nakamura
26.
Copyright 2020 @nuits_jp
Slide 26 Unicodeには文字を分類するための各種辞書が規定されています。 東アジア圏の全角・半角を分類するための辞書もあります。 UAX #11: East AsianWidth – Unicode • http://www.unicode.org/reports/tr11/tr11-38.html • http://ftp.unicode.org/Public/UNIDATA/EastAsianWidth.txt Unicodeにおける全角・半角判定
27.
Copyright 2020 @nuits_jp
Slide 27 これを読んで処理すれば解決なんですが・・・
28.
Copyright 2020 @nuits_jp
Slide 28 まず辞書を読むのが面倒
29.
Copyright 2020 @nuits_jp
Slide 29 よく見ると・・・・ • 「;」の前が文字コードのレンジ、その後ろが種別 • レンジは範囲と単独がある • 未定義のとび版がある Unicodeにおける全角・半角判定
30.
Copyright 2020 @nuits_jp
Slide 30 • 同じ種別なのに単一の範囲ではなく複数に分けられている (文字の中身の種類が違うから)
31.
Copyright 2020 @nuits_jp
Slide 31 と、いうわけで
32.
Copyright 2020 @nuits_jp
Slide 32 まず全角・半角判定ライブラリを作ることにしました
33.
Copyright 2020 @nuits_jp
Slide 33Slide 33 できました!
34.
Copyright 2020 @nuits_jp
Slide 34 EastAsianWidthDotNet EastAsianWidthDotNet https://github.com/nuitsjp/EastAsianWidthDotNet • 辞書をパースするサポートライブラリを作成 • パース結果を無駄を省いて最適化 • 辞書などのリソースを都度読むと遅いのでT4テンプレートでコード生成
35.
Copyright 2020 @nuits_jp
Slide 35 で実感します
36.
Copyright 2020 @nuits_jp
Slide 36 Ambiguous(曖昧)について
37.
Copyright 2020 @nuits_jp
Slide 37 辞書は文字コードの範囲と、対象範囲の種別が規定されている。 EastAsianWidthの種別は6つ • Ambiguous • Fullwidth • Halfwidth • Narrow • Wide • Neutral これらが言語圏によって扱いが規定されている。 Unicodeにおける全角・半角判定
38.
Copyright 2020 @nuits_jp
Slide 38 種別 東アジア それ以外 Ambiguous 全角 半角(正確にはnarrow) Fullwidth 全角 未使用 Halfwidth 半角 未使用 Narrow 半角 半角(正確にはnarrow) Wide 全角 未使用 Neutral 半角 半角(正確にはnarrow) Unicodeにおける全角・半角判定 ウィキペディアより A(Ambiguous; 曖昧) 文脈によって文字幅が異なる文字。東アジアの組版とそれ以外の組版の両方に出現し、 東アジアの従来文字コードではいわゆる全角として扱われることがある。 ギリシア文字やキリル文字など。
39.
Copyright 2020 @nuits_jp
Slide 39 なるほど! ギリシャ文字とキリル文字の言語圏を 調べて特殊処理すればいいんだな! 👆勘違い
40.
Copyright 2020 @nuits_jp
Slide 40 CultureInfoをひとつづつ全部調べた。数日使った。 👈勘違い 途中までしらべた
41.
Copyright 2020 @nuits_jp
Slide 41 ここまできて「はた」と気が付きました
42.
Copyright 2020 @nuits_jp
Slide 42 Not東アジアって英語圏とかも全部じゃん?
43.
Copyright 2020 @nuits_jp
Slide 43 「Not東アジア」ではなく「東アジア」を判定する
44.
Copyright 2020 @nuits_jp
Slide 44 東アジアのCultureInfoのプレフィックス 総当たりで調べた!(漏れてたら教えてください)
45.
Copyright 2020 @nuits_jp
Slide 45 完成!
46.
Copyright 2020 @nuits_jp
Slide 46Slide 46 と思ったところから「闇」の始まりだった
47.
Copyright 2020 @nuits_jp
Slide 47 種別 東アジア それやめろ文字 Ambiguous 全角 Neutral 半角 闇の入口
48.
Copyright 2020 @nuits_jp
Slide 48 種別 東アジア それやめろ文字 Ambiguous 全角 Neutral 半角 闇の入口
49.
Copyright 2020 @nuits_jp
Slide 49 種別 東アジア それやめろ文字 Ambiguous 全角 Neutral 半角 闇の入口
50.
Copyright 2020 @nuits_jp
Slide 50 種別 東アジア それやめろ文字 Ambiguous 全角 Neutral 半角 闇の入口
51.
Copyright 2020 @nuits_jp
Slide 51Slide 51 ん~。フォントファイル解析して文字幅測定するか?
52.
Copyright 2020 @nuits_jp
Slide 52Slide 52 ダメでした
53.
Copyright 2020 @nuits_jp
Slide 53 闇の入口 ここになんの変哲もない砂時計があります。
54.
Copyright 2020 @nuits_jp
Slide 54 闇の入口 ここになんの変哲もない砂時計があります。 これを8個並べましょう。
55.
Copyright 2020 @nuits_jp
Slide 55 闇の入口 ここになんの変哲もない砂時計があります。 これを8個並べましょう。
56.
Copyright 2020 @nuits_jp
Slide 56 闇の入口 ここになんの変哲もない砂時計があります。 これを8個並べましょう。 えっ!?
57.
Copyright 2020 @nuits_jp
Slide 57 さん。まさかの0.75角!?
58.
Copyright 2020 @nuits_jp
Slide 58 続けて調べると、怪しい文字がぞろぞろ・・・
59.
Copyright 2020 @nuits_jp
Slide 59 結論
60.
Copyright 2020 @nuits_jp
Slide 60 完璧を追い求めるのは無理。 怪しい文字が崩れるのは諦めろ。 結論 Slide 60
61.
Copyright 2020 @nuits_jp
Slide 61 そして月日は流れる
62.
Copyright 2020 @nuits_jp
Slide 62 FluentTextTable完成!
63.
Copyright 2020 @nuits_jp
Slide 63 で、思うわけですよ
64.
Copyright 2020 @nuits_jp
Slide 64 日本人なら・・・ こんな感じで罫線文字(┌┬┘とか)使いたいよね? Borderは全角にもマルチ文字にもカスタマイズ可能! デフォルトのプリセット作るか!
65.
Copyright 2020 @nuits_jp
Slide 65 日本人なら・・・ こんな感じで罫線文字(┌┬┘とか)使いたいよね? Borderは全角にもマルチ文字にもカスタマイズ可能! デフォルトのプリセット作るか! 👇できました!
66.
Copyright 2020 @nuits_jp
Slide 66 動かしました!
67.
Copyright 2020 @nuits_jp
Slide 67 (*´Д`)はぁ・・・?
68.
Copyright 2020 @nuits_jp
Slide 68 メモ帳様ならちゃんと!
69.
Copyright 2020 @nuits_jp
Slide 69 あれ?
70.
Copyright 2020 @nuits_jp
Slide 70 あれれ?? これはもしや・・・
71.
Copyright 2020 @nuits_jp
Slide 71 ? ここに「─(罫線)」があるじゃろ? ( ^ω^) ⊃─⊂
72.
Copyright 2020 @nuits_jp
Slide 72 ? ここに「─(罫線)」があるじゃろ? ( ^ω^) ⊃─⊂ これを「〇」と合わせて ( ^ω^) ≡ ≡
73.
Copyright 2020 @nuits_jp
Slide 73 ? ここに「─(罫線)」があるじゃろ? ( ^ω^) ⊃─⊂ これを「〇」と合わせて ( ^ω^) ≡ ≡ こうじゃ! ( ^ω^) ⊃ ⊂
74.
Copyright 2020 @nuits_jp
Slide 74 ええっ!? 貫通してる!?
75.
Copyright 2020 @nuits_jp
Slide 75 あっっぽーぺん!?
76.
Copyright 2020 @nuits_jp
Slide 76 コンソールのバグ・・・
77.
Copyright 2020 @nuits_jp
Slide 77 いや、まだあわてるような時間じゃない
78.
Copyright 2020 @nuits_jp
Slide 78Slide 78 きっと我らの「WindowsTerminal」様なら・・・
79.
Copyright 2020 @nuits_jp
Slide 79 ダメでした! 貫通はしない! だがしかし! 半角! それでもおれらの「WindowsTerminal様なら Slide 79
80.
Copyright 2020 @nuits_jp
Slide 80 諦めました
81.
Copyright 2020 @nuits_jp
Slide 81Slide 81 Unicodeで半角全角を扱う Ambiguous(曖昧さ)とUncertainty(不確実性)の恐怖
82.
Copyright 2020 @nuits_jp
Slide 82Slide 82 味わっていただけましたか?
83.
Copyright 2020 @nuits_jp
Slide 83 ThankYou! おしまい!
Download