真魚でソート

 テキストファイルには文章を書くとは限らないわけで、何かの羅列を書いたりすることだってある。あたしの場合は、あたし自身が真魚を作る際に、各言語の予約語なんかをリストアップしたりって感じ。で、それが最初から整然と並べられた物のコピペだったらいいんだけど、あちこちから拾い集めた物を自分で並べ替えて整頓しなきゃいけない事もあるわけだ。そこで行の並べ替えって言う機能が各テキストエディタには備わっているようだ。真魚もいい加減ながら同機能が備わっていて、最近もPHPでなんかするときにGrepの結果出力と組み合わせて使ったけど、別に不具合とかは感じなかった。



 でもその真魚でやってるソートは自分でコーディングしたわけじゃなく、Delphiに初めから付いてる機能を使って楽々やらせてる物であって、ソースコードを辿ってみるユニコードに対応してない作業をしているのが確認できた。あたし自身がソートを使うとすれば、きっとプログラミング関連だけなので、多言語どころか日本語を含む文字を並べ替えたいなんてこともなく、対応してるかどうかは気もつかないほどどうでもいい事だった。でも気がついてしまったので、ぜひちゃんとソートしたい。で、調べてみたらDelphiに初めから付いてる機能で楽々出来るユニコードのソートもあったので、それを使う事にした。ユニコード対応版は遅いから、不要であれば非対応版を使った方がいいらしいが、あたしが自分でソートを書くよりは当然速いはずだからまぁいいだろう。

 ついでというか、むしろここからがメインだが、昇順ソートがあって降順ソートがないってのも変だよな。だから、はじめから両方あるのが自然だったわけだけど、そのDelphiの標準機能で楽々出来るソートが昇順しかなかったから、まぁおそらく降順はあとからどうにかするつもりで、いい加減に昇順だけでも付けて置いたんだろう。しかもそれで全く不便なく使ってきたし、機能が足りないと思わなかったんだろう。でも両方あるべき。さらには、真魚にはないけどよそのテキストエディタでは重複行の削除ってのがあって、これってソートと一緒に使う物なんじゃないかって勝手に思ってるんだよ。重複行ってのは同じ行が二箇所あるって事で、それって普通の文章じゃほとんどないし、あったとしてそれを削除する事もない。なんかの羅列を行って間違って重複させた物を削除するって事でしょ。しかもその重複する複数行のどっちを削除するかが意味を持つならば、それは自動的にやるのではなく手動でやるはずだから、テキストエディタに任せて重複行を消すって事は、やっぱりソートとセットだろう。そのセットとなるべき機能を単独で搭載するんじゃなくて、ソートするってのを選んだときにダイアログを出して、降順か昇順かを選んで重複行を削除するかどうかも選んで実行ボタンを押すような形にしたら良いかなと思ってる。ひょっとしたら、重複行を削除したいけどソートはされたくない場合があるかも知れないんだけど、まあおそらく既にソート済みかソートされた方がいいかの場合が多いだろうと言う事で。さもなくば自動では削除させないだろうと。

 そのソート機能の充実を図ろうとしたら、これまでのソートがユニコードにも対応してないし昇順にしか対応してない事に気がついたわけで、なんか逆になってしまったが。

たぶん関連のある記事:

  1. cielphy
    2012年 06月 13日 水曜日 22:45

    またしてもgPadの話ですが、ソートは昇順・降順とのことですがgPadにはその機能が見つけられませんでした。その代わりにマクロで色々と追加できるようになってますね。並び替え.jsとか地味ながら便利です。ただ、重複行の削除は完全一致していないと同一(っぽい)行はさくじょされません。たとえば、「こんにちは」が3回、「こんにちは。」が3回とします、そのテキストを「こんにちは」を重複行の削除を行っても、「こんにちは」は1つになりますが「こんにちは。」には適用されません。似たような文章は削除するとか、そこまではかなり難しいのでしょうね。

コメントは終了しています。