2023年4月10日月曜日

教養強化合宿(6)

教養強化合宿(5)からの続き

外山恒一が,Facebookで今回の8日間の合宿で取り上げた人物のリストを公開していた。その数は約165人。一方,前回のnoteに書いていた教養強化合宿余興で登場した人物の数は,約260人。その和集合をとって,重複したものを◎,後者にのみ含まれたものを●で表した。その中で自分が名前くらいは聞いたことがある人は約200名弱(3/4)だった。✓をつけてある。

このリストをHTML化にするにあたって,GPT-4に作業をさせてみた。例えば,次のような自然言語プログラミングを行うわけだ。
『htmlファイル中に人名リストを埋め込もうとしています。次のような1行のテキストデータを,●会田誠(あいだまこと)✓ このようなhtml形式に変換してほしいのです。●<a href="https://ja.wikipedia.org/wiki/会田誠">会田誠</a>(あいだまこと)✓<br /> 以下にデータを与えますので,すべて同様な変換を施してください。』

入力データサイズや一度に出力できるデータのサイズには制限があるものの,正しい結果が得られる。問題は,時間がかかることだ。GPT-4やChatGPTは対話システムとして公開されているので,そのスピードでしか文字が出力されない。毎秒8文字程度なので,このままでは実用的な仕事にならない。 潜在能力はあるし,将来的に出力をファイル化できればこれは簡単にクリアできる話なのだが。

現時点では,GPT-4に直接実行させるのではなく,それを実行するプログラムを考えさせるのがよい。そこで,さきほどの命令に「これを実現するPerlプログラムを書いてください」としてほぼ思った結果が得られた。少し人間の手を加えてチューニングした結果が次のものだ。実行時間問題はこうして解決される。

#!/usr/bin/perl

use strict;

use warnings;

use utf8;


binmode(STDIN, ':encoding(utf8)');

binmode(STDOUT, ':encoding(utf8)');


while (my \$line = <>) {

    chomp \$line;

    if (\$line =~ /([●◎○])(.+?)((.+?))(.+?)([✓_])/) {

        my \$kigou = \$1;

        my \$name = \$2;

        my \$name_kana = \$3;

        my \$prop = \$4;

        my \$check = \$5;

        my \$url = "https://ja.wikipedia.org/wiki/\$name";

        print "\$kigou<a href=\"\$url\">\$name</a>(\$name_kana) \$prop \$check<br />\n";

    }

}

なお,リンク先はWikipediaとしたが,2-3名以外はすべてこれでカバーすることができている。自分が普段書くような簡単なプログラムは,文法を確認しながらロジックを考えるのが面倒だから,GPT-4まかせになってしまうのがほぼ確定だ。で,プログラミング教育とは何?
 外山恒一教養強化合宿の登場人物リストを参照の上編集
