「つくって学ぶプログラミング言語 RubyによるScheme処理系の実装」最速レビュー

つくって学ぶプログラミング言語 RubyによるScheme処理系の実装
渡辺昌寛
達人出版会
発行日: 2013-04-15
対応フォーマット: PDF

私は修論のために並列Schemeを作ったことがある。名前はSucheme。ユーザ名のsuchiにかけたんですね(うへえ)。テーマ曲はHISの「あなたがスキー」とほぼ同じ「あなたがSucheme」だった(この曲の冬美さんはいいですよ、オススメ)。

R4RS準拠でAppendixのマクロまで1ヶ月くらいかけて実装してとても楽しかった。最終的にC言語とschemeのコードで1万行くらいの規模になったと思う。字句解析のコードは、状態遷移を当時「C MAGAZINE」のP.J.Plaugerさんの連載に載っていた「gotoを使ってエレガントにする方法だってある」というような主旨のswitch-caseとgotoで書く変な書き方で書いてみた。その後20年近くコードを書いているが、たぶんあれが私が最後に使ったgoto文だと思う。

しかしつづりがわからなかったので、P.J.プローガーで検索したら、ピーチ・ジョンがトップに出てきてシビれる。

で、時は流れ21世紀。githubアカウントを作ったときに、なにもパブリックリポジトリがないのもなんだし、と思ってruby版suchemeでも作るかと思い、sucheme on ruby だから suchemer という名前でパブリックリポジトリを作った。そして、とりあえずconsセルクラスだけ作ったのだがもう3年近く放置したままだ。そんな風にのんびりしていたら達人出版会から scheme in ruby が出てた。

読んでから書くか、書いてから読むか。悩むところだと3秒くらい考えて、結局買ってみました。しかし、そうか、on ruby じゃなくてin rubyなのか。

ざっと説明とコードだけ流し読みしてみた(夕食時に荒く読んだので間違ってたら訂正します)。ここで作るSchemeサブセットのμSchemeRは、データ構造はcons cellによるリストではなくて、配列で実装している。なので例えば carはa[0], cdrはa[1..-1]になる。束縛も同様。次はシンボルテーブルはベタにhashで書いて、たった2章で簡単なプログラムらしきものは作成できるようになる。

S式を読み込めるパーザはその後で作る流れになっている。しかもそのパーザはS式の文字列を、文字列変換でrubyの配列式にして、evalさせている。おお、たしかに最初はそれで十分。面白い!

そしてその後ようやくREPLを作っている。普通(ってなんですか)の逆で、これも面白いアプローチ! まずREPLのRのために字句解析書かないとなー、めんどうだなー、ということで3年放置するよりもよっぽどいい(構文解析はS式なんでかなり簡単)。

おそらくrubyの基本的な文法を知っていたら十分理解できる内容。プログラミング言語処理系を作ったことがあるというと、知らない人は驚くのだけど、lisp系言語は非常に簡単に作れるというのが理解できる。

気になるのはやはりリストを配列で表現していること。私がlispで面白かったのは、データ構造が(リストじゃなくて)実はconsセルのみだ、ということだ(註: モダンなlispにはvectorというデータ型もあります)。でも、この本はおそらく短さ(PDFで30ページ弱)も重要なポイントなので、どれを省くかと考えた場合十分ありえる選択だと思う。いっそのこと、これも後付けでデータ構造をconsセルで書き直させればいい勉強になりそうだ。

逆に、この本が面白いのは、最後の章で、このμSchemeR処理系をμSchemeR上で作ることを勧めていることだ。これ、SICPほど無双ではなくて、大学のちょっとした処理系講義によさそうな構成ですね。ここから先の5回はcall/ccやバッククォートとか好きに拡張させれば、ずいぶん楽しく勉強になる講義になりそう。CC-BYということで学生さんも気軽に読めます。

ということで、ほんとSchemeサブセットくらいでも書き方やアプローチがいろいろあるんだなあと大変面白く読みました。


この記事は「最速レビュー。村上春樹『色彩を持たない多崎つくると、彼の巡礼の年』に驚いた」にインスパイアされて作成されました。

インスパイア……

色彩を持たない多崎つくると、彼の巡礼の年
村上 春樹
文藝春秋 (2013-04-12)
売り上げランキング: 1
日本の人
日本の人

