2010年2月23日火曜日

デブサミ2010レポートというかメモ(その3)

ミツエーリンクス・矢倉氏(阿部力に似てるイケメン)から「HTML5って?」という概説的なお話。
「緊張して吐きそうです」というオープニングも、LTならではの空気感。
(実際にかなり緊張されてましたが)

矢倉氏は「Web標準Blog」というブログを執筆されている方だそうで。見ると、随分長いこと書かれてます。これ、大変だろうなぁ…。

さてさて、講演スライドはこちら

聞きかじった内容のメモを書いていこうと思ったけど、スライドに書いてあることなので、わざわざここで書いてもしょうがない(涙)。

細かな話はスライド内(本物)を参照していただくとして、矢倉氏としては
「HTML5仕様じゃないものもHTML5とか言うと話がややこしくなるか、ちゃんと区別して使おう」
「すぐに『HML5?あぁ、使えないよ』とか言わずに、考え方を変えて皆で使っていこう!」
というお話でした。


---
次に、白石俊平氏のお話。
Web開発の未来予想
WebWorkersは革命だ。
 ・ユーザビリティに優れたアプリケーションを
 ・美しくてシンプルなプログラムコードで書ける
  (マルチコアも有効に使える)

JSはレイヤー化の方向に向かうのでは?
・JSクライアントはUI層とBL層(Business Logic)に分かれる。
・UI層からのCRUDをBL層が(裏で)実行。
(つまり、UIを邪魔しない)

web-messaging-rpc の開発をしていて、コミッタ募集中とのこと。


---
続々。有限会社futomi 羽田野太巳氏。

HTML5を使ったサイトをピックアップして紹介(ショーケース)。
講演スライドはこちら

紹介されていたサイトは以下。



---
小松健作氏。スライド
テキストマイニングにWebSocketは超使える。
ということで、foomooを使ったマッシュアップのデモ。
「クラウドの中にユーザーPCを使える」←この言葉、個人的には結構ヒビいた。

---
竹迫良範氏
時間がどんどん押していたためか、淡々とデモ。それが逆に面白かったり。
内容は、FileAPIを使った「zip-dekure」。
Webアプリだけど、クライアントだけでzipファイルにしてくれる。なんか、いい。
「『exe-dekure』という危険なアプリもあります」というオチが素晴らしかった。

---
上山智士氏
いつもはAdobeのイベント(MAX)とかに乗り込んではJavaScriptの話をしているそうで、
「今日はHTML5がテーマなので、Flashの話をします」で会場ドカン。

と言いつつ、HTML5のCanvasを使った高度(でオバカ)なデモが続々登場。
なんだこの人。すげくない?

3D等のグラフィック機能で言えばFlashの圧勝。
ただしFlashとHTMLの間に壁があるのが問題。これを取っ払うのがCanvas。

Canvasの位置づけとして、「HTML書きの人はもっと気軽にグラフィックを、Flash書きの人はもっと気軽にHTMLを」。

わんさか紹介された中で、唯一たどり着けたページ。
Neru


以上、意味があるのかないのか(たぶん、ない)レポートでした。


しかし、RIA/リッチクライアントは完全にHTML5とバッティングというか、標準仕様として追いつかれちゃって、こりゃ一蹴されるな…。
そんな中、バッティングしていることを言い表すのにちょうど良いニュース(2月22日付)。

Google「Gears」終了を公式に説明 - HTML5への移行を推進
http://journal.mycom.co.jp/news/2010/02/22/009/

どうなる。WEB業界。IT社会。

2010年2月22日月曜日

デブサミ2010レポート(その2)