会田誠(あいだまこと) 画家 ✓
青島幸男(あおしまゆきお) 放送作家 ✓
赤尾敏(あかおびん) 大日本愛国党 ✓
あがた森魚(あがたもりお) 赤色エレジー ✓
秋田明大(あきためいだい) 日大全共闘 ✓
秋山祐徳太子(あきやまゆうとくたいし) 現代美術家 ✓
アグネス・スメドレー(あぐねすめどれー) 中国共産党 _
浅羽通明(あさばみちあき) 評論家 ✓
東浩紀(あずまひろき) ゲンロン ✓
足立正生(あだちまさお) 日本赤軍 _
天野恵一(あまのけいいち) 評論家 _
雨宮処凛(あまみやかりん) 反貧困ネットワーク ✓
網野善彦(あみのよしひこ) 歴史学者 ✓
荒畑寒村(あらはたかんそん) 社会主義者 ✓
アレクサンドル・ソルジェニーツィン(あれくさんどるそるじぇにーつぃん) 収容所群島 ✓
アレン・ギンズバーグ(あれんぎんずばーぐ) 詩人 _
アンジェイ・ワイダ(あんじぇいわいだ) 映画監督 ✓
アンディ・ウォーホル(あんでぃうぉーほる) 現代美術家 ✓
アントニオ・グラムシ(あんとにおぐらむし) イタリア共産党 _
家永三郎(いえながさぶろう) 教科書裁判 ✓
イサドラ・ダンカン(いさどらだんかん) 舞踏家 ✓
石川一雄(いしかわかずお) 狭山裁判 ✓
石原莞爾(いしわらかんじ) 満州事変 ✓
石牟礼道子(いしむれみちこ) 苦海浄土 ✓
磯部浅一(いそべあさいち) 粛軍に関する意見書 _
五木寛之(いつきひろゆき) 作家 ✓
いとうせいこう(いとうせいこう) タレント ✓
伊藤律(いとうりつ) 日本共産党 ✓
伊藤野枝(いとうのえ) 婦人解放運動 ✓
井上嘉浩(いのうえよしひろ) オウム真理教 ✓
忌野清志郎(いまわのきよしろう) ロック歌手 ✓
宇井純(ういじゅん) 公害問題 ✓
植垣康博(うえがきやすひろ) 連合赤軍 ✓
上杉慎吉(うえすぎしんきち) 君権学派 _
上田耕一郎(うえだこういちろう) 日本共産党 ✓
内田裕也(うちだゆうや) 樹木希林 ✓
ウディ・アレン(うでぃあれん) 映画監督 ✓
宇野弘蔵(うのこうぞう) 宇野経済学 ✓
江田三郎(えださぶろう) 社会市民連合 ✓
江藤淳(えとうじゅん) 評論家 ✓
衛藤晟一(えとうせいいち) 全国学協 ✓
エドガー・スノウ(えどがーすのう) 中国の赤い星 _
榎美沙子(えのきみさこ) 中ピ連 ✓
大島渚(おおしまなぎさ) 映画監督 ✓
太田竜(おおたりゅう) 第四インターナショナル ✓
大塚英志(おおつかひでし) マンガ評論家 ✓
大宅壮一(おおやそういち) 評論家 ✓
岡田嘉子(おかだよしこ) ソ連逃避行 ✓
岡留安則(おかどめやすのり) 噂の真相 ✓
岡林信康(おかばやしのぶやす) 友よ ✓
岡本公三(おかもとこうぞう) テルアビブ事件 ✓
小川紳介(おがわしんすけ) 三里塚シリーズ ✓
奥田愛基(おくだあき) シールズ ✓
小熊英二(おぐまえいじ) 社会学者 _
小倉千加子(おぐらちかこ) フェミニスト ✓
小沢開作(おざわかいさく) 小沢征爾 ✓
小畑達夫(おばたたつお) 日本共産党スパイ事件 _
笠原和夫(かさはらかずお) 仁義なき戦い _
柏崎千枝子(かしわざきちえこ) ゲバルトローザ _
片山潜(かたやません) 社会主義者 ✓
加藤登紀子(かとうときこ) ひとり寝の子守歌 ✓
加藤直樹(かとうなおき) 九月,東京の路上で ✓
椛島有三(かばしまゆうぞう) 日本青年協議会 ✓
神近市子(かみちかいちこ) 婦人運動家 ✓
ガヤトリ・スピヴァク(がやとりすぴゔぁく) 文芸評論家 _
萱野茂(かやのしげる) アイヌ文化 _
香山リカ(かやまりか) 精神科医 ✓
川上音二郎(かわかみおとじろう) オッペケペー ✓
川口大三郎(かわぐちだいざぶろう) 早稲田構内リンチ事件 ✓
川田龍平(かわたりゅうへい) 薬害エイズ ✓
川本三郎(かわもとさぶろう) 評論家 ✓
菅孝行(かんたかゆき) 反天皇制運動連絡会 _
管野スガ(かんのすが) 女性新聞記者 _
樺美智子(かんばみちこ) 60年安保 ✓
カール・リープクネヒト(かーるりーぷくねひと) ローザ・ルクセンベルグ _
木下ちがや(きのしたちがや) こたつねこ ✓
木村三浩(きむらみつひろ) 一水会 _
清義明(せいよしあき) フリーライター ✓
金賢姫(きむひょんひ) 大韓航空機爆破事件 ✓
ギー・ドゥボール(ぎーどぅぼーる) アンテルナシオナル・レトリスト _
熊沢天皇(くまざわてんのう) 皇位僭称者 _
倉橋由美子(くらはしゆみこ) パルタイ ✓
蔵原惟人(くらはらこれひと) 評論家 ✓
栗本慎一郎(くりもとしんいちろう) 経済人類学 ✓
鴻上尚史(こうかみしょうじ) 劇作家 ✓
江青(こうせい) 文化大革命 ✓
荒岱介(あらたいすけ) ブント戦旗派 _
古賀政男(こがまさお) 明治大学マンドリン倶楽部 ✓
粉川哲夫(こがわてつお) 批評家 ✓
小阪修平(こさかしゅうへい) 東大全共闘 ✓
児玉誉士夫(こだまよしお) ロッキード事件 ✓
五島勉(ごとうべん) ノストラダムスの予言 ✓
小林よしのり(こばやしよしのり) ゴーマニズム宣言 ✓
コンスタンチン・スタニスラフスキー(こんすたんちんすたにすらふすきー) 演出家 ✓
権藤成卿(ごんどうせいきょう) 農本主義思想家 _
今野晴貴(こんのはるき) POSSE _
西光万吉(さいこうまんきち) 水平社宣言 ✓
斎藤幸平(さいとうこうへい) 人新世の資本論 ✓
堺利彦(さかいとしひこ) 社会主義者 ✓
坂口恭平(さかぐちきょうへい) 建築家 _
坂口弘(さかぐちひろし) あさま山荘事件 ✓
桜井大造(さくらいたいぞう) 風の旅団 _
桜井誠(さくらいまこと) 在日特権を許さない市民の会 ✓
佐々淳行(ささあつゆき) 警察官僚 ✓
笹川良一(ささがわりょういち) 日本船舶振興会 ✓
佐藤悟志(さとうさとし) 青狼会 ✓
サミュエル・ベケット(さみゅえるべけっと) 劇作家 ✓
沢木耕太郎(さわきこうたろう) ノンフィクション作家 ✓
椹木野衣(さわらぎのい) 美術評論家 _
ジェリー・ルービン(じぇりーるーびん) シカゴ・セブン _
塩見孝也(しおみたかや) 赤軍派議長 ✓
重信房子(しげのぶふさこ) 日本赤軍 ✓
島成郎(しましげお) 全学連書記長 ✓
島田雅彦(しまだまさひこ) 作家 ✓
清水幾太郎(しみずいくたろう) 社会学者 ✓
清水丈夫(しみずたけお) 中核派 ✓
シモーヌ・ヴェイユ(しもーぬゔぇいゆ) 哲学者 ✓
ジャック・ケルアック(じゃっくけるあっく) 小説家 _
ジャニス・ジョプリン(じゃにすじょぷりん) ロック歌手 ✓
ジャン・リュック・ゴダール(じゃんりゅっくごだーる) 映画監督 ✓
正力松太郎(しょうりきまつたろう) 読売新聞社 ✓
ジョニー・ロットン(じょにーろっとん) パンクロック _
ジョルジョ・アガンベン(じょるじゅあがんべん) 哲学者 _
ジョルジュ・ソレル(じょるじゅそれる) 哲学者 _
ジョン・リード(じょんりーど) レッズ ✓
ジョージ・ハリスン(じょーじはりすん) ビートルズ ✓
ジョーン・バエズ(じょーんばえず) フォーク歌手 ✓
白井聡(しらいさとし) 白井克彦 ✓
菅野完(すがのたもつ) 日本会議の研究 ✓
鈴木忠志(すずきただし) 演出家 ✓
スチュアート・ホール(すちゅあーとほーる) 文化理論家 _
ストークリー・カーマイケル(すとーくりーかーまいける) 差別撤廃闘争指導者 _
スラヴォイ・ジジェク(すらゔぉいじじぇく) 哲学者 ✓
大道寺将司(だいどうじまさし) 東アジア反日武装戦線 ✓
高田渡(たかだわたる) フォーク歌手 ✓
高野実(たかのみのる) 高野猛 ✓
高畠素之(たかばたけもとゆき) 国家社会主義 _
滝田修(たきたおさむ) 新左翼活動家 ✓
宅八郎(たくはちろう) タレント ✓
武井昭夫(たけいあきお) 全学連初代委員長 _
竹中労(たけなかろう) ルポライター ✓
田嶋陽子(たじまようこ) フェミニスト ✓
橘孝三郎(たちばなこうざぶろう) 農本ファシスト _
立松和平(たてまつわへい) 作家 ✓
田中清玄(たなかせいげん) CIAフィクサー ✓
田中美津(たなかみつ) ウーマン・リブ _
谷川雁(たにがわかり) 詩人 ✓
谷口雅春(たにぐちまさはる) 生長の家 ✓
田宮高麿(たみやたかまろ) よど号事件 ✓
筑紫哲也(つくしてつや) ジャーナリスト ✓
知花昌一(ちばなまさかず) 平和運動家 _
千葉雅也(ちばまさや) 哲学者 ✓
チャンドラ・ボース(ちゃんどらぼーす) インド独立運動 ✓
チャールズ・マンソン(ちゃーるずまんそん) マンソンファミリー _
陳独秀(ちんどくしゅう) 中国共産党 _
つかこうへい(つかこうへい) 劇作家 ✓
津田大介(つだだいすけ) ツダる ✓
堤清二(つつみせいじ) 辻井喬 ✓
鶴見済(つるみわたる) 完全自殺マニュアル _
ティモシー・リアリー(てぃもしーりありー) 心理学者 _
峠三吉(とうげさんきち) 原爆詩集 ✓
唐十郎(からじゅうろう) 状況劇場 ✓
頭山満(とうやまみつる) 国家主義者 ✓
戸川純(とがわじゅん) 女優 ✓
徳田球一(とくだきゅういち) 日本共産党 ✓
戸村一作(とむらいっさく) 三里塚芝山連合空港反対同盟委員長 ✓
トルーマン・カポーティ(とるーまんかぽーてぃ) 小説家 ✓
仲井戸麗市(なかいどれいいち) RCサクセション ✓
中川敬(なかがわたかし) ソウル音楽家 _
永田洋子(ながたようこ) 連合赤軍 ✓
中野重治(なかのしげはる) 小説家 ✓
中野正剛(なかのせいごう) ジャーナリスト ✓
永山則夫(ながやまのりお) 無知の涙 ✓
ナジ・イムレ(なじいむれ) ハンガリー動乱 _
ナンシー関(なんしーせき) コラムニスト ✓
ナンシー・スパンゲン(なんしーすぱんげん) セックスピストルズ _
難波大助(なんばだいすけ) 極左活動家 ✓
西尾幹二(にしおかんじ) 新しい歴史教科書を作る会 ✓
西部邁(にしべすすむ) 保守思想家 ✓
蜷川幸雄(にながわゆきお) 演出家 ✓
沼正三(ぬましょうぞう) 家畜人ヤプー ✓
野坂参三(のさかさんぞう) 日本共産党 ✓
野田秀樹(のだひでき) 劇作家 ✓
野間易通(のまやすみち) レイシストをしばき隊 ✓
野村秋介(のむらしゅうすけ) 民族派活動家 ✓
萩尾望都(はぎおもと) 漫画家 ✓
萩原朔美(はぎはらさくみ) 映像作家 _
パティ・スミス(ぱてぃすみす) クイーンオブパンク _
花田清輝(はなだせいき) 文芸評論家 ✓
埴谷雄高(はにやゆたか) 小説家 ✓
浜田幸一(はまだこういち) 政治家 ✓
日比野克彦(ひびのかつひこ) アーティスト ✓
ヒューイ・ニュートン(ひゅーいにゅーとん) 公民権運動 _
平岡正明(ひらおかまさあき) 評論家 ✓
平田オリザ(ひらたおりざ) 劇作家 ✓
ビリー・ホリデイ(びりーほりでい) ジャズ歌手 ✓
広瀬隆(ひろせたかし) 東京に原発を ✓
ピート・シーガー(ぴーとしーがー) フォーク歌手 ✓
福田和也(ふくだかずや) 文芸評論家 _
福田恆存(ふくだつねあり) 評論家 ✓
福本和夫(ふくもとかずお) 経済学者 ✓
藤岡信勝(ふじおかのぶかつ) 新しい歴史教科書を作る会 ✓
船本洲治(ふなもとしゅうじ) 革命思想家 _
フランシス・フクヤマ(ふらんしすふくやま) 政治経済学者 ✓
古田重二良(ふるたじゅうじろう) 日本大学理事長 _
不破哲三(ふわてつぞう) 日本共産党 ✓
別役実(べつやくみのる) 劇作家 ✓
ベルトルト・ブレヒト(べるとるとぶれひと) 劇作家 ✓
某Fラン政治学者(五○井郁○) (○の○○○お) 政治学者 ✓
ボブ・マーリー(ぼぶまーりー) レゲエ歌手 ✓
本多勝一(ほんだかついち) 作家 ✓
本島等(もとしまひとし) 長崎市長 ✓
真島昌利(ましままさとし) ギタリスト _
松崎明(まつざきあきら) 革マル派副議長 ✓
松沢呉一(まつざわくれいち) コラムニスト ✓
松下竜一(まつしたりゅういち) 作家 ✓
松本治一郎(まつもとじいちろう) 部落解放同盟 ✓
松本哉(まつもとはじめ) 素人の乱 ✓
マハリシ・ヨギ(まはりしよぎ) 超越瞑想 _
黛敏郎(まゆずみとしろう) 作曲家 ✓
マルコム・マクラレン(まるこむまくられん) セックスピストルズ _
マルセル・デュシャン(まるせるでゅしゃん) ダダイスト ✓
三上卓(みかみたく) 青年日本の歌 _
三上寛(みかみひろし) フォーク歌手 ✓
ミサオ・レッドウルフ(みさおれっどうるふ) 首都圏反原発連合 _
道浦母都子(みちうらもとこ) 歌人 ✓
南伸坊(みなみしんぼう) イラストレーター ✓
宮﨑勤(みやざきつとむ) 連続幼女誘拐殺人事件 ✓
宮崎滔天(みやざきとうてん) 社会運動家 ✓
宮崎学(みやざきまなぶ) 評論家 ✓
宮崎龍介(みやざきりゅうすけ) 白蓮事件 _
宮沢章夫(みやざわあきお) 劇作家 ✓
宮武外骨(みやたけがいこつ) ジャーナリスト ✓
宮本百合子(みやもとゆりこ) 作家 ✓
向井孝(むかいたかし) 社会運動家 _
森達也(もりたつや) ドキュメンタリーディレクター ✓
森田必勝(もりたひっしょう) 三島由紀夫事件 ✓
森田実(もりたみのる) 政治評論家 ✓
森恒夫(もりつねお) 連合赤軍 ✓
安岡正篤(やすおかまさひろ) 思想家 ✓
柳原白蓮(やなぎはらびゃくれん) 歌人 ✓
矢部史郎(やぶしろう) 思想家 _
山岡強一(やまおかきょういち) 映画監督 _
山口二矢(やまぐちおとや) 浅沼稲次郎暗殺 ✓
山崎博昭(やまざきひろあき) 第1次羽田事件 ✓
山下洋輔(やましたようすけ) ドバラダ門 ✓
山田塊也(やまだかいや) コミューン運動“部族” _
山本太郎(やまもとたろう) れいわ新選組 ✓
山本夜羽音(やまもとよはね) 漫画家 ✓
山本義隆(やまもとよしたか) 東大全共闘 ✓
湯浅誠(ゆあさまこと) 社会活動家 ✓
吉本隆明(よしもとりゅうめい) 擬制の終焉 ✓
ラモン・メルカデル(らもんめるかでる) 暗殺者のメロディ _
劉少奇(りゅうしょうき) 文化大革命 ✓
林彪(りんぴょう) 中国共産党 ✓
ルイジ・ピランデルロ(るいじぴらんでるろ) 劇作家・小松左京  ✓
レニ・リーフェンシュタール(れにりーふぇんしゅたーる) 映画監督 ✓
ろくでなし子(ろうでなしこ) 漫画家 ✓
ロバート・ジョンソン(ろばーとじょんそん) ブルースギター _
渡辺京二(わたなべきょうじ) 逝きし世の面影 ✓

