- 作品名:
- Sequential Numbering Stamper『
晩御ぅ飯 』 - 作者名:
- はりまお
- 制作機材:
- Core i7-4770 3.40GHz + 8GB RAM
- Windows 10 Pro (64bit, 22H2)
- 開発言語:
- Visual Studio Community 2022
- C# (WPFアプリケーション)
- 動作環境:
- .NET 8.0
- 形態種別:
- フリーソフトウェア(ソース同梱)
名前 | バージョン | 概容 |
---|---|---|
ソース | ||
class_library | ソース用DLL格納フォルダ | |
SNS | ソースフォルダ | |
アプリケーション | ||
ASF_WPF.dll | Ver.1.0.0.0 | 補助クラスライブラリ |
SNS.deps.json | ||
SNS.dll | Ver.1.0.1.0 | |
SNS.dll.config | アプリケーション構成ファイル | |
SNS.exe | Ver.1.0.1.0 | 本体 実行ファイル |
SNS.runtimeconfig.json | ||
ドキュメント | ||
readme.txt | 説明文(本文) |
フォルダまたはファイルに、判子を押す感覚で連番を振る、リネーマです。
本作を使用するには、.NET Runtime 8.0.xを導入する必要があります。
ダウンロードした圧縮ファイルを適当な場所に解凍してください。
インストールしたフォルダを丸ごと削除してください。
(本作は、レジストリやインストールフォルダ外を変更しません。)
実行ファイル("SNS.exe")を起動します。
起動すると、登録されている用件が一覧表示されます。
フォルダ選択ダイアログが出現するので、改名したいアイテムが置かれているフォルダを選択してください。対象アイテムが一覧されます。
新しく付ける名前の基本構成を設定します。名前は
前句と後句には、複数の番号を含められ、その数字部分にキャレットを置いて(範囲選択不要)上下にある ボタンを押すと増減できます。計数は、押印毎に自動加算される番号です。
それぞれの番号は、Ascii(半角)の数字で、範囲は以下の通りです。
前後句内の番号 | 0 ~ 4,294,967,295 |
---|---|
計数 | 0 ~ 99,999,999 |
アイテム一覧の中で、改名したいアイテム行の
必要に応じて新名構成を変更しつつ、番号を振りたい順に、改名したい分だけ押印していきます。
必要な新名登録が済んだら、
ボタンをクリックしてください。実際にストレージ上で改名されます。
改名過程(足跡)が、テキストファイルとして保存されます。
ファイル名は、改名を行った"年-月-日_時-分-秒.txt"です。もし、1秒以内に複数の改名作業を行った場合は、1つのファイルにまとめて記録されます。
複数アイテムの名前をずらしたり入れ替えたりする改名を行うと、名前が衝突してしまいます。名前衝突が起きたら、一旦仮名を付けておき、本来の改名を後回しにすることで、後の工程を継続します。
仮名には、GUID(グローバル一意識別子)に拡張子を付けたもの("{00000000-0000-0000-0000-000000000000}.???")を使用します。
処理の都合上、仮名と同様の名前が多数存在するフォルダで改名を行うと、仮名の決定に時間を要したり、最悪にはフリーズする可能性があります。フリーズしたら、改名ウィンドウを閉じて改名処理を中断するしかありません。
何らかの理由により改名作業が中断した場合、改名済みの名前は回復しないので、足跡を基に手作業で復旧することになります。足跡ファイルが残らなかったら…ご愁傷様です。改名の実行には、十分ご注意ください。
配布物にはソースも同梱しています。自由に改造してください。
ソースフォルダには、".vs", "bin", "obj"フォルダを含めていません。Visual Studioでソリューション("*.sln")を開いたら、とりあえずソリューションをリビルドしてください。デザイナが使えるようになります。
コードエディタにおいてWindow(Windowに配置されたコントロール含む)への参照箇所にエラーが出る場合があります。エラーのままでもビルドは通りますが、コードエディタの機能が著しく削がれ不便です。
そんな時は、ソリューションの".vs"と各プロジェクトの"obj", "bin"フォルダを削除して、再度ソリューションのリビルドを行ってみてください。
特定のプロジェクトでのみの発症なら、当該プロジェクトの"obj", "bin"フォルダを削除して、プロジェクトのリビルドを試してください。
この病は大変しつこく、1回では治まらないかもしれません。治まるまで何度も繰り返してください。ただし、一旦落ち着いたとしても突発します。現状では完治は望めません。と言うのも、この対処法は作者の経験に基づくものなので、頓珍漢なことを書いているかもしれません。あしからず。
改名を実行すると、インストールフォルダに"log"フォルダが作成され、足跡が記録されます。
下記の項目を書き換えることで、起動時の状態を設定できます。不正な項目は、既定値になります。
key | value (規定値) | |||
---|---|---|---|---|
CountMinDigits |
1 ~ 8 | (2) | 計数の最低桁数 | |
CountIncrease |
1 ~ 9999 | (1) | 計数の自動加算量 | |
CountSettingOpen |
True / False | (False) | 計数の設定を開閉 | |
StepMaxCapacity |
1 ~ int Max* | (200) | 押印履歴の容量 | *メモリ許容量による |
LogKeepDays |
1 ~ int Max | (28) | 足跡の保存期間 |
後段を押印 | → | 後段を押印 | → | 前段を押印 | → | 後段を押印 |
---|---|---|---|---|---|---|
00-00 | 00-01 | 01-00 | 01-01 |
後段を押印 | → | 後段を押印 | → | 前段を押印 | → | 後段を押印 |
---|---|---|---|---|---|---|
00-00 | 00-01 | 00-02 | 01-00 |
宿願は果たされた。
関連ファイルがいくつも揃うと遠し番号で管理したくなる性。そう、かねてから連番リネーマが欲しくて欲しくてたまらなかったのだ。
そうなると、どうすれば「迷わないUI」で「複数段の番号を制御」できるのか考えてしまう…スクリプト方式か…いやいやスタンプ方式だ。
複数段ある番号に対応した押印ボタンを用意して、押印したらその数字を繰るという算段。ところがこの方法だと、前回と違う段を押印すると思い通りにならない。
例えば 表1 の様な動作を期待してしまうけど、実際は 表2 の様な動作となる。思考としては前者が、動作としては後者が至極当然の流れ。感覚的に両者は相容れない。この問題を解決できなくて、開発は頓挫してしまった(…あっ、押印する段が変われば計数を調整してしまえば…実践…うっ、フローがひねくれた)。
────あれから十数年、再び順番が回ってきた。
うずき続けるリネーマへの渇望と信念。「スタンプ方式は絶対いける」という一念で、一から制作に乗り出す。
動作確認によって突き付けられた、身に覚えのある挙動。思い出す、前回の失敗。ようやく気付く、十年前の自分と全く同じ轍を踏んでいることに。ダメだったのは覚えていたけど、何がダメだったのかは忘却の彼方だった。(*´o`*)ゞ タハハ…
だが、今回は違う。悟ってしまったのだ「連続の押印で繰りたい番号は1か所のみ。他所の番号はテキスト上で簡易的に増減できれば御の字だ」と。
早速実践。UIはサッパリ、コードもスッキリ、段数も自由自在、華麗に振れる連番、良好な使用感。まさに一石ニ鳥、一挙両得。あぁ十年来の躓きがこんな閃き一つで…実に面白い。
本作の性格上必須であろう機能が Undo/Redo。実装が面倒なのは想像に難くなく避けてきただけに、本作の裏テーマとも言える。今回は、対象を押印過程のみに絞ったので比較的楽に実装できた。けれど、もし、全操作に拡げるとしたら…大火傷を負う覚悟が要ると改めて痛感した。こういうのをキチンと作り込めるって、恐ろしい。
その他に、delegate、DataGridのソート、ソリューション エクスプローラーでの入れ子と、小ネタも豊富。たとえ小粒で地味でも、実効があって楽しさも愛着もひとしお。
それにしても、我ながらまた佳品を生み出してしまった(作者の志向に最適化されているという意味で)。数十、時には百数十と手打ちで番号を振っていたことを思うと、笑みがこぼれずにはいられない。(^-^) デへへ
毎度、お世話になっております。大変有難く存じます。