Archive for 3月, 2010
昨日初めて、ある人たちにこの考えを話したところ、興味を示してくれたので、ちょっと書いてみました。
私はもっぱらActionScriptを使うときには、AIRでクライアントアプリケーションのようなものを作っているので、AMFとはなじみがない。
なじみがないので、ことさら、AMFを扱うためにサーバ側で特別なことをしたくないなー。と思ったりする。
私自身、サーバ側のプログラムはPHPがいいと思っている。PHPがいいのは、簡単だからだ。
(でも、最近のPHPフレームワークを使わなければならないのであれば、PHPでもなくていい気もしたりする・・・。)
簡単をモットーにすれば、amf形式を扱うのも簡単にしたいなー。
やはり、PHPのいいところは、入力データを $_GETやら、$_POSTの配列で受け取れるがいい。(個人的に)
だったら、amfのデータも、$_POSTで受け取りたい。
でもって、出力はさすがに、HTMLの出力ともいかないので、XMLがいいかな。
このあたりをApacheがモジュールとしてやってくれればいいなー。
amfデータを受け取り、POSTデータに変換し、XMLの出力を受け取り、それを再度amf形式に変換すればいいわけだ。
そうすれば、PHPにこだわる必要もないし、ちょっとしたテストでは、単純にxmlファイルをサーバに置けばいいことにもなる。
速度面では、どうかわからないが少なくとも、ネットワーク上に流れているデータはamfデータなのだから、amfにしている目的は達成することができるだろう。
とおもって、ちょっと、amfデータをC言語で読めるようにプログラムを初めて見た。
amfデータがどうなっているのかを調べるのには、ZendFrameworkのAMFを見ているのだが、
でかいフレームワークを使うのがいやなのに、ZendFrameworkを見ているとこちらのほうが詳しくなって、
作る必要性もなくなっていくような気もするが・・・
まあ、Apacheのモジュールをゼロから作るのにそれなりに実用的なサンプルになるので、個人的な勉強課題としてはいいかなとおもったりする。。。
— 2010/3/26追記 ——–
とおりすがりのFlexプログラマさんが、コメントしてくれたように、
この記述はある部分ではあっておりますが、ある部分では間違っていますね。
私自身、既存のクラスを用いずにいろいろと自作していたので、このような問題にハマっていたようです。
勉強になりました・・・・
————————————————————————————————————-
DataGridではDataProviderで指定されているオブジェクトの中身が変わったときに、
自動的には表示が変わるということがない。
したがって、データが変わったことをDataGridのオブジェクトに通知しなければならない。
この方法として大きく分けて2つある。
1)DataProviderで指定したデータのオブジェクト自体を変更してしまう。
おもに、管理しているデータが少ない、または、ちょっとした動作を確認したいための捨てコードなどのために、
私はこの方法を使う。
ようは、dataGrid.dataProviderを再度設定してしまうわけだ。
2)Collectionからイベントを発行し、データが変わったことを通知する。
こちらが、正当なやり方だろう。
DataGridは、CollectionEventの通知を受けて、画面の再描写を行う。
以下の例では、たとえば、list(ArrayCollection)をDataGridのdataProviderに指定しており、
何らかのユーザの処理で、データを書き換えることを想定したサンプルである。
var obj:Object = list.getItemAt(2); obj.title = "this is test"; var evt:CollectionEvent = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE); evt.kind = CollectionEventKind.REPLACE; evt.location = 2; list.dispatchEvent(evt);
リファレンス:
CollectionEvent
CollectionEventKind
とこのようにすることで、データの一部が変わったことを通知できる。
また、これ以外にも、データが追加されたこと、データが削除されたことや、フィルタがかかったことなどを、
kindプロパティを通じて通知できる。
ただ、変更のたびに、変更をするソースがこのようなイベントを発行する処理を記述するのは、本来あるべきではないと思うので、
このようなイベントは、データ(アイテム)自身が投げるか、または、ICollectionView自体が投げるべきだと思う。
私は、データの変更通知と、データ自体の変更のタイミングを自分の都合のよいように制御できるので、ICollectionViewを実装したクラスを自分で作ることにしている。
データの変更通知とデータ自体の変更が別がいいのは、たとえば、まとめて100件が連続して変更される場合、1件1件で変更通知をせずに、
最後にまとめて通知を1回するということも可能になるのだ。
SaaSと自社内運用、本当に得なのはどっち?
という記事があって、かつてはASPという提供側にいる立場から、また、利用を検討する立場になって、改めて、お互いの認識に「ずれ」というか「違和感」というものを感じたので、ちょっと、その違和感を書いてみることにした。
この記事の冒頭にも書いてあるのだが、
「情報処理システムの活用において、「所有から利用へ」といった流れが着実に進んでいることは確かなようである。情報処理システムも今後、電気・ガス・水道などといった社会インフラと同じような道筋をたどり、ユーザー企業は自社で情報処理システムをまったく所有しなくなるという見解さえある。だが一方で、ある程度長い目でトータルコストを見ると、「所有」の方が負担は少ないのではないかという声もある。「レンタカーは便利だが、毎日車に乗るのであれば自家用車を購入した方が安上がりである」という例えを耳にした方も少なくないだろう。」
しかし、私は「レンタカー」と「自家用車」よりも、まだ「電車」か「自家用車」か?の方がたとえにあっている気がする。
ASP/SaaSとも、IT系企業が利用者となる場合には、ある程度、外部から見てもその内部の制約、できること、などが想像でき、「レンタカー」と「自家用車」ぐらいの違いにとらえられるかもしれないが、まだまだ、一般的な視点からしてみれば「電車」か「自家用車」くらいの違いがあるのではないか?
しかしながら、この記事にもあるように、「レンタカー」と「自家用車」が例にも挙がっているように、そのような視点でしか違いがないととらえる人が多いような気がする。特に「コスト」「コスト」といっているうちには・・・
「レンタカー」と「自家用車」では、たとえば「ヴィッツ」に乗ったとしても、同じ車なのでそのファンクションは変わらない。
変わるのは、コストと思ってしまっても当然だろう。しかし、「電車」と「自家用車」であればどうであろうか?
基本的に「移動できる」という概念は変わらないが、好きなところから好きなところへ移動するという視点で見れば、全然違う。
「SaaS」と「自社運用」は、この位には素人感覚でも違うと思う。
そうなってくると、単純な「コスト」として比べられるだろうか?
もっと、大切なのは「目的」と「成長戦略」ではなかろうか?
「電車」で生活するということを考えれば、当然、駅前に住むことを前提に生活が成立する。
また、都市部の方が電車での生活はしやすいだろう。
そうなると家賃が高いが、これを、移動というコストに完全に転嫁できると思うだろうか?
移動というコスト以外にも、都市部にいるということは、それ以外にもメリットもたくさんあるのだ。
また、「自家用車」で生活すると決めてしまえば、必ずしも、「都市部」で生活することを前提に考えなくてもよい。
いつでも、気ままに好きな場所に自分で決めて移動したいと考えれば、「電車」での移動はあり得ない。
とここまでは、要するに、契約者側のたちばのみを考慮したが、今度は提供元の都合も入れて考えてみよう。
純粋に、自社の管理コストを「SaaS」か「自社運用」かといえば、「SaaS」がいい!となるのが今の風潮だろう。
でも、それは、「SaaS」を提供している側がより正論を言えるための有利なベンチマークなのだ。
たとえば、自社のサービスの一部をIT化してそれを提供しよう。その際に、「SaaS」の利用がいいのか?「自社運用」がいいのか?
というケースの場合だ。
この時に、「SaaS」の利用は、コストを低く抑えられ、お客により低コストで提供できるかも知れない。
しかし、みんなが「SaaS」を使えば、同じなのだ。そうなれば、それ以外に「付加価値」を求められる。
もちろん、そこで、「SaaS」に頼らない場所で「付加価値」を提供できれば問題ないが、よりITに密着し始めると、
「自社運用」で踏ん張ってきたゆえに、できる「付加価値」というものが注目される可能性もある。
そうなると、いきなり競争のための「初期投資」を求められてしまうこともある。
そして、もうひとつの盲点がある。
「SaaS」を提供している会社がサービスを行いだせば、「競合」になる。
ということだ。
「SaaS」を行っている会社だって、順風満帆でそのインフラ事業だけでとどまっていなければならない理由はない。
より、その業界に特化し、実績もつめれば、そこに参入だってしてくる。
とくに、業界No1などが使ってくれ、そして、実績を積んでくれれば、その信用とノウハウをもとに、その顧客の周辺、隙間を狙ってくる。
すでにブランドを確立した業界No1の会社はそんなに影響はないが、あなたの会社はどうだろうか?
「あの、××と同じサービスが、低コストで提供できます。」
当然、ITを駆使することを考える会社はコストとファンクションで勝負をかけてくる。
そんなときに、それと同じステージで勝負しては勝てなくなるだろう。
これは「SaaS」は使うなというわけではない。
「SaaS」というのを単純に「コスト」という一面だけを見てると、ついつい、「コスト」にいろいろな視点が集中してしまい、
結果として「コスト」戦争に敗れるのではないか?という気がするのだ。
あることをしたいが、そこのコストを捻出するために、「SaaS」を利用してコストを浮かしてそちらに回すくらいの気持ちが必要なのではなかろうか・・・・
つまり、コストワールドからの脱却を余儀なくされる時がやってくるのだ。
たとえば、テキストエリア(TextArea)などを入力しているときに、今から入力しようとする文字の候補などを表示したい場合があるのではないだろうか?
コードを書いていれば、よく使うあれだ。
これをFlexなどのTextAreaでも使いたい。こんな感じだ。