2023年4月9日日曜日

アニメーション

GPT-4に次のようなプロンプトを与えた。
・プログラミング言語のprocessingを知っていますか?
・簡単なアニメーションで,マウスで操作できるカラフル(淡いパステルカラー)でかわいい見本プログラムのコードを書いてもらえますか。
・ありがとうございます。マウス操作は必要ないので,100個ぐらいの小さなボールが動きまわるような見本に修正してもらえますか。
・どうもありがとうございます,とてもすてきですね。ところでこのボールは領域の境界で反射してますが,ボール同士の衝突は考慮されておらずそのまま透過しているようです。衝突するボールが反射するようにできますか。ボールの円の境界で反射方向を決定するのが面倒ならば,ボールの中心座標で代替する近似を使うことも検討してください。

その結果,次のようなコードが生成された。パラメタを少し修正して,tifファイルに書き出した。これを使ってProcessingのツール/ムービーメーカーでアニメーションGIFに変換した。よくある例題だから,学習済みなのだろうけれど,なかなかのものだ。


図:GPT-4で生成したProcessingアニメーション

2023年4月8日土曜日

マインドマップ

へのへのもへじからの続き

画像生成AIは引き続き進化中だ。一方,GPT-4を用いて画像を生成する方法がいくつか考えられる。(1) アスキーアートの文字列を出力,(2) SVGのコードを出力,(3) 画像描画が簡単なプログラミング言語等のコードを出力(Processing,Javascript,Python,Mathematica,PlantUML,LaTeXのTikZ)するなどだ。