posted with amazlet at 13.04.16
HIS 細野晴臣 忌野清志郎 坂本冬美
EMIミュージック・ジャパン (2006-01-25)
売り上げランキング: 6,938

PalmOS/PocketPC版ANA時刻表がついに終了

CLIE iPAQ iPhone ANA
CLIE iPAQ iPhone ANA

CLIE、iPAQ、iPhone、ANA、その他の短編

長くお世話になっていたPalmOSマシンSONY CLIE PEG-N600Cと、gdgdすぎて1年も使えなかったMicrosoft PocketPCマシンHP iPAQ(iPadじゃないですよ)と、我が家にあったANAのロゴのアレを並べてみた。

ANA PDA時刻表終了のお知らせ

この時刻表がすごい で取り上げたPalmOS 3.5以降、Microsoft PocketPC 2002(Windows CE 3.0)以降という渋い端末をサポートしていたANA PDA時刻表サービスがついに3/31で終了らしい。笑ってさよならを言ってあげたい。岳ばりに「よくがんばった」と。

私は苦労してPalmのデータをOutlook/iPAQ(iPadじゃないですよ)に移行し、さらにずいぶん苦労してMicrosoft Outlook上のデータをiPhoneとGoogle関連に持ってくることができたので、こうやって笑い話にできるけども、サポートが次々と打ち切られていくというのは、なかなか寂しく怖い話だ。

実際どのくらい利用者がいたのか本気で知りたい。PalmはともかくWindows CE系のマシンは少しは残っていたんじゃないだろうか。W-ZERO3がずいぶん流行っていたことがあったけど、W-ZERO3といえばmhattaさんだが、調べてみたら2010年12月までは使っていた記録があった。

ということで、PalmOSマシンもPocketPCマシンもすでに使わなくなっていたのに、先エントリの約束通り、このページの行く末を見守っていた自分も誉めてあげたい。

あと、ANAの↑の袋は、子供が乳幼児のときに重宝したので飛行機に乗るたびに持ち帰っていたものだ。用途が特化されているだけあって(Auto対策ですね)コンビニ袋などよりも丈夫で使い勝手がよく車に常備してある。小さいお子さんがいるおうちにはオススメ(一応CAさんに一声かけてた)

トミカ 787エアポートセット (ANA)
タカラトミー (2012-12-28)
売り上げランキング: 1,235

俺のFUD広告フォルダが火を噴くぜ

fud Ad

こりゃ、ほたえなサントリーウエルネスの広告の不愉快さが紹介されていて面白かった。やっぱりみんな気になっていたんだ。

1) 味の素とかサントリーのような一流企業が、2) 肥満や疲労回復のサプリを 3) 情報商材のような下品なCMで 4) 大手新聞WebサイトにFUD的な広告を出して、というパターンをここ数年で見るようになったんですが、なぜだろう。
@suchi
suchi

私がこう書いたのは2年前で、そのときすでに「ここ数年」と書いているので、個人的にFUD広告と呼んでいるこのスタイルはけっこう長く続いていることになる。特にサントリーの画像にかぶせたセリフ風のコピーが、心が痛むものだったり、故意にきわどさを連想させるものになったことに加え、タイトルの下のより目立つところに表示されるようになって不愉快さが閾値を超えた感がある。タイトル下の大きな場所のクリック率が高いというのはここ1-2年で常識になったみたいだ(このへん参照→ 大手ブログが採用する鉄板の広告位置)。しかし広告収入がキモだとはいえ、雑誌でいうとページのど真ん中に広告を出すのはかなり最初は抵抗があったんじゃないだろうか。でも今では大手新聞サイトでも、ふつうにこの鉄板位置に広告が入ってる(そういう私もここでは2番目にクリック率が高いらしいサイドバー最上部に広告を入れてみたが、効果が計れるほどクリックされないのでよくわからない)

必ず結果が出るブログ運営テクニック100 プロ・ブロガーが教える“俺メディア”の極意
コグレマサト するぷ
インプレスジャパン
売り上げランキング: 4,747

このサントリーの広告はターゲッティング広告だから、私が4-50代の対象年齢ど真ん中だからうんざりするほど見せられているけども、実は20代の方なんかは見たことがなかったりするかもしれない。若い方どうですか。

