2024年10月20日日曜日

ゲーム・プログラミングの妙

プログラミングは楽しい.少なくとも,自分のために実施するプログラミングはいくら時間があっても足りないくらい.というわけで,今回はゲーム・プログラミングである.

題材はThe Chain Triangle Chess Gameというゲームである. Triggle Gameという名前でも流通しているらしい.Amazonで販売されていたゲーム盤のページから商品画像を引用する.

みてのとおり,ルールはとてもシンプルである.6角形の盤面に,37本の柱が立っている.プレイヤーは,交代でその柱を使って区切りを指定する.区切りの指定方法は,輪ゴムを4本の柱に引っ掛けて直線の区切りを設定するというものである.三角形の小さな区画の3辺が全て区切られたら,区切った人の領土になる(それを示すコマを置ける).

YouTubeのショート動画で楽しそうに遊んでいるのをみて,プログラミングの題材に選んだという次第.

環境の選択

最近であればPythonで書くべき?ゲームならUnityだろうか.まあ,慣れているからということと将来的に分散オンラインゲーム化することを見込んで,シンプルにHTMLとJavaScriptを用いて書くことにした.

GUIはHTMLのCanvasを利用する,Canvas要素に直に描いていく方法である.最も単純なパターンである.余計なライブラリに依存しないぶん,安定してメンテナンスできそうという目論見もある.

プログラミング

というわけで,1日くらいかけて実装した.ソースコードはGitHubに置いておいたので,興味がある人は参照してみてほしい.アプリは下記に置いてある.URLのパラメータを指定して2人〜4人の対戦に対応できるようにしてある.

プログラムを大まかに解説すると,GUI部品としてはWidgetクラスを継承したPole, Wall, Patchというクラスがそれぞれ,柱,壁,三角形の領域を表す.さらに,Containerクラスを継承したPoles,Walls,Patchesというクラスが,柱,壁,三角領域をまとめて管理するという構成になっている.

さらに,それぞれのインスタンスの関係を配列の配列で定義して,適切な参照関係を事前に用意してからゲームを始めている点も重要な点であろう.

遊び方

遊び方は,説明するまでもないのではなかろうか.まずは,どこでもよいから柱をクリックしてみよう.クリックした柱は黄色くなり,そこから直線上に3つ離れた場所にある柱が水色で表示される(次図).

水色で表示された柱以外は選択できない.なお,黄色の柱を再度クリックすると,選択を取り消せる.水色のどれかをクリックすると,最初に選択した黄色の柱と次にクリックした柱の間に区画が作られる.

3個の辺に区画ができた三角形は,その回を担当したプレイヤーの持ち物となる.色で示されるので分かりやすいだろう.全ての区画が誰かのものと定まった時点でゲームは終了,ページの最下部に得点状況が表示される(次図).

今後の課題

一通り実装できたので,今日のところはいったん完成としよう.しかし,まだいろいろと考えるべきところはある.細かな話をするとすでに壁ができているところに同じ壁を作るのを許容するかどうか.いまの実装では,その操作は許されているが,三角領域の獲得には何の寄与もしない.いわば「パス」を許していることになるが,ゲームとしてそれはよいのかどうか.検討が必要であろう.

オンライン対戦化させるのも興味深い.旧来の中央集権的サーバを用意して管理するもよし,WebRTCのような分散型の通信方法を利用するもよし,いろいろと工夫の余地はあろう.卒研生の題材にするってのも面白いかもしれないな.

2024年10月15日火曜日

タイポグリセミアで遊ぶ

皆さん「タイポグリセミア」という概念をご存知だろうか.まずは,次の文章を読んでみてほしい.

みさなん こにんちは こんのぶうしょは タポイグセリミアと よばれる げしょんうの デモスントーレションを しめしてまいす.

どうだろうか,何が書かれているか,すんなり読めたかな?

タイポグリセミアとは

もとは英語を対象とした現象であり,日本語で分かりやすく示すためにひらがな・カタカナで示している点の読みにくさは割り引いて考えていただきたい.タイポグリセミアとは,単語の始まりと終わりの文字さえ固定しておけば,中間の文字がある程度入れ替わってもすんなりと読めてしまうという現象を表す用語である.

