「一つのフォルダにあるファイルをパスワード付ZIPにしたあと、個別メールの添付ファイルにして予め設定したメアドに送るというツールをMS-Excelで書いたけどいる?」フリーソフト開発秘話、目次へ「なに、それ。なんに使うの?」
「いやさ、うちで使っているメールソフト、これ添付ファイルのサイズに制限がかかるでしょ。そこで大きなファイルを送るときはファイル分割ソフトでサイズの小さいファイルに分けでメールに添付するけど、1つ1つ別メールで送るのめんどくさくない?なので、同一フォルダに収めておけばワンクリックで送れるようにしたの。ついでに、パスワードつけないと送れません、って制限がかかったりするよね。この場合一個一個ZIPでパスワード付けていくことになるけどこれまためんどくさいよね。なので、指定すればファイル1個ごとに自動でパスワード付きZIP化してくれるの。」
「あ、それ便利、ちょーだい。でも」
「なあに?」
「パスワード付きZIPで受け取ったはいいが、いちいちパスワード打ちこみながら解凍していくんでしょ、しかも解凍するとフォルダができてその中にファイルが、ってなるじゃん。これをコピーしてゆくってめんどくさい、、、けどまあ今もおんなじか。」
「受信メールを順番に開いて添付ファイルを1つのフォルダにまとめるところまでは手動だけど、パスワード入れてフォルダ指定すると同じフォルダに全部解凍して並べてくれるよ。そういう機能もおまけでつけた。だからめっちゃくちゃ楽だと思うよ。」
「くれくれくれくれ、まわりの人も使ってOK?」
「いいけど後で文句言わないでね。それと一つ依頼が。」
「なに?」
「さっきあなたが言った、それ、なんに使うの?というの、なんとなくいぶかしげな言いかただったけど、その口調だけでも取り消してくんない?」
「たしかに。分かった。悪かった。」
ちなみに7-ZipのDLL必須です。
この人の関数使わせてもらいました。ところで。Javaなんかしょっちゅうバージョンアップしとるわな。安定的なユーザーサービスのためには、その都度、動作確認のためにアップデートファイルを開発環境に送ってテストしなきゃならないはずなのだが、皆さんどうやっているのかね。
Javaではないのだが、いざとなったらバグフィックス版をすぐに送ることを前提としたスキームを考えていてね、その裏付けとなるインフラを用意しなきゃって気になったのよ。メールソフトによっては自動分割/送信やってくれるのもあるそうなんだけど、現用のでは見つかんなかったので、しかもパスワード付はかすりもしなかったので自分で作ったってわけ。最初、ファイルの分割は、他のソフトを使うことを前提としていたが、更に手を抜きたくなったので分割するところから書いてみた。できた。バイナリーファイルの分割だぜ、MS-Excelのマクロで取り扱う範囲を超えている。おかげで一筋縄ではいかなくて苦労した。そこまでしてやる理由は、他の開発環境を使うと「勝手にソフトを導入した」と言いがかりをつけられる可能性が無視できないからである。MS-Excelのマクロなら、規制するわけにはいかないよね。(便利なものを作ると機嫌の悪くなる人が何故か多いのだ。)
当初はこのソフト、でかいファイルを送信するとき限定でおもむろに起動するものだと考えていたが、ん?気が付いた。ここまで完成度が上げたもんだからひょっとして、「メールにファイルを添付する」でなくて「ファイル転送にメールを利用する」場合、転送したい宛先って決まっているから、「ファイルの大きさによらず、これ使った方が楽なんじゃじゃねえか!」。宛先はあらかじめセルに打ちこんでおけるからね。さらに「このファイル分割しないと送れないかな?」と確認する手間が省ける。となると小さいファイルは分割せずに直接送るというルーチンがほしくなるなあ。(分割前提のルーチンを通しているので形式的に「1つのファイルを1つに分割する」してしまうので合成が必要になる。拡張子変えるだけだが。)修正しましたよ。
さてソフトウェア名称だが、少なくとも送信側は全自動なので「全自動」の文言を入れたかったが、こうするとユーザーさんは何もしなくていいと解釈したがるものだ。少なくとも受信側ではメールを一個ずつひらいて、添付ファイルを特定フォルダに集めてゆく、という手作業が必要になるから「全」自動とは言えない。解凍は一括だし、分割ファイルを結合するバッチファイルは送信側で作って、これまたメールで送る、という機能はつけているのだが。残念ながら全自動までは名乗れない。
ここで受信側で添付ファイルを別フォルダにせっせと移す「手動」操作が、二槽式洗濯機を連想させてくれたので、付けた名前が「二槽式ファイル分割送信機」
自分では、そこそこイケていると思うがどうだろう。 (まずはリズムが五七五。さらには二槽式の「そうしき」と送信機の「そうし(ん)き」が韻を踏んでいる。)