残り2セッションの感想、まずはGoogle日本語のセッション感想を、ダラダラと。
(前半2セッションの感想はこちら

【19-B-5】Google 日本語入力を支える情報処理技術(グーグル)
2007年のデブサミアワードで総合3位を獲得した工藤拓氏の講演。
いや、非常に刺激的なセッションだった。

タイトルの通り、Google日本語開発に関する話。

前半は「内部設計」について、後半は「高い変換精度の実現方法」について。

■内部設計の話
まず、通常のIME(Input Method Editor)がどういった作りになっているのか、の解説。
こうなっているらしい(常識だったらゴメンナサイ)。




WordとかEditorとか、入力可能なテキストフィールドをもつアプリが起動すると、それにつられてIMEもロードされる。
で、変換用の辞書は共通のものを参照する。
つまり、アプリとIMEは同じプロセス空間にロードされるため、絶対にクラッシュしてはいけない。IMEがクラッシュすると、つられてアプリ側までクラッシュしてしまうから。
IMEは、絶対にクラッシュしてはいけない
絶対にクラッシュしてはいけない

と、刷り込まれました(笑)。

いやでも確かに、IMEがクラッシュしてアプリが死ぬ、なんてことになったらエライこっちゃだわ。

さらにIMEのもう一つの大きなポイントとして、セキュリティ対策。
『「InputMethod 脆弱性」で検索するとたくさん出てきますよ』という工藤氏の言葉通り、確かにググるとワラワラと出てくる。
なぜセキュリティ上の問題があるのか。
それはIMがセキュリティ上トップレベルのシーン(例えばOSへのログイン画面)でも機能しなくてはならないものであり、つまりIMEはOSの特権ユーザーのプロセスで動くものだということ。
従って、IMに「悪意あるプログラム」を仕込ませれば、容易に特権ユーザーのプロセスとしていろんな悪さが出来てしまう、ということ。
(工藤氏のわかりやすい解説を受けた上で、覚えている範囲で書いてますが、うろ覚えなので怪しい情報です。正確な情報についてはご自身で確認をお願いします)

つまり、IMEはセキュリティホールは絶対にNGなのです。
セキュリティホールは絶対にNGなのです。

という2つの難題にチャレンジすることになるわけですが、Googleでは元々「ハードは壊れるもの、としてソフトを設計する」といった思想があり、この思想を活かして今回も発想を転換させ、

  • クラッシュしてもOKな設計

  • セキュリティを破られてもOKな設計


というのを出発点に考えたそうです。なるほどなぁ…。

で、Google日本語はこんな設計になった。


IMEのDLLとしてロードされる部分を限りなく小さくして、変換候補等を表示するRendererと、実際に変換をする変換エンジンを別プロセスのアプリにしてしまい、それらをプロセス間通信で繋いだ。
アプリにセットでロードされるIMは何をするかというと、アプリから受け取ったキーイベントを、変換エンジンに流す「だけ」。
こうすることによって、クラッシュリスクを極限まで低くしつつ、ポータビリティが非常に高い設計となったわけです。

で、実際に変換エンジンがクラッシュしたらどうなるか、というデモを見せてくれました。
「4秒毎に変換エンジンのプロセスをKillする」という極悪バッチ(pingでタイマーが動いていて、そのバッチ自体の作りも興味深かった)を動かしながら、エディタソフトでいろいろと入力・変換をする、というデモ。
確かに裏で4秒おきに殺されているのに、ユーザーからの見た目はまったく違和感なく使えています。これは、PlayBack機能っていうヤツで、変換に失敗するとその直前のインプットからやり直す、というIM側の機能だそうで、そのおかげで表面上はまったく問題なく使えるそうな。
また、例えばアプリにつられてIMが落ちてしまった場合も、プロセスが異なるので辞書を壊してしまう心配がなくなったわけです。

さらに、この機能の副産物として、ユーザーが気付かない間にGoogle日本語を自動アップデートできるようになった。なんせ、気付かないうちに変換エンジン自体を再起動させちゃえるわけですから。


そしてセキュリティについては、変換エンジンが別プロセスになったことによってSandbox化され、懸念されるセキュリティリスクを無くしてしまったわけです。


ただただ、感心してしまう。


■変換精度の話
Google日本語は当然、ウェブ辞書を利用するわけですが、この辞書も「もしかして」等の技術を総動員して、Webから自動生成しているそうです。
ポイントとしては、辞書の生成に言語モデルを適用しているところなんですが、ボクが曖昧な記憶で書いてしまうよりは本家の文章の方が(詳しくは書いてないけど、ボクのウソ情報よりは)良いかと思います。

辞書はバイナリに埋め込まれているそうで、そうすることによって以下のメリットが。
・辞書が壊れない(そりゃそうだ)
・辞書&エンジンがアトミックに更新できる
・日々改善できる
・辞書領域のアロケーションをOSに任せられる

もちろん、バイナリ自体が大きくなってしまわないように圧縮にはこだわったとのこと、35MBまでコンパクトにしたそうです(実際、その他もろもろ合わせたバイナリは42MBほどしかない)。

そして、パフォーマンスの話へ。
リリースして以降、パフォーマンスに関してユーザーからのフィードバックは「速い」と「遅い」で二極化したそうです。
原因は単純で、エンジンがメモリに乗れば高速、ディスクに追いやられると100倍ぐらい遅くなる、ということ。

ここでWindowsのメモリ管理の話。
Windows XPのメモリ管理は、フォアグラウンドにあるものを優先的に物理メモリに乗せる、というもの。つまり変換エンジンなどのバックグラウンドで動くものはディスクに追いやられやすい、というわけ。
対してWindows Vistaのメモリ管理は、使用頻度で判断されるため、よく使われている限りは物理メモリに乗ることができるわけです。
だから、環境によって「速い」「遅い」の違いが出てしまうわけです。

で、XPを利用している場合に、物理メモリに変換エンジンを乗せるにはどうすればいいのか?ということを考えた結果生み出されたのが、「キャッシュサービス」というWindowsサービス。
これは、「変換エンジンを物理メモリに配置するだけ」というサービス。
この機能によってこれまで「遅い」と感じていた人も、サクサクとした動きを手に入れることが出来るようになるわけですな。
(これは近日リリースされるそうです)




うーん。なるほど。。。
と思わず唸らされる、というか、非常にイノベーティブな話で、しかも一切無駄のない計算されつくした進行で、大変刺激を受けました。
いろんなことに応用が利きそうな内容で、こんな話を無料で聞けて、感謝、感謝。
そして、この素敵なソフトが20%ルールから生まれた、というGoogle社の力にあらためて感服。

2010年2月19日金曜日

デブサミ2010 レポート(その1)

2008年、2009年と、コミュニティの人間として話す側にいたDevelopers Summit。今回は純粋に情報収集のために参加。

今回の参加の目的は以下。

今のクラウドがどれぐらいビジネスに使えるか、の情報収集
【19-E-4】クラウド開発に役立つ OSS あれこれ
【19-D-6】Programming Amazon Web Services/EC2,SQS,S3,SimpleDB

これからクラウドに影響しそうな技術についての情報収集
【19-B-5】Google 日本語入力を支える情報処理技術
【19-E-7】次世代Web標準 HTML5 最新動向


というわけで、以下、まずは【19-E-4】と【19-D-6】の感想をダラダラと書きます。(下2つは別エントリ)

【19-E-4】クラウド開発に役立つ OSS あれこれ(オージス総研)
まず前提。

SIとして、

  • 企業内システムを全部クラウド化するとしたら、どんな問題にぶち当たるか

  • そしてその問題の解決に使えるOSSはどれか?


という観点のセッション。

今後のこの業界(現場レベルでの)を考える上で、この着眼点と方向性は非常に良かったと思う。
また、講演資料(スライド)はどちらかと言うとライトニングトーク(LT)に近い作りだったが、それはそれで、複数セッションを一日かけて聞きまくっている聴講者にとってはエッセンスだけが伝わってきて良かった。

構成としては上記を前半後半に分かれて別スピーカーが講演。
前半は水野正隆氏。
「オンプレミスなシステムとクラウドを連携させる時の問題点」として
・プロトコルの違い
・繋げなければいけないシステムの多さ
を指摘。

その2つの問題点はつまり、システム開発する上で一番「泥臭い」部分はやはり何とか解決していかなければいけない、ということで、特に以下3点について言及。(ちなみにAmazonを利用して開発してみた際の実例らしい)

(1)共同開発しにくい。
システムの開発現場とクラウドサービスの契約関係とのギャップがある。
SI案件は複数の会社にまたがって開発されることが多いが、クラウドサービスの契約は「代表者とクラウドサービサーとの間」で交わされる。
そのため、システム開発に携わる会社(メンバー)にそのクラウドサービスを利用してもらうには、契約者のID/PWD情報を全会社(メンバー)に渡さないといけない、等の障壁が出てしまう。

(2)テストしにくい。
使ったら使った分の料金を払えば良い、というのがクラウドのメリットだが、気持ち的にはそれは「本番稼動後」に限って欲しい話。開発途中や、それこそ終盤は大量のテストを行うわけだが、何のルールも無しに(つまり「テスト環境がある」というこれまで通りの感覚で)実施してしまうと、後から請求金額がエライことになる。
また、テストの自動化についても、これまでのノウハウが利用できない、等のデメリットがある。

(3)デプロイ先が多くてたまんない。
異なるクラウドサービスの得手不得手を見極めながら連携させてシステム構築したは良いが、その分、デプロイ先が増えてしまう。クラウドサービスが異なればデプロイ方法も違うし、複数の仮想マシンへ手動でデプロイするなんて怖くて絶対に出来ない。


と問題提起があった上で、それを解決するための方法として使えるOSSは?を後半、奥垣内喬氏が講演。
ここから急にググっと技術寄りな話に。下記それぞれのツールが、上記の問題点を解決するのに役立つだろう、というもの。
以下、聞こえた順にズラっと記載。

rforce
Force.com上で使えるRubyライブラリ。ちょっとしたツールを作成するのに有用。

fabulatr
Amazon EC2を共同利用する際に便利。

Puppet
システム管理を自動化。

Wakame
Amazonのサービスにおいてインスタンスを増減できる。

Atomosphere
Comet関連APIを抽象化するライブラリ。GAE/Jでも動く。

muleESB
POJPサービスコンテナ。スループットを最適化させることができる。(有名な書籍「GOAL」の話に近い、と補足が入って何とか理解できました)。

Eucalyptus
Amazon EC2互換のインフラサービスを構築可能。


ちなみに、奥垣内氏がいろいろと調査した中で「これは」というものをピックアップしてくれたそうで、資料の中ではその他にもいろいろと名前が挙がってました。ボクは聞こえた内容を手元にメモるので精一杯だったので、その瞬間では上記ぐらいの理解しか出来ませんでしたが、そのうち講演資料がデブサミHPからDLできるようになるかと思うので、期待。
■追記:公開されました。


概して、ボクのように「クラウドの概要は知ってるけど開発案件で使ったことがない」というレベルにとっては、大変有益なセッションだった。

残念な点としては、(1)と(2)の間でギャップが大き過ぎた。
スピーカーが(1)と(2)で異なったので仕方ない面もあるとは思うが、少なくともその間を埋める繋ぎが欲しかった。
恐らく、スピーカーとしても「どのレベルの聞き手を想定して話をすれば良いのか」という思案の中で、調査・設計という上流に近い人から、実際に開発を技術面から陣頭指揮する人および開発者、という双方にとってメリットのある話を、ということだったんだろうけど、結果として話のレベルがまったく異なる2つのセッションを無理やり一つにしてしまった、という感じになってしまった。

前半と後半の繋ぎさえスムーズに行けば、100点満点のセッションだったと思う。



【19-D-6】Programming Amazon Web Services/EC2,SQS,S3,SimpleDB(Amazon)

Amazon.comの Jeff Barr氏が講演。
センテンス毎に日本語へ通訳、という2時間講演コースの方法のため、当然のことながら時間不足。

内容としては、タイトルに挙げられているそれぞれのサービスのアウトラインを紹介して、実際にPHPを使って利用するには、というサンプルコード解説。

なんだかんだで、Amazonのクラウドサービスについてよく知らないボクにとっては、情報収集という観点では役立った。「CloudFusion」というのも初めて知ったぐらいだし。
でも、タイトル(Programming Amazon Web Serveices)を見て参加した技術者の方にとったら不満の多い内容だったと思う。

合間で笑えるユーモアを交えながら進めるセンスはさすが、と思いながらも、45分しかないセッションで通訳しながらの講演は、ちょっとツライ。

そして、何より一番驚いたのは、Adobeの小島英揮氏がいつの間にかAmazonの人になっていたこと。Jeff氏の講演をサポートされてました。いつの間に…。


というわけで、レポート前半終了。

2010年2月7日日曜日

Excelはお絵かきツールです

最初に就職した会社でボクを育ててくれた先輩(であり上司であり友だち)は、ものすごいExcel使いでした。それは表計算ソフトとしての利用範囲に留まらず、プログラムのソースコードを書くときも活用していたし、ちょっとした図を作るときもExcelを活用していました。

そんな先輩の下でスクスクとわがままに育ったボクは、Excelを表計算ソフトではなく、お絵かきソフトとして理解してしまいました。
で、今の会社でもExcelをお絵かきソフトとして活用しまくっているわけですが、世間の人はどうやらExcelをお絵かきソフトとして使うことがどうにも理解できないらしく、今回、いかに簡単にお絵かき出来るか、ということをここで解説したいと思います(ちなみにExcelのバージョンは2003です。古くてすいません)。
(わかってるかと思いますが、冗談半分で書いてますので、あまり真剣に受け取らないように)


まずは、下準備としてExcelをキャンバス化します。
セル全体を選んで、列のヘッダ部分で右クリックしたら「列の幅」を選択。


列の幅を「2」ぐらいにします。


これでExcelが方眼紙のようになりました。


さらにキャンバスっぽく真っ白にするために、方眼紙の目の線を消しましょう。
「ツール>オプション」を選択。


「表示」タブを選び、左下にある「枠線」のチェックを外します。


これで真っ白なキャンバスが出来上がりました。


ここに絵を描いていきます。
まずは「オートシェイプ>基本図形」から、長方形のシェイプを配置します。


次に、角が丸い「角丸四角形」を選択し、先ほどの長方形の上に配置します。


黄色いツマミを操作して、角の丸み具合を調整します。少し丸みを抑えました。


次に、円を配置します。「楕円」を選択して、Shiftキーを押しながら配置するとキレイに正円を描けます。


さらに先ほどの円の中に正円を配置します。
もう、何を作ろうとしているかわかってきましたね?


色を付けていきます。
土台の長方形を選択します。


ツールバーのバケツのアイコンの右側矢印をクリックして、「塗りつぶし効果」を選択します。


「グラデーション」タブを選び、「色」は「2色」にして、「色1」を「薄い青」、「色2」を「アクア」にします。
「グラデーションの種類」は「縦」を選び、バリエーションは左下のものを選びます。


同じように、小さいほうの円と、上部の角丸四角形にもグラデーションを付けます。


ちなみに、円のグラデーションは斜めにかけてます。


すべてのオートシェイプを選んでグループ化して一つにまとめます。


次に、「フローチャート>論理積ゲート」を選んで配置します。


2つ配置したら、長方形の右下部分に適当に四角形を配置します。


コネクタで、ゲートと四角形を繋ぎます。


2つとも繋げます。


繋いだコネクタの下側カーブ部分をギュイーンと下に引っ張ります。


ゲートとコネクタの色を整えたら、グループ化した長方形を選んで右クリック、「順序>最前面へ移動」を選択します。


というわけで、あっという間に「iPod nano」(微妙に古い第2世代)の出来上がり。



まぁ、Excelで作る必要はまったく無いっちゃ無いんですが。


ちなみに、図形を正確に配置していきたい場合は、「図形の調整>位置合わせ>グリッド」を選んでおくと、図を配置するときにセルの枠に沿って置けるので便利です。


透明度とかを操れるようになると、リフレクションだって出来ます。


最近のオフィス系ソフトには標準でリフレクションの機能が付いてるそうですが…。