先の文例では「皆さんこんにちは,この文章はタイポグリセミアと呼ばれる現象のデモンストレーションを示しています」をひらがな・カタカナで表記し,何箇所か文字の順序を入れ替えた.

さて,この現象をテーマに卒論を書きたいという学生が現れ,タイポグリセミアの軽重で読み方がどう変わるかを調べたいと言い出した.なかなか面白い着眼点である.さすがうちの学生だ.

タイポグリセミア度の定義

ところでその軽重の度合いをどう定義するんだ?というところで議論になり,次の定式化を提案した.

簡単にいえば,タイポグリセミア文とオリジナル文のレーベンシュタイン距離(編集距離)を測り,それを文の長さで正規化したものを軽重のレベルを示す値とする,というものである.

レーベンシュタイン距離(編集距離)とは,文Aと文Bがあったときに,文Bに何回の編集操作を加えれば文Aに一致するかという回数で距離を定義するというものである.たとえば,「はんばいき」と「まんばけん」という言葉があったとすると,「まんばけん」ー(1.「ま」を「は」に入れ替え)→「はんばけん」ー(2.「け」を「い」に入れ替え)→「はんばいん」ー(3. 最後の「ん」を「き」に入れ替え)→「はんばいき」となるので,それらのレーベンシュタイン距離LDの値は3,すなわち,LD(はんばいき,まんばけん)=3,となる.

タイポグリセミア文を作るサービスはいくつか提案されている.たとえばこれ.「タイポグリセミア変換ジェネレーター」.ただし,その度合いは調整できない.まずは,元の文章とタイポグリセミア度を入力して相応のタイポグリセミア文を作るところから始めよう.これを作るのはそう難しくないぞ.

追記:

実際にプログラムを作って試してみたら,編集距離ではなくもう少し違う定義でやったほうがよいということに気づいた.次の定義でやるべきかな?

2024年10月13日日曜日

今度のHCD研究発表会は面白そうな発表が盛りだくさん

2024年11月30日と12月1日に,芝浦工業大学豊洲キャンパスにおいてHCDフォーラム併設で開催される2024年度冬季HCD研究発表会は,これまでにない盛り上がりを見せそうで今からとても楽しみである.

次回開催の概要

先日,発表申込みを締め切り,プログラムを策定した.現在,発表者に確認をとっている段階であり,12月15日までに修正の申出がなければ,このプログラムで確定する.

年々,発表件数が増えているのは喜ばしいことであり,今回は口頭発表が22件,ポスター発表が26件と,合計48件もの発表が予定されている.

春の研究発表会では37件の発表があり,マルチトラックでの開催となった.マルチトラックでの開催を余儀なくされるほどの発表件数増加は,開催側として目標の一つではあったのだが,「聴きたい発表が重なって両方に参加できなかったのが残念」などと不満も出ていた.前回の反省点である.

今回はHCDフォーラムと併催という事情もあり,2日間開催,シングルトラック(ただしポスター発表は別会場)という,比較的余裕のある予定を組めた.来年の春開催をどうするかは悩ましいところではあるが,それはまた来年考えよう.

セッション紹介・初日

プログラムの変更はあるかもしれないが,各セッションを簡単に紹介する.

まずは【企業・組織とデザイン】 セッションである.座長は私が担当する.このセッションは,組織運営にHCDの観点を導入したケースやそれに関する研究発表を集めた.トップバッターは東京情報大学の河野先生で,研究室に漫画ドラゴンボール全巻を置いたら学生がどういう行動を示したかというものである.いきなりの変化球.

続いて【AI活用】セッションはその河野先生が座長をご担当してくださる.生成AIを用いていろいろやってみたという研究発表はHCD研究発表会以外でも最近よく見かけるテーマである.今回も3件ほどそのような発表申し込みがあったので,このセッションにまとめた.