プロンプト工学を駆使せずに簡単にできる範囲で試してみた。左はうさぎのアスキーアート,右は,植物と鳥のイメージということだった。前者の入力は「アスキーアートを知っていますか。ひとつ例をかいてみてください」(中略)「その例は20-30文字程度ですね。100文字には到達していません。もう少し複雑なものを書いてください」。後者は,「植物の絵を表すsvgコードを出力し下さい」「なかなかいい感じですね。もっと複雑にするとともに,同じ程度複雑な動物を隣に描いてください」の結果だ。

図:GPT-4にかかせたアスキーアートとSVG

さて,ChatGPTにマインドマップを書かせるという例題があったので,自分でも試してみた。昨年の9月に,PlantUMLというツールをインストールしていた。すっかり忘れていた。このPlantUMLは,マインドマップを書かせる機能も備えている。

そこで,次のようなプロンプトを与えた。「スマホのアプリ開発を機種(OS)やクラスプラットホーム別に整理した(開発環境とブログラム言語)マインドマップを出力するPlantUMLコードを書いてください」その結果をUMLファイルとして保存し,PlantUMLにかけると次の画像ファイルができた。


図:GPT-4が生成したマインドマップ

2023年4月7日金曜日

フリクション

フリクションは,パイロットが出している消せる筆記具である。フリクソンではない。日本では2007年にフリクションボールが発売されたが,たぶん,そのころに買ってしばらく使っていた。まあまあ楽しいのだけれど,ある日,大学事務局の梶山さんが,ジェットストリームが書きやすいといってるのを聞いて,早速試してみたところ確かに書き心地がよかった。それ以来,三菱鉛筆のジェットストリーム3色ボールペン(0.7mm黒赤青)をずっと使い続けている。

