- PR -

◆【ClickOnce 運用上の疑問点】ClickOnceデータ・ファイル(mdf)のバックアップやmail送受信管理は?

投稿者投稿内容
ぴんふ
ベテラン
会議室デビュー日: 2006/07/13
投稿数: 80
投稿日時: 2008-06-27 13:35
引用:

まず、メールで受信した添付ファイルを「名前をつけて保存」の既定場所でありますMy Documentsフォルダに
あらかじめ定めた名前(例えばABC)のフォルダを次のように自動作成しておきます。


私のメーラーでは保存のデフォルトはMy Documentsではなく前回保存したフォルダです。また、保存場所はユーザが任意に変えられるし、違うユーザ名でログオンされることもありますからMy Documents下に固定してしまうのはベターではないと思います。そういう意味もこめてSaveFileDialog(この場合はSaveじゃなくてOpenのほうが適切かな?)等の利用をお奨めしました。
メールの本文に説明を書くということなのでOne.netさんの試している方法でもいいとは思いますが。
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-06-27 16:40
ぴんふさんありがとうございます。少し外出していて返事が遅くなりました。
引用:

ぴんふさんの書き込み (2008-06-27 13:35) より:
私のメーラーでは保存のデフォルトはMy Documentsではなく前回保存したフォルダです。


そうですね。My Documentsは規定値とばかり思っていました。
引用:

保存場所はユーザが任意に変えられるし、違うユーザ名でログオンされることもありますからMy Documents下に固定してしまうのはベターではないと思います。そういう意味もこめてSaveFileDialog(この場合はSaveじゃなくてOpenのほうが適切かな?)等の利用をお奨めしました。


私の経験では「適当な場所に保存・・」と言いますと「適当な場所」てどの辺にあるのですかと聞かれたことがあります。むしろ固定したほうが親切なようです。居酒屋で「とりあえずビール」と注文したら「そのビールはアサヒですか、キリンビールですか」と同じような話です。それだけPCが普及したのでししょうか。

また、ClickOnceアプリケーションやデータファイルも<ユーザー名>My Documentsの下の階層にあり、違うユーザ名でログオンされるとアプリケーションの起動すら出来ません。

ぴんふさんの言われるようにSaveFileDialogを使う方法も、直接メールの添付ファイル保存場所を設定して*.gz に絞り込めれば大変便利だと思いますが、以下のことの知識がありません。
1.メールの添付ファイル保存場所は一定しているのか
2.メールの添付ファイルは特殊な圧縮ファイルで、解凍方法が分らないこと

以上のことからこのままでテストしてみます。

修正:むしろ固定したほうが親切なようです。の追加

[ メッセージ編集済み 編集者: One.net 編集日時 2008-06-27 17:22 ]
ぴんふ
ベテラン
会議室デビュー日: 2006/07/13
投稿数: 80
投稿日時: 2008-06-27 23:42
引用:

私の経験では「適当な場所に保存・・」と言いますと「適当な場所」てどの辺にあるのですかと聞かれたことがあります。むしろ固定したほうが親切なようです。居酒屋で「とりあえずビール」と注文したら「そのビールはアサヒですか、キリンビールですか」と同じような話です。それだけPCが普及したのでししょうか。


「任意のフォルダ」とは書きましたが、「適当な場所」とは書いていません。
意味的には変わらないかもしれませんが、「任意のフォルダ」の意図も私は提示しました。私の提示した意図をふまえた上での言い換えなのでしょうか・・・。

引用:

また、ClickOnceアプリケーションやデータファイルも<ユーザー名>My Documentsの下の階層にあり、違うユーザ名でログオンされるとアプリケーションの起動すら出来ません。


オンラインなら別ユーザでログオンしても該当のWebサイトにアクセスすれば起動すると思ったのですが、違うのですか?(当然実行ファイル群は別ユーザのMy Documentsの下のものになるのでしょうが)

引用:

1.メールの添付ファイル保存場所は一定しているのか
2.メールの添付ファイルは特殊な圧縮ファイルで、解凍方法が分らないこと