昼休憩を挟んで,午後の最初のセッションは【実践報告(1)】,実践報告のセッションその1である.今回も多様な実践報告が予定されており,8件の実践報告があった.そのうちの4件が【実践報告(1)】で報告される.個人的には,本セッション最後に発表が予定されている「鶏中心的プロセス」がたいへん興味深く,注目である.

初日の最後は【文化と社会】 セッション.組織とデザインのセッションに入れるべきだとか,AI活用のセッションに入れるべきだというような発表もあるが,時間配分の問題もあり,文化的側面に着目してこのセッションに並べたことはご容赦いただきたい.

ポスターセッションは二日目を予定しているが,ポスターセッション会場には初日からポスターを掲示できるようにしておく予定である.ポスター発表者はできれば初日からポスターを掲示しておいてくださると,議論が深まるのではないだろうか.

セッション紹介・第2日

二日目の午前中は 【デザイン手法・他】 セッションである.うちの研究室にダークパターンをテーマに修論をまとめようとしている院生がいるので,「ダークパターンのユーザーへのインパクト ~ユーザー特性による違い~」という吉武研の学生による発表には注目している.

午後イチで,ポスター発表のセッションが2時間予定されている.先に述べたように今回はポスター発表が26件予定されているので,はたして2時間で全てをみて回ることができるだろうか.嬉しい悲鳴である.そのためにも,前日からポスターの掲示がなされていることを期待したい.

ポスター発表のあと,最後のセッションが【実践報告(2)】である.「人に依存するHCDからの脱却 〜AI技術の進展を見据えて〜」というご発表,人に注目するHCDからあえての脱却を図ろうとするそのご提案は興味深い.

他にも面白そうな発表が目白押しである.ポスター発表にはピクトグラムに関する発表も4件ある.3件は青学ピクトグラム研究所所長の伊藤先生が関与しているものだが,もう1件は芝浦工大吉武研からの発表である.人型デザインということで,ピクトグラムとHCDは親和性が高そうだ.

そんなわけで,皆様のご来場をお待ちしております.11月30日,12月1日は豊洲でお会いしましょう.

2024年9月21日土曜日

よくできた自動注文機

仁川空港の第2ターミナルにあるフードコートの自動注文機でユッケジャンクッパをオーダーしていただいたのだが,そのUXが「なかなかよく出来ているな」と感心した.フードコートにおいて,タッチパネルで注文するシステムや,注文が来たら呼び出しするベルのシステムは,最近は世界中どこでもある.しかし,それらを組み合わせたシステムを,私は,これまで見たことがなかった.

写真の右側になにやら数字が並んでいる以外は,最近ではきわめて一般的になった自動注文機である.クレジットカードのみ利用可能でキャッシュ不可というのもイマドキらしい.インストラクションに従い,注文と支払いを確定する.そこまでは通常のものと何ら変わらない.

面白いのはその後である.決済が終わると,右側の呼び出しベルがひとつ,ポップアップして飛び出てくるのだ.いやあ,びっくりした.右側に並んでいる数字は,呼び出しベルのID番号なのだった.

9314番の呼び出しベルがポップアップしたので,それを取り出し,席で待つ.小さな液晶画面まで付いていてそこにメッセージも表示される.至れり尽くせりである.

あとは,日本のフードコートでもよくある手順が進む.料理が出来上がると呼び出しベルが光り,ブーブー鳴りながら振動する.さあ,カウンターに受け取りに行こう.注文した料理が待っている.

最後の写真は注文のユッケジャンクッパ.たいへん美味しゅうございました.

2024年9月17日火曜日

2024年度台湾研修

例年,海外への研修は3年生と4年生(場合によっては2年生も)混在で出掛けているのだが,今年は,8月の頭に実施したベトナム研修には3年生だけが参加した.4年生は昨年のベトナム研修にすでに参加しているからという理由である.そこで,今年は,4年生は4年生で別の場所に行きたいと,台湾を訪問することなった.

