いものやま。

雑多な知識の寄せ集め

「ボードゲーマーに100の質問:2019年度版」に回答してみた。

f:id:yamaimo0625:20190912161447p:plain

有我悟さん(@Arugha_Satoru)の作られた(アップデートされた)「ボードゲーマーに100の質問:2019年度版」が面白そうだったので、回答してみた。

Q1 ボドゲ歴は何年ですか?

将棋を入れると25年くらい。
カタンからなら15年弱。
いろいろ遊び始めてからは10年弱。

Q2 初めて遊んだボードゲームは何ですか?

子供の頃にババ抜きやったりウノやったりオセロやったりしたのと、将棋やカタン、チケット・トゥ・ライドを除けば、交易王やDixitあたりのはず。

Q3 誰とボードゲームを遊ぶ事が多いですか?

ツイッターの友人や、高校時代、大学時代の友人。

Q4 どこでボードゲームを遊ぶことが多いですか?

プレイスペース or 友人宅 or 寺@群馬

Q5 どれくらいの頻度でボードゲームで遊びますか?

最近あまり遊べてない・・・月に1回遊べるかどうか。

Q6 ボードゲームはいくつくらい持っていますか?

100ちょっとくらいのはず。

Q7 あなたのベストボードゲームは?

99(トランプ)。
トランプ以外だと悩ましくて、モダンアートとかかなぁ。

Q8 好きなゲームデザイナーは誰?

クニツィア
スッキリしたデザインで十分に悩ましく、重すぎないのがいい。

Q9 嫌いな(苦手な)ゲームデザイナーは?

このデザイナーがというより、テキストをとにかく読まないといけないデザインは苦手。
あと、節操なしにシステムをぶち込んでるのもちょっと・・・

Q10 好きなメカニクスは?

競り。
あとトリテ。

Q11 苦手/嫌いなメカニクスは?

テキストをとにかく読まないとダメなヤツ。
エレガントじゃないよね・・・

Q12 好きなボードゲームのテーマ/モチーフ/世界観は?

あまりテーマは気にしないかも?
クトゥルフは好き。

Q13 嫌いな/避けてしまうボードゲームのテーマ/モチーフ/世界観は?

特になし。

Q14 人気あるけど好きじゃないゲームはありますか?

世の中の人気に疎くて・・・

Q15 お世辞にも面白いとは言えない/あからさまな欠点がある/万人受けするとは言えないけど、好きなゲームありますか?

パッとは浮かばない・・・

Q16 好きだけど持ってないゲームありますか?

たくさんあるw
それこそカタンも持ってないし世界の七不思議もないw

Q17 好きじゃないけど持っているゲームありますか?

手放そうと思って手放してないゲーム、あるなぁ・・・

Q18 好きなアートワークのボードゲームは?

いろいろあるけど、パッと浮かんだのはバロニィ。

Q19 ボードゲームのアートワークやコンポーネントをどの程度重視していますか?

未プレイならそれなりに。
プレイ済みならプレイアビリティやゲームの面白さの方をはるかに重視する。

Q20 オサレな見た目のボードゲームは好きですか?

好きだけど、やってみて面白くなければもういいやってなるw

Q21 お気に入りのボドゲグッズ、教えてください。

トランプを遊ぶときにこのチップがすごくいい。

ポーカーチップ (中) ゲーム小物

ポーカーチップ (中) ゲーム小物

1つだとチップが足りなくなることが多いので、2つ買ってニコイチで2セット作ってる。
(「5色x20枚」の2セットではなく、「2色x40枚+1色20枚」の2セットにしてる)

Q22 TRPGゲーマーですか? もしくは経験者ですか?

TRPGも遊びたいなぁと思いつつなかなか遊べてない。

Q23 TCGゲーマーですか? もしくは経験者ですか?

シャドバとかなら・・・

Q24 ソシャゲをプレイしますか?

それなりに。

Q25 アニメやマンガ、コンシューマーゲームなどを好みますか?

アニメやマンガは好き。
コンシューマーゲームはほとんどやらない。

Q26 ぶっちゃけオタクですか?

Yes.

Q27 同人ゲーム買いますか?

Yes.

Q28 国産ゲーム買いますか?

Yes.

Q29 KickStarterでKickします/しましたか?

Kickしないけど、KickStarter発のストックパイルは買った。

Q30 米アマゾン、独アマゾンを使ってボードゲームを輸入したことがありますか?

No.

Q31 ゲームマーケットに行ったことはありますか?

Yes.

Q32 ボドゲカフェに行きますか? 行く人はお気に入りのお店ありますか?

No.

Q33 ゲーム会に参加するならオープン派、クローズ派?

オープン会にも行くしクローズ会にも行くのでどちらでも・・・

Q34 実は本名を知らないけどよく遊ぶボドゲ友達がいますか?

ツイッターの人は本名ほとんど知らないw

Q35 ボドゲジャケ買いします/したことありますか?

普通にある。

Q36 初心者相手のツカミに絶対ウケる! キラーコンテンツ的なボドゲはこれ、というものはありますか?

クラッシュアイスゲーム楽しい悔しい。

クラッシュアイスゲーム

クラッシュアイスゲーム

Q37 ボドゲ未経験の初心者(ゲームを普段遊ばない人)にボドゲを遊んで貰うなら、どういうラインナップで攻めますか?

その人次第というか・・・

Q38 ボドゲ未経験の初心者(ボドゲ以外のゲームは遊ぶ人)にボドゲを遊んで貰うなら、どういうラインナップで攻めますか?

分からんけどドミニオンあたりが鉄板なのでは?

Q39 どういうルートでボードゲームを購入する事が多いですか?

イエサブで買うことがおおいかな。

Q40 中古ゲームの購入に抵抗はありますか?

あまり買わない。

Q41 遊ばないゲームを手放したことがありますか?

Yes.

Q42 スリーブ入れる派? 入れない派?

あまり入れない。

Q43 アメ(リカン)トラ(ッシュ)派? ユーロ派?

Q44 日本以外のアジアのボードゲームに関心ありますか? 買ったり遊んだりしていますか?

打天九とかなら。

Q45 レガシー系ゲームで遊んだことはありますか? また、レガシー系ゲームは好きですか?

遊んだことない。

Q46 人狼やごいたなど(あくまでも例です)の、チーム戦のゲームは好きですか?

チーム戦かどうかは気にしない。

Q47 一対多、一対一の陣営非対称ゲームは好きですか?

嫌いではない。

Q48 マーダーミステリーを遊んだことはありますか?

遊んだことない。

Q49 謎解きや脱出ゲームを遊びますか?

