直接関わっていた仕事ではなかったが、ダイレクトメールのようなモノを送付する必要があったらしい。内容は細かくは明かせないが、広告などではなく、全国に存在するとある組織にアンケートを採る必要があったらしい。
業者に依頼してリストからメールを送付する予定だったらしいが、送付は手作業になったそうだ。何人かで分散して送付したが、その質をチェックしたかったそうだ。

「送付済みのメールから、送付先メールアドレス、メール本文に埋めた宛名、メールの形式、添付ファイルの名称などをリスト化できないか」
というのが依頼事項だった。

Outlookで送付されたそのデータファイルをエクスポートしてExcelのVBAで対応しようと思ったが、文字コードや制御コードのあしらいが意外と面倒だった。
そこで「Outlook上なら文字化けもしていないんだし、OutlookのVBAで何とかなるのでは?」と、調べてみた。

正直、驚いた。

やりたいことはすべて、それも簡単に処理ができるだけのメソッド/プロパティが揃っている。依頼されてから1時間ちょっとでリスト化の処理ができた。
もう少し調べると、文面のひながたと送付リストがあれば、差し込み印刷のようにメールに情報を差し込んで送付もできる。それも作ってみた。もし、そういうことができることが分かっていたなら、送付の作業の手間も、その内容のチェックも、人を大勢投入する事もなくできたはずだ。

今回は踏み込んでいないが、
・アンケート送付から返信の管理
・返信に対する自動回答
・返信内容のDB化
など、Outlookがあれば腕さえあれば構築できる。

Outlook の VBA 、恐るべし、である。
Eclipse を Flex 目的で入れている人なんて極めて少ないと思う。だからだろうけれど、トラブルに対する情報がとても少ない。

で、今回は「コンパイル結果のコメントが化ける場合」である。文字コードが違うからってのは誰にだって分かるだろう。どうすれば正しく表示されるか、の設定が肝心である。
さて、問題である。次の中で Eclipse + Flex (Flex関係の他のツールはない状態)、Eclipseのコンソールの文字化けがする場合、どうすれば化けなくなっただろうか?条件は以下の通り。
 ・文字コードはUTF-8
 ・Eclipseのバージョンは 4.3(Preiades 4.3)
 ・Flex SDK は 3

コンソール出力は別にFlexに限った事ではない。言語を問わず適当に検索してみた。

一番見かけたのが
・[実行] – [実行設定] – [共通] – [Encoding] で UTF-8 を設定
であった。しかし、Eclipse 4.3 ではその場所が違っているらしく、該当項目はなかった・・。

次に見かけたのが
・eclipse.ini に次の行を追加する
     -Dfile.encoding=utf-8
であるが、これは効果がなかった。

あきらめていたところに、たまたまあったのが
・[実行] – [外部ツール] – [外部ツールの設定] – [共通]タブ で MS932 を設定
元が UTF-8 だったのでダメ元でやると成功。

文字コード系のトラブルは長らく遭遇していなかったので勘が鈍っていたのだろうか?ともかく、うまくいって何よりである。




これ、分かってしまえば簡単なんだけれど、Eclipseを使った例が見つからず、やり方に骨を折ったのでメモ。

いずれにせよ、AS3CoreLibというのを使う方がいいらしい。最近は https://github.com/mikechambers/as3corelib よりダウンロードすることになっているが、開発中のモノという位置づけだろう。
少々古いが、http://code.google.com/p/as3corelib/から。このページの Downloads タブへ遷移すると、特にリスト上何も出ていない。ドロップダウンボックスで適切なモノを選ぶか、リスト内の all downloads というリンクをクリックすればダウンロード対象が出てくる。結構古いが、ダウンロード数が一番多い、安定版がいいのではと思う。

これをダウンロードし、解凍すると色々出てくる。

しかし、これをどうやって使えばいいのかがよく分からない・・・。

結論から言うと、2つの方法で使う事ができた。ただし、ライセンス条項にあっているかどうかは知らない・・。
・解凍した src フォルダ の直下のcomフォルダを、コンパイル環境のフォルダにコピーする。
・解凍した lib フォルダ の as3corelib.swc にパスを通す。
の2つである。

後者、build.xml ファイルの、
  &ltexec executable="${FLEX_HOME}/amxmlc.bat" failonerror="true">
の次の行に追加する。
  &ltarg line="-include-libraries [as3corelib.swcを含む、パス]" />

晴れて認識するようになった。

--------------------------------------------------
[2014.01.28 追記]
最近(Flash Player だと 11 以降かな?)では as3corelib を使わなくても、そのままで JSON が使えるようになった。できることに差があるかどうかは検証していないが、その方が処理も高速との実験結果もあるので、そちらがおすすめ。