9月14日に大学院入試がありまた18日から国際会議で韓国に出かけなければならないと,私が少し忙しかったため,9月の15日から17日,2泊3日というかなり多忙なスケジュールとなった.しかし,TSMC博物館(TSMC Museum of Inovation, 台積創新館)と故宮博物院を見学し,最先端のデジタル技術と悠久のアナログ資産の両極端に触れられたのは,学生たちにとってとてもよい経験になったのではないだろうか.

TSMC博物館は私も初めての訪問である.今をときめく半導体メーカーのTSMCが公開している博物館で,見学には予約が必要だが,丁寧で分かりやすいガイド付きで案内してくれる.なお,TSMC博物館は台北から少し離れた新竹科学工業園区にあり,やや行きにくいのが難点か.台湾の新幹線,高鐵に乗り高鐵新竹駅まで行き,そこからタクシーで1,000円程度である.

TSMC博物館の展示物は,デジタルデバイスで使用されている半導体の説明,集積回路(IC)の進化,そしてTSMC創設者,モリス・チャン博士の紹介といったところで,小規模ではあるものの,興味深い展示物が公開されている.

世界最大の半導体や同じく最小の半導体(体内に入れるカメラ)など,他ではなかなか見られないICや,古いCPUと最新のCPUでどれだけ処理能力が違うかなど,いかにも最先端のデジタルミュージアムという仕掛けが仕組まれていて面白い.

たとえばこの写真,一見,なんともない展示のようにみえるが,奥にある物体はVRゴーグルやコントローラの実物であり,手前は透明ディスプレイに表示されたデジタルコンテンツである.透明ディスプレイを上手に利用した展示になっている.

VRライドで仮想現実を体験できる施設もある.私はVR酔いにはわりと強いほうのつもりだが,隣に座った学生が途中で「ぐぇー気持ち悪い」と中断していたのでつられてちょいと酔ってしまった.

さて,せっかく台湾を訪れたからには現地の文化も楽しむべきだろう.海外の楽しみといえば現地の料理.夜は台湾料理と台湾啤酒を楽しんだ.台湾料理,美味しいよね.

2024年9月16日月曜日

こんなところでHCD(9)

さて,こんなところでHCDのシリーズ,はやくも9回目を迎えた.今回もバスルームからお届けするが,今回は珍しく「褒めてる」一件である.以下はいま宿泊している台北のホテル,Cosmos Hotel Taipeiのバスルームで見つけたインストラクションである.

これは実にわかりやすい.操作に迷う余地は全くない.よい事例として記録しておきたい.

2024年9月4日水曜日

木曽の宿場町めぐり

諸事情があり木曽の宿場町を巡るツアーの「ガイド兼ドライバー」を勤めることになった.訪れた宿場町は,訪問した順に,妻籠宿,馬籠宿,奈良井宿.元信州人としてそれらの宿場町については初等教育において机上で習ってはいたが,実際に訪れたのは今回が初めてである.

どの宿場町も風情があり,思っていたよりずっとよかった.それぞれについて感想を記しておきたい(写真は最後に訪れた奈良井宿).

妻籠宿

「つまごじゅく」と読む.ひなびた風情がたいへんよろしい.とにかく「江戸時代に造られた宿場町の保存に徹するぞ!」という姿勢がよい.観光客に迎合する気ゼロ.来るなら来いやーというストロングスタイル.そのくせ,「十八世紀中期に建築された旅籠を解体復元したものです」なんていう,江戸の空気をそのまま運んでくるようなタイムマシンがしれっと存在していたり,桝形の跡という街作りの仕掛けがそのまま残されていたりして,江戸大好きっ子が喜びそうなアトラクションがいくつかあって楽しい.

駐車場は有料で500円.駐車場の広さはそこそこあるのでハイシーズンの休日以外であれば問題なく駐車できそう.駐車場から宿場町へのアクセスは,可もなく不可もなくといったところか.クルマ以外で行きにくい場所であり,公共交通機関でのアクセスはよくない.

馬籠宿

「まごめじゅく」である.妻籠よりかなり観光地化が進んでいる.宿場町全体が坂になっており,伊香保温泉とか台湾の九份とかを彷彿とさせる……は言い過ぎか.観光地になってしまっているので,江戸の宿場町のロマンを求める人にはちと物足りないかもしれない.