そんな感じでちょっと目に余るようになったので、逆に社会学的な興味に転化して、実は1年前くらいから広告のキャプチャを取るようになっていた。キャプチャ画像をベタベタと並べるとこんな感じ(クリックすると拡大します)。これだけ並べると、イラっとくるというより、広告主が客をどういう風に思っているかがよくわかる。

fud Ad

FUD広告

コレクションとしてコンプリートしようとすると負荷が高そうなので、とくに広告を探そうとせず、普段のブラウズをしていて、新しいパターンに気づいて余裕があるときだけDropboxの特定フォルダに保存する、ということを繰り返してきた。だから網羅率はおそらくそんなに高くない。nishioさんのところで紹介されているもので、ここに無いものも沢山ある。

ユニーク判定は記憶に頼っていたので、今見たら画像+コピーがまったく同じ重複が1つあった。神経衰弱みたい。

サントリーが一番目立つけども、私が見つけただけでも、ライオン、味の素、サントリー、ダイドー、小林製薬、ニッスイが広告を出している。サントリーが目立つのはおそらくセリフ風コピーが下品(下世話)だからかな。

リンク先も見たけども、面白いのは、なぜかどの会社もパターンが似ていることだ。

  • 誰もが知ってる大手企業
  • 健康食品専門の別会社
  • 肥満/疲労回復のサプリ
  • 素材集から拾ってきた汎用的なかわいい女の子、もしくはリアルな中年の画像を使う
  • 大手新聞社の好位置にFUD文言とともに広告
  • 故意に誤読を誘うようなきわどい文言
  • リンク先は、情報商材タイプか、さわやか健康食品タイプのどちらか
  • 広告のビジュアルはリンク先には全く出てこない
  • とにかく出稿量が多い

なぜ同じパターンなのだろうか。しかも、なぜ(おそらく故意に)下品なんだろうか。錠剤やカプセルを自由に販売できるようになったことや、トクホトクホと騒がれたこととが、これらの広告が増えた時期と関係あるのかな。

何にしろ、私は不愉快なんだけども、こういうスタイルが2年以上続けられているというのはそれなりの広告効果があるからだろう。広告をクリックして決して安くないリンク先のサプリ買っちゃう方が一定数はいるんだな。

広告を定点(?)観測していると、iPodのランダム再生時の神mixのように、広告と地の記事が関連付いているように見えることがある。間の悪い広告が出たりとか。

たとえばこの山菜取りで亡くなった男性のニュースの横で、男を上げる石けんの広告とか、

山菜採りで遭難

51歳で殺された方のニュースの横で、52歳の衰えの広告。

お昼のニュース

次はちょっとデリカシーの無さに腹が立った例。44歳の若さで自殺した方のニュースの横に「40代、活力がわかない サントリー」ってひどいなこれは。広告表示先の文脈まで見るのは困難、とか代理店は言い訳するだろうけども、単純に訃報のページ、事件のページには広告を出さない、とあらかじめ決めておくとかいろいろ方法はあると思う。

ニュースと広告

他にも、選挙に大負けして疲弊がうかがえる菅元首相の写真の下に、orzみたいになってる52歳男性の広告が出ていたのも可笑しかった。

管元首相とFUD広告

管元首相とFUD広告

ちょっとこれはFUD広告とは離れるけど、オウム菊地直子容疑者逮捕後、同居男性との生活の様子がわかってきたころの滝本弁護士のページで、上にでっかく婚活の広告が出てたときも、うへえと思った。いや、これはグッドタイミングなのかな。指名手配犯でも配偶者がいるのか、みたいな。

滝本弁護士と菊地容疑者

滝本弁護士と菊地容疑者

つらい感じになってきた。

もう少し明るい話題にしたい。

上に挙げたけども、FUD広告に載っている人物写真は、画像検索すればすぐ見つかるような素材集から取ってきたものが多い。同じ画像がまったく別の広告文脈で使われているのを見つけるのも面白く、以前はFacebookに関連づけを載せてたりした(最近は飽きてやっていない)

たとえば、味の素のこの広告が面白かった。

味の素のセキュリティ

ちょっと陰のあるワケアリな女性社員イメージにしたつもりだろうけども、画像検索すると、元の画像は素材集の「社外秘を盗む女性」だった。きっとこの女性社員はブラック・ウィドウじゃないかと思う。あと、この女性はこちらの画像の方がキレイだと思います。