少しだけ遊んだことあるけど、弱々なので申し訳ない・・・

Q50 萌え絵のボードゲームは持ってますか? 萌えっぽい絵のボードゲームを購入するのに抵抗はありますか?

持ってるはず。
特に抵抗なし。

Q51 海外のボードゲームによくある「エセジャパン」的な世界観のゲームをどう思いますか?

面白ければそれはそれでw

Q52 BGGのアカウントを持っていますか? 普段からBGGを見て/利用していますか?

持ってるけどあまり利用してない。

Q53 ボドゲーマのアカウントを持っていますか? 普段からボドゲーマを見て/利用していますか?

持ってなかったような。

Q54 ゲムマ以外のボドゲフリマなどの即売会イベントに参加した事がありますか?

あるはず。

Q55 プレイヤーのマイ担当カラーを決めていますか? 決めている人は何色ですか?

緑が好きだけどこだわりはなし。

Q56 トリックテイキングは好きですか? 好きな人はメイフォローとマストフォローどちらが好きですか?

好き。
断然マストフォロー。
メイフォローはさっぱり分からない。

Q57 トランプゲームで遊びますか?

遊ぶ。

Q58 ワードゲームは好きですか? また、得意ですか?

好き。
得意かと言われるとどうなんだろう・・・?

Q59 大喜利ゲームは好きですか?

好き。

Q60 協力ゲームは好きですか?

嫌いではないけどそこまで好きではない。

Q61 バランスゲームは好きですか?

好きだけど下手くそw

Q62 紙ペンゲームは好きですか?

好き。

Q63 ダイスゲームは好きですか?

好き。

Q64 ゲームにおける運要素の比率はどれくらいがベストだと思いますか?

運要素によってボードやシーンが作られ、そのあとプレイヤーに行動選択の余地があるというのがよさそう。
逆に、プレイヤーの行動の結果が運要素で決まって予測がつかないとかはダメそう。

Q65 アプリ連動型のボードゲームは遊びますか? また、これらをアナログゲームだと言えると思いますか?

アナログゲームと言えるかどうかは分からないけど、別にアナログゲームが遊びたいわけではなくて、楽しいゲームが遊びたいだけだから、アプリ連動でも面白ければ全然いいのでは?

Q66 軽ゲー派? 重ゲー派? 中量級?

中量級と思いたいけど、重ゲーが増えてるから軽ゲー派に分類されそう。
(1時間前後くらいがいい)

Q67 2時間以上の重量級ゲームでよく遊びますか?

たまに。

Q68 あなたのスマホ/タブレット/PCにはボドゲアプリがインストールされていますか?

Yes.

Q69 有名/定番タイトルなのに、遊んだことがないゲームはありますか?

たくさんある。

Q70 日本語版を是非出して欲しいと思うゲームはありますか?

パッとは思いつかない。

Q71 海外ゲームのゲームメーカーによる邦訳の誤訳が気になる/許せない方ですか? また、メーカーのエラッタページはチェックしますか?

仕方ないかなぁとは思う。
気になったら英文をチェックしたいから、英文も一緒に入れて欲しい。

Q72 海外と日本版でアートワークなどが変わるのは気になる/許せませんか?

日本語でそんなに主張しなくていいのにねとは思う。
元のデザインをそのまま使えばかっこ悪くなることもないし楽だろうに。

Q73 同じ内容のゲームでも、アートワークが変わっ(て、それが好みの絵だっ)たら買いますか?

買わないと答えたいけど、ハイソサエティ買ったから・・・

Q74 リメイク前のゲームを持っていても、リメイクされたらリメイク版も買いますか?

買わないと答えたいけど、スタンプス持っててモダンアートも買ったから・・・

Q75 海外の未翻訳ゲームを自力で翻訳して遊んだことがありますか?

トランプゲームなら。

Q76 レビューや意見、ゲームの考察などで参考にしているボードゲーム関係の個人はいますか?

いろいろサイトは見たりもしてる。

Q77 ここで(この)ゲームをやってみたいという場所、ありますか?(実現可能性はおいとく)

秋葉原ホコ天で青空ボドゲ会やってみたい・・・

Q78 この人にボードゲームのマンガを描いて欲しいというマンガ家がいますか?

んー、特には・・・ボードゲームがテーマである必要性はあまり感じないというか。

Q79 ボードゲーム関連の動画を見ますか? お気に入りの動画があったら教えてください。

ダイヤモンドPの動画が好き。

Q80 ボドゲポッドキャストを聞きますか? お気に入りがあれば教えてください。

最近聞いてない・・・

Q81 この人とボードゲームを遊んでみたい、この人にボードゲームを遊んで欲しいという人は?(故人、非実在人物、ゲーム業界の人でなくても可)

海馬瀬人

Q82 「おじさんがパッケージのボドゲは面白い」という法則を知っていますか? また、真実だと思いますか?

おじさんパッケージが多いので、面白かったから確認してみたらおじさんパッケージだったとなって、その印象が強いんだと思う。

Q83 好きな(これくらいの規模で遊びたい、という)プレイ人数は?

3〜5人。

Q84 お泊まりボドゲ会を開催したり、参加したことはありますか?

毎年、群馬の寺で合宿してるw

Q85 ぶっちゃけ、クニツィアディレンマって言う? 言わない?

もう最近は聞かないような。

Q86 リボーク、ミゼール、ディール、ラフ、ディスカード、全部分かる? 普段から使う?

分かる。
あまり使わない。

Q87 上家、下家、対面、先ヅモ、ベタオリ、全部分かる? 普段から使う?

先ヅモ以外は分かる。
あまり使わない。

Q88 ゲーム中に交渉要素のないゲームで、口プロレス(はったりを仕掛けたり相手を誘導するような発言)はする方ですか?

あまりしないはず。

Q89 同席相手がプレイングに悩んでいる際に、求められていなくてもアドバイスしてしまう方ですか?

長考が長いとしちゃうかも。

Q90 ボードゲームを遊ぶ時、ハウスルールを導入したことがありますか?

たぶんある。

Q91 ゲームの拡張は買う方ですか? 買った拡張を入れて遊ぶ頻度はどれくらいですか?

買わない。

Q92 赤ポーン(ドイツゲーム大賞受賞作)のゲームは何作くらい遊んでいますか? あなたにとって赤ポーンは意味があるモノですか?

分からない・・・
意味があるかと聞かれるとなんとも言えないけど、発表のお祭り感は好き。

Q93 ゲームマーケット大賞の受賞作を何作くらい遊んでいますか? あなたにとってゲームマーケット大賞は意味があるモノですか?

