ファイル管理アプリを作ったので宣伝

## 記事の目的
タイトルには宣伝とありますが、アプリについて意見をもらったりできたらいいなという感じが強いです。（万が一、使う人がいるなら嬉しいですが）
本記事のアプリは色々あって死蔵する他なくなった哀れなアプリですので、せめて記事のネタにでもなれたらよい供養になるでしょう。

↓gitのURLです。
リリースのところでインストーラーのzipを落とせます。
（VisualStudioのGit機能で失敗して変なコミット混じってますが気にしないでください:pray:）
https://github.com/cushionA/SimpleFileManager

## どんなアプリ？
大まかな動作は**新規保存されたファイルを検出し、他の場所に移動させ（整理）、ついでにリネームする**というものです。
ダウンロードしたファイルを整理せず、ダウンロードフォルダに放置しがちな人を対象に作りました。
アプリ使用の流れは以下の通りです。

①
ショートカットをクリックするなりして起動（アイコンはうちの愛犬です）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/96c5d9cd-a28f-aeb3-fe0d-067b9c38857a.png)

②
バックグラウンドで動き始める。
裏でダウンロードフォルダなどのディレクトリを監視して、監視先に新規保存されたファイルを検出する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/4c495da9-fb08-20c5-3660-41fff389d1cc.png)

③
この状態でファイルを新規保存すると動作。
事前に作成した設定に基づいて、検出したファイルを分類（指定ディレクトリに移動・リネーム）して保存しなおす。

↓のようなダイアログが出ます。（コンボボックスは使用する分類設定を選ぶためのものです）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/d4f9db44-440f-fd10-2284-0a6c5e09453d.png)

④
こんな感じでリネームされて、指定フォルダに再配置されます。
このリネーム処理はいろいろオプションを設定可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/8ebcb7b3-9ed0-5146-e9f5-61b17875215d.png)

⑤
終了したい場合はタスクトレイからどうぞ。（表示の通り設定にも飛べます）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/48ffa767-342d-86eb-9c60-897e64bd1e23.png)


### 補足
このアプリの仕様上、もしファイルを100個同時にダウンロードした場合、100個連続で一つずつ分類していくことになります。
この点は大きな欠陥です。
しかし分類処理はキャンセルできるので、使いようによってはいくらか欠点を緩和できそう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/81fbe368-f768-1323-bd2d-36bcaa7fe656.png)

↓すべてキャンセル、を選べば100個の分類はすべてキャンセルされます。（されるはず）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/59edf9f3-8a50-00c3-3ca8-f18cf256c88a.png)

検出したファイルをすべて読み込んでから分類処理を開始すれば、分類対象を選別したりもできそうですが……。


## アプリの設定
先ほど軽く触れた通り、このアプリの動作は設定に依存します。
ですので、タスクトレイから移動できる設定画面について説明したいと思います。
そこでは大きく分けて二つの設定を作成することができます。

### 分類設定
まずは分類設定について説明します。

↓設定画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/8f22ddd3-4791-a245-86fd-9a1d0e730d11.png)

ここでは検出したファイルをどのように分類するかを設定できます。（ちなみに設定の上限は十個です）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/94b2d643-6c63-6911-fce8-42fd1a276006.png)

設定画面の内容をいくつか解説するとこんな感じです。

**・設定の名前**
→分類ダイアログのコンボボックスで表示される名前。

**・設定区分切り替え**
↓みたいな感じで、区分を切り替えると拡張子ごとに分類処理の挙動を設定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/82f30cc7-5a86-c851-69f8-c6df0a50a651.png)

例）pngの個別設定です。pngファイルを分類した場合に使用されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/7ab55ba6-ae78-569b-49fa-d810e2f76e40.png)

**・デフォルトで使用するファイル名**
この設定を使用して分類する時、ファイルがどんな名前にリネームされるかという設定です。
また、ここで設定した名前に @ を含んでいる場合、そこには**置き換え文字列**を挿入できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/94627cef-bd73-9954-b59c-b090ab0bc112.png)

↑の画像の例だと、「試作設定@_ファイル」の@の部分にそのファイル固有の文字列を設定できる感じです。
置き換える文字列は自分で入力したり、元のファイル名を使用したりできます。

他は大体見た通りなのでもう一つの設定の話をします。

### アプリ設定

設定画面はこちらです。
三項目だけですから全部説明します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/acd229d8-82ea-1dd7-b057-2d8841aece88.png)

**・拡張子別の自動分類有効設定**
この項目でチェックボックスのチェックを消すと、消した拡張子のファイルを検出しなくなります。
↓の場合、txtファイルをダウンロードしても分類処理が動かないということですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/1182d6cc-8f59-43ec-1100-0757c705543d.png)

**・監視対象フォルダ設定**
この項目ではフォルダのディレクトリを指定できます。
いくつも指定できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/53bfe4fd-a046-32f4-31fb-9152cce308e7.png)

既に設定したディレクトリを編集、削除したり。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/53f5af39-ce1a-0c7d-9caf-05de58e23942.png)

新規作成したりもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/ae7f5c70-a39a-d591-7cf0-6fe9d83ecd30.png)

こうして設定したディレクトリは、本アプリで監視する対象になります。
つまりここで設定したディレクトリにファイルを新規作成すると、分類ダイアログが出てくるわけです。
最初はダウンロードフォルダのみ監視する予定でしたが、追加で監視先を設定できたら便利かなと考えて機能を作りました。

**・ダウンロードフォルダ監視設定**
ここでチェックボックスを消すと、ダウンロードフォルダを監視しなくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970709/4f734a8a-49f7-66e9-f60c-c26756b3628a.png)

以上のような設定を用いてアプリの挙動をカスタムすることができます。

## 最後に
あらかたアプリについて話してしまったのでまとめに入ります。

今回はじめてWindowsフォームアプリケーションの作成に挑戦してみたのですが、なかなか楽しかったです。
このアプリはダウンロードしたファイルが散らかりがちな身内への誕生日プレゼントだったので、どんな機能があったら喜ぶかなとか考えながら作るのも良かったです。
まぁ「いらない」と一閃されたので死蔵される運びになったのですが。（ほしいと言われたわけでもないのに作った自分が悪いです）

もしこの記事を読んで興味を持ってくださったら、アプリで遊んでみたり、gitでコードを見たりしてコメントをもらえると嬉しいです。

↓の監視処理のコードとかお気に入りです。
https://github.com/cushionA/SimpleFileManager/blob/main/FileMangement/FileWatchController.cs