ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

ブラウザ上にPCのローカルファイルをドラッグ&ドロップする技法のメモ

お仕事の関連で調べる事になった。で、ブラウザ上で動くので多分Appletで良いのかな?ということでGoogleに「Java Applet Drag and Drop」、さらにPC上のローカルファイルなので「Desktop File」を付け足す。

Java Applet Drag and Drop Desktop File - Google 検索

ざっと眺めたところ、商用アプリとして取り込んで弄くり回してリリースできる無償のライセンス形態のサンプルは以下に絞れた。
いずれのサンプルも、以下のポイントが共通。

  • DropTargetListenerを実装したクラスを用意して、DropTargetDropEventを補足する。
  • DataFlavorをチェックする。Windowsであれば"DataFlavor.javaFileListFlavor"というのを上手く使える?
  • jarファイルに署名する。自己署名だとブラウザが警告を表示する。

1. http://zgrossbart.blogspot.com/2007/11/drag-and-drop-file-uploading-made-easy.html

2. Open Source Drag & Drop Upload Java Applet for Websites | Panyasan’s Random Musings

3. OKLab DnDUploader ドラッグアンドドロップ・ファイルアップローダ Java Applet

1. はドロップされたファイルをzipにまとめてPUTメソッドでサーバーに送信するexample。
2. は、1. を更に微調整+カスタマイズしたもの。 1.と2.はAPL2.0。
3. はアップロード+ダウンロードの両方に対応してアプリとしてまとめられている。日本語ファイルのUP&DOWNなどいろいろ工夫されているっぽい。ライセンスについては2008/10/20時点で改造は可能。OSS系のライセンスを適用するとしてもBSD系になるだろう、とのこと。

Q.ライセンスはどうなっていますか?
現在特にライセンスの指定はしていません。当然、無償・無保証でソフトウェアが使え、ソースコードの改変を行っていただいてかまいません。

Q.将来オープンソース系のライセンスになりますか?またGPLになりますか?
検討中です。オープンソースライセンスは、ソフトウェア開発者が免責や法律を調査するコストを減らしてくれるため一定のメリットがあると思います。ですが、ライセンスが乱立しているため、開発者、ユーザ共にどのライセンスであるか、調べるコストが発生しています。訴訟等の問題が発生しない限り、無償・無保証ですが好きに使っていただけるように、現在はライセンスの付加を考えていません。またこのようなスタンスなのでライセンスを付加する場合は、GPLではなくBSD系になると思います。

OKLab DnDUploader ドラッグアンドドロップ・ファイルアップローダ Java Applet

ちなみに 1. のAntスクリプトですが、Antの1.6.5で動かすとsignjarタスクのところで

The <signjar> type doesn't support the "preservelastmodified" attribute.

と出ちゃいました。Antの1.7.1に上げたところ、signjarは正常に動作しましたので注意。

他にも、日本語ファイルは大丈夫かーとか、フォルダをDandDされたらどうするーとかありますが、そこは未調査。

全然別の意味で興味を惹かれたのが 3. ではAppletは当然Java、んでサーバー側がPerlCGIで組まれていた点。しかもPerl5の時代の"use utf8;"なPerlコード。
なんつーか、2008年時点でのWeb開発者というのは一つの言語しか知らないようでは非常に苦しいのだなぁとつくづく思った。あとAnt知らないとやっぱキツイ。だってサンプルコードはAntでビルドするようになってるのが本当、多くなってきてるから。
特にサンプルプログラムでサーバー側をさくっとやっつけたい時はやはりスクリプト言語を使えるとすごい楽だなぁ、と。