2025年9月26日金曜日

階段

人間ドック(3)からの続き

今年の人間ドックで指摘されたマンションの階段の価値と効用。

iPhoneの「ヘルスケア:上った階段」で,日々の階段の昇段数(単位は階)がわかる。手元のiPhoneでは2016年以降の記録がある。2016-2018の在職中の最後の3年間の平均は16階/日,退職後で非常勤講師として数コマもっていた3年間(コロナの年を除く)の平均は8階/日と半分になった。

ところが,2024年,70歳を越えて非常勤講師も終った年は,5階/日とかつての1/3にまで減ってしまっていた。今年の人間ドックで発破をかけられてからは,意識して階段を利用するようになったので,この3ヶ月の平均は10階/日までに回復したけれどまだまだ。

当初は1階から10階までの9階分(ヘルスケアの7階相当)登るのに2回ほど休憩が必要だった。最近,登り方を変えると少し楽に登れるようになった。それを示すのが下図だ。青がかつてのコース,赤が現在のコースであり,それぞれ平均登坂角が23.7度と13.7度である。

図上のユニットの9周分,図下のユニットの18回分で1階から10階まで登れる。垂直移動距離は23m(1.26m×18),水平移動距離は青で45m(2.5m×18),赤で81m(4.5m×18)となる。所要時間(赤)は135秒だ。(階段幅1.1m,外半径1.2m,赤軌道半径0.95m,青軌道半径0.35m,階段幅0.25m,階段高0.18m,段数7×2×9=126)



図:マンションの階段とその登り方

2025年9月25日木曜日

金沢都ホテル

金沢都ホテルが2017年に閉業して跡地が更地になってもう8年になる。金沢駅前の一等地なので,いつになったら再開発が進むのかと思っていた。このほど金沢駅東地域(59ha=金沢駅周辺区域+都市軸区域)が都市再生緊急整備地域に指定され(高さ60m制限が解除される),近鉄不動産から金沢市と石川県に官民複合ビル開発の提案があった。

これをもとに,ChatGPT-5 に具体的な提案をしてもらった。
Q(koshix):
調査をお願いします。金沢駅前の都ホテルの跡地の再開発で近鉄不動産が官民複合ビル開発の提案をしらたしいのですが,その詳細を教えてください。

A(ChatGPT-5):
(回答略)

Q(koshix):
金沢には近江町市場や兼六園,金沢城趾,江戸時代の武家屋敷跡,伝統工芸品工房,ひがし茶屋街など歴史的文化的な観光地以外にも,金沢21世紀美術館,石川県立図書館などのモダンな情報拠点もあります。このような地域の特性を踏まえて,駅前の官民複合ビルの新しくてユニークなコンセプトデザインを提案してください。なるべく思いもかけないアッと驚くようなものを期待しています。

A(ChatGPT-5):
(回答略) 
Q(koshix):
なかなかおもしろい3つのコンセプトでしたけれど,もう少し深く真剣に工夫して熟慮のうえ大胆に突っ込んでかつリアルなイメージがあふれるように考えて見てもらえませんか。

A(ChatGPT-5):
(回答略)

Q(koshix):
いやいや,3つのプロポーザルを具体化してほしいのではなくて,もっと別の観点から新しい提案ができないかという意味でした。参考資料もつけておきます。 細かい数字はいらないので,ゆたかな言葉で新しい2-3のコンセプトを創造して語ってください。

A(ChatGPT-5):
ありがとうございます。いただいた参考資料([1])をふまえると、金沢市が都市再生で掲げているキーワードは「骨格となる都心軸の再興」「伝統と創造の調和」「学都」「木の文化都市」「ウォーカブル」「歴史都市」などでした。これを起点に、既存の延長線ではなく「思いもかけない」観点から、あえて大胆に発想してみます。

