オープンソースの画像生成AIをセットアップから使い方まで解説する『Stable Diffusion AI画像生成ガイドブック』(ソシム刊)発売中(→本のサポートページ

更新履歴的日記:更新履歴更新/のりました

元記事:更新履歴更新/のりました】

宝島社から出ている「DOS/V USER」、2月18日発売の3月号に「点取占い」が紹介された。ので、このページを更新。

届いた見本誌をうきうきしながら見てみると…こっこの画面キャプチャーはきちんと表示されていないものではないか!まいった!作者のコメント「見た目が実際の点取占いに近くなるよう工夫しています」の、なんとむなしきことよ。

[true tentori fortune image]

よい点取り占い↑

[psudo tentori fortune image]

だめな点取り占い↑

DOS/V USER」に載った画面はこの「だめな点取り占い」のほうである。このように、占いが1行に2文字づつ表示されてしまう不具合は、ブラウザが実装しているJavaScriptのバージョンによるものだ。

点取占い」では、たとえば「まんぷくや ○5点」という占いを表示させるには、「ま」改行「ん」改行「ぷ」改行「く」改行「や」というように、1文字ごとに改行を入れて縦書きにしている。この「1文字ごと」というのがくせもので、あるバージョンまでのブラウザ(が実装していたJavaScript)は「1文字」を1バイトと考えていた。だから、1文字が2バイトある日本語の文字をきちんと1文字づつ取り出すには、「1文字ごとに改行を入れる」ではなく「2バイトごとに改行を入れる」という処理にする必要があったのだ。

時が過ぎ、日本語のような2バイト文字の1文字も、1バイト文字の1文字と同じ処理で取り出せる新しいJavaScriptがリリースされた。この新しいJavaScriptを実装したブラウザでは、日本語の1文字ごとに改行を入れるにおいて「2バイトごとに改行を入れる」ではなく「1文字ごとに改行を入れる」と処理すればよいのである。これですべてが丸くおさまった…かといえばさにあらず。古いJavaScriptを実装しているこれまでのブラウザを使い続ける人も当然いるわけで、ブラウザのバージョンによって処理を変えてやらなければならないのだった。「DOS/V USER」に「だめな点取り占い」が載ったのは、ブラウザのバージョン判定がうまく働いていなかったことの証なんである。

とまあ、長々と現在の「点取占い」の不具合について書いてきたが、実はHTMLの書き方を工夫すれば2バイトだの1文字だのといった話は関係なくなり、ブラウザのバージョンごとに処理を変える必要がなくなるのだ。あそこにあの属性を追加してやれば…しかし今日はもう遅いのでこれまで。