C#」タグアーカイブ

RDSync その3(最終回) -Windows Form-


コンソールアプリの検証でほぼほぼどんな感じになるかつかめたので、WindowsFormにいざ取り掛かる。しかしながら、UIはやっぱりワナが多い。まず単純にコピーすればいいなぁと思っていたんですが、やっぱり進捗率とかあった方がいいなぁとか、設定画面があった方がいいとか。設定されていないときは処理させないとか、キリないです。と言うことで設定が完了していない場合は処理しない、コピー処理する前に対象となるファイルを全部取得して画面上に進捗状況を表示するようにしました。あとは簡易的ですがインストーラも作ってそれなりアプリっぽくしてましたよ。

  • インストール

    インストーラを実行してください。ここからダウンロードできますよ。

    インストーラは特に選択肢もないのでツラツラ進んで完了してください。

  • 設定

    初回起動時にはまず初めに設定画面が表示されます。

    一旦設定が完了したらファイルメニューから起動できます。

    各メディアファイルフォルダ設定用参照ボタンをクリックして対象となるフォルダを選択してください。(直接入力でもOK。存在しないフォルダを選択するとエラーなります。悪しからず)
    こんな感じでフォルダパスを設定してください。

    保存ボタンをクリックして設定内容を保存してください。

  • 続きを読む

RDSync その2 – まずはコンソールアプリで


最終的に画面があるアプリにするつもりですが、手始めにコンソールアプリでコアとなる機能の検証をしつつ作り始めていくことにしました。

メディアファイル

そもそもどんなフォーマットのファイルがあるのかその拡張子は何なのか、普段使っているもの以外でもあるのかなぁと思いつつ必要と思われるもの(一般的なもの?)をリストして、写真ファイルなのか、映像ファイルなのか、音声ファイルなのか判断できるようにします。(拡張子とフォーマットが違ったらアウトですが、それはしょうがないので無視)
写真ファイルは以下の拡張子を定義
.jpg / .png / .gif / .raw
映像ファイルは以下の拡張子を定義
.mov / .mp4 / .avi / .mpg / .wmv / .flv / .mts / .m2ts
音声ファイルは以下の拡張子を定義
.mp3 / .wav / .aiff / .aac / aif / .m4a

メディアファイルの取得

SDカード、USBメモリは.NETのDriveInfoクラスでDriveTypeがRemovableで判断してそのドライブ配下のすべてのメディアファイルを取得ます。
指定されたフォルダと作成日からコンピュータの保存先を決定。

重複ファイルのスキップ

作成日が同じ名前が同じファイルがあったらスキップさせます。

コピー

同じファイルがなければコンピュータにコピーしていきます。

と言うのが基本的な流れ。画面があっても処理は大きな差はないですね。

こんな感じでコピーの状況を出力しながら動きます。(音はおまけ)

RDSync その1

先日長らく愛用していたEye-Fiカードの書込ロックの爪が折れてしまいました。



Eye-FiカードはSDカードなんですが、以下の機能を持ち合わせます。(Wikipediaから引用)

このカードを使用することで、メモリカードをデジタルカメラから取り出したり、デジタルカメラをパソコンに接続することなく、記録した写真データや動画データを無線LANによるワイヤレス通信でパソコンに転送したり、オンラインアルバムや写真共有サイトなどの各種オンライン写真サービスにアップロードすることが可能となる。また、iPadやiPhone、Androidデバイスに直接転送することもできる。

また2016年に製造停止、サービスはRICOHの研究開発子会社が引継ぎましたが2018年にサービス提供終了しています。
これを使うことでいちいちSDカードの中の写真を手動でコンピュータのディスクにコピーする手間を省くことができてとても重宝していたわけです。
ここ最近は無線LANでの転送が機能しなかったんですが、とりあえずコンピュータに接続したら自動でコピーしてくれていたのでそれでもまだ使い勝手はよかったと思います。
東芝からEye-Fiと同様な機能を持ったFlashAirと言うSDカードが発売されているのですが、これが結構いい値段で、まぁ手作業でコピーの手間はあるけど特別な機能のないカードを購入しました。
SDXC64GBお値段は990円と激安。ここ数年SDカードを買うことがなかったので、この金額には少々驚きました。

以前に使用していたEye-Fiカードは自動でファイルを転送(コピー)してくれるだけでなく、日付毎にフォルダも作って振り分けてくれてたんですね。この機能自体も個人的には気に入っていて、これ手動でやるの結構面倒なので、何とかならないかなぁと思ったわけです。
そんなわけで久々に.NETでプログラム書きたいなぁと思ったのもあって作り始めることにしましたよ。
続きを読む