確認したら2作遊んでた。
自分にはあまり意味がないけど、ボドゲ制作者にとっては意味あると思う。

Q94 どれくらい積みゲーしてますか?

数えたくない・・・

Q95 仲の良い知り合いに頼まれても絶対やらないレベルのNfMゲームありますか?

まず頼まれることはないけど怪しい自己啓発系はさすがにやりたくない。

Q96 同じゲームを何度も遊ぶ方?

けっこう何度も遊ぶ。

Q97 入手が難しいが欲しいゲームありますか?

パッとは浮かばない。

Q98 長考する方ですか? 他人の長考は気になりますか?

割とする方・・・
他人の長考は基本的には気にしないけど、手番忘れてたり、長考の時間待ちの雑談に混ざってきたりすると、さすがに「おいおい」とは思う。

Q99 ボードゲーム以外の趣味は何ですか?

マンガやアニメ、自転車とか。

Q100 最後に、あなたにとってのボードゲームは、何ですか?

楽しい時間を作ってくれる遊び。


思った以上に長かった(^^;

今日はここまで!

技術書典7の新刊『Math Poker Girl』の表紙を作ってみた。

技術書典7に出す予定の新刊『Math Poker Girl』の表紙を作ってみた。

イラスト描けないのに頑張って作ったので、そのメモがてら、どうやって作ったのかを書いてみたい。

ベースの作成

まずはベースの作成。
これは『数学ガール』のデザインをパクリ参考にして、Graphicで作ってみた。

f:id:yamaimo0625:20190823134021p:plain

ちなみに、タイトルに使ってるフォントは、ネットで見つけたSpinweradというフリーフォント
OpenFontLicenseというライセンスで頒布されていて、フォント自体を販売するということをしない限り、自由に使えて(商用も可)、再頒布も可能みたい。

あと、オリジナルのデザインだと、下の方が空いていて帯でアオリが追加されてるんだけど、帯をつけるのは大変だし、かといって、「なんちゃって帯」デザインにするのも微妙だったので、グラデーションで誤魔化してアオリを追加してみた(^^;

イラストの作成

ここからが大変だったところで、なにせ自分はイラストが描けない・・・
いや、いろいろ描いてはいるんだけど、ねw

イラスト、上手くなりたいなぁ・・・

ということで、以下の手順でなんとかイラストを用意してみた:

  1. 欲しい構図の写真を撮る
  2. 線画っぽくするアプリで加工
  3. プリントしてトレース
  4. 鉛筆で陰影つけたり変更したり
  5. 写真に撮ってデータ化
  6. 線画っぽく加工

1. 欲しい構図の写真を撮る

頭の中にはイメージがあるのだけど、その3次元の構図を2次元に落とし込めなかったので、欲しい構図を実際に3次元で作ってみて、その写真を撮ってみた。
それがこちら:

f:id:yamaimo0625:20190823140228p:plain

ガルパンの島田愛里寿嬢(水着ver.)w
いやー、ピッタリなフィギュアがあってよかったw

2. 線画っぽくするアプリで加工

このままだとさすがにトレースも難しいので、線画っぽくするアプリを使って加工してみた。

線画風カメラ

線画風カメラ

  • darjjeelling
  • 写真/ビデオ
  • 無料

これでパラメータをいじって出した画像が、こんな感じ:

f:id:yamaimo0625:20190823140548p:plain

うん、まぁ、構図は分かるよね?

3. プリントしてトレース

これを一旦プリントして、紙を重ねてトレース。
トレース台とか持ってなかったけど、窓に紙を押し付ければ、外の明るさでけっこう普通にトレースできるのね。

4. 鉛筆で陰影つけたり変更したり

そこから、鉛筆で陰影をつけたり、欲しいイメージに合わせて変更したりで、出来上がったのがコレ:

f:id:yamaimo0625:20190823140853p:plain

島田愛里寿どこいったw
うん、イメージしてたのがFateのライネス ・エルメロイ・アーチゾルテ嬢だったから、ちかたないね。

5. 写真に撮ってデータ化

これを再び写真に撮ってデータ化し(スキャナ? 知らない子ですね・・・)、表紙で使えるように加工しようとした。

このとき、さっきの線画っぽくするアプリとか、他の画像加工アプリ(Waterlogue)も使ってみたんだけど、あまりいい感じに出来なかった。

Waterlogue

Waterlogue

  • Tinrocket, LLC
  • 写真/ビデオ
  • ¥600

6. 線画っぽく加工

どうしたものかと困ったんだけど、FireAlpacaで上手いこと出来た。

まず、現状の写真データだと何が困るのかというと、以下のようなこと:

  • グレースケールじゃなくて色味が乗ってる
  • 背景部分がアルファで抜けてない
  • 線の色を表紙に合わせられない

これらを以下のようにして解決していった。

まず、FireAlpacaを起動し、必要な部分だけ切り抜いた写真を読み込ませる。

f:id:yamaimo0625:20190823142805p:plain

そして、メニューから「フィルタ」-「線画抽出」を選択し、パラメータをいい感じのところ(山になってるところあたり)にして「OK」。
すると、こんな感じになる:

f:id:yamaimo0625:20190823143203p:plain

線の濃淡がアルファとして抽出されている感じっぽい。
(ちゃんとは調べてない)

そしたら、下に背景のレイヤーを用意し、白く塗っておく。

f:id:yamaimo0625:20190823143437p:plain

これ、背景の部分がちゃんと透明に抜けてない(アルファが0%になってない)ので、消しゴムツールを使って背景部分をゴシゴシと消していく。
頑張って消すと、こんな感じになる:

f:id:yamaimo0625:20190823143758p:plain

そして、レイヤーを8bitレイヤーに変換。
8bitレイヤーというのは、アルファ値のみ持ってるレイヤーっぽい。
他のレイヤーのマスクなどに使える。
レイヤーを変換するには、メニューから「レイヤー」-「変換」-「8bitレイヤーに変換」を選択する。

f:id:yamaimo0625:20190823144540p:plain

あまり変わってないように見えるけど、赤丸で囲ったところで8bitレイヤーになっていることが分かる。

あとは、下にレイヤーを用意して、線の色にしたい色で塗っておく。

f:id:yamaimo0625:20190823144955p:plain

そして、上の線画レイヤーを選択して、メニューから「レイヤー」-「変換」-「ステンシルレイヤー」を選択すると、こうなる。

f:id:yamaimo0625:20190823145208p:plain

おぉ、いい感じ!

イラストの追加

あとは背景色の白のレイヤーを見えなくしてPNGで書き出し、Graphicで作っていたベースに取り込み。
サイズを調整し、ブレンドを「乗算」にしてやれば、こんな感じになる:

f:id:yamaimo0625:20190823145623p:plain

これをPNGに書き出したのが、こちら:

f:id:yamaimo0625:20190823150226p:plain

なかなかいい感じに出来たのでは!?

今日はここまで!

『ふりかえり読本 学び編』を読んでみた。

f:id:yamaimo0625:20190125223301j:plain

この前行ってきた、技術書同人誌博覧会。

そこで買った本の一つである、『ふりかえり読本 学び編』を読んでみたので、感想など。

概要

日々の活動を改善させていこうと思ったときに必要となるのが、『ふりかえり』。
そんなふりかえりの手法をいろんなところから集め、カタログ的にまとめられている。

著者は実際にいろいろなふりかえり手法を試しているようで、その数は80を越えているみたい。
本に載っているアクティビティは20前後なので、その中でもとくに有用だったり、重要なものが選ばれているのだと思う。

ただ、実際に読んでみて思ったのは、ちょっと微妙だなぁ、ということ。
自分も同人誌を書いている身なので、反面教師として、どこらへんを微妙に感じたのか書いておきたい。

単調に感じる

読んでいて一番感じたのが、コレ。
すごく単調。
単調で読むのがツラい。

この本で、紹介されている各アクティビティは、以下のようにまとめられている:

  1. 出典
  2. 目的・ねらい
  3. 所要時間
  4. 事前準備・道具
  5. ステップ
  6. ファシリテーションのポイント
  7. バリエーション

本文でPMBOKの文字も見えたので、おそらくPMBOKを意識したものになっているんだろうとは思う。
PMBOKもまずは大きな枠を作り、それぞれの枠の中で有効なマネジメント手法が整然とカタログのように並べられている)
ただ、整然としてはいるものの、似たような内容が何度も繰り返されるというのは、単調でツラいんよねぇ・・・

これはある意味仕方ない部分もあって、ふりかえり手法はいろいろあれど、根底にある基本的な考え方(=やったことを確認してこれからを考える)はどれも同じなので、どうしても似通ったものになってくるんだと思う。
ただ、そんな中でも、それぞれの手法には何かしらの目的、解決したい問題があって、そのための工夫が入っているはずなので、そういったところにフォーカスを当てて欲しかった。

解決したい問題が分からない

それに関連して、その手法を用いることでどんな問題を解決していきたいのかが、よく分からなかった。

問題意識をまず書いて、それに対する解決案として手法を提案する方がよかったんじゃないかな、と思う。
「ふりかえりでこういった問題点があってうまくいってない」→「それならこういう手法のふりかえりはどう?」みたいな。
各手法で入れられている工夫というのも、何かしらの問題点を解決するために取り入れられてものなわけだから。

ふりかえりの本を買うということは、そのふりかえりの本の内容によって何か解決したいことがあるんだと思う。
もちろん、それはまだ言語化できていないモヤッとしたレベルのものかもしれないけど。
なので、そういった問題意識に対する解決案という形で各手法が提案されていれば、それぞれの手法の違いが際立ってくるし、実際に試してみようという気も起きやすいと思う。

ちょこっと引用するけど、

【コラム3】ふりかえり手法の選び方
(省略)
「このときにはこれを使うとよさそう」という経験則が育ってきます。
本書は、その経験則を育てるためのガイドとして利用していただければ幸いです。
(『ふりかえり読本 学び編』より引用)

うん、その「このときにはこれを使うとよさそう」という経験則が、知りたい内容。
その経験則を言語化して書いて欲しかった・・・

文書構造が分かりにくい

これは節にもよるんだけど、文書構造の入れ子が複雑な場合、いま自分が読んでるのがなんなのか分からなくなることがあって、混乱した。

一例をあげると、「第4章 ひとりのふりかえり」の「2. 1年のふりかえり」というアクティビティの紹介。

この節内の見出しは、以下のようになっている:

  • 2. 1年のふりかえり
    • 出典
    • 目的・ねらい
    • 所要時間
    • 事前準備・道具
    • ステップ
      • 1. 事前準備
        • I. 注力したこと&大きなイベント
        • II. キーとなる人物
        • III. 一言メモ
        • IV. 記号
      • 2. ワークショップによる共有
        • I. イントロダクション
        • II. 1年の流れを語る
        • III. 周囲による深掘り質問
        • IV. 発表者からの質問
        • V. 発表者によるまとめ
        • VI. 他の3人からのコメント
        • VII. 今後どうしていきたいか
    • ファシリテーションのポイント
    • バリエーション

これで103ページ〜126ページまでの計24ページ。
長い・・・

しかも、これは分かりやすく入れ子関係を表現してるけど、本の場合、インデントなどによる入れ子構造の表現はないので、実際にはこう見える:

  • 2. 1年のふりかえり
  • 出典
  • 目的・ねらい
  • 所要時間
  • 事前準備・道具
  • ステップ
  • 1. 事前準備
  • I. 注力したこと&大きなイベント
  • II. キーとなる人物
  • III. 一言メモ
  • IV. 記号
  • 2. ワークショップによる共有
  • I. イントロダクション
  • II. 1年の流れを語る
  • III. 周囲による深掘り質問
  • IV. 発表者からの質問
  • V. 発表者によるまとめ
  • VI. 他の3人からのコメント
  • VII. 今後どうしていきたいか
  • ファシリテーションのポイント
  • バリエーション

もうこうなってると、何が何やら。
いま自分が読んでるのが何の話なのか、さっぱり分からなくなる。
単調さもあいまって、完全に迷子。

解決策としては、以下のような方法がありそう:

  • ステップがさらに細かく分かれる場合、最初にその部分だけの目次も用意しておく。
  • 柱に節も書いておく。
    (奇数ページに「2. 1年の振り返り」と書くなど)
  • 節などの見出しの番号の体裁を分ける。
    (「2. 1年の振り返り」と「2. ワークショップによる共有」が被ってるので、後者は「Step2. ワークショップによる共有」とするなど)
  • 入れ子の分かる番号振りにする。
    (「I. イントロダクション」を「Step2-1. イントロダクション」とするなど)

いいと思ったところ

微妙に思ったところだけ挙げるのもなんなので、いいと思ったところも。

まず、写真や図が多いのは素直にいい。
文字ばっかりだと気が滅入るし、分かりにくいけど、そこで実際のアクティビティの様子が分かる写真があったり、図での説明があったりしたのが、とてもよかった。

あと、柱とノンブルのデザインがちゃんとしていたのが個人的には評価高い。
断ち切りまで枠を伸ばすデザイン、けっこう大変だと思うんだよねぇ。

そして、いろいろ書いたけど、これだけの数のふりかえりのアクティビティを1冊にまとめ上げた本というのは、おそらく他にはないだろうから、それだけでも価値が高い。
自分の引き出しを増やしたり、リファレンスで持っておくには、すごくいいと思う。

今日はここまで!

『数学ガールの秘密ノート/ビットとバイナリー』を読んでみた。

結城浩先生の新刊、『数学ガールの秘密ノート/ビットとバイナリー』をさっそく読んでみたので、感想など。

概要

数学ガール』シリーズでは、主人公の「僕」と、彼を取り巻く女の子たちによる数学トークが語られている。
クールで数学が得意なミルカさん、元気で数学の疑問にしっかりと向き合っていくテトラちゃんなど、キャラクターも魅力的。

数学ガール』シリーズの中でも、今回読んだ『秘密のノート』シリーズは難易度がやさしめになっていて、中学生から楽しめるものになっている。
今回テーマとして取り上げられたのは、「ビットとバイナリー」ということで、2進数やその周りの数学。
コンピュータ関連というということで、赤髪のコンピュータ好き少女、リサも再登場している。

内容は2進数のおさらいから始まり、ビット操作の話、さらにはブール代数にまで及んでいる。

ビット操作に関しては、画像をスキャナで読み込んでプリンタに出力する、というテーマで話を展開させていて、とても面白かった。
そういうテーマにすると、ビット操作を画像のフィルタ処理と結びつけて話すことが出来るのか・・・

フリップ・トリップとルーラー関数

そんな中でも、個人的にすごく面白かったのが、「フリップ・トリップ」という問題。

フリップ・トリップ N Nは正の整数)は、以下のような問題:

