★━…‥・★━…‥・★━…‥・★━…‥・★━…‥・★━…‥・★━…‥・★━…‥・★━…‥・★━…‥・ 【 名 称 】 ファイルバックアップソフト -よみ- 【バージョン】 1.00_P1 【製 作 者】 衣日和 【 種 別 】 フリーソフト 【HPと連絡先】 略して仮。 ( http://www.tvg.ne.jp/menyukko/ ) ━…‥・‥…━…‥・‥…━…‥・‥…━…‥・‥…━…‥・‥…━…‥・‥…━…‥・‥…━…‥・*☆*・‥ ◆概要 Outline ────────────────────────────────────────────── ミ☆ ─ このソフトは、2つのフォルダに格納されているファイルを比較して同一の内容になるようにファイルの複 製・削除・名称変更をする、いわゆるファイルバックアップを行うためのソフトです。 ◇2Gまたは4Gバイトを超えるファイルのコピーが可能です 多くのシステムでは内部で扱える数値の上限が2Gまたは4Gであるため、それ以上のサイズのファイルに 対応していないことがあります。 ◇ファイルコピー中の中断/再開または中止が可能です ファイルコピーはそれなりの時間を要します。このソフトではコピーの進行度合い(百分率)を逐一更新 するとともに、いつでも停止させることができます。 ◇ファイル内容での比較は行いません ハードディスクのような物理駆動を伴う装置は概ね低速ですのでアクセス量を減らすことで高速化が図 れます。このソフトでは、ファイルの比較をファイル名・ファイルサイズ・更新日時を元に行っていま す。 ◇ファイル名が変更された項目を認識します 無用なファイルコピーを回避することで処理の高速化を図っています。 ◇演算の高速化を行っています 2つのデータ群を比較する場合、一般的には総当たり(リーグ戦方式)を行うことになります。しかし、 この方法では比較回数が多くなりがちで処理に時間がかかるようになります。このソフトにはパターン 分類でデータ範囲を絞り込むことで比較回数を減らす機構を組み込んでいます。 ※この機構のせいでファイルコピー順が一見ランダムになるなど感覚とのズレが生じます(笑)。 開発ネームの『よみ』はそのまま『黄泉』です。不謹慎なこのネームは私がかつて経験したHDDクラッシュ に由来するものです。ヤツは突然やってきます!こまめなバックアップを心がけましょうという想いを込め ています。 ◆パッケージ内容 Included Files ────────────────────────────────────────────── ミ☆ ─ P1パッケージ(HSPプログラムコンテスト2013 出展パック)に含まれるファイルは以下の通りです。 ▽ (RootDir) ├-▽ Code Yomi │ ├-◇ ProgBarModule.hsp │ ├-◇ ScrollBarModule.hsp │ ├-◇ FileInfoModule.hsp │ └-◇ よみ.hsp ├-◇ よみ.exe └-◇ ReadMe_Yomi.txt ◇よみ.exe 本体です。それ以上でもそれ以下でもありません。単体で動作させることができます。 ◇ReadMe_Yomi.txt このファイルです。よみおよび配布パッケージに関するあれこれを記載しています。 ▽Code Yomi フォルダ よみのソースコード全文を内包しています。HSP3.xで書かれていて即実行・編集可能ですがスパゲティ 状に絡み合った非常にタチの悪い代物です。 ◇よみ.hsp 本体のスクリプトです。コメ特盛のパスタ丼を目指していますが視認性・読解性はあまりよろしくない ですorz。 ◇ProgBarModule.hsp ◇ScrollBarModule.hsp ◇FileInfoModule.hsp よみ.hspでインクルードしている私特製のモジュール群です。全て汎用モジュールとして製作していま すのでモジュール単体でソフトウェアに組み込んでもきっと役に立つはずです。 また、モジュールの最新版は私のホームページで公開しています。 ソフト上の操作で設定保存をするとソフトと同じ場所に『よみ設定.yml』というファイルが生成されます。 設定内容を書き出したテキストファイルです。メモ帳などで閲覧編集が可能ですが誤動作の原因になりうる ので手動での編集はオススメしません。 ◆インストール / アンインストール Install and Uninstall ────────────────────────────────────────────── ミ☆ ─ ◇インストール パッケージを解凍すれば完了です。 ◇アンインストール レジストリ等の操作はしませんので、解凍してできたフォルダごとゴミ箱に送るだけです。 ◆使用方法 Attention, please! ────────────────────────────────────────────── ミ☆ ─ ソフトウェアを起動すると、1画面3エリアのウィンドウが出現します。すべての操作はこの画面上で行い ます(ソフトウェアからの通知を行うためのダイアログが出現することもあります)。 ◇左エリア:フォルダセレクトツリービュー(樹系図) 各操作対象のフォルダを選択するためのフォルダ一覧表示領域です。ここで選択したフォルダに対して 設定やバックアップなどの操作を行います。 サブフォルダ一覧の更新はサブフォルダを展開するとき(フォルダ横の+を押したとき)に行いますので 表示が合わないときは一度閉じてから再度展開してください。 ◇右エリア:操作パネル 各操作をソフトに指示するための領域です。Step.1〜Step.4に分類していますので、上から順番に実行 するだけで簡単にファイルのバックアップを行うことができます。 ◇下エリア:進行状況通知領域 この領域は、時間を要する可能性の有る処理を実行しているときに有効になります。この領域が有効に なっているときは処理の中断/再開または中止を指示することができます。 ファイルのバックアップをするためには右エリアのStepを順番に実行してください。 ◇Step.1:フォルダ設定 始めに、バックアップしたいフォルダにバックアップ先や除外するファイルなどを設定します。 フォルダセレクトで設定したいフォルダを選択した状態で『設定』ボタンを押すと、現在の設定内容が 詳細設定表示域に表示されます。 バックアップ先を指定するには、フォルダセレクトで当該フォルダを選択した状態で『実行』ボタンを 押します。バックアップ先が設定されていない場合でも、上位フォルダのバックアップ先設定から算出 します。 バックアップから除外するファイルを指定するには、詳細設定に表示されているファイルにチェックを 入れて『実行』ボタンを押します。 バックアップから除外するフォルダを指定した場合は、フォルダセレクトからチェックボックスが消え ます(バックアップ実行の対象としての選択ができなくなります)。 フォルダセレクトからフォルダを消すことも可能です。スッキリさせましょう。 ◇Step.2:設定ファイル保存 Step.1で設定した各内容をファイルに書き出します。書き出した内容は次回起動時に読み込まれます。 バックアップ元とバックアップ先の関係がはっきりしている場合などに人為的ミスを軽減する効果があ ります。頻繁なバックアップのためにもぜひ活用してください。 ◇Step.3:バックアップ調査 実際にバックアップをするためのファイルリストを作成します。 フォルダセレクトでバックアップを実行したいフォルダのチェックボックスにチェック(複数可)を入れ て『調査』ボタンを押してください。バックアップリスト表示域に調査結果が表示されます。 エラー項目がある場合にはエラーが表示されますので設定を見直したうえで再度調査してください。 ◇Step.4:バックアップ! バックアップリストに表示されている内容でバックアップを実行します。バックアップリストの内容に 問題が無ければ『実行』ボタンを押してください。 なおStep.3とStep.4の間またはStep.4を実行中に、当該フォルダ・ファイルを操作してしまうと正しく バックアップが実行できなくなってしまうため、処理中に操作しないように注意してください。 ◆システム上の制約 Caution ────────────────────────────────────────────── ミ☆ ─ 安全にご利用いただくために抑えておくべきポイントがあります。 ◇バックアップに最適な場所 ハードディスクは物理稼働する部分が多く摩耗による損壊が発生しやすい装置です。その時に備えてバ ックアップするわけですが場所を間違えるとバックアップもろとも損壊に巻き込まれてしまいます。 まず、1台のディスクに複数のドライブを割り振ることができます。ですからドライブ名が違うからと 言っても安心はできません。そしてデータの作成/更新/削除ができる必要があります。メディアにより 作成オンリーや削除不可なものがあり、書き込み方(磁気/光/電気信号などを使う)も異なります。 したがってバックアップ先には装置単位で分離した外付けディスクやフラッシュメモリーなどが良いで しょう。また、最近の外付けハードディスクには最初からバックアップ対応の複数台乗せたものも売ら れています(これならこのソフトは必要ないですね…)。 ◇ファイルシステム ファイルをディスクに記録するときの方式で複数のものがあります。 ・NT File System(NTFS) 多くのハードディスクはこの方式となったようです。4Gバイト以上のファイルを保存できタイムスタ ンプ(更新日時)は100ナノ秒単位で記録できます。 ・File Allocation Table(FAT) - FAT32 古いタイプのハードディスクにはこの方式が使われていました。ファイルサイズの上限が4Gバイトで タイムスタンプ(更新日時)は2秒単位までまるめられてしまいます。 ・なんかそれ以外の何か いろいろあるようです。タイムスタンプ(更新日時)を持たないものもあるかもしれません。このソフ トではNTFSとFAT32に対応するためタイムスタンプを2秒単位に切り上げています。 ◇よみ設計 このソフトは基本的に割り込み無しのシングル処理を前提に作成しています。簡単に言えばゆっくり操 作してください、処理がもたついても完了するまでお待ちくださいm(_ _)mということです。特に進行 状況通知領域が稼働しているときは中断/再開または中止以外の動作をさせないで欲しいのです。 ◆著作権 / 利用条件 / 再配布 / 免責事項 First Priority ────────────────────────────────────────────── ミ☆ ─ この配布パッケージに含まれるすべてのファイルの著作権は作者である 衣日和 が有します。 このソフトウェアおよび付属のソースファイルを使用したことにより生じたトラブル・損害等について衣日 和は一切の責任を負いません。全て自己責任でご利用ください。 このパッケージの内容物に一切の手を加えない状態での再配布は自由です。ただしオリジナル最新版の入手 元として私のHPへのリンクで済む場合は、リンクとする方が望ましいです。 また、付属のソースファイルを元に改造を行った場合およびモジュールファイルを組み込んだソフトウエア を製作した場合の著作権は製作者にあります。配布等は自己の責任の元に行ってください。 いずれの場合も、私に対して一切の連絡・許諾を取る必要はありません。しかしながら事後にでも一報を頂 けると衣日和は喜びます(≧▽≦)。 ◆改良のヒント Yaminabe's Recipe ────────────────────────────────────────────── ミ☆ ─ このパッケージには特製スパゲティソースが付属しています。固有の特殊環境に対応したい方や、がっつり ファイル操作が心配な方はご利用ください。ソースコード全文がありますので最新のHSP3.x系で即実行可能 です。ちなみに開発にはHSP3.4β2を使用しました。 ◇2.5次元データ管理モジュール変数(検索速度向上機能付き) 設計上多用しているこのモジュール変数は、いわば2つの表を格納できるデータベースみたいなものと 思ってください。表1には単純な構造体を、表2には構造体の配列みたいなものを格納できます。 モジュール変数として確保する際にデータ数やデータ型を(後付で)決定できるのであらゆる場面で使用 しています。 また、動作速度を有利にするための仕掛けが施されています。 ・配列要素の一括確保 HSPの配列自動確保は便利なのですが回数が増えると処理がもたつくようになります。 ・パターン分類によるソート キーとなる数値を256パターンに分けて参照テーブルを作成します。これによりifの比較回数を大幅 に削減します。また単純ソートとは違うため代入処理数も最小限に抑えています。 ◇ファイル比較 肝となるはずのファイル比較の際にファイル内容の取得は行いません。ファイルの比較はファイル名・ ファイルサイズ・タイムスタンプ(最終更新日時)で行います。またタイムスタンプは2秒単位に切り上 げています。 まず、3点が完全一致するものを除外します。次にファイル名が一致するものを[更新]としてマークし て除外します。さらに残ったものの中でサイズとスタンプが一致するものを[リネーム]としてマークし て除外します。最後に残ったものを[追加][削除]としています。 ◇2G(31bits・符号付32bitsの上限)、4G(32bits)制限 システムで扱える数値には制限があります。しかし実際にはファイルサイズやタイムスタンプは64bits で管理されています。このソフトではシステム上限を回避するためにAPIを直接呼んだり32bits整数値 メモリを2つ使ったりしています。 ◇マシン語 ファイルコピー部分をたどっていくとなにやら暗号が出てきます。これはマシン語と言ってコンピュー タの中の人が(翻訳機を使わずに)直接理解できる言葉なのです。マシン語についての諸々は以下の方々 (さん付け・音順)がとてもナイスな発言をされています。 ・いのびあさん - ひねくれソフト工房 ( http://homepage2.nifty.com/MJHS/ ) セキュリティー環境でのマシン語動作について ・ちょくとさん - ちょくとのページ ( http://chokuto.ifdef.jp/ ) マシン語の作り方、マシン語でのコールバック、マシン語中でAPI呼び、マシン語を使用しないコー ルバック実装プラグインなど ・なたでさん - placeark ( http://www.placeark.com/ ) Cのコードを入力するとHSPモジュールにしてくれる超便利なフリーソフト また、ホームページにはマシン語以外にも面白いコンテンツがてんこ盛られていますので必見です。 さて、なぜマシン語が出てくるのかというと…コールバックをプラグインレスで実装するためだったり します。HSPのbcopy命令ではタイムスタンプが変わってしまったりコピー中ソフトが応答なしになった りと都合がよくないのです。ちなみにコールバックで行う処理は極めて単純で(それでもかなり苦労し ましたが…)呼び出しパラメータをメモリに詰めてHSPウィンドウにウィンドウメッセージを発行するだ けです。メッセージ割り込みによってコールバック中に一度HSPに処理を返すことができます。このと きに進行状況の更新・ユーザー指示の処理・応答なし回避などを行っています。 ◆履歴 History ────────────────────────────────────────────── ミ☆ ─ ver.1.00_P1 2013.10. 7 HSPプログラムコンテスト2013にて配信 2013. 6.xx よみ正式版着手 2012.10.xx よみプロト版製作開始 -♪----------------------------------------------------------------------------------------------♭- Copyright (C) 2013 衣日和 All rights reserved.