メール一覧 Subject: のソート順が微妙にNo.46732
Kengo さん 14/09/18 11:27
 
環境は、Win98SE 6.31 Beta 7 (32) です。

メール一覧を「Subject:順」でソートした時に、ソート順が微妙におかしい
ことがあります。

例としては、

http://www.dotup.org/uploda/www.dotup.org5319471.png.html

こんな画面の感じです。
# 迷惑メールフォルダのキャプチャなので、その種のキーワードが
# 嫌いな方は見ない方がいいと思います。

ここでは頭文字が「エ→ド→カ→ド→カ→パ→ノ→ス→ネ→ス→ラ」の順に
なっています。

「必ずこの順番か」というとそうとも限らず、
・ヘッダ部を Subject→アイコン の順にクリックし「2番目のソート」に
 すると並び順が変わる
・新しくフォルダにメールを加えてソートしなおすと並び順が変わる
 →それを削除しても元通りにならない(?)
といったことになっています。
「昨日と並び順が違う…」こともよくあります。
上の画面キャプチャと同じSubject:のメールを用意してSubject:でソート
しても「再現しない(正常に並ぶ)」ことは充分ありえると思います。

「Win98SE」という古い環境であること以外にも何か他に条件があるように
思いますが、それが何かはちょっとわかりません。

なお、Win8.1 (64) 6.31 Beta 7 (64) では問題ないようです。
厳密にチェックしたわけではありませんが。

[ ]
RE:46732 メール一覧 Subject: のソート順No.46736
秀まるお2 さん 14/09/18 14:05
 
 毎度バグでお手数かけてすみません。連絡いただいた件ですが、調べてみたら、
たしかにバグってました。

 実は、全角文字と半角カナが混じっている時に、半角カナを全角文字よりも文
字コードか小さい扱いになるようにって修正を、割と最近(というか、半年くら
い前?)にしました。それのせいでレベルダウンしてしまってました。

 テストしてたつもりだったんですが、気づきませんでした。大変失礼しました。

 Windowsの種類は関係なくて、32bit版でも64bit版でもダメでした。

 例えば簡単な例だと、

 カード
 ヌルヌル
 キーン

 とかあった時に、文字コード的には「カ、キ、ヌ」の受信になるべきなのに、
上の並び順になってしまってました。

 また修正させていただきます。

 あと、これに関係して、別のレベルダウンのバグもありました。

 The b
 spam
 The p

 のように並んでる時に、「spam」が真ん中に入るようです。これは大文字/小
文字の区別関係の処理が、半角カナ関係でいじった時にレベルダウンしてました。
(こっちは32bit版だけバグってた)

 これも直します。

> ・ヘッダ部を Subject→アイコン の順にクリックし「2番目のソート」に
>  すると並び順が変わる

 一応、ソートのロジック的には毎回同じ結果になるはずだと思うんですけど、
もしかしてWindows98の場合だけおかしいってことがあるのやら?。

 とりあえず、上記のバグ修正をしてからもう一回詳しく検証してみます。

[ ]
RE:46736 メール一覧 Subject: のソート順No.46737
Kengo さん 14/09/18 14:36
 
>  Windowsの種類は関係なくて、32bit版でも64bit版でもダメでした。

Win8.1 (64) 6.31 Beta 7 (64) で再度調べてみました。

カナについては、
 ア→イ→テ→エ→ニ→パ→コ→フ→サ→ス→マ
となるケースが見つかりました。

アルファベットは今のところ見つかっていません。

>  The b
>  spam
>  The p
>
>  のように並んでる時に、「spam」が真ん中に入るようです。これは大文字/小
> 文字の区別関係の処理が、半角カナ関係でいじった時にレベルダウンしてました。
> (こっちは32bit版だけバグってた)

Win98SE ですが、

-------------------------------
hontoポイント ...
hontoポイント ...
hatena
hi
hoge
Halaman Pembicaraan ...
IS03
i.Radio NTD-9000
iPad2専用のキーボード ...
iPhone 4遂に発売! ...
iPhone最新機種に対応! ...
idea
iPad、PCで読める ...
hontoポイント ...
hontoポイント ...
-------------------------------

というケースもありました。
むしろこの「半角アルファベット」がおかしいのに先に気づいて、
これが何の条件だかでコロコロ変わるのでなんだかよくわかりません。

[ ]
RE:46737 メール一覧 Subject: のソート順No.46740
秀まるお2 さん 14/09/18 15:25
 
 32bit版の方では文字列比較の処理をアセンブリコードで書いてまして、大文
字/小文字の区別の部分をしなくする用の処理までもがバグってました。

 一応、今度こそちゃんとテストしてからアップロードするので、また次のβ版
で確認お願いしたいです。

 速度も落とさないでバグも出さないで、しかも追加のルールもありで…。
テストが手抜きになってしまいました。

[ ]
RE:46740 メール一覧 Subject: のソート順No.46742
秀まるお2 さん 14/09/18 17:00
 
 いろいろテストしてたらずっと昔からおかしいのもありました。

  10001
  10002

  となった場合は10002の方が「大」になるんですが、

  100001
  10002

 の場合、本来は数値同士の比較で「100001」が大となるべきが、そうなってま
せんでした。これまた直します。

