Globalization 12:22

2010/06/12 12:22

NHK の番組が文庫本になった『ワーキングプア 日本を蝕む病』『ワーキングプア 解決への道』を読んだ。前者では国内の問題が、後者では海外や日本での対策が取材されている。

2, 3の不幸が重なっただけで乗り越えられない格差の下へ落ちてしまうのは恐怖だし、アメリカやイギリス、日本の一部での対策をみると、政府や社会がなせる部分もあるのだろう。

ただ、問題の一部は

  • 発展途上国の人々は先進国のような暮らしをもとめ
  • 企業は安い労働力をもとめ
  • 消費者は低価格で高品質のものをもとめ

というながれのなかで不可避に進むもののようにも思う。どこかで悪人が搾取してるので、それをやっつけて解決、って種類のはなしではないだろう。

コンピュータ関連業の場合

「解決への道」のアメリカの事例では、開発部門がインドに移転されてクビになり、ファーストフード店で働く元プログラマーがでてくる。ホワイトカラーだって安全じゃないぜ、と。アメリカ IT 協会の理事は

  • 海外の労働力は、安いだけではなくて能力でも競争力をもっている
  • 企業は、国内のできない人々に研修をうけさせる余裕なんてない

という。

これは日本にもくるんだろうなあ。

むかしは、企画者というか発注者というか、仕事相手が英語できないから、日本語という特殊技能で生き残ることもできるのかと少し思っていた。でも、Twitter, iPhone, Android みたいな「日本なんてメッセージカタログの翻訳だけやってればいいよ」が、上から下まで日本人が日本人のために作ったものに対してちゃんと競争力を持っているのをみると、うーん。

May 11:59

2010/05/29 11:59

5月はプロバイダとの契約がないまま過ごした。iPhone から Web をみることはできるので「断線」はいいすぎだけど、MacBook とかちゃんとしたコンピュータからはインターネットにつなげない。

生活はだいぶ変わったと思う。読書と、部屋の片付けの時間は増えた。プログラミングには、正直いって不便なことも多いけど、環境設定のための設定のための設定、みたいな脱線と深追いは減った気がする。

大きめの調べものや git clone など、つなぐ必要があるときは公衆無線 LAN のある場所に出向いている。マクドナルドの無線 LAN は、契約はしたものの、店舗や席によって品質に差が大きい。家の近くのマクドナルドの不安定さは想定外だった。東新宿駅の近所のマクドナルドは良い。

マクドナルドをはなれると、新宿の BLUE SQUARE CAFE が

  • 無線が安定している
  • いい席があるか外から確認しやすい
  • ノートパソコン開いているひとが多くて浮かない

ので気に入っている。遠いので週末しか行けないけど、まあ、毎日必須ならふつうにプロバイダと契約すればいいわけで。

ただ、家からインターネットをあまり見ないようにしている、私の仕事はインターネット関係で、それはちょっと後ろめたい。自制心と集中力のなさを選択肢を減らすことでなんとかしようとしているだけで、インターネットが悪いとか嫌いとかではないんだけど。こうやってブログは書くわけだし。

HTML5 15:31

2010/05/16 15:31

HTML 文章とそこから構築される DOM 木のペアを考える。いくつかのブラウザで、ペアの集合を図にするとこんなかんじになると思う。それぞれのブラウザの共通部分のなかのごく小さい部分が、いままでの、仕様として明確に定義された HTML だった。

image:1:1273990582-html.png

世の中の多くの HTML 文章は、実際には仕様にそっていない。各ブラウザはがんばってそこから DOM 木を作っていて、その DOM 木が一致することもある。というか、一致しないとユーザーが困るのでなんとか一致させている。

HTML5 がいままでの HTML と大きくちがうのは、この、世の中の色々な HTML と周辺の問題とを、仕様として明確に定義しようとしているところだ。

image:2:1273990573-html5.png

例えば

  • エンコーディングをいかにして推測するか?
  • & ではない単体の & をどう扱うべきか
  • DOCTYPE が "-//O'Reilly and Associates//DTD HTML Extended Relaxed 1.0//" ではじまっていたらどうするか?
  • 要素の入れ子がおかしいときはどうするべきか?

なんてことがひたすら明文化されていて、規格の仕様書というより実装の仕様書といったほうが似つかわしいことになっている。きれいだとは思わないけど、すごいとは思う。泣ける。

