さて、いきなり、反論も出るかとも思うが、私が思うのは、個人の消費と比較してだ。
私事ながら、数年前にマンションを買った。
マンション。それは、個人にとって大きな買い物だ。
だから、いろいろ調べたし、ほかの物件なども見た。
それにも、まして、勢いも必要だ。
でも、それでも、ある部分自分の判断を信じない部分もある。
それが、専門的な評価部分だ。
柱がどうだとか、耐震構造がどうだとか?
あとは、部屋の受け渡しでのチェック。
これは、素人目でもおかしいというところもあるだろうが、
やはり、プロの目から、仕上がりをきちんとチェックしてもらうことにした。
トイレなどの水回りの配管なども調べてくれるからだ。
こういった部分は、おかしなものを見せられ、そして説明を受けたら、おかしいとわかるが、
ただみて、それがおかしいのか、おかしくないのか?はよくわからない。
もちろん、業者はすべて、それが安全とか、問題ないということを言ってくる。
でも、結局は他との比較論であったり、コストとの相対論であったりする部分もあるので、
すべてが完璧とはいかないし、求めてもいない。
なので、やはり、プロのチェックが必要になり、お願いしたのだ。
このように、個人の消費でさえ大きなものは、そのように、消費者の立場のチェックはもとより、
プロの目から、提供者の立場(論理)からのチェックもしているのだ。
もちろん、そのためのコストも別に支払っている。
いわば、判断に対する保険料だ。
では、システムの発注の場合どうだろうか?
システムの発注者と、受注者の間にプロの目をいれないのはなぜだろうか?
「信じている」というとは、ここでいう、心理的なことを言っているのではなく、
契約的というか、手続き的というかの問題であるが、結果的に「信じている」と思う。
仮に、RFPの作成時と納品時を抑えられたら、防げるようなこともたくさんあることも見てきた。
なんで、こんなことも考えられていないの?というシステムが多すぎるからだ。
よくよく聞いたら、そんなことをお願いしていないとか、必要だと認識がなかったとか・・・
いい加減に結果が納品されてきたが、そこを説明された時に納得してしまったとか・・・
たとえば、自動車を個別に開発を仮に依頼するとしたら、仮にお客さんがブレーキの機能を求めなかっとしても、
絶対ブレーキの値段を入れてくるだろう。
ただ、システムの場合には、ブレーキがない時に、それをおかしいといってくれるかどうかは微妙だ。
ブレーキの機能が顧客側の運用側にある場合もあるので、システム提供側はそこまで教えてもらえなければ、
いらぬお節介をするかどうかになってしまうからだ。
でも、そのために、その後、膨大なコストをどちらかが背負うことになったり場合がよくある。
システムの発注と受注の間にも、そのようなシステムのプロの第3者の目が入ったほうがいいと思ったりするのだが、
どうしてそのようなサービスがないのだろうか?
顧客側に立った、システムのプロの目であれば、顧客も意見を言いやすいだろうし、
受注側も、自分たちに有利なようにごまかしているわけでなく、
本当にあるべき姿というのを言いやすくもなるだろうし・・・・
こういった、サービスが見つからないのはなぜなんでしょうか?
契約金のn%で請け負います。ってのがあってもいい気がするのですが・・・
と、たまに知人からの相談を受けていると、こういうのがきちんとサービスとしてあったほうが、
双方のメリットがあり、業界全体がよくなるのではないかと思うのでした・・・・
flex(AIR)で使えるFelicaのライブラリがずいぶんと前ではあるが、リリースされた。
以下のURLからライブラリは取得できます。
http://www.sony.co.jp/Products/felica/pdt/adb.html
ここで、Basicバージョン(無償)を使って、Suicaの履歴をエクセルデータに書きだそうかなと思ったが、
よくよく調べてみたら、そのようなことをやるには、Standardバージョンが必要らしい。
(せっかく、AIRからエクセルデータの作成ぐらいはできるのようになったのだが・・・・)
ちょっと、個人で調査のためだけに約60,000円はつらいので、あきらめた。
可能なら、Suicaの履歴から情報を取り出して、エクセルのデータに書き出すようなものをつくろうかなと思ったのだが、それはちょっとできないようだ。
(ちょっと、知人が電車の交通費を出すのに面倒だと言っていたが、ここで60,000円だせば、まあできるというわけだが、それは遊びにはちと高い。)
まあ、IDmやらを取り出すことはできた。
ただ、これだと、ブラウザのFelicaエクステンション機能でもできる。
なので、ちょっと、FelicaのIDをかざしたら、事前に登録されたところにメールを出すってな感じがいいかなと。
これだったら、ブラウザができないことも含んでいるし。
サーバーもいらないし。
こんなのができれば、
・塾についたらFelicaをかざすと親に連絡が自動的にいく
なんてのが、できる。まあ、メールが飛ばなくても、Flex(AIR)はすごくWEBと親和性も高いので、
・簡単なポイントカード
・ある場所について、かざしたら、次の問題が表示されるような、宝探しのようなゲーム
・出退勤(入出)管理
のなんてのは、すでにサービスがあるようだが、まあ、すぐに安く構築できるようになってしまったという事なのだろう。
ただ、FelicaをかざすためにPCを置いておくことができるのか?という問題がのこっている。
あのコンビニとかに置いてある、決済端末を使えれば、いろいろとFelicaのコンシューマソリューションも広がりをみせることができると思うのだが・・・・
AIRのいいところは、標準にあるWindowをカスタマイズできるところです。
しかしながら、なかなか、手を出すのが面倒でやっていなかったのですが、ちょっと試してみました。
作ってみた画面は以下の通りです。
このような画面を作るのに、Javaなどで作るのは非常に面倒なのですが、AIRの場合には慣れてしまえば、HTMLを組んでいるように簡単に作れます。
このような画面も、なれないデザイン込みでまあ、一晩もあればなんとかなるというレベルです。
さて、まず、カスタマイズをするために、いくつかの準備が必要です。
- アプリケーションのXMLでsystemChromeをnoneに設定します。
- アプリケーションのXMLで同じくtransparentをtrueに設定します。
- WindowedApplicaitonのshowFlexChromeをfalseに設定します。
これで、完全にデフォルトのコントロールが外れましたので、後は自分で部品を作っていきそれらを並べればいいというわけです。
でも、このようにカスタマイズすることで、自由に配置できるのはいいのですが、このために以下のようなことは自分で処理を書かなくてはいけません。
- ウィンドウの最小化・戻す・最大化・閉じる(右はじのボタンたち)
- ウィンドウの移動
- ウィンドウのリサイズ
ただ、メソッドを呼ぶだけでこれらの機能が実現できるので、あまり心配はいりません。
ウィンドウの最小化、戻す、最大化、閉じるは、
NativeWindowの
minimize(); restore(); maximize(); close();
で実現できますし、ウィンドウの移動は、startMove() でできますが、もともと、上部のバーを消してしまったので、私はロゴマークか、もしくは、濃い青い部分でmouseDownしたら移動ができるようにしてみました。
<mx :HBox top="10" left="15">
<mx :Image source="@Embed('assets/logo.png')" mouseDown="nativeWindow.startMove()" useHandCursor="true" />
</mx>
あと、リサイズは小さくて見えずらいのですが、左下に△のしるしを置き、そこでmouseDownしたときにstartResize()が動かせばリサイズができるようになります。
startResize();
airのHTMLコンポーネント(mx.controls.HTML)で、ローカルにあるHTMLファイルを読みたい。
この場合、には、
var file:File = File.desktopDirectory.resolvePath("index.html");
var browser:HTML = new HTML();
browser.location = "file:///" + escapeMultiByte(file.nativePath);
のように、頭にfile:/// をつけるのと、パスに日本語が含まれることを考え、escapeMultibyte()関数を使ってあげればよい。
ただ、これを使うと、そこまでエンコードしなくてもというところまでエンコード(エスケープ)されるが、見えるので問題はない。
それと、ローカルにあるファイルゆえに発生する問題がある。
文字コードがHTTPのヘッダで指定できるわけではないので、HTMLファイル自体にキチンと文字コードをmetaタグに書いてあれば問題ないが、
記述がない場合にはたいていの場合には文字化けを起こすだろう。
この場合には、ブラウザ側で文字コードを指定しなければならないが、残念ながらHTMLのクラスを見ていても直接の設定はない。
この場合には、内部のプロパティである、htmlLoaderオブジェクトを通して設定する必要がある。
browser.htmlLoader.textEncodingOverride = "Shift_JIS";
とこんな感じだ。
今回は、airxmailのちょっと変わった使い方とでもいうのでしょうか?
(airxmailの説明はこちらをご覧ください。)
まあ、技術的にはSMTPでメールを送っているだけですが、こんなこともできますよーという一例の紹介です。
最近、Google バズというものがあるらしく、そこにAirxmailを使ってバズって(っていうの?)見ました。
と実は、これ簡単。
前回、「airxmailでGmailを使ってメールを送信する」の応用です。
といってもほとんど同じ、変わるところは以下の2つ。
1)宛先を buzz@gmail.comにすること。
2)メールのヘッダの文字コードをUTF-8にすること。
さて、
sender = new SMTPSender(); sender.setParameter(SMTPSender.HOST,"smtp.gmail.com"); sender.setParameter(SMTPSender.PORT,465); // SMTP-AUTHの使用 sender.setParameter(SMTPSender.AUTH,true); sender.setParameter(SMTPSender.USERNAME,username); sender.setParameter(SMTPSender.PASSWORD,password); // STARTTLSの使用 sender.setParameter(SMTPSender.SOCKET_OBJECT,new com.hurlant.crypto.tls.TLSSocket());
は前回と一緒。
ここからが、ちょっと違う。
AirxMailConfig.setDefaultBodyCharset("UTF-8");
AirxMailConfig.setDefaultHeaderCharset("UTF-8");
var mimeMsg:MimeMessage = new MimeMessage();
var from:INetAddress = new INetAddress();
from.personal = "おれじゃ"; // 特に何も反映されないようですが・・・
from.address = this.fromEmail;
mimeMsg.setFrom(from);
var toAddr:INetAddress = new INetAddress("buzz@gmail.com","buzz");
mimeMsg.addRcpt(RecipientType.TO,toAddr);
// set mail subject
mimeMsg.setSubject("初めてのBuzzzzzzz! From airxmail");
mimeMsg.setTextBody(""); // ここで、本文はなくても、空で設定が必要。現在、airxmailのバグ
sender.send(mimeMsg);
sender.close();
ということです。
AirxMailConfig.setDefaultBodyCharset("UTF-8");
AirxMailConfig.setDefaultHeaderCharset("UTF-8");
の2つで、本文とヘッダのデフォルトの文字コードを変えることができます。
もしくは、サブジェクトだけの文字コードを変えるのであれば、
mimeMsg.setSubject("これでもだいじょうぶだよー。Buzzzzzzz! From airxmail","UTF-8");
でも、問題ありません。