コンセプト1:「呼吸する都市の森」
金沢駅前に立ち上がるのは、単なるビルではなく「都市が呼吸する森」。
外壁には木質素材とガラスを織り交ぜ、昼は木立のように陰影を生み、夜は樹冠が光の森となって街路を包む。内部の低層部は市民が自由に出入りできる「屋内林床広場」として、雨の多い金沢でも四季を感じられる緑の空間を提供。
上層はホテルや研究施設だが、吹き抜けを貫く「都市樹幹」が上下をつなぎ、空気循環や雨水利用を可視化する。まさに「木の文化都市」を体現し、訪れる人は都市の中心で自然に抱かれる体験を得る。

コンセプト2:「知と工芸の灯台(Beacon of Craft & Knowledge)」
北陸新幹線で到着した人を最初に迎えるのは、未来に向けて輝く「知の灯台」。
建物の上層部はガラスの灯火塔となり、時間ごとに色や模様が変化し、市内の工芸職人や学生がデザインに参加する「参加型光景観」を演出。
低層には「工芸アトリウム」があり、九谷焼・金箔・加賀友禅などの実演や展示が行われ、訪問者は工芸の創造性に触れる。中層は大学・研究機関・企業の共創拠点であり、金沢を「学都」として再び可視化する。
このビル自体が「伝統と知の実験場」となり、駅前は世界の人材と文化が交流する灯火となる。

コンセプト3:「雨と光の劇場」
金沢の気候を逆手にとる発想。雨の多さを「不便」ではなく「魅力」に変換する。外壁に雨水を導く透明な水路を設け、降雨に応じてファサードが光り奏でる「レイン・インスタレーション」を実現。低層広場では霧や水膜がスクリーンとなり、観光・芸術イベントの舞台に。中層には「市民のためのレインラウンジ」があり、ガラス越しに流れる水を眺めながら静かに過ごせる。上層のスカイラウンジでは、夜景とともに「雨の光」が都市全体を舞台にした劇場に変える。“雨を待ち望む街”という新しい都市イメージを発信する。

まとめ
・呼吸する都市の森:自然と調和し、駅前が「都市林」に。
・知と工芸の灯台:工芸・学術の拠点が光を放ち、世界に開く。
・雨と光の劇場:気候を魅力に変えるインスタレーション都市装置。
いずれも金沢の特性を活かしつつ、従来の「駅前高層複合ビル」の枠を超え、市民・観光客双方を驚かせる体験の装置となります。 
これら3つのうち、さらに膨らませてイメージ図や物語的なシナリオに落とすなら、どの案を優先したいですか?



図:とっても微妙な金沢駅前再開発ビルのイメージ(ChatGPT-5が提案)

金沢都ホテルは1981年に我々の結婚式が行われたところだ。その数年前には高校のESSの同期の高橋裕之君の結婚式もあった。子どものころ,おばあちゃんや親戚家族一同でブイヤベースを食べに行ったこともある。はじめてみるフランベにびっくりした。地下にはロキシーという映画館も。アラビアのロレンスをみたのはここか?

2025年9月24日水曜日

三十三間堂

NHKのブラタモリで京都の三十三間堂(蓮華王院本堂,1164/1266-)が特集されていた。平安時代末期の創建だが,火災にあって鎌倉時代に再建されたのが現在の建物(全長118m)だ。あの忌まわしい大屋根リングができるまでは日本一の長さの木造建造物だったが,今は第2位。全体の1/10の200m分を保存するというので今後数十年は第2位のままになる。100年も経てば1位に復活するだろう。

そのなかで,京都市内では応仁の乱(1467-1477)で町全体が燃えてしまい,それ以前から今まで残っているのは三十三間堂を含めて4つしかないという話に驚いた。そんなものなのか。早速ChatGPTやGeminiやClaudeやPerplexityやgrkや皆に聞いてみたが,どうも正確な情報がわからない。結局,醍醐寺 五重塔(951),大報恩寺(千本釈迦堂)本堂(1227),蓮華王院(三十三間堂)本堂(1266〈再建〉),法観寺(八坂の塔)五重塔(1440)というところに落ち着いた。

