退屈をぶっ飛ばせ
このGW、天気は悪くないものの強風で鉄道はグダグダなので近場のお出かけはままならず、個人的事情で遠くへの旅行はちょっとという感じだったのでせっかくの8連休だったのだが、特にすることがない。
そこで前から気になったウェブページを保存したときに気にしていたのだが取り掛かれなかったLocal INdex maker "LIN" & "LIN-Win"のUnicode対応を行うことにした。
それにしても、6日を費やすとは思っても見なかった。
コア部分
まずはコア部分であるが、地味に時間がかかった。
Windowsとのインタフェース部をUnicode化してあとは気になるところを潰してと思っていたがそんなこんなで3日はかかった。
主な修正点は以下である。
- サロゲートペアの処理
- JIS X 0213の認識(するだけ)
- WindowsのUnicode API対応
- ほかミスの修正
ミスの修正についてはよく動いていたなというレベルだった。
今回はせっかくAIが使えるのでAIにレビューをさせてみた。今の仕事先ではできないので今風である。
std::stringviewやstd::shared_ptrも提案されたが、時間がないのでバグ取りだけとなった。これはそのうち。
GUI
GUIの部分は以下のことを行った。
- Unicode化
- OSによってフォントを変えること
- 高DPIで破綻しないようにすること
OSによってフォントを変えるのは日本のソフトがいつまで経ってもMSゴシック・MS UI ゴシックを使っていてだからダサいということへの反抗なのだが、Windows 8.1の游ゴシックが見つからず苦労する。で、答えを見つけたのは13年前に書いたMeiryo UIも大っきらい!!の一節。13年前の自分に負けたようで不覚である。
高DPI対応はやはり苦労するところで画面をまたぐときのDPI変更メッセージがなんであんなに飛んでくるんだかというのと、未だにデバイスコンテキストの正しい使い方を知らずフォントのサイズをちゃんと履かれていなかったことが原因だった。案外ツール類で使うことってないんだなと思わされる。
フレームがなくなった!!
で、リリースとなるのだが今まではHTMLのフレームを使ってHTMLヘルプ代わりにしていたが、現代のHTMLだとAI曰くナビゲーションなどが破綻するので廃止されたとのことで仕方なくHTMLヘルプにする。
それにしてもオフラインヘルプにnode.js持ってきてツールを動かすだとか果てはElectronで作るとかどれだけオフラインのヘルプを放置してたんだというものである。
ソフトが生成するフレーム形式の表示はHTML 4.01のものを使っているが、出力形式を考えさせられるというものである。
フレーム形式での目次と選択したファイルの同時表示をどうするかとか考えさせられる終わりとなった。
OSSにしたのなら
せっかくOSSにしたのでタグをちゃんとつければリリースが楽なGitHubにソースを出すようにした。git-svnの分はうまく転送できなかったが古すぎるので良いかなと。
また、掲示板を作るのを凍結したのでディスカッションのカテゴリを日本語にするということをやったのでこっちの方を日本人のみなさんも使ってほしいところである。
Meiryo UIも大っきらい!!ではGitHubに書いてくる日本人いないし。
ということで10年ぶりのリリースで今までエラーになっていたUnicodeファイル名のファイルも整理できてバッチリである。