北側入口から入り南側入口に向かって坂を下りながらの散策がよいだろう.南側入口から坂を上っていくのは,観光と健康を兼ねたい!という変態さん以外にはオススメしない.今回,90代の後期高齢者がいたので,クルマを北側入口近くの無料駐車場に停め,南に向かって坂を下りつつ,ドライバーである私は途中から坂を戻って南側入口付近までクルマを回すというサービスに徹した.かなりしんどかったので,ドライバー氏は送迎に徹したほうがよいかも.

北側入口にはさほど広くない無料駐車場がいくつかあったものの,南側入口付近には無料駐車場が見当たらなかった(有料駐車場はいくつかある).妻籠より馬籠のほうがメジャーっぽいので,駐車場問題は少し気になるところではある.

奈良井宿

最後は「ならいじゅく」.どちらかというと妻籠に近い「観光よりも保存」というスタンスを感じたが,妻籠ほどのストイックさはなく,交通の利便性もあり観光客はウェルカム!でも観光客に阿るのもね……という印象であった.

無料駐車場があり駐車場からのアクセスもよい.なにしろJRの奈良井駅からすぐという交通至便さである.訪れやすい宿場町といえよう.

無料駐車場の反対側には木曽の大橋なる檜の立派な橋が架けられていた.ん?木曽の大橋?そんなん知らんぞ?と調べてみたら,平成3年竣工だとか.そりゃ知らないわけである.私はすでに東京人になっていた.

所感

いずれの宿場町も,外国人観光客が半数以上で驚いた.平日だからということもあろうが,そもそも交通の便があまりよろしくない.交通至便な奈良井宿にしても,各駅停車しか停まらないJR奈良井駅まで東京から行くのはけっこうたいへんだ.なにしろその電車も一時間に一本しか走っていない.

彼らはいかにしてその存在を知ったのか,いかにしてそれぞれの宿場町にやってきたのか,どこに宿泊しているのか,いろいろ謎ではあるが,そのバイタリティは見倣いたいところであると,しみじみ思った.

2024年8月31日土曜日

国家による情報統制は意外と身近な出来事

中国のグレートファイアウォールは有名で,よく知られている.中国共産党に都合の悪いメディアには触れさせないようにと,海外のSNSなどには接続できないようにして国レベルで特定の通信をシャットアウトするものである.その是非はともかく,誰が言い始めたか知らねどグレートファイアウォールとはよく名付けたものだ.万里の長城(Great wall)にちなんで付けられたあだ名である.

ところで,特定のサイトを国レベルでブロックするというのはよくある話.今まで私が経験したのは,韓国,ミャンマー,インドネシア.他にもあったかな.

また,国家による情報統制とはやや事情が異なるが,欧州経済領域(EEA)およびイギリスからはYahoo! JAPANのサービスにアクセスできない(ここにその説明がある).日本から欧州に出張する人はたくさんいらっしゃるだろうから,Yahoo!ニュースが見られない!などという経験をした方も多かろう.

具体例

実例を示そう.次の画面はインドネシアの例である.この例で接続しようとした先は,どことは言わないがさほど問題のありそうなサイトではなかった.しかし,ブロックされていた.ちなみに,httpsでアクセスすると「信頼のおける接続ができない」旨のエラー画面になる.ハテ?と思い,同じサイトにhttpで再接続すると,次の画面が出てきた.

どこの国でも,アダルトサイトはブロックされがちである(重ねて指摘しておくが,上記はアダルトサイトに接続しようとしたわけではない.シークレットモードでアクセスしているのは,話題がちょいとセンシティブな話題だけに,用心したというだけだ).韓国では儒教的な配慮なのだろうか.インドネシアも同様な事情で,ムスリムの教義に沿わないからだろう.文化的背景や宗教との関係は国家レベルの情報アクセスコントロールに大きな影響を与えていることがわかる.

迂回方法など