それでは全国での古い建造物はどうなっているのかということで,各生成AIにきいてみるのだけれど,どれも一長一短でフェイク情報が混じってしまう。出力を数回にわたり多段で蒸留した結果,ChatGPT-5とGemini 2.5 Pro の結果が収束した(正しいかどうかは別だ)。

Q(koshix):
以下のリストが正しいかどうか判定してください。また,このリストに無いもので条件を満たすものがあれば指摘してください。なお,リストには通し番号をつけて,年号が推定できるものはなるべく入れてください。

元の質問: 日本の歴史的建造物でできてから800年以上の歴史を持つものを古い順に並べたリストをつくってください。なお,創建時が条件を満たしていても消失したものは含めません。再建時が条件を満たしていればOKとします。大きな寺院の一部の塔頭などで一定の規模があればそれらも含めます。

A(ChatGPT-5 Thinking):
前提と進め方:ご提示の条件(①現存、②創建でなく“現存建物の成立”が1225年以前=今年2025年時点で800年以上、③再建でも可、④塔頭も一定規模なら可)に沿って、各項目の年代・現存性を一次情報・公的機関・寺社公式等で突き合わせました。結果は①リストは概ね妥当、②抜けている重要物件がいくつか、③一部で補足・厳密化(年次表現の明確化)が必要――の3点です。下に「修正済み通し番号リスト(古い順)」を示し、追補分は★で明示します。各行に1文メモを付しています。出典は要所で併記しました。

修正済みリスト(古い順,★は省略)
1.法隆寺 西院伽藍(金堂・五重塔・中門・回廊)|7世紀末〜8世紀初頭
世界最古級の木造建築群として現存(ユネスコ登録群の中核)。
2.法起寺 三重塔(奈良)|706年
現存最古の三重塔の一つ(飛鳥〜奈良移行期の作)。 
3.唐招提寺 経蔵・宝蔵(奈良)|8世紀前半
現存する校倉造の代表的遺構。 
4.薬師寺 東塔(奈良)|730年
奈良時代唯一現存の三重塔で「凍れる音楽」と称される。
5.法隆寺 東院 夢殿(奈良)|8世紀中頃
聖徳太子供養の八角円堂(奈良期建立)。 
6.東大寺 法華堂(三月堂)(奈良)|8世紀中頃
東大寺で現存最古の堂。 
7.栄山寺 八角堂(奈良)|760–764年頃
奈良時代屈指の八角堂(国宝)。 
8.東大寺 正倉院 宝庫(奈良)|8世紀後半
天平の校倉造高床式宝庫(聖武天皇ゆかりの宝物蔵)。
9.唐招提寺 金堂(奈良)|8世紀後半
天平建築の代表堂宇。 
10.唐招提寺 講堂(奈良)|8世紀後半(平城宮朝集殿の移築)
宮殿建築遺構が寺院講堂として現存。 
11.新薬師寺 本堂(奈良)|8世紀後半
奈良期現存の本堂で十二神将を囲繞安置。
12.當麻寺 東塔(奈良)|奈良時代中期(8世紀)
古代の東西双塔が揃って現存する唯一の例の一方塔。
13.當麻寺 西塔(奈良)|平安初期(9世紀初頭)
双塔のもう一方(平安初頭建立)。
14.室生寺 五重塔(奈良)|9世紀初頭(8世紀末説あり)
屋外五重塔で最小規模・古式の名塔。
15.室生寺 金堂(奈良)|9世紀前半(※中世修理あり)
山岳伽藍に残る古様の堂宇。
16.醍醐寺 五重塔(京都)|951年
京都府最古の木造建築。
17.平等院 鳳凰堂(京都)|1053年
浄土庭園の中心堂(十円硬貨の意匠)。
18.宇治上神社 本殿(京都)|1060年頃
現存最古の神社本殿。
19.石山寺 本堂(滋賀)|1096年(再建)
紫式部ゆかり、平安末再建本堂が現存。
20.浄瑠璃寺 本堂(京都)|1107年
九体阿弥陀を安置する横長本堂。 
21.鶴林寺 太子堂(兵庫)|1112年
兵庫県最古級の現存木造建築。 
22.中尊寺 金色堂(岩手)|1124年
奥州藤原氏の阿弥陀堂(皆金色)。
23.石上神宮 拝殿(奈良)|1135年(移築)
現存最古の拝殿建築。
24.白水阿弥陀堂(福島)|1160年
平安末の阿弥陀堂と浄土庭園。
25.一乗寺 三重塔(兵庫)|1171年
平安末の代表的三重塔(国宝)。
26.富貴寺 大堂(大分)|12世紀後半
九州最古級の現存木造仏堂。
27.浄土寺 浄土堂(兵庫・小野)|1192年
阿弥陀三尊(快慶)を安置する檜皮葺大堂。
28.高野山 不動堂(和歌山)|1197年
高野山で最古の現存堂宇。
29.東大寺 南大門(奈良)|1199年(再建)
大仏殿正門、金剛力士像で著名。
30.興福寺 北円堂(奈良)|1210年(再建)
鎌倉初期再建の八角円堂(国宝)で現存。 

