1 件の投稿を表示中 (合計 5 個)
  • 作成者
    投稿
  • #31680
    yasuji
    参加者

    江村様

    いつもお世話になっております。
    yasujiです。

    2年以上前から[IPv6アドレス昇順に並べ替え]/[IPv6アドレス降順に並べ替え]が並べ替え機能として動作していないことは認知していましたが、私の必要とする機能ではないので、どこかで気づいて修正されるだろうと思って連絡せずにいました。しかし、v24.0.0において全く修正されず動作不良のままになっていたので、ご連絡します。
    IPv6アドレス並べ替え機能の初回リリースと思われるv18.9.0(2019年 5月 9日リリース)を使用して動作確認をしましたが、IPv6アドレスが期待通りに並べ替わらず、この時点で既に動作不良を引き起こしていました。

    ソフトウェアのみの知識でネットワークの知識がほとんどない状態でIPv6アドレスについて不十分な理解で並べ替えアルゴリズムを実装してしまったのではないかと思います。かつ、v18.9.0からv24.0.0までの4年10ヵ月間だれも指摘をしなかったことを考えるとニーズの全くない機能だといえます。

    IPv6は、IPv4よりビット長が4倍(32bit ==> 128bit)で長く、0を省略して記述できるなど書式仕様が複雑です。したがって、IPv4と同じような発想では並べ替えアルゴリズムを実装することはできません。
    私は、長い間ネットワークの分野の技術もやってきたため、必ずどんなベンダーとも通信できるようにRFC(https://www.rfc-editor.org/)で標準仕様があること理解しています。
    IPv6アドレスの標準仕様は、下記になります。

    RFC4291 – IP Version 6 Addressing Architecture
    RFC 4291 – IP Version 6 Addressing Architecture 日本語訳
    ※翻訳の精度には注意。ご参考。

    RFC4291にIPv6アドレスの構造仕様が定義されていますので、この仕様に対応したIPv6アドレスの並べ替えアルゴリズムを開発して実装する必要があります。
    もし、その並べ替えアルゴリズムを開発できないようであれば、機能そのものを削除するのが賢明です。誰からも指摘がなかったのと、開発難易度が高くまとまった工数が必要ですが、私が報告した深刻な不具合2件の対応で開発するための余力がないと思われるため。

    〔不具合1〕IPv6アドレスリストに対して[IPv6アドレス昇順に並べ替え]/[IPv6アドレス降順に並べ替え]を実行しても並べ替えができない(動作不良)

    上記不具合の発生の再現手順は下記の通りです。

    〔対象〕
    v18.9.0 (64bit)
    v24.0.0 (64bit)

    〔使用環境〕
    OS: Windows 10 Pro 64bit, ver 22H2

    〔再現手順〕
    1.EmEditor 64bit ポータブル版を初期状態で起動
     zipファイルから展開して、起動する。
     初回のエディション選択は、Professionalを選択する。

    2.IPv6アドレスのテストデータ準備
     ・(データA)の準備
     既に開いている文書タブに下記の(データA)をコピーして貼り付ける。
     新規でテキスト文書を作成して、下記の(データA)をコピーして貼り付ける。

     ・(データB)の準備
     新規でテキスト文書を作成して、下記の(データB)をコピーして貼り付ける。
     新規でテキスト文書を作成して、下記の(データB)をコピーして貼り付ける。

    (データA)

    
    2001:DB8:0:0:8:800:200C:a76b
    2001:DB8:0:0:8:800:200C:997
    2001:DB8:0:0:8:800:200C:96f8
    2001:DB8:0:0:8:800:200C:1c7c
    2001:DB8:0:0:8:800:200C:7138
    2001:DB8:0:0:8:800:200C:b338
    2001:DB8:0:0:8:800:200C:783
    2001:DB8:0:0:8:800:200C:55aa
    2001:DB8:0:0:8:800:200C:8c29
    2001:DB8:0:0:8:800:200C:b80a
    2001:DB8:0:0:8:800:200C:d482
    2001:DB8:0:0:8:800:200C:77a7
    2001:DB8:0:0:8:800:200C:bec0
    2001:DB8:0:0:8:800:200C:9b57
    2001:DB8:0:0:8:800:200C:24ec
    2001:DB8:0:0:8:800:200C:9a5c
    2001:DB8:0:0:8:800:200C:d34e
    2001:DB8:0:0:8:800:200C:fb7e
    2001:DB8:0:0:8:800:200C:5bd4
    2001:DB8:0:0:8:800:200C:de8f
    

    (データB)

    
    2001:DB8:a0bb:0:1:800:200C:417A
    2001:DB8:1:0:8:800:200C:417A
    2001:cb0::fc0::abc
    fe80::f19:1faf:8:5010
    2001:DB8::8:800:200C:417A
    FF01::101
    2345:425:2CA1:0000:0000:567:5673:23b5
    2001:DB8:0:0:8:800:20AC:417A
    2345:0425:2CA1:0000:0000:0567:5673:23b5
    2001:cb0::fc0:0:0:abc
    2003:DB8:0:0:8:800:200C:417A
    2001:cb0:0:0:fc0::abc
    FF01:0:0:0:0:0:0:101
    0:0:0:0:0:0:0:1
    fe80:0000:0000:0000:0f19:1faf:008:5010
    2607:f0d0:1002:51::4
    2001:0cb0:0000:0000:0fc0:0000:0000:0abc
    2001:cb::fc:0:0:abc
    2607:f0d0:1002:0051:0000:0000:0000:0004
    ::1
    

    3.IPv6アドレスの昇順並べ替えの実行
     2番目のテキスト文書タブに対して、文字列を選択している状態であれば選択を解除する。
     メインメニュー [並べ替え] ==> [IPv6アドレス昇順に並べ替え]をクリックして実行する。

     4番目のテキスト文書タブに対して、文字列を選択している状態であれば選択を解除する。
     メインメニュー [並べ替え] ==> [IPv6アドレス昇順に並べ替え]をクリックして実行する。

    4.並べ替え実行結果の検証
     マウス操作で、2番目テキスト文書タブと1番目テキスト文書タブを交互に切り替えて、並べ替えの結果を確認する。
     ==>〔不具合1〕が発生する

     マウス操作で、4番目テキスト文書タブと3番目テキスト文書タブを交互に切り替えて、並べ替えの結果を確認する。
     ==> 不完全な並べ替え結果となり、〔不具合1〕が発生する

    5.IPv6アドレスの降順並べ替えの実行
     2番目のテキスト文書タブに対して、文字列を選択している状態であれば選択を解除する。
     メインメニュー [並べ替え] ==> [IPv6アドレス降順に並べ替え]をクリックして実行する。

     4番目のテキスト文書タブに対して、文字列を選択している状態であれば選択を解除する。
     メインメニュー [並べ替え] ==> [IPv6アドレス降順に並べ替え]をクリックして実行する。

    6.並べ替え実行結果の検証
     マウス操作で、2番目テキスト文書タブと1番目テキスト文書タブを交互に切り替えて、並べ替えの結果を確認する。
     ==>〔不具合1〕が発生する

     マウス操作で、4番目テキスト文書タブと3番目テキスト文書タブを交互に切り替えて、並べ替えの結果を確認する。
     ==> 不完全な並べ替え結果となり、〔不具合1〕が発生する

    よろしくお願いします。

    #31682
    Yutaka Emura
    キーマスター

    いつもお世話になっております。江村です。

    EmEditor では、IPv6 として認識する IP アドレスを厳密にしています。

    2001:DB8:0:0:8:800:200C:a76b

    というように、大文字が含まれていたり、

    2001:cb0::fc0::abc

    というように曖昧な表記、または

    2345:425:2CA1:0000:0000:567:5673:23b5

    というように 0000 を :: と表記していない場合は、IPv6 として認識される文字列からはじいています。

    RFC では、大文字や 0000 は許されていますが、小文字で :: を使用して表記しているのが一般的であり、その一般的な表記のみを IPv6 として認識しています。そのようにしないと、IPv6 ではない英数字の組み合わせが IPv6 として誤って認識されてしまい、多くのユーザーが期待した結果と異なる可能性があります。

    EmEditor の設定のプロパティのリンク ページで、IPv6 を有効にしておけば、IPv6 が強調表示されるため、わかりやすくなります。

    すべて、小文字に変換し、曖昧な表記を直し、0000 を :: に変更して表記すれば、正しく並べ替えられていることが確認できました。

    よろしくお願いいたします。

    #31687
    yasuji
    参加者

    ご回答ありがとうございます。

    上記の内容で試したところ、確かに昇順、降順で正しく並べ替えができました。

    EmEditor の設定のプロパティのリンク ページで、IPv6 を有効にしておけば、IPv6 が強調表示されるため、わかりやすくなります。

    上記機能は認知していませんでした。IPv6アドレスの強調表示を有効にしておけば、確かにどの表記形式を認識しているかがわかりやすくなりました。

    RFC では、大文字や 0000 は許されていますが、小文字で :: を使用して表記しているのが一般的であり、その一般的な表記のみを IPv6 として認識しています。そのようにしないと、IPv6 ではない英数字の組み合わせが IPv6 として誤って認識されてしまい、多くのユーザーが期待した結果と異なる可能性があります。

    説明いただいて揚げ足をとるようなことをして申し訳ないのですが、ネットワーク関係の技術を長くやっていた関係で、上記の「小文字で :: を使用して表記しているのが一般的であり」について言っていることはわかりますが、「一般的であり」という説明は「大多数がそのように使っている」という意味で解釈するため何を指して言っているのかの趣旨がわかりません。
    ネットワーク機器などを数多く扱ってきましたが、その表記形式が一般的という状況については、一度も見たことも聞いたこともありません。IPv6については、RFCという標準規格がある以上それに準拠するのが一般的です。

    その「一般的であり」が、CISCOの技術仕様に合わせるというのであれば、おおむね納得できます。
    ネットワークに関しては、大きな影響力を持っていて、規格上あいまいな部分はCISCOの機器の仕様に合わせるところがあるため。
    ご参考までに、CISCOのIPv6 Addressing and Basic Connectivity Configuration Guideの説明の Example: IPv6 Addressing and IPv6 Routing Configuration を参照すると、IPv6アドレスは、0000は0として大文字小文字の混合表記で設定するサンプルが提示されています。
    ネットワーク業界の大御所がこのような状況なので、「一般的であり」がどこのことを言っているのかわかりませんという意味です。

    私なりの解釈をすると、文章上の表現や細かい説明の仕方は人によると思いますが、下記のような趣旨での説明なら理解して納得できます。
    =======
    Windowsにおいては、IPv6アドレスはすべて小文字で、:で区切られた16進数は0のみか、0以外で始まる最大4桁で、0のみが連続する箇所は::で省略表記する仕様になっています。EmEditorは、Windowsで動作するので、WindowsのIPv6表記に一致させてWindowsユーザが混乱なく使用できるようにしています。したがって、RFCで定義されている大文字や0000などの表記形式には対応しておりません。
    =======

    Windows 10において、コマンドプロンプトで確認すると、大小文字混合したIPv6の完全表記のIPv6アドレスをpingコマンドに渡して実行すると、結果表示で江村様の説明された表記仕様のとおりに「fe80::123:4567:89ab:cdef」と表記されます。

    
    > ping -n 1 -w 100  fe80:0000:0000:0000:0123:4567:89AB:CDEF
    
    fe80::123:4567:89ab:cdef に ping を送信しています 32 バイトのデータ:
    要求がタイムアウトしました。
    
    fe80::123:4567:89ab:cdef の ping 統計:
        パケット数: 送信 = 1、受信 = 0、損失 = 1 (100% の損失)、
    

    ご回答いただいた江村様の説明で、[IPv6アドレス昇順に並べ替え]/[IPv6アドレス降順に並べ替え]の機能で並べ替えを行うために、前提とするIPv6表記形式は理解できました。

    しかし、その前提となる技術仕様の情報が、下記のヘルプの項目に記載がありません。EmEditorのトップページでは、「目的別の使い方」にサーバ管理者が記載されていますので、私のような誤った理解でこれらの機能が使えないということが生じるのは想定できることだと思います。

    EmEditor ヘルプ – [IPv6アドレス昇順に並べ替え] コマンド
    EmEditor ヘルプ – [IPv6アドレス降順に並べ替え] コマンド

    したがって、上記のヘルプ項目のなかに、江村様が説明した技術仕様を記載することが必須なのではないでしょうか?
    少なくとも、ネットワーク技術を理解しているユーザからは、「使えない機能」という評価になってしまいます。
    江村様はブログのほうでテクニカルレビューを書かれていますので、技術仕様を記載することは難なくできる思います。
    もし、私が知らないだけで、別のところに情報があるのであれば、そのURLを教えていただければと思います。

    #31705
    Yutaka Emura
    キーマスター

    いつもお世話になっております。江村です。

    RFC 5952 で、IPv6 アドレスを小文字のみで書くことが推奨されています。

    しかしながら、v24.0.903 では、大文字の表記も IPv6 アドレスとして認識するように変更しました。
    https://jp.emeditor.com/forums/topic/emeditor-v24-1-preview-24-0-901/

    よろしくお願いいたします。

    #31706
    yasuji
    参加者

    江村様

    いつもお世話になっております。
    yasujiです。

    RFC 5952 で、IPv6 アドレスを小文字のみで書くことが推奨されています。

    そのようなRFCがあることを認知しておりませんでした。それであれば、初回のご回答にRFC 5952に準拠していると説明いただければ、大文字を含むIPv6アドレスは、認識しない技術仕様として理解できます。しかし、ログ解析では、小文字のIPv6アドレスのみを出力するような行儀のよいサーバソフトウェアはあまりなく、大文字も含むIPv6アドレスが多いので困ることには変わりはないです。

    しかしながら、v24.0.903 では、大文字の表記も IPv6 アドレスとして認識するように変更しました。
    https://jp.emeditor.com/forums/topic/emeditor-v24-1-preview-24-0-901/

    認識するIPv6アドレスとして、大文字表記IPv6アドレスも追加していただきありがとうございます。
    v24.0.903で、大文字と小文字を含むIPv6アドレスが昇順/降順ともに正しく並べ替えられることを確認しました。
    大文字を含むIPv6アドレスには対応されるつもりはないものと思っていましたが、追加対応のおかげでこれでようやっと使える機能になり非常に助かります。

    よろしくお願いします。

1 件の投稿を表示中 (合計 5 個)
  • このトピックに返信するにはログインしてください。