蛇の道は蛇といったもので,このようなアクセス制限は仮想プライベートネットワーク(VPN)を張ればすり抜けられる.実際,どうしても必要な場合はVPNを利用して回避することもある.しかし,「研究用途のみに使うこと」というルールがあるため,濫用は避けなければならない.というわけで,あくまで,理論上は可能,ということにしておこう.なお,「VPN使えばOKよ」ということを「検証」するのも我々の研究の一環である.ああ,情報学者って便利だなあ(おいおい).

ところで,中国のグレートファイアウォールを体験したときの話である.久しく中国には行っていないので,かなり昔,2000年代なかばのことである.Linux上で動作しているFirefoxからアクセスしたのに,Internet Explorerの「DNS解決ができません」とかいうエラー画面が出てきて,稚拙すぎる……と思ったものだ(実話である).今はどうなっているだろうか.

2024年8月23日金曜日

こんなところでHCD(8)

毎回バスルームにケチを付けているわけではないが,ホテルのバスルームには落とし穴がいっぱい.今回も,ユーザのことを無視してカッコ良さ優先で設計したとしか思えないデザインのバスルームに遭遇した.

今回宿泊した部屋のバスルームはシャワーとトイレが隣り合っている作りで,スライドドアで手前の洗面所と区切られている.幸い,今回は単身で宿泊しているが,二人で泊まっているときに問題が生じそう.

どちらかがシャワー使用中のときにトイレ行きたくなったらどうする?あるいはその逆は?プライバシーもへったくれもない.まあ,気にすんなということか.

トイレ使用中にも問題があった.この写真では分かりにくいが,便器に座った状態では足が扉の外に出てしまう.使用中にシャワーに入ろうとすると,大股びらきにするしかない.もちろんガラス越しに丸見えである.かっこ悪ぅ.

2024年8月19日月曜日

数学的思考とは

次のマンガは,FacebookのMeme for mathematiciansというページに掲載されていたものである.皆さん,いかがだろうか.共感する?しない?

さて,このマンガ,数学的思考あるいは数学的センスを身につけているひとにとっては,全くナンセンスである.なぜならば,1 = 0.99999…… という等式は,きわめて「当たり前」にしか感じないからである.

0.99999……,この表現を「数値そのもの」ととるか,あるいは,「数値+演算子(operator)」,「操作(operation)」または「式(formula)」ととるかで解釈が異なるだろう.前者と捉えた場合,最後のコマのようにwhat the fuckと感じるのもさもありなん,ではある.

後者の考え方によれば,0.99999という数に「……」という操作(オペレーション)が加わっていると理解できる.「……」は「その後に9が延々と続く」という操作である.分かりにくければ,循環小数を表すときに使われる,「0.9*」(9の上にドットを書く,この場合は適切に書けないのでアスタリスクで表現するものとする)という表現ではどうだろうか.この場合,「0.9」という数値に「*」という演算子が与えられていると捉えられよう.そして,そう考えれば,1 = 0.9* という式に,何の違和感も覚えないはず.

なお,初等数学で習う演算子のほとんどは,演算子の対象とする被演算子(operand)が二つである二項演算子(たとえば a + b とか,a ÷ b の場合,+や÷が演算子で,aとbが被演算子である.被演算子が2つあるので,二項演算子という)である.対して,今回考えた0.9*は,「*」という演算子に対して被演算子が0.9である,単項演算子なので,その点についても違和感を覚えるかもしれない.しかし,皆さんお馴染みの「√」記号,これを「平方根をとる」という演算子と捉えれば,被演算子が一つなので,それも,単項演算子である.階乗を表す「!」,たとえば 4! = 24 も,単項演算子(被演算子の後ろに置くので,後置演算子という)である.

ところで,1 = 0.9* にまだ納得できないひとは,これならばどうだろう?1=1^♾️ あるいは 1=9^0,前者は1を延々に掛け続ける操作,後者は9のゼロ乗である.いずれも,等式としては正しい.1=1^♾️ や 1=9^0 を理解できるのならば,1 = 0.9* を受け入れるのは,そう難しくないと思うのだが.