A(Gemini Pro 2.5):
再度チェックいたしました。この修正版リストは、ご提示の条件に沿って非常に綿密に調査されており、ほぼ完璧な内容と言えます。素晴らしいリストです!




図:三十三間堂通し矢図(伝円山応挙筆,文化遺産オンラインから引用)

2025年9月23日火曜日

Nano Banana

Google GeminiのNano Bananaが凄いという話で,アクセスすると"NEW! Google 最高の画像モデルである Nano Banana で画像編集をお試しください" とでてくる。ところが,何度試してもなかなかうまくいかない。

あれこれしているうち,ようやく今日になって画像をアップロードしたものから編集することができた。Gemini 2.5 Pro の設定だったのであっというまに本日のリミットに達してしまった。



図:Nano Bananaによる画像編集の例

Q(koshix):
石を銅に変えてください。(応答はあるが画像生成は無し)
Q(koshix):
背景を野原にしてください。(さきほどの結果も含めて画像が生成された。OK)
Q(koshix):
姿形を立ち上がった奈良の大仏の顔にしてください。(OK)
Q(koshix):
奈良の大仏の顔のお地蔵さんを奈良の鹿にまたがらせてください。(OK)
A(Gemini 2.5 Pro):
2.5 Pro の上限に達しました。9月23日 11:50 までお待ちください。Google AI Pro にアップグレードすると、上限が引き上げられます。

そこで,Gemini 2.5 Flashに切り替えて続けてみた。

Q(koshix):
鹿を神の使いの白い鹿にしてください。(応答はあるが画像生成は無し)
Q(koshix):
背景の空の部分を2/3ほどに増やしてください。(OK)
Q(koshix):
鹿に乗った銅像にもっとフォーカスして迫ってください。(OK)
Q(koshix):
空の面積を半分くらいにして鹿の足下まで全体入れて,もう少し鹿によってください。(×)
・・・

以下何度お願いしても,わかったというばかりで全く改善されない状態が続いてしまった。


図:これ以上修正がきかず収束した画像(Gemini 2.5 Flash - Nano Bananaなのか?)


P. S. その後,数時間置いてから再度チャレンジした。
Q(koshix):
鹿の足下が見切れていますので,全体像が入るようにしてください。なおかつ,空の割合を今の半分ぐらいにして,白鹿とそれに乗った地蔵菩薩もっとズーム拡大してください(カメラが対象によるように)。(応答はあるが画像生成は無し)
Q(koshix):
今の画像を生成してください。(さきほどの画像が生成された。OK)
Q(koshix):
上1/3を夕焼け空にして, 下2/3を草原にして,白鹿とそれに乗った地蔵菩薩さらにズーム拡大してください。(OK)
Q(koshix):
やはり,青空に戻して,下半分は野原にしてください。(野原では伝わらなかった,×)


図:再チャレンジした画像(Nano Banana のはず)