他にも、AKB48メンバのニュースにサントリーの広告が入って画像が並んでいたのだけど、サントリーのFUD広告の子の方がアイドルっぽくてかわいいのが可笑しかった。セリフも合ってる。この子はちょっと検索したくらいではなんて名前なのか、どの素材集なのかわからなかったのだけど、AKB48にスカウトした方がいいんじゃないだろうか。

どちらがアイドル

どちらがアイドル

ちなみに我が家では、子ども用の二段ベッドを購入したのですが、納入された日、寝転んでみようとしたら「パパ臭がつくからダメ-」と子供たちに涙目で言われましたよ。そう、我が家では私の加齢臭を妻がマイルドな表現にして「チョコクリームシュー」みたいに「パパ臭」と呼んでいる。だからここにあるような広告にはかなり揺さぶられる、ほんと。買ってみようかな(買わないけど)。


グリシンの効き目がヤバいと思ってたら3月から成分が変わってしまった(2014/12 追記あり)

グリシン、デパス、ハルシオン、その他の短編
グリシン、デパス、ハルシオン、その他の短編

グリシン、デパス、ハルシオン、その他の短編

きっかけはたしかkdmsnrさんの「睡眠を充実させるライフハック」で、「グリシン」を買ってみたら効き目に驚いた。

不眠症というのは名前が知られているわりには実際にその症状の人というのはなかなかいない。もちろん、よく眠れないんだ、という人はいるし、私もそんなときがある。でもほとんどの人は、眠れないのではなく寝付きが悪いだけの場合が多い。

眠れない、寝付きが悪いことを医者に告げると(内科でもよい)、ハルシオンだとか、抗不安作用のあるデパスが処方される。ハルシオンは飲んですぐに寝ないとトリップ状態になってひどいとか、翌日午前中の記憶が途切れるのが怖い。あと依存性が強いのでやめるのがちょっと力がいる。デパスはその点問題はないが、私の場合は昼に眠気が大きく残ることが多かった。

で、「グリシン」はどうかというとこれがびっくりですよ。ただの添加物なので食品(サプリメント)扱いで医師の処方箋もいらないもので、どのくらい効きますかねフフフーンと上から目線で試してみたら、私の場合あきらかに効果があった(個人の感想です)。しかも、グリシンは寝付きよりも、目覚めが劇的に改善するので一日がすっきりする。睡眠の深さの周期との関連だと思うのだけど睡眠時間の多寡とは関係なく、目覚めがすっきり具合が違うことがよくある。そういうときのすっきりした目覚めになるのだ。

どのくらいすっきりした目覚めかというと、寝て3-4時間で意図せず子どもに起こされたりしたとき(かゆいー、とか)、これまでは眠くて眠くて倒れそうになりながら対応していたりするんだけど、「グリシン」を飲んだ日は、突然起こされても目覚めがすっきりしすぎて、このまま起きてしまおうと思えるくらい。枕元のNexus7などでインターネットを見始めたりしてね。しかし実際の睡眠時間は短いから、昼間辛くなってしまって大変危険だ。なので、「グリシン」を飲み始めてからは、夜中に突然起きて、もしすっきりしていても、仕事や読書を始めず寝るべしと自分に強いる必要があった。また、これ自体に依存性はまったくないのだけども、爽快すぎてメンタル面でやめられないところがある。

おなじグリシンを使っているものは味の素から「グリナ」というのが出てるけども、こちらは30包=1ヶ月分6930円もする。同じグリシンの量で832円の「ファイングリシン」を飲んでいた。

ファイン グリシン30包
ファイン グリシン30包

posted with amazlet at 13.03.17
ファイン
売り上げランキング: 28

ところが、amazon定期便に登録して3ヶ月で、amazonから「グリシン」販売中止のお知らせが来た。