さて、そのためには、現在のキャレットの位置、つまり、文字の何番目という位置情報から、
その位置が、x座標、y座標でどこにあたるのかを求める必要がある。
このためには、TextFieldの
getCharBoundaries(charIndex:int):Rectangle
を使用する。
これを使って、x,y座標を求めて、そこにListのPopupを表示すればOKというわけだ。
ただ、TextAreaなどで使用したい場合には、内部で使っているTextFieldを触るすべがない。
したがって、継承クラスなどを作って、
textField
のプロパティ(getter)としてアクセスすることになる。
これはちょっと、面白い話だなーとおもったので・・・・たまには・・・
なぜか、新しいものを取得しようと思えば思うほど、古きにたどり着く。という事を最近実感しており、
そのためか、C言語も真面目に始めたのだが、何かC言語関連でおもしろい本がないかなーと探していたら・・・・
という本を読んでいました。
ただし、今回はプログラムとも、技術とも全く関係がありません。
この本の中で、余談として、赤ちゃんが「ンマ、ンマ」と声にしているのを聞いて、
ほんとどの国がそれを「お母さん」としたと。
ママ、ママン、マーマと、
しかし、日本だけ(たぶん)は、それを「ご飯(マンマ)」ととらえたと・・・・
日本文化は携帯などでも「ガラパゴス」って特殊扱いされているけど、
単なる置かれている環境の違いじゃないんじゃないかなー
と、この話を聞いて思ったりする。
ある意味、国際社会でKYとしての素質を日本人はDNAレベルで持っているということじゃないかな。
ただ、こんな、ちょっとした視点の違いってグローバル化されていけば、いくほど、面白いんじゃないかなー。と・・・
右向け右の社会で、左を向きましょうということだ。
それが、「ガラパゴス島を立派な観光ビジネス」に仕上げることになるんじゃないかな。