フリクションボールの原理は,ボールペンの後ろにあるゴムでこすると摩擦熱でインクが変性して消えるというものだ。ウィキペディアによると「摩擦熱による消色温度が65 °Cに設計されていいて,これを上回る高温の環境では書いた内容が全部消える。逆に復色温度(-20 °C)を下回る環境では消した内容まで復活する」とのことだが先日まで知らなかった。

冷やすと消えたのが復活するといわれ,「本当かよ?」といって冷凍庫から保冷剤を出してきて挟んでみた。渦巻きを書いて消したのだがそれが復活する気配もない。違うんじゃないというと,-20°Cが必要だという。仕方がないので,メモ用紙を冷凍庫に突っ込んでそのまま忘れていた。

次の日,なんで冷凍庫にメモ用紙があるのというので,あわてて回収したところ,確かに消えたはずの渦巻きが復活していた。昔の日本の技術はすごかった。


写真:冷凍庫で一晩過ごして復活した渦巻き


2023年4月3日月曜日

2023年4月2日日曜日

2023年4月1日土曜日

2023年3月31日金曜日

2023年3月29日水曜日

2023年3月27日月曜日

アインシュタインモノタイル

ある図形で平面を埋めるのが,平面充填問題tiling/tessellation)だ。

正三角形,正方形,正六角形で充填できることは簡単にわかる。平行四辺形や2つ組み合わせると平行四辺形になる任意の三角形も同様だ。任意の四角形を2つ組み合わせると。平行六辺形になって,これで敷き詰めることもできる。四角形の内角の和が360度なので一点の回りに各角が集まるようにすれば充填できそうな気もする。たぶん。

自明でないものとして,五角形がある。五角形による平面充填15のパターンに限られていることが証明されているらしい。ここまでの例はすべて並進対称性=周期性を持つ場合になっている。非周期的な充填の例としては,二種類の菱形から構成されるペンローズ・タイルが有名だ。磁石付きペンローズ・タイルの玩具をどこかの博物館でお土産で買ってきたことがある。

最近,1種類の多角形だけで非周期的な平面充填ができるものが見つかった。これはEinstein  Problem と呼ばれる未解決問題だった。なお,物理学者のアインシュタインではなく,ドイツ語のアイン(Ein)=1つの,シュタイン(Stein)=石からきている。まだ論文は査読中らしいが,1つの解が存在していることが分かる。

GPT-4を使ってPythonでこの図形を出力するプログラムを作成した。それらしい結果がでたが,間違っている。これに手を加えるのは面倒だったので,Mathematicaに翻訳してもらって背景のパターンを求めた。それに手を加えた結果が次の通りである。
(*ベクトルaとbを定義します。*)
w = 7; o = {0, 0}; 
a = {1, 0}; b = {1/2, Sqrt[3]/2}; 
c = {3/4, Sqrt[3]/4}; d = {0, Sqrt[3]/2};
e = {3/2, Sqrt[3]/2}; f = {0, Sqrt[3]};
gl0 = Table[
   Graphics[{Gray, Dotted, Line[{k*d - w*a, k*d + w*a}]}], {k, -w, w}];
gl1 = Table[
   Graphics[{Gray, Dotted, Line[{w*b + k*a, -w*b + k*a}]}], {k, -w, w}];
gl2 = Table[
   Graphics[{Gray, Dotted, Line[{-w*b + (w + k)*a, w*b + (k - w)*a }]}], {k, -w, w}];
gr0 = Table[
   Graphics[{Gray, Dotted, Line[{{k*3/4, -w}, {k*3/4, w}}]}], {k, -w, w}];
gr1 = Table[
   Graphics[{Gray, Dotted, Line[{w*(d - c) + k*d, -w*(d - c) + k*d}]}], {k, -w, w}];
gr2 = Table[
   Graphics[{Gray, Dotted, Line[{w*c + k*d, -w*c + k*d}]}], {k, -w, w}];

(*drawPoint関数を定義します。この関数は、整数m,nと色を引数に取り、
ベクトルv=m*a+n*bを計算して描画します。*)
drawPoint[x_, y_, c_, m_, n_] := 
 Graphics[{PointSize[0.01], c, Point[m*x + n*y]}]

(*乱数を使ってm,nの組を生成し、点を描画する例です。*)
drawRandomPoints[x_, y_, cl_, de_, np_] := 
 Module[{m, n, points},(*乱数でmとnの値を生成します。*)
  m = RandomInteger[{-de, de}, np];
  n = RandomInteger[{-de, de}, np];
  (*点を描画します。*)
  points = Table[drawPoint[x, y, cl, m[[i]], n[[i]]], {i, np}];
  (*プロットを表示します。*) 
  Show[points, Axes -> True, PlotRange -> {{-de, de}, {-de, de}}, 
   AspectRatio -> 1]]

(*例として、ランダムな点を描画します。*)
g1 = drawRandomPoints[a, b, Red, 7, 1000];
g2 = drawRandomPoints[c, d, Blue, 7, 1000];
g3 = drawRandomPoints[e, f, Green, 4, 400];
gp = Graphics[{LightRed, EdgeForm[Gray], 
    Polygon[{o, d, d + a/2, d + (a + b)/2, c + (a + b)/2, 
      c + (a + b)/2 - d, c + a + b/2 - d, c + 3 a/2 a - d, 3 a/2 - d, 
      3 a/2 - c, 3 a/2 - c - b/2, a/2 - c - b/2, -a/2 - b/2, o}]}];
Show[gp, gl0, gl1, gl2, gr0, gr1, gr2, g1, g2, g3, PlotRange -> {{-6, 6}, {-6, 6}}]