盤面に N個の石(表が白、裏が黒)が並べられている。
石には 0, 1, \ldots , (N-1)と番号がついている。
石に対応して、 0, 1, \ldots , (N-1)と番号のついた反転ボタンがあり、ボタンを押すと対応する石の表裏が入れ替わる。
開始時に石はすべて表(白)になっていて、反転ボタンを押していくことで、同じパターンを出すことなく全てのパターンを出し切るには、どうすればいいか。

具体的な例を見た方が分かりやすそう:

例えば、フリップ・トリップ2なら、以下のような感じ:

init
    0: W [ ]
    1: W [ ]

turn0
    0: W [X]
    1: W [ ]

turn1
    0: B [ ]
    1: W [X]

turn2
    0: B [X]
    1: B [ ]

turn3 <done>
    0: W [ ]
    1: B [ ]

Wは白、Bは黒、[X]はそのボタンを押したということ。

フリップ・トリップ3だと、以下のような感じ:

init
    0: W [ ]
    1: W [ ]
    2: W [ ]

turn0
    0: W [X]
    1: W [ ]
    2: W [ ]

turn1
    0: B [ ]
    1: W [X]
    2: W [ ]

turn2
    0: B [X]
    1: B [ ]
    2: W [ ]

turn3
    0: W [ ]
    1: B [ ]
    2: W [X]

