詳細を見る「トンデモ本の世界」シリーズとともに続いている「と学会」報告集シリーズ。「トンデモ本の世界V」で紹介されていた「人類の黙示録」がトンデモ本大賞をとっていて、あいかわらず紹介内容が笑える。M2とか、反キリストOとか。著者は「ぼくの弟は怪人」「四丁目の怪人くん」の枡谷タケシだったのかぁ。ピース電器店」って感じの作風だったような覚えが。それぞれ第一線デビューする直前のエピソードを集めた外伝。MISSION」の世界を舞台に、太田垣康男が(原作を)描く戦場オムニバス。題名は、「負け犬」とか「犬死に」とかそんな感じだろうか。この巻は、O.C.U.がフリーダム市を捨てる頃のエピソード2本。「猟犬の群れ」は、撤退する友軍の盾となろうとする、ヴァンツァー狩りの歩兵隊の話。結末は、つまりそういうことで。「楽園の果実」は、逃げそびれたO.C.U.のオッサン兵士が、たまたま助けた少女とフリーダム市から逃げようとする話。次の巻に続くになってるけど、やっぱりハッピーエンドにはならなさそうな気がする。詳細を見る「完訳ファーブル昆虫記」の奥本大三郎氏が書いた紀行小説集。著者インタビューで、日本の仏文学界を皮肉った本だと語っていたのを見て、読んでみた。表題作は上記のとおりの路線というか、日本とかフランスとか文学とか食べ物とかについてボヤきながら旅するエッセイ。なかった、「奥山先生」が主人公の小説か。高田博厚とかを批判してるみたいだけど、まとまった論とかじゃなくて、よくも悪くもまさにオッサンのペダンチックなボヤき。一作の「蛙恐怖症」は、奥山先生の台湾の旅の話。ひそかに霧社事件を核としながらも、やはりゆるい感じで飲み食いの旅を語っている。Interface)というカンファレンスに参加してきた。Bakaus氏のセッションだったんだけど、遅刻して質疑応答ぐらいしか聴けなかった(泣)。ほかの人のセッションも面白かったのでいいや。Bakaus氏)以下、質疑応答の内容から再構成。プログラミング歴は10年ぐらいで、JavaScriptは5年ぐらい。その前は主にPHPとかでプログラムを書いていた。Ressigに誘われて。2は、いろいろ機能が充実していいとは思うけど、class指向とprototype指向が本当にうまく組合わさるかは、正直ちょっと疑問。好きなコードは、誰も理解できないような複雑なコード。ifで条件を何十個もandをとっているようなやつとか。TextEditorを使っている。複雑でややこしいのだけど、たとえば複数箇所を同時選択とかいろいろ強力でいいよ。script.aculo.usやExtなど、いくつかJavaScriptライブラリのプロジェクトがあって、いろいろ励みにはなる。自分としては、QueryのUIが最高に使いやすいと考えている。jQueryは、なによりどんどん試してみるのが近道だけど、ドキュメントもいろいろ揃っているので読むと勉強になるよ。(amachang氏)JavaScriptでカッコよくプレゼンするツールS6の紹介。実装のノウハウを一挙公開、という感じのセッションだった。Shibuya.JSが発足したとき、「各自、プレゼンツール自作ねー」と言われたけど、パワポでプレゼンして「自作じゃないじゃんw」とツッコまれたのが出発点との話。Spirit」のお題をきかっけにライブラリ化したとか。(inucara氏)自分的にはHatebLadderの人。札幌の人だそうで、今回が東京初進出だそうな。UIが使いにくいサイトが多く、使いにくいことさえ気づいていないことにいらだちがあり、考え直すきっかけになれば、と、「後付け」と言いながら熱く語っていた。完璧画像検索(画像のメタサーチ)で言っていた、「Web検索は検索結果から人間が探すコストが高いけど、画像検索は人間の脳内フィルタリングに期待できるので、とにかく一度に大量に見せるほうがいい、というのが面白かった。「錯覚や思い込みもUIに取り込む」という言葉もあわせて。(iandeth氏)リクルートのメディアラボの中の人のセッション。APIを公開している。Libraryを開発した、という話。市、など)も簡単とか。ページングも、空のdivにidを定義して関数を割り当てるだけ。poweredで、JQueryをレキシカルスコープに閉じ込めてあるので、prototype.jsとも併用可。prototype.jsからClass.createまわりを持ってきたり、JSANのData.Pageからページング計算ロジックを持ってきたり、JSANのText.Simpleからユニットテストのコードを持ってきたり。(gugod氏)jQueryでフォームを簡単に定義するためのプラグイン「jFormino」の紹介。動的なフォーム生成の話が仕事であって、そのコードを作った。読みにくい、拡張しにくい、パラメータたくさん。SyntaxとしてjForminoを作った。「type」で種類を指定して、あとは値を与えるだけでいい。Mapを表示したりできる。GreaseMonkeyでjQueryと遊ぶ(内山氏)リクルートメディアラボの新人さん。Loader」を作ったという話。なんと、発表自体は単なるHTMLで、それをGreaseMonkeyでプレゼン化しているのだとか。いわく、jQueryはjQueryオブジェクトにいろいろな機能が閉じ込められていてGreaseMonkeyでも使いやすいのだけど、それに加えてコードをキャッシュしたりjQueryのバージョンアップに対応したりといった機能を持っているとのこと。例として、ニコ動のコメントを解析して時系列のグラフを表示するデモでは、歓声があがっていた。(chris4403氏)jQueryで色情報を扱うプラグイン「js-color-utils.js」の紹介。getterで色を取得したときにIEとFirefoxで結果が違うので変換する関数とか、色表記かどうか判定したり色表記に近いものを色表記に変換したり(coffeeとか)の関数とか、色の平均値を求めるとか、色のソートとかができるそうな。DBを使ってTwitterクライアントを作る(monjudoh氏)Twitterの/homeを取得するクライアントを作ったのだけど、満足できないので作り直したという体験談。前のバージョンではぜんぶのデータをDOMツリーで持っていて重かった。そこで今度はjQuery.ajaxでHTMLを取り出してスクレイプしている。DB」でデータを保持しているというのが面白かった。DBを使うと、JavaScriptからinsertとかgetとかfindとかのDBMSっぽい操作ができるんだとか。DBから最新20エントリのデータを取得して、テンプレートにかけて、Bodyに挿入してるとか。Net氏)ここから飛び入り組。Perlでヘンな発想のモジュールを作ることで有名なIngy。「川崎さんに誘われたんだけど、JavaScriptのイベントって聞いてなかったんだよね。あ、俺、JavaScriptプログラマーでもあるんだ、ラッキー!」ってな話を枕にスタート。いや、そんなわけないから。YAPC::Asiaの2日目のサンプルを流用しているのだけど、今回は話をIngy作のJavaScriptテンプレートエンジン「Jemplate」にフォーカス。Jemplateは、「PerlでベストのテンプレートエンジンであるTemplate-Toolkit」(Ingy談)のJavaScript版。テンプレートとJSONデータを元に出力する。JSTやEJSもあったけど、それは本物のテンプレートフレームワークじゃない、Jemplateこそ本物のテンプレートフレームワーク、という話。いうことで、みんなJemplateを使ってね、という話で締めていた。本気でやるならinnerHTMLは避けてDOMを使うべき?(mala氏)ちかごろ流行りのonClickネタを元に、あいかわらずの濃い話で面白かった。ページ内の単語をハイライト表示するGreaseMonkeyの場合、タグ自身がマッチしてハイライト処理されてしまうと困るので、DOMでテキストノードを処理するのがいい。LDRでハイライト表示するGreaseMonkeyだと、DOMになる前のHTMLを扱うのでそれは使えないので、正規表現でテキストノードを取り出す。innerHTMLの処理を高速化するために、1,000要素をループで1,000回置換するところを、ヌルでjoinして1回置換してヌルでsplitとかいう手を使ったり、ダミーのtoStringを定義したりとか、いろいろやった結果、DOMツリーを操作するより2倍速くなった。innerHTMLを使うとaddEventListenerで付加したイベントが消えるので、onClickを使うという結論(え?)。Tokyo」会場の写真のスライドをビデオにして上映。YAPCではPCのトラブルで上映できなかったんだとか。セッションとか人とかできごととか、ツボを押さえたセンスのいい編集で、ちょっとホロっときた。Tokyo」が、2008.5.16~17に開かれました。2006や2007もすごく面白かったので、今回も参加してきました。今回は仕事の合間にこっそりなので、限られたセッションしか参加できませんでした。それでもえらく楽しかったなぁ。あと、1日目は会場に行けなかったけど、ustreamでちょろちょろ聴いていました。いうわけで、参加したセッションのメモ。5でOOPを普通のOOPっぽく書けるようにする仕組み「Moose」のセッション。Mooseは「まるごとPerl!」で名前を知りました。bashでOOPっぽい書き方をしてみたりする人間としてはwktkなのですが、Moose自体は「おもちゃではなく、実用品」ということで。Mooseのいいところは、自分でOOPの仕組みを書くような「退屈なこと」を減らせること。アクセッサとかコンストラクタとかValidationとかを自分で書かなくてもいい。していつもの記述を減らして短く書ければ、typoを減らせるしテストする要素も少ない、読みやすくて、プログラミングの本質に集中できる。今年のbuzzwordだね(笑)と。XML+FlashなWebアプリで、XMLスキーマ→クラスをうまく実装して楽勝だった(意訳)とか。弱点としては、ロード時間が増える(でもMooseX::Compieもあるよ)とか、いくつかの機能が遅い(でも使った分だけだよ)とか、hashrefじゃないクラスの拡張はトリッキーだよ(でもMooseX:GlobRef::Objectもあるよ)とか。詳細としては、has_aとか、before/after/aroundとか。Javaのinterfaceに近いRoleというのがあって、実装も書けるからRubyのmixinっぽいよね、でもaliasもできて安心だね、とか。sugarだから、メタクラスを触れるしそいういうモジュールも用意されていて便利だよ、と。Injectionはなぜなくならないのか」という話。Escapeは大事だけど、それだけではだめなケースとして、文字コードの解釈を突いたXSSを実演。URLの正規表現や文字コード、整数値の範囲、必須パラメータなどを、httpd.confなどに設定できる。Contract」で、今年はValidationがアツい、と。mod_waffulは実用に耐えるようパフォーマンスチューニング中で、近日公開予定とのこと。Ito)はてなオリジナルのO/Rマッパー「DBIx::MoCo」の紹介。ある程度の規模のサーバーを動かすうえで、泥臭いところに手を入れられるように自作したとのこと。基本的には生SQL+プレースホルダで書くほうが便利、という感じで、それに加えてRubyのActiveRecordあたりの影響を受けている。名前つきプレースホルダとか、メソッドチェーンで操作できる配列List::RubyLikeとか、fixtureで回帰テストとか。has_manyとかで関連づけしたときにクエリーを多発させないためのプリフェッチとか、現場でよくあるパターンにも対応している。あとからでもmemcachedを簡単にかませたりできる透過キャッシュを紹介。はてなスターとかで実験してかなり有効だったとのこと。SQLの更新系のメソッドでは、検知してキャッシュ操作するとか。BKとしては、start_sessionとend_sessionで囲むと、不要になったキャッシュを整理してくれるという話も。CPANに上がっているので(jkondo氏作)、cpanシェルからインストールできる。テストが通りにくいものもあるのでforceが必要かも。ドキュメントが少なかったり古かったりするのが欠点かも、少しバグもあるみたいなのでパッチ募集中(jcondo氏宛)、とのことだった。Net)みんな大好きIngyのセッション。I.D.と呼んでくれ」とのこと。「「JavaScriptのライブラリであるjQuery」を使ってメソッドチェーン風に定義したイベント」を定義して「「CPANからJavaScriptをダウンロードするJS.pm」を使ってPerlから入手した「Javascript版Template-ToolkitであるJemplate」」を使って「YAMLで書かれたデータからPerlで生成したJSONデータ」を読み込んでページを切り替える「「PerlのテンプレートエンジンであるTemplate-Toolkit」で出力したHTML」を、makeを使って生成するだったような。Japan提供のカップラーメンが配られました。天気がよかったので、みんな外で食べて、とてものどかな光景。お湯の調達は大変だったみたいで、スタッフの方々がポットを持って食堂と往復していて、まるで少林寺の修行のようでした。おいしかったので調子に乗って2杯食べたら、さすがに喉が渇きました。先日は酔った勢いで「FizzBuzzとGaucheで学ぶ遅延評価の基礎の基礎」ってエントリを書いてみました。Style)に挑戦してみます。言語は今回もSceme(Gauche)です。継続渡しスタイルの知識は、「プログラミングGauche」と「まるごとJavaScript&Ajax!」の受け売り(劣化コピー)ですので、勘違いがあったらご指摘ください。遅延評価編では、無限ループを避けるために遅延評価を使いました。無限ループを避けるための方法としては、ほかに、継続渡しによる呼び出しトランポリンを使った方法があるみたいです。おおざっぱにいうと、遅延評価は関数型プログラミングで、継続渡しは手続き型プログラミングなんだそうです。手続き型っぽく書いてみるまず、継続は置いておいて、手続き型っぽくループ(単純な末尾再帰)で無限FizzBuzzを書いてみます。1)12Fizz4BuzzFizz78FizzBuzz(略)もちろん無限ループですので、Ctrl+Cで止めてください。リストを返すようにしてみるでは次に、出力するのではなくリストを返すようにしてみます。1)」のように左に伸びていくものとします。上のコードを元に、単純に書くと、こんな感じになります。))もちろん、無限ループですので、実行しても何も返りません。'())再帰呼び出しを分離してみるここまでの例では、ループ相当の末尾再帰を使っていました。次に、その部分をtsugiという手続き(関数)に分離してみます。)さらに、このtsugi手続きを引数で渡すようにしてみます。)実行結果は、もちろんあいかわらず、無限ループのままです。tsugi)結果はさておき、このバージョンのfizzbuzz-list-fromでは、処理の最後を、引数で渡された「c」という手続き(実体は「tsugi」)に預けていることが重要です。このcを継続と呼ぶみたいです。関数の次の預け先を引数で渡すやりかたを継続渡しスタイル(CPS)と呼ぶみたいです。中断してみる分離したことによって、別の手続きを渡せるようになりました。「tsugi」のかわりに、「tsuganai」手続きを渡してみます。tsuganai)()なにやら無限ループにならずに終了しちゃいました。nobiを何度か呼び出します。1)めでたしめでたし。修正2008-05-27:tsugi手続きのCPS版とtsuganai手続きが、いまいちCPSっぽくなかったので、以下のように変更。やってることは同じではあるけど。酔ってた(←酒のせいにする)。Rails講座ってのを開く手伝いをしました。講座自体はさておき、懇親会のときに講師の人が、「Lispを勉強して、遅延評価で無限リストとかやってみたい」というようなこと(それだけじゃないけど)を言っていました。そこで、基本というか、教科書まんまな説明をしてみます。ほとんど、特定1人対象の内容です以下の例はScheme(Gauche)によります。リストのn番めの要素を取り出す手続きまず、回り道ですが、リストのn番めの要素を取り出す手続きnthを定義してみます。FizzBuzz問題が1オリジンなので、ここではnthを1オリジンで定義してみます。Schemeの説明を省略すると、超単純なコードは以下のような感じかなと思います。3)cうまくいっていますね。forceを使えさて、ここにforceという呪文をかませたnth2を定義してみます。))再び試してみます。3)cまったく同じ結果ですね。無限にFizzBuzzなリストさて本番。nから順に無限にFizzBuzzなリストを作る手続きfizzbuzz-fromを考えてみます。単純に考えると、以下のようになるかと思います。無限ループになって、帰ってきません。1)遅延してみる帰ってこないのでは使いものになりませんね。そこで、再帰呼び出しの部分に「delay」という呪文をかませてみます。0x8160c60>)変な値が結果として表示されましたが、とりあえず無限ループにならずに帰ってきました。そこで、返された結果を、変数fizzbuzz-listの値として定義しておきます。1))これで、無限にFizzBuzzなリストfizzbuzz-listができました。遅延、カムバ~ックでは、さきほどのnth2を使って、n番目の値を取り出してみます。30000)"FizzBuzz"めでたしめでたし。異邦警察」1~8巻どうせあっちは助からねえ親友に裏切られてオレの人生なんだったんだって恨みながら死んでいくんだろうなあ...アーメン--4巻p.140「ダーティイエローボーイズ」編(3~4巻)がやっぱりいい。国に捨てられた明日なき中国系のガキ二人が、アジア系留学生くずれの犯罪者集団「ダーティボーイズ」の頂上を狙い、東京から関西に向かって殺人や強盗を重ねる。凶行の旅の結末は...というわけで、馳星周とかの新宿ノワール+松田優作主演の「探偵物語」に、「MASTERキートン」ふうの味付けをした感じの連作マンガ。「裏警察」を舞台にしたハード系ドタバタギャグ(+一握のペーソス)アクションで、どのエピソードも面白い。リチャード・ウー(長崎尚志)の原作と、すぎむらしんいちの猥雑な絵とキャラが、うまくマッチしてる。詳細はWikipediaの解説が詳しかったので、そちらで。詳細を見る帰る家があって、けっこう幸福な家庭を築いている。仕事も順調で、忙しかったりするけれど、帰れないというほどじゃない。そんな、「家があるのに帰らない男たち」を取材したドキュメント。書くのは、「帰る家がない」生活を著者「ホームレス作家」にまとめて脱ホームレスを果たした松井計氏。それぞれ状況や事情の異なる人たちにインタビューして、1章ずつ紹介している。新書だと、これらの人物や世の中を分析してみせたり、説教してみせたりする本がありがちなのだけど、本書はそういう本ではない。「援交」などの「わかりやすい」(=類型的な)事例は没にして、それぞれの人生をそれぞれのものとして描いている。各章とも、最後はそれぞれ登場人物への応援になっているし。ノンフィクションの王道で、面白く読んだ。アニキによる「セカイ系ヒーローアクション」(?)マンガ第2弾。「炎人」と書いて「エンド」と読む。えーと、この巻では薄幸系美少女の入間ちゃんが、眼鏡+ニット+ミニスカ姿で登場ですよ。どんだけおやじキラーなのかと(笑)。第86回カーネル読書会に参加できなかったので、あとからustreamのログで音声だけ聴きました。全体的に入門者向けの話で、あまり突っ込んだ話はなかったけど、いくつか参考になりました。以下、ログを聴いただけの範囲でメモ。9というのを出す予定になっている。Alpha版のころからちょろちょろ試していて、先月Prevew版というのが出たのでインストールしてみた。...あのー、日本語GUI環境をインストールしたのに、「半角/全角」とか「Alt」+「半角/全角」とか押しても日本語入力できないんですけど。anthy$追記2008-5-4:インストールDVDを調べてみた。Supportグループ中のscim-lang-japaneseメタパッケージの定義を見てみる。requires="scim-lang-japanese">xorg-x11-server-Xorg</packagereq>...それ依存関係が逆ですから。マジかんべんしてください。追記2008-5-14:bugzillaにレポートして「rawhideでは直ってるよ」と言われたので安心してたのだけど、リリース版ではそのままだった...で2chを見たら、自分の今の心境を的確に予測してる人がいたよ。そのころは、こんなことになってるとは知らなかったのだけど。scim-lang-japanese」でいいと思います。Byb0nerAppendixemasakaフリーター。