Sequential Numbering Stamper 晩御ぅ飯

作品情報

作品名:
Sequential Numbering Stamper『晩御ぅ飯(ばんごはん)
作者名:
はりまお
制作機材:
Core i7-4770 3.40GHz + 8GB RAM
Windows 10 Pro  (64bit, 22H2)
開発言語:
Visual Studio Community 2022
C# (WPFアプリケーション)
動作環境:
.NET 8.0
形態種別:
フリーソフトウェア(ソース同梱)

画面写真

※ 掲載画像は、全て開発中のものです。
ウィンドウ

ダウンロード

SNS.zip(配布ファイル更新日:2025年03月15日)
収録内容
名前バージョン概容
ソース
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 説明文(本文)
今版の更改概要
  • 新名(前句および後句)内の数値探索確度を高めた。
  • UIの些末な調整をした。

概要

フォルダまたはファイルに、判子を押す感覚で連番を振る、リネーマです。

準備

本作を使用するには、.NET Runtime 8.0.xを導入する必要があります。

インストール

ダウンロードした圧縮ファイルを適当な場所に解凍してください。

アンインストール

インストールしたフォルダを丸ごと削除してください。
(本作は、レジストリやインストールフォルダ外を変更しません。)

使い方

実行ファイル("SNS.exe")を起動します。

1.改名対象を選択

起動すると、登録されている用件が一覧表示されます。

フォルダを改名またはファイルを改名ボタンをクリックします。
フォルダ選択ダイアログが出現するので、改名したいアイテムが置かれているフォルダを選択してください。対象アイテムが一覧されます。

[フォルダを改名][ファイルを改名]ボタン
フォルダを改名ファイルを改名ボタン

2.新名を構成

新しく付ける名前の基本構成を設定します。名前は前句計数後句の3部構成になっており、これら3つを繋げて拡張子を付けたものが、新名になります。
前句と後句には、複数の番号を含められ、その数字部分にキャレットを置いて(範囲選択不要)上下にある0ボタンを押すと増減できます。計数は、押印毎に自動加算される番号です。
それぞれの番号は、Ascii(半角)の数字で、範囲は以下の通りです。

前後句内の番号 0 ~ 4,294,967,295
計数 0 ~ 99,999,999

新名構成
新名構成

3.新名を登録

アイテム一覧の中で、改名したいアイテム行の新名列にある押印ボタンを押せば、新名構成に従った名前が登録されます。複数選択による一括押印もできます。
必要に応じて新名構成を変更しつつ、番号を振りたい順に、改名したい分だけ押印していきます。

[押印]ボタンと[取り消し]ボタン
押印取り消しボタン

4.改名を実行

必要な新名登録が済んだら、実行ボタンをクリックしてください。実際にストレージ上で改名されます。

改名過程(足跡)が、テキストファイルとして保存されます。足跡ボタンで見返せます(既定では28日分)。
ファイル名は、改名を行った"年-月-日_時-分-秒.txt"です。もし、1秒以内に複数の改名作業を行った場合は、1つのファイルにまとめて記録されます。

[実行]ボタン [足跡]ボタン
実行ボタン と 足跡ボタン
改名を実行した様子
改名を実行した様子

注意

複数アイテムの名前をずらしたり入れ替えたりする改名を行うと、名前が衝突してしまいます。名前衝突が起きたら、一旦仮名を付けておき、本来の改名を後回しにすることで、後の工程を継続します。
仮名には、GUID(グローバル一意識別子)に拡張子を付けたもの("{00000000-0000-0000-0000-000000000000}.???")を使用します。
処理の都合上、仮名と同様の名前が多数存在するフォルダで改名を行うと、仮名の決定に時間を要したり、最悪にはフリーズする可能性があります。フリーズしたら、改名ウィンドウを閉じて改名処理を中断するしかありません。

何らかの理由により改名作業が中断した場合、改名済みの名前は回復しないので、足跡を基に手作業で復旧することになります。足跡ファイルが残らなかったら…ご愁傷様です。改名の実行には、十分ご注意ください。

ソリューションについて

ソース

配布物にはソースも同梱しています。自由に改造してください。
ソースフォルダには、".vs", "bin", "obj"フォルダを含めていません。Visual Studioでソリューション("*.sln")を開いたら、とりあえずソリューションをリビルドしてください。デザイナが使えるようになります。