2025年9月22日月曜日

国勢調査

2025年は5年おきの国勢調査の年だ。9月20日に自治会の役員さんが調査票を持ってきた。インターネットでも回答できる。5年前はどうだったかと自分のブログや記憶を確認したが痕跡はなかった。説明には令和2年(2020年)度から導入されているとされている。

調査票は10月1日から10月8日に回収されるが,インターネット回答は9月20日から回答できる。iPhoneでQRコードを読み込むと何の問題もなくスイスイと最後まで進めた。あの万博のポンコツシステムとはエライ違いだ。16項目あるけれど,無職で現在地に20年以上住んでいる場合は,10項目目まで十分だ。ややこしい従業地や勤め先の記述も不要である。



写真:国勢調査のお願いの封筒(2025.9.20撮影)

2025年9月21日日曜日

9月20日(2)

Juliaの日時処理からの続き

5年前の国勢調査の記事がないかと調べていたら,それはなくて5年前の自分の誕生日の記事が発掘された。誕生日の曜日を調べるJuliaプログラムの話だ。5年も経っているからもう一度実行してみようと,Jupyterではすぐ動いたが,コマンドラインでどうするのか迷った。

プログラムを実行形式にchmodして,頭に#!/usr/bin/env julia(あるいはjuliaの絶対パス)を書けばいいだけなのだけれど,!に気がつかず,シェルスクリプトのコメントと解釈されてエラーがでた。しかし耄碌しているのですぐに原因に気付けずChatGPT-5にたよることになる。

そんなこんなで,過去の習作コードをChatGPT-5に投げてバイブコーディングして得られたのが次の結果とコードである。プログラミングとはAIとの対話のことだった。

 koshi@mba2020 ~ % ./birth.jl

【基礎情報】

今日                : 2025年9月21日(日曜日)

誕生日              : 1953年9月20日(日曜日)


【差分と年齢】

生誕からの経過日数 : 26299日

満年齢              : 72歳


【年ごとの誕生日一覧】(*は日曜)  ※最終年:2025年

1953年9月20日(日曜日)  0歳  *

1954年9月20日(月曜日)  1歳  

1955年9月20日(火曜日)  2歳  

1956年9月20日(木曜日)  3歳  

1957年9月20日(金曜日)  4歳  

1958年9月20日(土曜日)  5歳  

1959年9月20日(日曜日)  6歳  *

1960年9月20日(火曜日)  7歳  

1961年9月20日(水曜日)  8歳  

1962年9月20日(木曜日)  9歳  

1963年9月20日(金曜日)  10歳  

1964年9月20日(日曜日)  11歳  *

1965年9月20日(月曜日)  12歳  

1966年9月20日(火曜日)  13歳  

1967年9月20日(水曜日)  14歳  

1968年9月20日(金曜日)  15歳  

1969年9月20日(土曜日)  16歳  

1970年9月20日(日曜日)  17歳  *

1971年9月20日(月曜日)  18歳  

1972年9月20日(水曜日)  19歳  

1973年9月20日(木曜日)  20歳  

1974年9月20日(金曜日)  21歳  

1975年9月20日(土曜日)  22歳  

1976年9月20日(月曜日)  23歳  

1977年9月20日(火曜日)  24歳  

1978年9月20日(水曜日)  25歳  

1979年9月20日(木曜日)  26歳  

1980年9月20日(土曜日)  27歳  

1981年9月20日(日曜日)  28歳  *

1982年9月20日(月曜日)  29歳  

1983年9月20日(火曜日)  30歳  

1984年9月20日(木曜日)  31歳  

1985年9月20日(金曜日)  32歳  

1986年9月20日(土曜日)  33歳  

1987年9月20日(日曜日)  34歳  *

1988年9月20日(火曜日)  35歳  

1989年9月20日(水曜日)  36歳  

1990年9月20日(木曜日)  37歳  

1991年9月20日(金曜日)  38歳  

1992年9月20日(日曜日)  39歳  *