図:アインシュタイン図形とその背景格子

背景格子の作成で,無駄に沢山の点をランダムに打っているが,まあ気分の問題なので,気にする必要はない。

[1]An aperiodic monotile exists!(The Aperiodical)
[2]An Aperiodic Monotile(D. Smith, J. S. Myers, C. S. Kaplan, and C. Goodman-Smith)

2023年3月26日日曜日

へのへのもへじ

ネット上で誰かが,「へのへのもへじ」より「へめへめくつし」がいいねといった。ホウ,そんなものがあったのか,と一瞬思ったけれど,そういえば昔いろいろと試していたような気もする。それほどビックリする話題ではない。

むしろ,テレビで外国人の平熱が37度台であると知ったことの方が驚きだ。これは筋肉が多い人について成り立つらしく,日本のボディビルダーに体温がやはり37度台であることを検証していた。どこまで正しいかわからないけれど。

そこで,へのへのもへじ出力プログラムを作ってみた。最初は,TeXのTikZで書いた。こんな感じ。ベジェ曲線が手軽に使えるのがありがたい。

\begin{tikzpicture}
\draw[gray, step=1, dotted] (0,0) grid (6,6);
\draw (2,5) node[below]{\Huge \${〜}\$};
\draw (2,4) node[below]{\Huge \${め}\$};
\draw (4.2,5) node[below]{\Huge \${〜}\$};
\draw (4.2,4) node[below]{\Huge \${め}\$};
\draw (3,3) node[below]{\Huge \${く}\$};
\draw (3.3,1.9) node[below]{\Huge \${つ}\$};
\draw [ultra thick] (1,5.5) .. controls (0.5,2) and (1.25,0.75)  ..(2,0.5);
\draw [ultra thick] (2,0.5) .. controls (3,0) and (5,0)  ..(5.5,2);
\draw (5.5,3) node[below]{\Huge \${々}\$};
\end{tikzpicture}


図1:LaTeXのTikZで書いたへのへのもへ字

これだと,文字を入れ替えるたびにコードを書き換えることになる。そこで,pythonで作り直そうとしてGPT-4に聞いてみたら,ほぼ1発で正しいコードが得られた。macOSのフォントの場所だけを指定すれば良かった。さらに,コマンドラインからひらがなを入力して文字に分解するところもGPT-4に教えてもらった。これからのプログラミング教育はどうなるのだろう?

問題は,pythonのpillowライブラリにはベジェ曲線がないことだ。おまけに,最初の結果は顔の輪郭は直線4本で表され,顔に被ってしまっていた。GPT-4はそこまで賢いわけではない。仕方がないので,自力でもがいて作った折れ線グラフで代用している。プログラミング教育って絶対にこうなるから。論理的ではない部分が多すぎる。

#! ~/bin/python


from PIL import Image, ImageDraw, ImageFont

import sys


def generate_henohenomoheji(brow: str, eye: str, nose: str, mouth: str, file_name: str):

     

    # 背景画像を作成

    image = Image.new('RGB', (600,600), (255, 255, 255))

    draw = ImageDraw.Draw(image)


    # フォントの設定

    font_size = 80

    font = ImageFont.truetype("/Users/koshi/Library/Fonts/BIZUDGothic-Regular.ttf", font_size)


    # へのへのもへじの要素を描画

    draw.text((160, 120), brow, font=font, fill=(0, 0, 0))  # 眉毛

    draw.text((340, 120), brow, font=font, fill=(0, 0, 0))  # 眉毛

    draw.text((180, 200), eye, font=font, fill=(0, 0, 0))   # 目

    draw.text((330, 200), eye, font=font, fill=(0, 0, 0))   # 目

    draw.text((240, 290), nose, font=font, fill=(0, 0, 0))  # 鼻

    draw.text((250, 380), mouth, font=font, fill=(0, 0, 0)) # 口

    draw.text((480, 240), "〃", font=font, fill=(0, 0, 0))  # 濁点


    # 顔の輪郭(ベジェ曲線ではない)

    contour = [

        (100, 100), (110, 150), (110, 200), (100, 250), (100, 300),

        (110, 340), (120, 380), (140, 410), (160, 440), (180, 460),

        (200, 480), (220, 490), (240, 500), (260, 505), (280, 505),

        (300, 500), (320, 500), (340, 495), (360, 495), (370, 490),

        (390, 480), (410, 470), (430, 460), (450, 440), (470, 410),

        (480, 380), (480, 360), (475, 340), (470, 310), (470, 280),

    ]

    draw.line(contour, width=5, fill=(0, 0, 0), joint="curve")


    # 画像の表示と保存

    image.show()

    image.save(file_name, "PNG")


moji = list(sys.argv[1])

brow = moji[0]

eye = moji[1]

nose = moji[2]

mouth = moji[3]

print(brow,eye,nose,mouth)

generate_henohenomoheji(brow,eye,nose,mouth, "heno-mohe.png")

図2:PythonのPillowによるへのへのもへ字

2023年3月25日土曜日

教育データの利活用

3月22日に,文部科学省の教育データの利活用に関する有識者会議(2020.7-)が「教育データの利活用に係わる留意事項(第1版)」を公表した。

日経新聞では,「学習端末データ授業改善に活用/教師の経験頼み脱却」というタイトルの記事になっていた。BingChatに無理矢理要約させると次のようになった。
文部科学省が公表した指針によると、小中高校の児童生徒が学校で使うデジタル端末に蓄積された情報の活用について、初めての指針を公表したそうです。この指針により、教師が経験に頼ることなく、学習端末に蓄積されたデータを活用し、授業改善につなげることができるようになるそうです。また、ビッグデータの分析力を備えた外部機関との連携が求められるそうです。
日経の記事はかなりバイアスがかかったまとめ方をしていた。「留意事項」はもっと抽象的なものになっていて,(1) 個人情報の適切な取り扱い,(2) プライバシーの保護,(3) セキュリティ対策,について言及しながらシステムを外注する際のチェックポイントを整理したようなものだ。