コードエディタにおいてWindow(Windowに配置されたコントロール含む)への参照箇所にエラーが出る場合があります。エラーのままでもビルドは通りますが、コードエディタの機能が著しく削がれ不便です。
そんな時は、ソリューションの".vs"と各プロジェクトの"obj", "bin"フォルダを削除して、再度ソリューションのリビルドを行ってみてください。
特定のプロジェクトでのみの発症なら、当該プロジェクトの"obj", "bin"フォルダを削除して、プロジェクトのリビルドを試してください。
この病は大変しつこく、1回では治まらないかもしれません。治まるまで何度も繰り返してください。ただし、一旦落ち着いたとしても突発します。現状では完治は望めません。と言うのも、この対処法は作者の経験に基づくものなので、頓珍漢なことを書いているかもしれません。あしからず。

生成されるフォルダ・ファイル

改名を実行すると、インストールフォルダに"log"フォルダが作成され、足跡が記録されます。

アプリケーション構成ファイル

下記の項目を書き換えることで、起動時の状態を設定できます。不正な項目は、既定値になります。

keyvalue (規定値)
CountMinDigits 1 ~ 8 (2) 計数の最低桁数
CountIncrease 1 ~ 9999 (1) 計数の自動加算量
CountSettingOpen True / False (False) 計数の設定を開閉
StepMaxCapacity 1 ~ int Max* (200) 押印履歴の容量 *メモリ許容量による
LogKeepDays 1 ~ int Max (28) 足跡の保存期間

制作後記

表1. 理想
後段を押印 後段を押印 前段を押印 後段を押印
00-00 00-01 01-00 01-01
表2. 現実
後段を押印 後段を押印 前段を押印 後段を押印
00-00 00-01 00-02 01-00

宿願は果たされた。
関連ファイルがいくつも揃うと遠し番号で管理したくなる性。そう、かねてから連番リネーマが欲しくて欲しくてたまらなかったのだ。
そうなると、どうすれば「迷わないUI」で「複数段の番号を制御」できるのか考えてしまう…スクリプト方式か…いやいやスタンプ方式だ。
複数段ある番号に対応した押印ボタンを用意して、押印したらその数字を繰るという算段。ところがこの方法だと、前回と違う段を押印すると思い通りにならない。
例えば 表1 の様な動作を期待してしまうけど、実際は 表2 の様な動作となる。思考としては前者が、動作としては後者が至極当然の流れ。感覚的に両者は相容れない。この問題を解決できなくて、開発は頓挫してしまった(…あっ、押印する段が変われば計数を調整してしまえば…実践…うっ、フローがひねくれた)。
────あれから十数年、再び順番が回ってきた。
うずき続けるリネーマへの渇望と信念。「スタンプ方式は絶対いける」という一念で、一から制作に乗り出す。
動作確認によって突き付けられた、身に覚えのある挙動。思い出す、前回の失敗。ようやく気付く、十年前の自分と全く同じ轍を踏んでいることに。ダメだったのは覚えていたけど、何がダメだったのかは忘却の彼方だった。(*´o`*)ゞ タハハ…
だが、今回は違う。悟ってしまったのだ「連続の押印で繰りたい番号は1か所のみ。他所の番号はテキスト上で簡易的に増減できれば御の字だ」と。
早速実践。UIはサッパリ、コードもスッキリ、段数も自由自在、華麗に振れる連番、良好な使用感。まさに一石ニ鳥、一挙両得。あぁ十年来の躓きがこんな閃き一つで…実に面白い。

本作の性格上必須であろう機能が Undo/Redo。実装が面倒なのは想像に難くなく避けてきただけに、本作の裏テーマとも言える。今回は、対象を押印過程のみに絞ったので比較的楽に実装できた。けれど、もし、全操作に拡げるとしたら…大火傷を負う覚悟が要ると改めて痛感した。こういうのをキチンと作り込めるって、恐ろしい。
その他に、delegate、DataGridのソート、ソリューション エクスプローラーでの入れ子と、小ネタも豊富。たとえ小粒で地味でも、実効があって楽しさも愛着もひとしお。

それにしても、我ながらまた佳品を生み出してしまった(作者の志向に最適化されているという意味で)。数十、時には百数十と手打ちで番号を振っていたことを思うと、笑みがこぼれずにはいられない。(^-^) デへへ

参考・引用文献/拝借物

毎度、お世話になっております。大変有難く存じます。

リファレンス/サンプル

ユーティリティ/ツール