Amazon.co.jpをご利用いただき、ありがとうございます。 誠に申し訳ありませんが、Amazon定期おトク便によりお申込みいただいたご注文(商品名:『ファイン グリシン30包』)について、ご注文商品が発売元で発売中止となりました。 お申込みいただいた商品『ファイン グリシン30包』をご用意できず、お客様にご迷惑をおかけしたことをお詫びいたします。 お届けを継続するため、Amazon定期おトク便でお申し込みいただいた商品『ファイン グリシン30包』を、『ファイン グリシン・プレミアム 30包』に変更させていただきました。 この商品は、ブランド、メーカー、価格などから、代替商品と当サイトが判断した商品です。 この商品でのAmazon定期おトク便のお届けがご不要の場合は、お手数ですが、以下のURLからAmazon定期おトク便のキャンセルしてください。

あまり考えず、単純に名前に「プレミアム」がついただけで、なんじゃそりゃー、と思いつつ継続した。

ファイン グリシン・プレミアム 30包
ファイン (2013-03-01)
売り上げランキング: 104

先日、そのあたらしい「ファイングリシン・プレミアム」が届いた。そこで成分表を見たら驚いた。

グリシンの量が減っている。

「グリシン」から「グリシンプレミアム」になって、同じ1包(3.1g)のグリシンの量が1/6になっていたのだ。

  グリシン グリシンプレミアム
グリシン 3000mg 450mg
GABA 10mg 400mg
L-トリプトファン 50mg 50mg
L-テアニン 0mg 50mg

同じグリシン3gで安いのがポイントだったのに、アミノ酸系サプリメントでよくあるけど効果不明なGABAと、鎮静系のL-テアニンを追加しているのだった。グリシンだけで十分なのに。

まだ新しいプレミアムは試していないけども、これはどうなんだろう。どうして売れてるはずなのに、以前の商品を中止して成分変更してしまったのだろうか。(ファイン社のページ)。プレミアムと名前が変えてるけど、実はグリシン減らすのが目的だったりして。

などと悩んで他の製品を探してたら、グリシンそのものをamazon(market place)で見つけてしまった。そうか食品添加物って普通に売ってるんですね。しかもなんと1kg1930円(送料込み)。

グリシン1kg
グリシン1kg

posted with amazlet at 13.03.17
有機合成薬品工業
売り上げランキング: 32,768

グリシンの量で計算すると、「ファイン グリシン」で10円/g、「ファイン グリシンプレミアム」で72円/g になってしまったが、この「グリシン1kg」では2円/gの計算になる。格安じゃないか。

(ちなみに「味の素グリナ」の場合では103円/g。FUD広告出すだけあってウシジマくんなみにボッてる)

添加物を直接取るというのは傍目にはかなりヤバそうだけど、どうなんだろう。3gの小さじを用意して毎日飲むのだろうか。1kgあれば333日、2000円弱でだいたい1年もつ。試してみようか非常に悩んでいる。ていうかそういうこと考えているこの精神的な依存度はどうなんだろう。


追記: 結局こちらのグリシン1kg(↓)を購入しました。しばらく使ってみてまた感想を書きます

グリシン1kg
グリシン1kg

posted with amazlet at 13.07.30
リッチパウダー
売り上げランキング: 153

2014/12/23追記: kdmsnrさんよりファインからまた別の 3000mg 版(ファイングリシン3000ハッピーモーニング)が発売されていると教えていただきました。。レビューを見ると味がちょっと変わっているようで、成分もちょっと違うようですね。外泊時はこの個別包装が便利なのでプレミアムは常備していたのですが、やはり目覚めの効き目は物足りなかったので(印象)、これは嬉しいです。

ファイン グリシン3000 ハッピーモーニング 30包
ファイン (2014-09-18)
売り上げランキング: 880

ライフカードとソーシャルエンジニアリング

warning_lamp

warning_lamp

ライフカードに問題を理解してもらえなかった話(以下、とくにメモを取っていなかった前半は、細かい言い回しが少し違っているかもしれない)

仕事中、席に戻って携帯を見たら留守電が入っていた。聞いてみると、クレジットカード会社からで、連絡くださいとのこと。なにかトラブルかと思ってあわててそのフリーダイアルの番号に電話をかける。名字を言って「電話をいただいたようなのですが」というと、下の名前と誕生日と電話番号を聞かれたので答えた。はいここテストに出ます。で、肝心の話は、というとおまとめローンの勧誘ということで、もうその言葉が始まったとたんに思わず私は「営業ですか(嘆息)」と漏らしてしまう。仕事中だぞこっちは。こちらの様子を察したのか「興味ないです」と一言言うと、すぐに引き下がった。