10年前に,今後の大阪教育大学の方向性とからめて教育ビッグデータの重要性(と危険性)を話題にしていたころから進んでいない。スローガンに伴う具体的なイメージがはっきりしないのだ。いや自分が勉強していないだけかもしれない。

(1) 収集される学習データは非常に多様化し,複雑化するとおもわれる。従来型の成績+デジタルポートフォリオイメージでよいのか。
(2) 授業改善のための分析は結局外注することになるのではないか。あるいは分析ツールを買わされるのだろうか。教師が片手間でできる簡単な仕事ではない。
(3) 対話型AIをインターフェースとすれば,上記2つの課題は解決するのかもしれない。ビッグデータといいなわらしていたころとはかなり違うことになるが,問題解決のヒントくらいは見つかるかもしれない。
(4) この対話型AIシステムクラウドを日本国が自前で準備して無料で使わせるくらいのことをしてもバチはあたらないだろう(かなりこわい話だけれど,米国依存だとさらにマズイ)。

最初のコラムで,牽制するかのように「デジタル・シティズンシップ」を取り上げているのも唐突感が否めないがまあいいか。それにしても,この「留意事項」から感じる息苦しさはなんなのだろうか。個人情報保護法や著作権法にがんじがらめになっている上,自由な空気からほど遠い学校教育現場にこのようなシステムを導入すると,結局壮大な抑圧的管理網がかぶさるだけのような気もする。


P. S.  山本一郎いわく「統計量で教育データを扱うはずが,全量悉皆データをそのまま人工知能にぶち込んでしまい,自ら情報漏洩の危険を冒すお調子者教師」が散見されるそうだ。これはこれでピントがズレているような・・・



2023年3月24日金曜日

カフェインレス

カフェインレスの紅茶を飲んでいた人から,カフェインレスってどうやって作るの?という質問があったので早速調べてみた。

まず,デカフェ,カフェインレス,ノンカフェインの3つがあることまでは共通だ。とりあえず,「珈琲や紅茶でのデカフェ,カフェインレス,ノンカフェインの定義や製法の違いを説明してください」という質問を投げ掛けてみる。

(1) Bing Chatにきいてみると,最近はつれない返事しか返ってこないことが多い。回答を短く抑えせている雰囲気だ。GPT-4.0ベースとはいうものの,現時点のデータを検索して取り込んだ検索のためのチャットという仕様に特化しているからだろう。まあ,それなりの参照URLは返してくるが,それらをうまく評価しながらまとめることができているかというとそうでもない。最初からGoogleで検索した珈琲屋の答えと大差がなくなってしまった。

(2) GPT-4にきいてみると,結構詳しい答えが返ってきた。1.デカフェの説明,(a) 溶媒抽出法,(b) スイスウォータープロセス,(c) CO2抽出法。2.カフェインレスの説明,他の参考資料とは少し違うことが書かれている。3.ノンカフェインの説明,カフェインレスと同じだという主張だった。これらがどこまで正しいのかはよくわからない。

(3) Wikipediaのデカフェで調べてみると,さらに詳しい答えが載っていた。デカフェ≒(a)カフェインレスコーヒ,=(b)カフェインを除去する過程やその結果としての飲料のことを指す。たぶんこれが正しいのではないか。その上で,カフェインレスの製法についての詳しい説明,(a) 脱カフェイン法(有機溶媒抽出:ケミカル・メソッド,水抽出:ウォーター・メソッド,超臨界二酸化炭素抽出がある。),(b) カフェインレス・コーヒーノキを作る方法(遺伝子組み換えや育種によるが未到達)がある。

この中で最もよいと思われるのが,超臨界二酸化炭素を用いる方法である。
二酸化炭素は31.1℃以上かつ73.8気圧以上の状態で超臨界二酸化炭素になる。この条件は他の物質の場合より常温常圧に近く(例えば水では374℃以上かつ220気圧以上)その生成が比較的容易であることと、超臨界状態でも他の物質との化学反応を起こしにくい(超臨界水は極めて反応性が高い)という特性を持つ。また抽出後、常温常圧に戻せば二酸化炭素の除去は極めて容易であり、万一残留してもその毒性を考慮する必要がない点、廃液処理の必要がない点、有機溶媒のような燃焼性がなく火災の心配がいらない点など、さまざまな点において有機溶媒抽出法の欠点を補った、極めて優れた脱カフェイン法だとされている。(Wikipediaのデカフェより引用)
なお,ノンカフェインは,もともとカフェインを含んでいないソフトドリンク類を指す場合が多いようだ。各サイトでも定義がまちまちなのである。まあ世の中そんなものかもしれない。逆にいえば,対話型AIシステムの信頼度が高まれば,従来の検索システムは完全に凌駕されることになる。

補足:
○コーヒー市場のうちノンカフェインの占める割合は10%程度
○コーヒーに含まれるカフェインは約3%程度
○欧州では,コーヒーに含まれるカフェインが0.2%以下でデカフェを名乗れる
○日本には,カフェインを90%以上取り除けば(約0.3%以下)デカフェを名乗れる
○デカフェ市場は健康指向などから着実に拡大している


図:カフェイン(SUZUKI COFFEE から引用)


2023年3月23日木曜日

「これは個人的な意見ですが…」

金沢に一泊して用事をすませてきた。ChatGPTはやはり話題に登場した。帰ってきて,物理教育学会誌が届いたが,その編集後記もChatGPTの話題で持ちきりだった。新聞でもネットでも毎日のように生成型AIを巡るニュースが飛び交っていて,すべてをフォローするのは困難だ。