Validator.nu の HTML5 パーサ

HTML5 の validation サービスとして有名な Validator.nu はパーサ部分を単体でつかえる。パーサは JAXP に準拠しているので、Java まわりのほかのもの、たとえば Scala の XML まわりとも組み合わせられる。

import nu.validator.htmlparser.sax.HtmlParser
import scala.xml.parsing.NoBindingFactoryAdapter
import scala.xml.TopScope

import org.xml.sax.InputSource
import java.io.StringReader

object Main {
  def main(argv: Array[String]) = {
    val adapter = new NoBindingFactoryAdapter

    val parser = new HtmlParser
    parser.setContentHandler(adapter)

    val reader = new StringReader("<p>1<b>2<i>3</b>4</i>5</p>")

    adapter.scopeStack.push(TopScope)
    parser.parse(new InputSource(reader))

    println(adapter.rootElem)
  }
}

このパーサは Firefox 4 でも使われるらしい。といっても Firefox は Java じゃなくて C++ で書かれている。

FirefoxにHTML 5パーサ、Java→C++自動変換で性能改善3%

ここからが興味深い。Henri Sivonen氏はValidator.nu (X)HTML5 Validatorを取り込むにあたって、JavaのソースコードをC++に自動変換する処理を追加。手動で実施することなく、自動的に変換したコードをGeckoに取り込ませることに成功したという。

実際にソースをみてみると JavaParser のパーサをつかって Java のソースコードをパースして C++ のコードを吐く、という部分があるのがわかる。ただ、これは変換元の Java 側の協力あってのもので、あらゆる Java のコードが C++ に変換できるわけではない。

    public final void endTokenization() throws SAXException {
        Portability.releaseElement(formPointer);
        formPointer = null;
        Portability.releaseElement(headPointer);
        headPointer = null;
        while (currentPtr > -1) {
            stack[currentPtr].release();
            currentPtr--;
        }
        Portability.releaseArray(stack);
        stack = null;
        while (listPtr > -1) {
            if (listOfActiveFormattingElements[listPtr] != null) {
                listOfActiveFormattingElements[listPtr].release();
            }
            listPtr--;
        }
        Portability.releaseArray(listOfActiveFormattingElements);        
        listOfActiveFormattingElements = null;
        // [NOCPP[                                                              
        idLocations.clear();
        // ]NOCPP]                                                              
        Portability.releaseArray(charBuffer);
        charBuffer = null;
        end();
    }

こんなふうに "portability" の名のもとに資源の開放を明示的におこなったり、それでも足りなくて NOCPP でかこったりしている。hacky ですね。

PragPub はおすすめ 23:13

2010/04/22 23:13

まわりに iPad を買った人がおおくて、技術系の PDF ってなんかないかなあ、というので PragPub をおすすめした。

PragPub は The Pragmatic Programmers が出している月刊誌で、去年の7月からもう10号まで続いている。はじまってすぐ iPhone で読んでみたときは、画面のせまさやらなんやらで途中で挫折したんだけど、最近バックナンバーふくめて全部を Kindle にいれて、気がむいたときにちょくちょく読んでいる。

Clojure 作者のインタビューSass, Node の紹介、ちょっと毛色がちがうところだと 人前でプレゼンしてみよう とか、多少の The Pragmatic Programmers っぽいバイアスはあるものの、プログラマなら楽しめる記事が多いと思う。

リンクをはったとおり HTML もあるんだけど、PDF, EPUB, mobi でも提供されている。最初に PDF と書いたけど iPad だと EPUB のほうが良いのかもしれない。

Unwired 00:33

2010/04/16 00:33

もっとちゃんとしようと思って、プロバイダとフレッツを4月いっぱいで解約した。プロバイダ (OCN) は Web から、フレッツは電話で解約できる。

去年に「平日はインターネットにつながない」のような、断線活動を何度か試した。効果はあったけど結局は hack で、根本的には物事に優先順位をつけてちゃんと行動するべきですよね、というのが感想だった。

でも、やっぱり hack にたよることにした。

インターネット自体をやめるわけではない。細々したものなら iPhone の Safari で、ソースコードをダウンロードしたりといったことには BB モバイルポイント (ひらたくいえば、マクドナルドで使える公衆無線 LAN) でなんとかなると思う。

blog.8-p.info加藤和良 の個人的なブログで、プログラミングのはなしが多めです。