が、ちょっと待て。さっきの本当にカード会社か?

どこの誰かもわからないフリーダイアルに、私は本名と誕生日と電話番号を伝えてしまったのかと思って焦る。実は少し前にカード会社とのやりとりがあったり、ちょうど巧妙なスキミングの注意を見たこともあって、どんどん不安になる。フリーダイアルの番号を検索すると「カード会社の勧誘だから無視しろ」というようなページが見つかったが、念のため確認することにする。Webでカード会社の問い合わせ番号を調べて、そこに電話した。

最初にカード事故/紛失要件などとフィルタされて、しばらく待たされたら担当のオペレータの方が出た。要件(フリーダイアルの番号が正当なものか)を言うと、答える前にこちらの同定のための質問をされる。質問は、カード番号、誕生日、フルネームと登録している電話番号だった。はい、ここもテストに出ます。すると、カード会社から電話をかけた時間と、こちらがコールバックした時間を言われて、間違いないものです、と教えてくれた。

どうでしょう。

水曜どうでしょう。

よく、銀行やATMの場所に「行員が銀行の外や電話で、カード番号や暗唱番号を聞くことはありません」とあるが、この場合、カード会社が個人の同定に使う情報を、自分自身の営業電話で聞き出しているのだ。つまり、今回は大丈夫だったが、この相手が悪意のある者だったら営業電話とまったく同じ質問で簡単に個人同定のための情報を取得できてしまうことになる。ユーザはそれが悪意があるものかカード会社か区別はできない。

ということで、そのオペレータの方に、個人同定のために使うフルネームと誕生日と電話番号を営業電話で聞くのは納得できないので、改善してくれないでしょうか、と言うと、上の者に伝えておきます、と答えた。悪いくせなんですけど、流されたら困るなと思って、ここでまるで仕事みたいに「伝えた結果、どう改善したかを連絡してください」と言ってしまう。オペレータさんには申しわけないことをした。

もちろんオペレータの方はそんなコミットをする権限はないだろうから「上の者に変わります」と言ってかなり待たされてインフォメーションセンターの責任者という人に変わった。この方の説明によると、カード会社から電話をかけた場合は、あらためて同定情報を聞くことはないが、客から電話がかかってきた場合は確認するとのことだ。でもこの手順を、営業の留守電へのコールバックで行うと、そのときお客さんは誰かわからない相手に同定情報を言っていることになる。

ということで、私は営業電話のこの手順を変えられませんか、と伝えた。ところが、この私が疑問を持っている内容をこの担当者がなかなか理解してくれない。営業マンが、コールバックの電話に対して暗証番号を聞いたり、母親の名前を聞いたり、昔買っていたペットの名前を聞いているのと同じことなのに。

その場で私も考えたが、手順を変えるのは簡単で、コールバックされたら、いったん切って、またその相手の電話番号にかけ直せばいいだけだ。そうすればユーザは不明な相手に個人同定情報を伝える前例をつくることなく、カード会社も営業活動が行える。しかし、これも相手はどうも理解していない感じだ。私、説明下手だからな。やりとりをするうち、向こうの慇懃無礼な感じに腹も立ってきた。こちらは窓口になりますのでわかりません、って窓口だから分かる人に伝えて欲しい、みたいな。ただ、これは双方熱くなる感じがあったのでこちらも悪かったかもしれない。申しわけないことをした。でも、電話のあと、冷静になってから考えてみてもやっぱり

  • コールバック電話には、もう一度かける手順にして(同定情報は気軽に聞かないで)
  • 同定情報を聞くまえに、営業電話と言って(カード会社からの電話は焦るので)
  • 営業電話で留守電を入れるときは、要件を言ってほしいな(これはwant)

と思った。ユーザとして気をつける点は、

  • カード会社を名乗っていても気軽に同定情報を伝えない
  • 同定情報を聞かれたら、まず要件を聞く
  • 陸海空軍その他の戦力は、これを保持しない

ということだ。たかが誕生日や電話番号に神経質になりすぎかなーともちょっと思ってるけど、高木浩光さんはJavaHouse Brewers ML時代に親切にされたことがあってよく読んでいるのでどうしても気になってしまうのだ。

クイック・ジャパン (Vol.52)
太田出版
売り上げランキング: 7,046