GPT-4に俳句について聞いてみた。GPT-3.5より多少マシだったが,これはまだ普通の水準に達していなかった。数学的な計算も同様で,プロンプト工学ではカバーできそうにない。それでも着実に能力は高まっている。以下は,わりとまともな答えが帰ってきた例である。
Q:組織における制度化された会議の場で,あるいは打ち合わせ等での意見交換の場で,「これは個人的な意見ですが・・・」と前置きされる発言がでることがしばしばあります。この表現は何を意味していて,どういう機能を果たしているのか,いくつかの類型に分けて整理しながらの説明をお願いします。

A:この「これは個人的な意見ですが・・・」という表現は、主に以下の機能を果たしていると考えられます。様々な類型に分けて整理してみました。

1.責任の回避
この表現を使うことで、発言者は自分の意見が組織やチームの意見として捉えられることを避けることができます。これにより、意見が受け入れられなかった場合や問題が生じた場合でも、発言者個人への責任を最小限に抑えることができるでしょう。

2.柔らかい意見の表現
この表現を使うことで、発言者は自分の意見を他者に押し付けることなく、柔らかく提案できます。これは、対立や摩擦を避けるために役立ちますし、他者が意見に対してオープンである可能性を高めるでしょう。

3.オープンな議論の促進
「これは個人的な意見ですが」は、発言者が自分の意見に対して完全に自信がないことを示唆する場合もあります。この表現を使うことで、他者に対して意見についてのフィードバックや異なる視点を提供する機会を与えることができます。

4.エキスパートでない立場からの意見提供
発言者がその分野の専門家ではない場合や、十分な情報を持っていない場合に、この表現を使うことがあります。この場合、発言者は意見を提供しつつも、自分がエキスパートでないことを明示し、他者からの補足や訂正を歓迎する態度を示すことができます。

5.異なる意見や視点の提示
組織内で既存の意見や方針に対して異なる視点を持っている場合、発言者は「これは個人的な意見ですが」と前置きすることで、新たなアイデアや視点を提案しやすくなります。これにより、組織全体の意見や方針の多様性を促進することができるでしょう。

総じて、「これは個人的な意見ですが」という表現は、意見交換の場において多様な意見を尊重し、

続けて

オープンな議論を促進するための有用な表現です。この表現を使用することで、以下のような効果も期待できます。

6.階層を超えた意見の提案
組織内で階層が存在する場合、「これは個人的な意見ですが」という表現を使うことで、上層部に対して意見を提案しやすくなることがあります。この表現は、自分の意見が組織全体に適用されるべきだと主張しているわけではないことを示しているため、上層部に対して敬意を払いつつ、意見の提案が可能になります。

7.時間をかけて意見を検討する余地の提供
「これは個人的な意見ですが」という表現を用いることで、他者に対して即座に意見を評価し、決定を下すことを求めない空気を醸成できます。これにより、意見がじっくりと検討される可能性が高まるでしょう。

8.チームのコミュニケーションを円滑にする
この表現は、チーム内での意見の対立を和らげ、より建設的なコミュニケーションを促す役割を果たします。相手に対して敬意を示し、意見の違いを受け入れやすくすることで、チーム全体の関係を強化する効果があります。

これらの類型に分けられる機能を通じて、「これは個人的な意見ですが」という表現は、組織内での意見交換や会議の場をより有意義で生産的なものにする助けとなります。発言者はこの表現を用いることで、自分の意見を適切な形で伝えることができ、他者とのコミュニケーションを円滑に進めることができるでしょう。
そこで,更問いしてみた。
Q:このような表現は日本以外の国でも見られるのでしょうか。

A:「これは個人的な意見ですが」という表現に相当するものは、日本以外の国でも見られます。異なる言語や文化においても、同様の表現が使われることがあります。以下にいくつかの例を挙げます。

英語圏:「In my opinion...」(私の意見では…)、「I personally think...」(個人的には思うんですが…)、「Just my two cents...」(たった2セントの価値しかないかもしれませんが…)などの表現が使われます。

スペイン語圏:「En mi opinión...」(私の意見では…)、「Personalmente pienso que...」(個人的には思いますが…)などの表現が使われます。

中国語圏:「我个人认为...」(私個人としては思いますが…)、「在我看来...」(私の見解では…)などの表現が使われます。

ドイツ語圏:「Meiner Meinung nach...」(私の意見では…)、「Ich persönlich denke, dass...」(個人的には思うんですが…)などの表現が使われます。

これらの表現は、日本語での「これは個人的な意見ですが」と同様に、意見交換や会議の場において、発言者が自分の意見を柔らかく提案し、他者との対立を避けることを目的として使用されます。ただし、国や文化によっては、このような表現が一般的であったり、逆にあまり使われなかったりすることもあるため、異文化間でのコミュニケーションの際には注意が必要です。

勉強になるわ。これがどこまで正しいか分からないけれど,普通に人間同士の会話でもこの程度のもっともらしいが正確かどうかわからない情報は飛び交っている。また,デマゴーグになれば,SNS上であるいは国会で出鱈目を言いまくっているので,まあ,なんともいえないところである。


2023年3月22日水曜日

教養強化合宿(5)

教養強化合宿(4)からの続き

2014年の夏に始まった外山恒一の教養強化合宿だが,ぼんやり見逃しているうちにこの3月に第27回になっていた。なかなか需要が多いのか,本人が「外山恒一主催「教養強化合宿」初日余興〝いまどきの意識高すぎる系学生の実態調査的教養チェック〟過去問一覧」をnoteに書いていた。

なんだか最近難しくなってきたと思っていたので,参加学生さんの平均点と自分の得点を時系列でまとめてみた。公表されている第15回(2021.8)から第27回(2023.3)までの13回のデータだ(特別編は除く)。


図:外山教養強化合宿の余興得点(第15-27回)

若干の例外はあるけれど,原則として登場人物の重複は避けているのために難易度が上がっている様子がうかがえる。それでも,若者よりは外山恒一の年齢に近いのでかろうじて6割くらいまでついていける。第27回でいえば,萩尾望都や古賀政男でさえ,3/14や1/14という認知度になっているので,若者達との文化的な断絶は大きい。