Many Eyes - データ解析の集合知
IBM alphaworks が提供しているデータとグラフの共有サイト Many Eyes で遊んでみた。
<p>
『我輩は猫である』のタグクラウド
<img style=”display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 130px;” src=”http://3.1415.jp/sites/default/files/blogger_importer/s320/ManyEyes_%25E6%2588%2591%25E8%25BC%25A9%25E3%2581%25AF%25E7%258C%25AB%25E3%2581%25A7%25E3%2581%2582%25E3%2582%258B_TagCloud_0.png” border=”0” alt=”“id=”BLOGGER_PHOTO_ID_5272152286438850306” />
</p>
<p>
『我輩は猫である』のワードツリー
<img style=”display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 174px;” src=”http://3.1415.jp/sites/default/files/blogger_importer/s320/ManyEyes_%25E6%2588%2591%25E8%25BC%25A9%25E3%2581%25AF%25E7%258C%25AB%25E3%2581%25A7%25E3%2581%2582%25E3%2582%258B_WordTree_0.png” border=”0” alt=”“id=”BLOGGER_PHOTO_ID_5272152446972636882” />
</p>
<p>他の人がアップロードしたデータに対して、多様な visualization を行い、その図を共有することができる。データと分析結果を共有して、大勢の人の目が入れば、一人では見えなかったものも見えるようになりますよ、というのがサービスの趣旨。</p>
<p>エクセルのような定型データと、フリーテキストを扱うことが出来る。ただし、日本語のフリーテキストには対応していない。上記の図は、若干の手間をかけてある。</p>
<ol>
<li>
日本語テキストをどこかから入手する。今回は、青空文庫の『我輩は猫である』を用いた。
http://www.aozora.gr.jp/cards/000148/card789.html
</li>
<li>
ルビが邪魔なので削除する。テキストエディタで、正規表現で置換した
<pre class="prettyprint">
s/《[^《]》//
s/|//
</pre>
</li>
<li>
入力者注も削除する。
<pre class="prettyprint">
s/[#[^[]]//
</pre>
</li>
<li>
茶筌にかけて分かち書きする。
<pre class="prettyprint">
$ chasen -F”%m “ < ~/neko.txt > neko_splitted.txt
</pre>
</li>
<li>
「てをには」を削除する。というよりも、ひらがな一文字を全て削除する。スペースに挟まれていない場合に除去されないので、下記の置換を三回行う。
<pre class="prettyprint">
s/\s[あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ]\s//
</pre>
</li>
<li>
句読点と記号を削除する。
<pre class="prettyprint">
s/[、。…「」―?]//
</pre>
</li>
</ol>
iPhone のマルチタッチに続くコンピュータインタフェース
Brain Scanners, Fingercams Take Computer Interfaces Beyond Multitouch
http://blog.wired.com/gadgets/2008/09/brain-scanners.html
<p>iPhone のマルチタッチスクリーンは、次世代のインタフェースを感じさせる。キーボードとマウスという、既存のインタフェースの延長線上にない、革命的なインタフェースだ。これから先のディスプレイデバイスは、マルチタッチができることが前提となってゆくことは間違いない。</p>
<p>マルチタッチが初めて提唱されたのは、1982年のこと。世の人に知られるようになり、世の標準になるその一歩を踏み出すまでに25年かかった。この記事で紹介されている、最先端の研究も、世に広く知られるようになるまでには、10年、20年を要するのだろう。</p>
<p>Neurotransmitters と呼ばれるデバイスは、近赤外線を額に照射して、その反射光の計測によって脳の働きの活発さを見るもの。血中酸素量が推測できる。人が集中すれと、より多くの酸素が必要とされることを利用している。</p>
<p>FingerSight は、指先につける小さなカメラ。指先の動きを、カメラ画像の解析によって判断する。アプリケーション上で、ダイヤルを回す、ドアノブを回すなどの動作に変換することができる。</p>
LVS が FIN を落とす
ちょっと前に、Webアプリの Load Balancer として、LVS(Linux Virtual Server) を DR (Direct Routing) 構成で用いてみました。LVS はオープンソースの LB。BIG-IP など使うと安くても数百万円コースですが、LVS なら安いサーバ 2台で Active-Standby な LB を組めます。DR は、クライアントへのレスポンスを LB を通さずに返す方式。NAT 方式だと行きも帰りも LB を通りますが、DR は行きだけなので、LB がスループットのボトルネックになりにくいという長所があります。その代り、設定はちょっと手間がかかります。
<p>だいたいうまく動いていたのですが、ある月曜日に突然、社内からアクセスすると、だんだんと動作が遅くなって、しまいには自社のプロキシが「サーバが反応しないからアクセスできないよ」という趣旨のエラーを返し始める、という問題が出てきました。</p>
<pre>
Webアプリと社内ネットワークの概要
DB - Web - LB - Router — Internet — Router - Proxy - Client
</pre>
<p>時間に追われながら、調査を開始しました。まず、週末に、社内のHTTPプロキシサーバが置き換わり、処理能力がパワーアップしていました。前の週との間で変わったのはプロキシだけなので、とても怪しいのですが、プロキシの何が悪いのか、まったくわかりません。</p>
<p>社外からアクセスすると通常の速度なので、Webアプリ側の処理には問題なさそうです。サーバの Load Average も余裕あり。Webサーバ上の tcpdump で調べると、Webサーバからクライアントへ ACK を返すタイミングが変なことがわかりました。一通りの HTTP request - response が終わったあとに、ちょっとの空白時間を挟んで、まとめて ACK が返ります。謎。目処が立たないので、別の対策でしのいで、サービス正常化を優先させることにしました。</p>
<p>それからしばらく後の再調査で、Webサーバで FIN_WAIT_2 が大量発生していることが判りました。TIME_WAIT がたくさんなら普通ですが、FIN_WAIT_2 の多発は何かありそうです。</p>
<p>tcpdump で各所のパケットをキャプチャし、丹念に動作を追うと、LVS がクライアントからの FIN を落としているために Webサーバに届いていないことが確認できました。ググると、LVS の DR 構成は、帰りのパケットが LVS を通らないために netfilter(iptables) がコネクションの確立を認識せず、FIN を通さないということが判りました。netfilter で TCP の state を見ないようにすることで、無事解決です。</p>
<pre>
> For one of my dozen of services ( a straight TCP connection), the
> TCP-FIN packets that are arriving on the load balancer are never
passed
> to the real server.
Basically, all packets (SYN and non-SYN) are allowed by the “–state
NEW” iptables but not by the ESTABLISHED,RELATED, because the director
never sees the replies from the real server and so never creates a
conntrack for that connection.
When a FIN packet arrives, it is not validated as a –state NEW,
because
it’s flag FIN is activated and so, that particular packet is dropped.
(snip)
So the solution is to change the iptables rule from
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport $VPORT -j ACCEPT
to
-A RH-Firewall-1-INPUT -m tcp -p tcp –dport $VPORT -j ACCEPT
http://archives.free.net.ph/message/20080425.113313.b51288d0.ja.html
</pre>
ウェブアプリの脆弱性検査
ウェブアプリの脆弱性検査、というものを受けたことがあります。専門の会社に依頼して、20ページで100万円ちょっとでした。AJAX が登場したいま、何を1ページと数えるかは悩ましいのですが、とにかく、リストプライスは20ページ100万円ちょっとでした。高いか安いかは何とも言えませんが、不安感が減ることは確かです。受けておけば絶対に大丈夫というものではないにせよ、いつ起こるとも知れぬ個人情報漏洩に、常にびくびくしているより幸せです。
<p>注意して作っていても、検査を受けると、やはりいくつかの脆弱性が発見されます。その過程で、よりセキュアにする方法を学び、その後の仕事にも活かすことができました。常に最新のセキュリティトレンドに頭をアップデートするためにも、年に一回くらい、このような機会に恵まれるとよいのですが。本やWebでセキュリティの記事を読むよりも、目の前に確かに問題が存在する、という状況のほうが頭に残ります。</p>
<p>お金が有り余っているわけでもなかったので、20ページを2回に分けて検査してもらいました。最初に10ページくらい。そこで発見された脆弱性に対処して横展開して、さらに開発が進んだ所でもう一回。3回に分けれらないか、と交渉したら、さすがにそれは断られました。</p>
<p>発注したのは、とあるセキュリティコンサルティング会社だったのですが、そこでやるのはインフラ系の検査のみ。外部から自動化されたツールでアタックをかけて、結果をレポートしてくれるサービスです。技術の会社というよりは、営業とコンサルティングの会社であるように見受けられました。</p>
<p>Webアプリの脆弱性検査のほうは、その営業会社から、さらに別の会社に発注されていました。下請けに出して、マージン取って質も下がるのかなと心配していたら、そこの会社の人は、体の芯まで技術系、みたいなプロの方でした。お話していて、いろいろと勉強になりました。知名度は無い会社ですが、ホームページを拝見すると、高木浩光さんも関わっていました。それだけで安心感倍増。</p>
<p>その会社でも、脆弱性検査のコアな部分ができる人は数人しかいないとのことです。やはり、k可能であるなら、セキュリティは専門家にかかわってもらうのが一番よいですね。コストとのトレードオフですが、素人が中途半端にやっても、どこまで安心してよいのか、判断がつきません。</p>
iPhone 買いました
iPhone を買いました。自宅でバーが一本も立たなかったので、MNP使わずに新規で契約したのは正解でした。それに、おさいふケータイに慣れてしまうと、もう戻れません。iPhone にオートチャージな Suica を張り付ければ一緒という人もいるけど、それはかっこわるい...
<p>なぜ iPhone を買ったか。次世代の UI に触れるためです。iPhone の UI は、今までの UI とは非連続な進化だと思うのです。マルチポイントな UI や、指を滑らす速度に応じてレスポンスが変わるUIは今までも存在したけど、世間一般に認知・普及させたのは iPhone が初めて。これからの UI は、iPhone を一つの基準として、その上に進化を重ねてゆくのでしょう。</p>
<p>帰りの電車の中で感動したのは、Google Map + GPS のアプリ。現在位置を追跡しながら、Google Map が動くんです。NAVITIME でも同種のことはできるのだけれど、拡大縮小自由で地図も航空写真も表示できる Google Map を利用しているところが違う。ボタンでなく、指先のタッチで地図を操作するところが違う。使いやすさに格段の差を感じました。</p>
<p>他社のタッチパネル携帯との比較を見ると、スペックからは推し量ることのできない、操作感がつかめます。作りこみの緻密さで、iPhone は少なくとも他社の2-3年先をいっているようです。</p>
<p>一年前に EMOBILE の EM-ONE も買ったのだけど、すぐに飽きてしまって持ち歩かなくなりました。その数年前にりなざうも買ったけど、これもすぐに飽きました。りなざうも EM-ONE も、既存のデバイスの延長線上にあるもので、パソコンの代用品、それもサイズの制約から使いやすさを犠牲にした代用品の域を出ていません。iPhone は、既存のデバイスに改良を加えてできたものではなく、それらとは異なる、進化の非連続点にあるデバイスです。</p>
<p>ソフトウェア技術者にとって、これからの時代の標準となる UI を体感することは、必ずやプラスになります。一種の投資です。そう考えないと、今後二年間で20万円弱支払うことになる自分の行動を正当化できません、よね。</p>
<p>iPhone を買う前に、無料公開されている iPhone in Actionの Part1 を読み、そこで初めて、iPhone のネイティブアプリは Objective-C で書くことを知りました。iPhone のプログラミングモデルは秀逸であるらしいので、手を染めてみたいのですが、Mac を買わなければならないところが悩ましいです。</p>