turn4
    0: W [X]
    1: B [ ]
    2: B [ ]

turn5
    0: B [ ]
    1: B [X]
    2: B [ ]

turn6
    0: B [X]
    1: W [ ]
    2: B [ ]

turn7 <done>
    0: W [ ]
    1: W [ ]
    2: B [ ]

この問題を解くために使われるのが、ルーラー関数
「ルーラー」というのは、「定規」という意味。

どうやってルーラー関数を使うのかや、ルーラー関数に関連する話は面白いので、ぜひ本で読んでみてほしい。

超立方体

ところで、この「フリップ・トリップ」問題を読んで自分がまず思ったのは、超立方体の頂点を辺に沿って全部周ればいいんだろうなぁ、ということ。
エピローグで軽く触れられてるんだけど、明示的には書かれていなかったので、ちょっと書いておきたい。

まず、2進数の0と1を頂点において辺でつなぐと、こんな線分になる:

f:id:yamaimo0625:20190731155332p:plain

フリップ・トリップの「白」を「0」、「黒」を「1」と考えると、この頂点はフリップ・トリップ1で出てくるすべてのパターンに対応し、辺は反転ボタン0を押した時の状態変化に対応している:

f:id:yamaimo0625:20190731160034p:plain

なので、フリップ・トリップ1で「1. 初期が白」「2. 反転ボタン0を押す」「3. 黒になる」というのは、この図で以下のように解釈できる:

f:id:yamaimo0625:20190731161059p:plain

これは一次元だったけど、これを横に引き伸ばすと二次元になり、フリップ・トリップ2に対応することになる:

f:id:yamaimo0625:20190731162611p:plain

以下のように辺に沿って移動していく(=反転ボタンを押していく)ことで、すべての頂点(=パターン)を巡っていくことが出来る:

f:id:yamaimo0625:20190731163358p:plain

これをさらに奥に引き伸ばせば三次元になり、フリップ・トリップ3に対応し、以下のように辺を辿っていくと、すべての頂点を巡れる:

f:id:yamaimo0625:20190731165936p:plain

同様に引き伸ばしていくことで、四次元、五次元、さらには N次元と考えていくことが出来る。
四次元についてはエピローグにも出てたり。

そして、このような引き伸ばして作っていった図形を、超立方体と言う。

そして、これまでの例を見てもらえば分かる通り、超立方体の辺に沿ってすべての頂点を巡るというのが、フリップ・トリップ問題の解答に対応している。

ハッセ図

ちなみに、この超立方体、見方を少し変えてみると、面白いことが見えてくる。

まず、一次元。

f:id:yamaimo0625:20190731173356p:plain

次に二次元。

f:id:yamaimo0625:20190731173416p:plain

そして、三次元。

f:id:yamaimo0625:20190731175045p:plain

そう、超立方体は、半順序関係を図示したハッセ図になっている!