1.はメーラーから添付ファイルを保存しようとしたときのデフォルトのフォルダが一定かどうかが疑問なのでしょうか?
私の提案では「メーラーから任意のフォルダに保存」としました。ユーザがメーラーからどのフォルダに添付ファイルを保存するかはユーザ次第である(メーラーからは基本的にどこにでも保存が可能だから)ので、アプリから保存したフォルダを指定し、そこから取得したファイルでアプリの期待するフォルダに上書きすればヒューマンエラーが減るかなと考えたからです。
2.は調べた上で「分からない」とおっしゃっているのでしょうか?


まぁスレ主さんの意図した動きになっているのならそれでいいのかもしれませんが。

以下は蛇足(だけど重要だと思うが)
なんか・・・悪いシステム開発、いわゆる「デスマーチ」とか「尻に火のついたプロジェクト」の典型になりつつあるように見えます。
仮にもっと規模が大きくて複数人のチームによる開発だったら倒れる人が出そうな。。。
理由は・・・
1.アプリの仕様にしても、運用ルールにしても、「こうなるべき」を定めないで着手。
2.正解がないから調査などの下準備が不十分になる、時間をかけていたとしても的を得ない。でも完成を急いでしまう。
3.1と2により疑問・不具合が多発する。
・・・仕様書はあるのかなぁ。


スレ主さんは別スレ
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=45348&forum=7

引用:

ご指摘の通り、目の前に目的があって、その目的を達成するためだけではなく、もっと広い意味でそれぞれのテクノロジーに対する価値や応用範囲、又はビジネスモデルまでをも構想できるようになりたいと考えています。いつも適切なご指摘をいただき感謝しています。


と書かれていますが、「テクノロジーに対する価値や応用範囲、又はビジネスモデル」を視野に入れていらっしゃるのであれば、尚更「仕様」とそれを作る「設計」の重要性を考慮した上で開発に臨まれたほうがいいと思いますよ。漠然とした要望を仕様〜プログラムへと具体化しユーザに利益(お金だけじゃなくて広い意味のね)をもたらすのがソリューションなんじゃないかな〜。
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-06-28 09:55
ぴんふさん、いつもありがとうございます。以下ご質問にお答えします。
引用:

ぴんふさんの書き込み (2008-06-27 23:42) より:
「任意のフォルダ」とは書きましたが、「適当な場所」とは書いていません。
意味的には変わらないかもしれませんが、「任意のフォルダ」の意図も私は提示しました。私の提示した意図をふまえた上での言い換えなのでしょうか・・・。


その通りです。ぴんふさんの例に置き換えると「任意」というフォルダがどこかにあると誤解されるたという話です。実際には「任意」といっても何かのフォルダに保存することになり、どのフォルダにするか戸惑うよりもあらかじめ定められたフォルダを指定した方が親切であると感じています。

引用:

また、ClickOnceアプリケーションやデータファイルも<ユーザー名>My Documentsの下の階層にあり、違うユーザ名でログオンされるとアプリケーションの起動すら出来ません。オンラインなら別ユーザでログオンしても該当のWebサイトにアクセスすれば起動すると思ったのですが、違うのですか?(当然実行ファイル群は別ユーザのMy Documentsの下のものになるのでしょうが)


「オンラインのみの使用」のClickOnceアプリケーションの場合は体験していませんが、
「オンラインでもオンラインでも使用」の場合はそのようです。

引用:

1.はメーラーから添付ファイルを保存しようとしたときのデフォルトのフォルダが一定かどうかが疑問なのでしょうか?私の提案では「メーラーから任意のフォルダに保存」としました。ユーザがメーラーからどのフォルダに添付ファイルを保存するかはユーザ次第である(メーラーからは基本的にどこにでも保存が可能だから)ので、アプリから保存したフォルダを指定し、そこから取得したファイルでアプリの期待するフォルダに上書きすればヒューマンエラーが減るかなと考えたからです。


ぴんふさんが提示された方法は「メーラーから添付ファイルを任意のフォルダに保存」作業と「任意のフォルダからSaveFileDialogを使って指定場所に上書き保存」作業の2回の処理をクライアントにさせていますが、私の提案内容は「メーラーから添付ファイルを指定したフォルダに保存」作業だけで、ClickOnceデータ・ディレクトリへの上書き保存はアプリケーション起動時に自動処理してくれるため単純操作だと思います。
引用:

2.は調べた上で「分からない」とおっしゃっているのでしょうか?


ぴんふさんへの返事を急いでいましたので「私には知識がありません。」と申し上げ増したが調べる余裕はありませんでした。ただ以前受信フォルダの中から選択した人と自分とのやり取りだけを抜き出して送受信のメール内容を時間軸で見られるソフトを作ったことがあり、そのときに添付ファイルの扱いに困ったことがありました。