1993年9月20日(月曜日)  40歳  

1994年9月20日(火曜日)  41歳  

1995年9月20日(水曜日)  42歳  

1996年9月20日(金曜日)  43歳  

1997年9月20日(土曜日)  44歳  

1998年9月20日(日曜日)  45歳  *

1999年9月20日(月曜日)  46歳  

2000年9月20日(水曜日)  47歳  

2001年9月20日(木曜日)  48歳  

2002年9月20日(金曜日)  49歳  

2003年9月20日(土曜日)  50歳  

2004年9月20日(月曜日)  51歳  

2005年9月20日(火曜日)  52歳  

2006年9月20日(水曜日)  53歳  

2007年9月20日(木曜日)  54歳  

2008年9月20日(土曜日)  55歳  

2009年9月20日(日曜日)  56歳  *

2010年9月20日(月曜日)  57歳  

2011年9月20日(火曜日)  58歳  

2012年9月20日(木曜日)  59歳  

2013年9月20日(金曜日)  60歳  

2014年9月20日(土曜日)  61歳  

2015年9月20日(日曜日)  62歳  *

2016年9月20日(火曜日)  63歳  

2017年9月20日(水曜日)  64歳  

2018年9月20日(木曜日)  65歳  

2019年9月20日(金曜日)  66歳  

2020年9月20日(日曜日)  67歳  *

2021年9月20日(月曜日)  68歳  

2022年9月20日(火曜日)  69歳  

2023年9月20日(水曜日)  70歳  

2024年9月20日(金曜日)  71歳  

2025年9月20日(土曜日)  72歳    

ChatGPT-5 Thinking が提案してきたコードは以下のとおりである。かなり修正してもらった。

#!/usr/bin/env julia

# birth.jl


using Dates


# --- ヘルパ ---

const WDAY_SHORT = ["月","火","水","木","金","土","日"]

const WDAY_LONG  = ["月曜日","火曜日","水曜日","木曜日","金曜日","土曜日","日曜日"]


fmt_date_ja(d::Date; long_wday::Bool=true) = string(

    Dates.format(d, dateformat"yyyy年m月d日"), "(",

    (long_wday ? WDAY_LONG : WDAY_SHORT)[dayofweek(d)], ")"

)


# 引数: [YYYY MM DD [ENDYEAR]]

function parse_args()

    if length(ARGS) == 0

        return Date(1953, 9, 20), year(Dates.today())

    elseif length(ARGS) == 3 || length(ARGS) == 4

        b = Date(parse(Int, ARGS[1]), parse(Int, ARGS[2]), parse(Int, ARGS[3]))

        lasty = (length(ARGS) == 4) ? parse(Int, ARGS[4]) : year(Dates.today())

        return b, lasty

    else

        error("使い方: ./birth.jl  または  ./birth.jl YYYY M D  [ENDYEAR]")

    end

end


function list_birthdays(birth::Date, last_year::Int)

    last_year = max(last_year, year(birth))  # 下限は誕生年

    for y in year(birth):last_year

        d = Date(y, month(birth), day(birth))

        age = y - year(birth)

        star = (dayofweek(d) == 7) ? "*" : ""   # 7 = 日曜

        println(fmt_date_ja(d; long_wday=true), "  ", age, "歳  ", star)

    end

end


# --- 本体 ---

birthday, list_until = parse_args()

today = Dates.today()


println("【基礎情報】")

println("今日                : ", fmt_date_ja(today; long_wday=true))

println("誕生日              : ", fmt_date_ja(birthday; long_wday=true))


println("\n【差分と年齢】")

days_elapsed = Dates.value(today - birthday)

age_years = year(today) - year(birthday) - (Date(year(today), month(birthday), day(birthday)) > today ? 1 : 0)

println("生誕からの経過日数 : ", days_elapsed, "日")

println("満年齢              : ", age_years, "歳")


println("\n【年ごとの誕生日一覧】(*は日曜)  ※最終年:", list_until, "年")

list_birthdays(birthday, list_until)