ハッセ図については本を読んでほしいんだけど、本でハッセ図が出てきたので、「おぉ、ここから超立方体に繋げて、超立方体の頂点を巡るという話にするのかな?」と思ったら、そうじゃなかった(^^;
このあたりの繋がりについても言及があると、もっとよかったなぁ。

何はともあれ、非常に面白かったので、オススメ!

今日はここまで!

技術書同人誌博覧会に行ってきた。

7/27(土)に、蒲田の大田区産業プラザPiOで開催された「技術書同人誌博覧会」、通称「技書博」に一般参加で行ってきたので、感想など。

第二回技術書同人誌博覧会のお知らせ | 技術書同人誌博覧会

f:id:yamaimo0625:20190728171537p:plain

技書博

「技書博」は、簡単に言ってしまえば、技術書オンリー同人誌即売会

技術書オンリーの同人誌即売会だと、技術書典が有名だけど、技書博はそれとはまた違ったイベント。

ちなみに、次の技術書典7(9/22)にサークル「いもあらい。」として参加するので、よろしくお願いします。
ポーカー(テキサス・ホールデム)を数学的に考えていく本を出す予定です。

今回は初回ということもあり、規模も小さい感じだった。
参加サークル数としては、66サークル。
(※技術書典6は463サークル)

けど、後発ということもあり、いろいろ工夫が見られた。

入場チケット

興味深かったのが、入場チケットをPassMarketを使って用意していたこと。

チケット自体は無料なんだけど、入場を開始できる時間が何種類かに分かれていて、それぞれに上限が設けられている。
なので、流量のコントロールが確実に出来るようになっている。

技術書典では、チケットを有料化することによって、早い時間帯の流量を減らすように促していたけど、流量に上限は設けていなかった。
だから、チケットを買って入っても、混んでるかどうかはどれだけのチケットが出てるか次第。
また、チケットを入手しても、何時に入れるかの確証は得られないという問題があった。
(チケットを購入しても普通に待機列に並ぶことにはなる)

けど、技書博の方法だと、上限がしっかりと決められているので、混雑のコントロールが確実に出来るし、入場で長く待たされるということもなくて、とてもいいと思った。

実際、会場内は程よい人だかりで、快適の一言。
ゆったりと見て回れたので、すごくよかった。

サークルさんからしても、流量がコントロールされるので、忙しさが均等化されたんじゃないかな。

ノベルティ

ノベルティで個人的に嬉しかったのは、お水
水分、重要だからね・・・

あと、カタログも無料で配られてた。
サークルカットにとどまらず、運営側やスポンサーも記事を結構載せてて、結構な厚さがあったのは驚き。

入場も無料だし、ノベルティも恒例の袋に、カタログ・お水、それにうちわもついてて、だいぶスポンサーからお金を出してもらったのかなぁ。
(その分、広告もしっかり入ってて、Win-Winになってるのがとてもいい感じ)

机の配置

机の配置も、実は工夫されてたんじゃないかと思う。

技術書典だと、動線の両脇にサークルが並ぶ感じになっていて、つまり島の長さが非常に長いんだけど、技書博では出来るだけ島を短くしていた
これによって何が嬉しいのかというと、移動のための列とサークルに並ぶための列が分離するということ。

図で見てみると分かりやすい。

まずは技術書典のように、島が長いレイアウト:

f:id:yamaimo0625:20190728193612p:plain

見ての通り、移動のための列(赤)とサークルに並ぶための列(緑)が同じ空間になっている。
なので、混雑しやすい。

一方、技書博のレイアウトは、以下のように島が短くなっていた:

f:id:yamaimo0625:20190728193752p:plain

移動のための列(赤)とサークルに並ぶための列(緑)は分離しているので、混雑しにくい。
島の中を移動するための列(青)はサークルに並ぶための列(緑)と同じ空間になっているので、そこで混雑は発生する可能性があるけれど、島の中を移動するための列(青)は移動のための列(赤)よりずっと短くなっているので、ダメージが少ない。
また、混雑も分散される。

もちろん、使えるスペースは技書博のレイアウトの方が少なくなると思うけど、技術書典も技書博のようなレイアウトをちょっと検討してほしいな。


ちなみに、第2回も予定されてるみたい。

f:id:yamaimo0625:20190728171559p:plain

100サークル以上募集するっぽいので、成長が楽しみ。

今日はここまで!

MacBook Airでマウスを使いやすくしてみた。

f:id:yamaimo0625:20190715142700j:plain

MacBook Airトラックパッドは最高なんだけど、ちょっと困ったことが。
それは何かというと・・・指が痛くなる

もちろん、短い時間使うだけなら問題ないのだけど、長時間使っていると、少しずつダメージが蓄積されていって、ちょっと無視できない痛みに。

この痛みを改善しようと、マウスを併用するようにしてみた。
ただ、そのまま使うと、かなり使いにくい・・・

そこで、ツールを導入して、MacBook Airでマウスを使いやすくしてみた。


ちなみに、Macでのキー配置の調整などについては、以下を参照:

問題点

MacBook Airでマウスを使うと出てくる問題点が、以下の2つ:

  • マウスホイールによるスクロールが普通と逆
  • マウスホイールによるスクロールがキビキビ反応しない

「スクロールが普通と逆」問題

まず、前者について。

マウスホイールを転がすと、普通は以下のようになる:

ホイールを転がす方向 スクロールする方向

これが、MacBook Airだと、以下のようになる:

ホイールを転がす方向 スクロールする方向

これがかなり使いにくい・・・

実はこれ、設定によるもので、トラックパッドの動きに合うようになっている:

トラックパッドをなぞる方向 スクロールする方向

トラックパッドの場合、これがかなり自然な設定になっている。
下になぞれば対象が下に移動し、つまり、画面としては上にスクロールするし、逆もまた然り。

けど、マウスも同じ動きをされてしまっては、困る。

一応、「システム環境設定」-「マウス」-「スクロールの方向:ナチュラル」のチェックを外すと、普通と同じマウスホイールの挙動をするようになる。
ただし、その場合、「システム環境設定」-「トラックパッド」-「スクロールとズーム」-「スクロールの方向:ナチュラル」のチェックも外れてしまい、今度はトラックパッドの挙動がおかしなことになる。

なんで独立して設定できるようにしてないんだろう・・・

なので、以下のような調整をする必要がある:

  • マウスホイールは、
    • 下に転がせば、下にスクロールする
    • 上に転がせば、上にスクロールする
  • トラックパッドは、
    • 下になぞれば、上にスクロールする
    • 上になぞれば、下にスクロールする

「スクロールがキビキビ反応しない」問題

続いて、後者について。

マウスホイールを転がすと、普通は即座に反応して、画面がスクロールする。
けど、MacBook Airだと、なぜかある程度の勢いでホイールを転がさないと、反応しない

これもかなり使いにくい・・・

例えば、2, 3行だけスクロールさせたいときに、普通ならマウスホイールをちょこっと転がせばいいだけなのに、MacBook Airだと全然思うようにならない。
ちょこっと転がすのだと反応せず、かといって、勢いよく転がすとかなりスクロールされてしまったり。
思ったように反応してくれないのは、かなりのストレス。

これは、Macの場合、スクロールの加速度を加味しているのが原因っぽい。
なので、スクロールの加速度を無視するように設定する必要がある。

対応策

これらの問題に対して、何か1つのツールで対処できればよかったのだけど、残念ながら見つけられなかった。
なので、それぞれの問題に対して、別のツールを用いて対処した。

  • Scroll Reverser
  • DiscreteScroll

Scroll Reverser

まず、「スクロールが普通と逆」問題の解決に使ったのが、Scroll Reverser

このツールは、名前の通り、スクロールの方向を逆にするもの。

上記ページからダウンロードしてきたzipファイルを解凍し、"Scroll Reverser.app"を「アプリケーション」フォルダにコピーすれば、インストールは完了。

ただし、起動しようとすると、おそらくセキュリティに阻まれて起動できないはず。
その場合、「システム環境設定」-「セキュリティとプライバシー」-「プライバシー」-「アクセシビリティ」で、"Scroll Reverser.app"のチェックを入れる必要がある。
(「システム環境設定」-「セキュリティとプライバシー」-「一般」で、実行許可を与える必要もあるかも)

起動したら、メニューバーにアイコン( \Updownarrowみたいなやつ)が表示されるので、アイコンから設定を開き、以下のように設定:

f:id:yamaimo0625:20190715155321p:plain

これで望む挙動にすることができる。

さらに、上記設定の「アプリ」で「ログイン時に開始」にチェックを入れておけば、ログイン時に勝手に開始されるので便利。

DiscreteScroll

そして、「スクロールがキビキビ反応しない」問題の解決に使ったのが、DiscreteScroll

このツールは、スクロールの加速度を無視するようにするもの。

上記GitHubの"releases"にリリースのzipが置かれているので、DiscreteScroll.zipをダウンロード。
そして、解凍して"DiscreteScroll.app"を「アプリケーション」フォルダにコピーすれば、インストールは完了。

こちらのツールもScroll Reverserと同様にセキュリティに阻まれるはずなので、まったく同じように、「システム環境設定」-「セキュリティとプライバシー」-「プライバシー」-「アクセシビリティ」で、"DiscreteScroll.app"にチェックを入れてやる。

あとは、起動させれば、スクロールがキビキビ反応してくれるようになる。

ちなみに、このツールはホントに必要最低限の機能しかないので、起動しているかどうかの確認は「アクティビティモニタ」から行うしかない。
また、終了させる場合も、「アクティビティモニタ」からプロセスを終了させる必要がある。

それと、ログイン時に勝手に起動して欲しい場合には、「システム環境設定」-「ユーザとグループ」で、「ログイン項目」に"DiscreteScroll.app"を追加しておけばいい。


以上のツールを使うことで、かなり快適にマウスを使えるようになった。
MacBook Air使いは、ぜひお試しあれ。

今日はここまで!

「Lucid, the Dataflow Programming Language」を翻訳してみた。(その13)

ちょっと間が空いてしまったけど、前回の続き。

2.8 無限プログラミング

Iswimファミリについてのこれまでの議論は、従来のオブジェクトが有限な代数に限定したものだった。
この形式のIswimは、ALGOLのような従来の命令型言語の再帰的サブセットに多かれ少なかれ一致している。
この制限により、Iswimプログラミングは本質的に、従来のプログラミングの、とても厳密に制限され構造化された形式となっている。

しかし、言語の代数をこのような「従来の」ものに限定する特別な理由はない。
オブジェクトが有限でない代数によるIswimファミリには、興味深く有用なものがたくさんある。
これらの言語は、従来の言語の単なるサブセットよりもはるかに豊かで、まったく新しいプログラミング手法を可能にする。

Iswimファミリで興味深いメンバの一例は、POP-2代数 Pのような代数 Hに基づいたもので、その宇宙(universe)には有限リストに加えて無限リストが含まれている。
リストは無限であってもよく、そのリストの要素は Hの世界の任意の要素であっていい(リストでもいい)。
このアイディアは、以下の「ドメイン方程式」によっていくらか正確にすることが出来て、POP-2の非リストなデータオブジェクトのドメイン Dとして、 Hの宇宙 H_0を定義する:

 L = 1 + H_0 \times L \quad \mathrm{and} \quad H_0 = D + L

最初の式は、「ハイパーリスト」(ドメイン Lの要素)が、空であるか(空リストはただ1つだけある)、 H_0の1つの要素(ヘッド(head))と1つのハイパーリスト(テイル(tail))で構成されていることを示している。
次の式は、 H_0の要素が Dの要素(文字列、数値、単語など)またはハイパーリストのいずれかであることを示している。
これらの式は、 Hでの演算は指定していなく、 Hの宇宙 H_0のみを指定しているので、 H自体は指定されていない。
しかし、これらの式の解が得られれば、通常のリスト演算(hdtl::などの記号で表される)は簡単に定義できる。

実際、これらのドメイン方程式は、無限の長さのリストがあるという解を持つ。
1つ注意しなければならない点は、ドメイン H_0にも豊富な種類の部分的(partial)オブジェクトが含まれていることである。
ドメイン Dでは、部分的(非標準)オブジェクトは \perpだけであり、他のすべてのオブジェクトは、正常で、健全な文字列、単語、整数などであった。
しかし、 H_0では、「混合」リストーーつまり、要素の一部(必ずしもすべてではない)が \perpであるようなリストーーを許可する必要がある。
また、ある時点で「テイルオフ(tail off、尻尾切り?)」する必要があるーーこれは、tlが何度も適用される場合に、ある時点で \perpと評価することである。
最後に、リストの構成要素は他のリストでもよいので、構成要素として部分的リストを持つようなリストを許可する必要がある。
このリストの要素は部分的リストであってもいいし、そうでなくてもいい。
要するに、ドメイン H_0は、すべてのオブジェクトの「純白さ」と \perpの「漆黒さ」との間に無限の多様な濃淡を許している。

(※正直、何を言っているのか分からないのだけど、操作的に考えたときに「無限の操作」を意味する \perpに対して、無限の長さを持つリストも操作が(場合によって)無限になる、ということを言いたいのだと思われる)

Iswim( H)でプログラミングすることと、「有限」オブジェクトの代数 AによるIswim( A)でプログラミングすることの大きな違いの1つは、(前者の場合)変数を再帰的(循環的)に定義するのに意味があるということである。
もう1つの違いは、終了条件なしで再帰関数定義を与えることも意味があるということである。
その場合、「結果」が無限であるので、評価は「永遠に」実行されることになる。

例えば、以下の定義を考えてみる:

 X = 1 \mathrm{::} X;

Iswim( P)では、この定義は \perp Xと関連づける。
というのも、 Pは有限リストのみを持ち、この定義を満たすような有限リストは存在しないからである。
しかし、Iswim( H)には無限を使った解が存在する。
すなわち、

[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...]

という無限に1が続くリストである。
さらに、これはこの方程式の最小解であり、したがって変数 Xに関連付けられた値となる。
次の「非終端」の定義

 \mathit{bump}(X) = \left( \mathit{hd}(X) + 1 \right) \mathrm{::} \mathit{bump}(\mathit{tl}(X));

は、完全に理に適った関数を定義している。
無限の数のリストを引数として期待し、引数の各要素を1ずつ増やすことによって形成される無限のリストを結果として返す。

演算子の結合の優先度が分かりづらい(+ > ::)ので、括弧を追加している。

これを使って、

 \mathit{nats} = 0 \mathrm{::} \mathit{bump}(\mathit{nats});

と定義すれば、 \mathit{nat}はすべての自然数(※ここでは0も自然数に入れている)の無限リスト

[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...]

を定義する。
このリストは、この方程式の最小の(そして、実際のところ、唯一の)解となっている。

無限オブジェクトを持つ代数は、非常に異なったスタイルのIswimプログラミングを可能にし、とてもエレガントな(ただし従来とはかなり異なるかもしれない)プログラムを作れるようにする。
すべての素数の無限リスト

[2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 51 53 ...]

を出力(値)とするようなIswim( H)プログラムは、以下のようになる:

P
where
    nats = 1 :: bump(nats)
    where
        bump(X) = hd(X) + 1 :: bump(tl(X));
    end
    P = 2 :: primesin(tl(tl(nats)))
    where
        primesin(L) = if isprime(hd(L))
                      then hd(L)::primesin(tl(L))
                      else primesin(tl(L)) fi;
        isprime(n) = nodivsin(P)
        where
            nodivsin(Q) = (q * q > n) or ((n mod q ne 0) and nodivsin(tl(Q)))
            where
                q = hd(Q);
            end
        end
    end
end

このプログラムは、自然数の無限リストからすべての非素数を取り除くように動作する。
素数性の確認では、構築中のすべての素数の無限リスト Pを使用している。

Iswimファミリの「無限を扱える」メンバのインタプリタがすでに数多く存在している。
最もよく知られている(そして最初に現れた)のは、Turner(1979)のSASLとHenderson(1980)のLispkitである。
これらの言語は、元の高階言語に基づいていて、IswimではなくISWIMのバリエーションとなっている。
著者の1人(William W. Wadge)は、Warwick大学の同僚と一緒に、先に説明した代数 Hに基づいて、このような「ラムダ微積分」言語を実装した。
(本質的にIswim( H)である)この言語は、PIFL(POP-2 Influenced Functional Language)と呼ばれ、学部の関数型プログラミングの授業で使用されている。

PIFLはpLucidの「仲間の」言語で、同じ代数に基づいていて、同じ構文規則を使用している。
その結果、この2つの言語には大きな重なりがある(PIFLでもwhere再帰的となっている)。
多くのPIFLプログラムは(構文的に)pLucidプログラムでもあり、同じ出力を生成する。
pLucidとPIFLとの交わりが、(大雑把に言えば)一階のPIFL、すなわちIswim( P)となっている。
(PIFLではリストの再帰的定義が必ず \perpを返すわけではないので、ぴったりIswim( P)というわけではない)
Iswim( P)ーー言い換えれば一階で有限なPIFLーーのことを、「pIswim」と呼ぶことにする。
Iswim( H)(一階で無限なPIFL)のことは、「HyperpIswim」と呼ぶことにする。
したがって、pIswimはpLucidの部分言語であり、HyperpIswimはPIFLの部分言語である。
この節の例は、すべてのHyperpIswimのプログラムであり、(したがって)PIFLのプログラムでもある。

無限オブジェクトでの計算を可能にするIswimファミリのメンバは、より洗練された実装を必要とすることは明らかである。
Iswim( H)のような言語に直面したとき、Iswim( P)のような言語を(かろうじて)カバーしていた従来の逐次的な解釈は、完全に破綻することになる。
特に、変数の再帰的な定義は、完全に理に適っていて有用であるものの、代入文と見做しては意味をなさなくなる。

しかし、他の2つの実装方法(すなわち、簡約(reduction)と要求駆動(demand driven))は、拡張できる。
簡約による方法は最も簡単に拡張できる。
以下のような、無限のデータに対する演算を含む式をどうやって書き換えるかという式を使うだけである。

 \mathit{hd}(X \mathrm{::} Y ) = X;

PIFLインタプリタは、SASLやLispkitの実装と同様に、この方法で動作する。

要求駆動も拡張できるが、ここではさらに注意を要する。
ある式の値が無限の場合、その式の値を要求することは出来ない。
なので、代わりにその値の一部、すなわち、他の部分的な要求を満たすのに必要な分だけを要求しなければならない。
計算の過程で、同じ値のより多くの部分が要求されるかもしれないが、一度にすべての値を必要とすることはない(これはpLucidインタープリタの仕組みとなっている)。
しかし、オブジェクトの「一部」を構成する概念は問題のオブジェクトの性質に依存するため、一般的な要求駆動インタープリタではない。


ということで、無限リストに関する話。

Haskellで(遅延評価によって)無限リストを扱えるのと同様に、Iswimでも無限リストを含むような代数を考えることで、無限リストを使ったプログラミングが可能になる、と。
これを実際に実装した言語がPIFLという言語で、pLucidとは兄弟のような関係になっているっぽい。

というのも、pLucidだとリスト自体は有限のものしか扱えないはずなので、PIFLはpLucidの部分言語というわけではないから。
けど、じゃあpLucidは無限を扱えないのかというと、そんなことはなくて、pLucidではPIFLと違って変数自体が時間方向に関して無限リストのように伸びていっている。

対比で書くと、時間という概念は持ち込まずに無限リストというオブジェクトを作り上げたPIFLと、時間という概念を持ち込んで時間方向に無限リストにしたpLucidという感じ。
どちらも無限を扱えるように拡張されているのだけど、その伸びていく方向が違う。
なので、兄弟のような関係と言える。


何はともあれ、2章はこれで終わりで、長かったIswimの話もここまで。
3章は、このIswimに時間方向の値のリストを持つ代数を入れたLuswimという言語を見ていくことになるっぽい。

今日はここまで!