引用:

以下は蛇足(だけど重要だと思うが)
なんか・・・悪いシステム開発、いわゆる「デスマーチ」とか「尻に火のついたプロジェクト」の典型になりつつあるように見えます。仮にもっと規模が大きくて複数人のチームによる開発だったら倒れる人が出そうな。。。


ぴんふさんの蛇足は外れていると思います。以上
ぴんふ
ベテラン
会議室デビュー日: 2006/07/13
投稿数: 80
投稿日時: 2008-06-28 23:31
引用:

ぴんふさんの蛇足は外れていると思います。以上


外れているとおっしゃる理由を示してください。
私は理由を示した上でスレ主さんの開発の進め方に危うさを感じると申し上げました。

私も経験から申し上げましょう。ソフトウェア開発において、最も重要なのはコミュニケーション能力です。
開発言語にいかに精通していてもコミュニケーション能力に欠ける人が淘汰された現場をいくつも知っています。
あなたが起こしたすべてのスレを読み返してみてください。正確な情報が伝わらないために回答者の方々が苦慮し、少ない返信数で終わるはずのスレも伸びてしまっていることからもコミュニケーションの重要性がわかるはずです。わからないと言われるのであれば・・・。

あと投稿の際の推敲はしましょうね。誤字脱字が目立ちますよ。
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-06-30 10:21
ぴんふさん、ご指摘ありがとうございました。
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-07-02 14:52
スレ主のOne.netです。投稿日時: 2008-06-27 13:06 に提示いたしました方法に関して、その後テストしてみた結果を報告しておきます。内容はサーバーから各クライアントにmdf やmdb等のデータファイルを個別にメール送信してサポートする方法でです。(送信ファイルは圧縮して名前をApplication1.gzと固定します)

まず、スタートアップフォームの先頭で次のImports を設定します。
Imports System.Deployment.Application

続けてスタートアップフォーム_Load 時に次のようなコードを記述します。
引用:

'---Data_Fileにmdf やmdbのデータファイル保存先をフルパスで設定
Dim Data_File As String = ApplicationDeployment.CurrentDeployment. _
DataDirectory & "\Application1.mdb"

'-メール送信されたデータファイルの一時保存フォルダをMy Documents直下に作成
(フォルダ名:Project1)
Project1_Path = Environment.GetFolderPath(Environment. _
SpecialFolder.Personal) & "\Project1"
System.IO.Directory.CreateDirectory(Project1_Path)


'---Project1フォルダにApplication1.gzが存在すれば解凍してData_Fileフルパスに上書き保存
Dim gzipFile As String = Project1_Path & "\Application1.gz"
If System.IO.File.Exists(gzipFile) = True Then
Back_restore(gzipFile, Data_File) '-------解凍プロシージャへ
System.IO.File.Delete(gzipFile) '----------圧縮ファイルを削除
End If


以上で、サーバから送られてきたmdf やmdb等のデータファイルを複雑なClickOnceデータ・ディレクトリを探すわずらわしさもなく、メールに添付されているApplication1.gzをMy Documents\Project1フォルダに保存するだけで自動的に規定のClickOnceデータ・ディレクトリに上書き保存してくれます。
実際にClickOnceでWindowsアプリケーションを配布し、その配布先へ別のmdbファイルを圧縮したApplication1.gzをメールに添付してテストをしてみましたが、正常にClickOnceデータ・ファイルが上書きされ、個別に対応することが出来ました。

そしてクライアントからサーバへのメール送信(mdf やmdb等のデータファイル)はSmtpMailクラスのSendメソッドを使用すれば、プログラム中からもボタン1つでデータファイルを送信することは容易です。
http://www.atmarkit.co.jp/fdotnet/dotnettips/017sendmail/sendmail.html
Windowsアプリケーションは、このことによってアプリケーションそのものの配布や更新だけでなく、これらのデータソースとなるデータベースをも個々のクライアントに対し、メール添付によって簡単に送受信することが出来ました。ありがとうございました。
修正:メール添付によって簡単に送受信

[ メッセージ編集済み 編集者: One.net 編集日時 2008-07-02 15:00 ]

スキルアップ/キャリアアップ(JOB@IT)