[ ]
RE:46736 メール一覧 Subject: のソート順No.46746
Kengo さん 14/09/19 12:40
 
Win98SE 6.31 Beta 7 (32) で特定のメールを選択した状態で、
1)ヘッダの Subject: をクリック
2)ヘッダの アイコン をクリック
を繰り返して、各画面のキャプチャを取り、それぞれ4画面分を
並べて合成しました。

○ Subject: でのソート

http://www.dotup.org/uploda/www.dotup.org5321420.png.html

Subject: でソートされていることを示す▲があります。
4つとも並び順はバラバラです。

○アイコン でのソート

http://www.dotup.org/uploda/www.dotup.org5321421.png.html

Subject: が「2番目のソート順」になります。
それを示す「.」がよく見ると見えると思います。
これも順番はバラバラです。

[ ]
RE:46746 メール一覧 Subject: のソート順No.46747
秀まるお2 さん 14/09/19 15:08
 
 今まだテスト中なんですが、32bit版と64bit版とでのメール一覧のソート結果
の比較をして、いくつか一致しない例を見つけてバグ修正などしました。

 なので、次のβ版では大丈夫なはずだと思います。

 特にダメな例としては、utf-8、つまり、多国語混在ユニコードのメールがあ
ると狂う例が多いかなぁと思ったのですが…。

 それと、Windows98が関係するとしたら、ユニコード文字をShift-JISに変換す
る処理がWindowsXP等と違う点があって、それのせいで比較が正確にいってない
可能性はあるかなぁと思いました。その辺、正確に比較するように一応修正して
みました。(それについての検証はまだですが)

 なので、一応次のβ版で直るはずだと思います。

 まだテスト不足な点があるので、少々お待ちください。

--------------------------------------------------------
 メールのソートロジックですが、例えばSubject:ヘッダで比較して、内部的な
バグのせいで「イコール」と誤判定されるケースはあったと思うんですが、そう
なったとしても、メールの送受信日時が違っていれば、並び順が不定になる(毎
回変わる)ことは無いはずだと思います。

 第1ルールでソートしてイコールなら第2ルールでソートするんですが、それ
でもイコールと判定された場合はメールの送受信日時でソートします。

 それら全部がイコールになると、並び順が不定になります。

[ ]
RE:46747 メール一覧 Subject: のソート順No.46748
Kengo さん 14/09/19 15:44
 
>  メールのソートロジックですが、例えばSubject:ヘッダで比較して、内部的な
> バグのせいで「イコール」と誤判定されるケースはあったと思うんですが、そう
> なったとしても、メールの送受信日時が違っていれば、並び順が不定になる(毎
> 回変わる)ことは無いはずだと思います。
>
>  第1ルールでソートしてイコールなら第2ルールでソートするんですが、それ
> でもイコールと判定された場合はメールの送受信日時でソートします。
>
>  それら全部がイコールになると、並び順が不定になります。

hidesoft.8:46746 に示したメールは普通に受信したメールなので、
基本的に送受信日時はバラバラです。「偶然同じ」もあるとは思いますが、
「テスト用に複製して作成した」わけではありませんので、同じ Subject: でも
別々の日時に受信したメールです。

[ ]
RE:46747 メール一覧 Subject: のソート順No.46749
Kengo さん 14/09/19 15:58
 
一応報告だけしておきますが、

WinXP Pro SP3 (32) 6.31 Beta 8 (32)

でも、アイコン→Subject:→… の繰り返しでソート順が一致しない
(ことがある)のを確認しました。
傾向としては、
・フォルダのメール総数が少ない(数百通以下)と発生しない(しにくい?)
・MLのメールのように、Subject:の先頭付近が「統一」されていると
 発生しない(しにくい?)
ように感じました。

[ ]
RE:46749 メール一覧 Subject: のソート順No.46752
秀まるお2 さん 14/09/20 11:29
 
> でも、アイコン→Subject:→… の繰り返しでソート順が一致しない
> (ことがある)のを確認しました。

 こちらの迷惑メールフォルダでもテストしたら、たしかに同じ現象が起きまし
た。とりあえず、見つけたのは中国語のメールでしたけども。

 From列をクリックしてからSubject列をクリックして、それで確定した位置が、
秀丸メールを再起動すると変わってしまうということが起きました。

 なぜなのか…。調べてなんとか修正させていただきます。

[ ]
RE:46752 メール一覧 Subject: のソート順No.46753
秀まるお2 さん 14/09/20 16:39
 
 ソート順が不安定になる原因が分かりました。

 例えばメールがa,b,cの3つあって、それを比較して、

 a < b
 b < c
 c < a

 のような三角関係になったとすると、それらの並び順が不定になるようです。

 こういうことが起きてるのだと思います。

 とりあえずそうなる例として今日僕が見つけたのは、中国語のメールとutf-8
文字コードメールと普通の日本語メールがが混在してる例になりまして、これは
つまり、それぞれ文字コード毎に比較ロジックが微妙に違ってるせいでした。

 比較ロジックが同じになるように直したので、もうこういう例も大丈夫だと思
います。

 Kengoさんの所でと来てるのも、この前見つけたバグのせいで、上記のような
三角関係が起きて、それで不定になってるんだと思います。

 ということで、とにかく次のβ版を早めにアップロードして確認お願いしよう
と思います。

[ ]