告知:令和6年度歴史文化講演会 主催:古谿荘に親しむ会 主題:葛飾北斎は凱風快晴をどこから描いたのか 日時:2024年6月15日(土)15:00〜(受付14:45) 場所:富士市富士川ふれあいホール多目的室 無料:一般参加者は60人程度(申込不要)
久保覚: 1963年(昭和38年)山梨県河口湖生まれ 20代はSEとして竹中工務店と共同で人工知能CADの開発、SONYと共同でA1タブレット開発。 1995年、河口湖に戻り富士山の情報発信サイトを立ちあげるかたわらコンピュータ技術書や小説を出版。 特に富士山のライブカメラは設置数30を超えるほど富士山周囲に配置し、マスコミに多数出演。 2010年ごろより地域の歴史に興味を持つのを契機に、365日360度網羅した膨大な富士山画像と画像処理技術の成果として江戸時代に描かれた浮世絵の場所特定を始める。 2017年、葛飾北斎の凱風快晴の場所特定を扱ったNHK歴史秘話ヒストリアに出演。2021年、葛飾北斎の秘密としてNHK歴史探偵。2023年の正月特番で山下白雨回として出演。
葛飾北斎の凱風快晴は秋の赤富士の山梨説が流布されていますが、初夏の早朝静岡で描かれています。 また、画は一般的に秋のイメージと言われていますが、地域からの富士山を知らない赤富士と鱗雲の根拠に頼る御用学者の知識不足には閉口するばかりです。 講演では諸々含めて200年の論争に終止符を打ちます。
富士川付近のスケッチは他の冨嶽三十六景の画に流用されています。
講演では凱風快晴以外の浮世絵にも言及します。 山下白雨は富士宮市からのスケッチです。そのトリッキーな手法は実に面白いもので200年の謎は解けました。 決して2000mもの上空から描いたと唱えるご都合主義の解釈ではありません。
また、そのスケッチは甲州伊沢暁に流用されており、こちらの富士山の謎も解けました。
甲州三島超の富士山稜線の凹凸は絵の中央の木の皮と一致しており、他の要素も前景と相似しています。前景の旅人は何に喜んでいるのか近くの傍観者は何を思うのか。 このように新発見によって画の見方が変わる瞬間が面白いです。
神奈川沖浪裏の画はアニメーション効果です。波は一般的に言うシャッターの目という浅い表現ではなく、日本の歴史的経緯で生まれたものです。 葛飾北斎の画はそのインパクトからあらゆる知識人が後付け で色々なことを発言し、それが事実のように流布しています。結果論から絵を解釈するという行為は作品の本質や歴史的事実に迫るときある種の危険性をはらんでいます。 #葛飾北斎 #冨嶽三十六景 #3Dプリンター #浮世絵 #模型
電子基板をはんだ付けする時にフラックスを使用する。 ヤニ入りはんだというものもあるがフラックスではんだ表面を綺麗にした方が圧倒的に出来上がりは良い。 そのフラックスを作るのだがきっかけは簡単な話だった。 事の起こりは友人の引っ越し。その引っ越し作業の時に出てきたのが画像の塊。
その綺麗な物体を見た時に「琥珀が出た」とちょっと騒いだ。 聞けば爺さんがいろいろ集めていたとのことで信ぴょう性が増した。 でも何か違う。 で、私が持ち帰り調べてみるという話になった。 琥珀にしては柔らかい? 火で焙ってみた。溶けてますます綺麗になった。 「あぁ、そうか松脂(まつやに)か〜……」 松脂がある心当たりを友人に聞くと「爺さんが機織り用の電気モーターを扱っていた」とのこと。 なるほど、謎は解けた。 で、せっかくなのでフラックスを作ることにした。
松脂がはんだに良いことは知っていたが、フラックスを作る発想はなかった。 松脂がはんだに良い理由: はんだ面の金属が経年で酸化していたりコテの熱で酸化するとはんだを弾くようになる。何度もはんだを乗せようとするとさらに悪化する。フラックスはこの酸化を洗い流し更にヤニのコーティングで酸化を止めるのだ。するとはんだは金属面のみを流れるようになりはんだ付けがきれいにできる。 しかし、市販のフラックスを見ると材料欄に「イソピルアルコール82%」と書いてある。 「な〜んだ」という事で。
手元にある琥珀だと思っていた松脂を細かく砕き、IPA(イソプルアルコール)で溶かす。 濃度は色が濃く付く程度適当。
それを刷毛付き容器に入れて完成。
作業後ベトベトになったので「こりゃ中国からフラックスのペーストを海外輸入した方がいいや」となった次第です。 #電子機器 #DIY
PC-98ノートをあるルートで手に入れた。がしかし、PC-98でやりたかったFDが壊れている。 繰り返すが、やりたいことは1980年代にほぼ日本独自規格になってしまったIBM規格のFDをN5200当時のPTOSというDOS前のNEC製のOSファイルとして読み込むこと。windowsのPC-98エミュでは直接FD操作ができないのでPC-98の実機がどうしても必須なのだ。 PC-98の実機と3モードFDDがあればPC-PTOSの解析ツールが使える。 そこで、手に入れたPC-98に搭載されていたFDDと同型互換のある中古FDDを大量に入手し、片っ端からドライブ内で切れているベルトを交換。2台まではシークモーター不具合でFDを読めなかったが、3台目以降はベルト交換でFDDが復活した。 やっと、本番のPTOSのFD解析ができるようになった。この3週間ぐらいずっとPC-98と格闘していて使い方を完全に思い出したのは大きな収穫だった。HDDを使用する前はFDiskするとか、そういえばFDっていうアプリが便利だったとか…… 修理完了後、FDからDOSを起動しひと段落。 PC-98の電源はないため、電線のみ基盤にはんだ付けし外部電源で代用。
PC-9821ノート(PC-9821Nw150)からFDDを取り出す。
古いベルト式のFDDはたいていこのベルトが伸びきって切れている。 ベルトを直してもシークモーター(ヘッド移動)が不良の場合がある。手に入れたPC-98のFDDはベルト交換だけでは完治しなかった。
そこで、大量に中古のFDD(FD1238T他)を購入。この中からベルト交換で無事シークするFDDを探す。 ちなみにすべての中古FDDのベルトは取り去られていた。
修理用のベルトストックは各種豊富にある。確かAmazonで各種80個入りを800円ぐらいで購入しておいた。 折計7cm、直径4.5cmぐらいがちょうどよい。
このようにベルトを修復し、筐体を元に戻す。
早速、PTOSのファイル解析をPC-98ノートで行う。 使用するソフトはPTOSCONV他。 データを無事にすべて抜き取ったら、壊れているN5200を修理するかPC-98にPTOSをインストールして遊ぶ予定。 ちなみに「その1」はこちら、https://www.fujigoko.tv/board/brbbs.cgi?pt=1714200061&pv=2 #電子機器 #修理
もしもの場合に保管してあったPC98。PC-98Note以外は必要ないんで過去に大量処分した。 で、たまたまPC-98でN5200のFDDを読むため長らく未使用だったPC-98Noteの電源入れたら動作しない? コンデンサの劣化だろうと思い分解修理することに。案の定、コンデンサ数個が液漏れしていたので全て新品に交換したが電源は入らず。 これで動作するPC-98は私のもとから完全に無くなってしまった。
1990年代初頭に長年愛用してきたPC-98Note。分解して全面に迷彩塗装してあるので実機と違う。セナに会うためにF-1を見に行った時に張ったシールが懐かしい。
コンデンサのチェック。やはり壊れている。
中央のテープのある基盤は外部CRTに出力できるよう自作したもの。その周辺が電源回路。
ちなみに自作した基盤はグラフィック用ICの裏に直付け。こんなことをしていたんだと数十年ぶりに見た。
問題の電源回路部分。見えているコンデンサは全て交換したが動作せず。この基盤はマザーに直付けされているんで取り外すのに苦労した。
ちなみにこんな機器で拡大してはんだ付けする。
#電子機器 #修理
TV番組で良く見る金庫開け。 そういえばダイヤル式金庫ってどんな仕組みだったっけ?右に何回、左に何回でどうして開くのか? 金庫の仕組みを知りたいので3Dプリンターで作ってみた動画をYoutuber風に作ったみた。
#3Dプリンター #模型
VIDEO
源アダプタからきっかり3V抽出して動作するようにした。 ついでに3Dプリンターで台も作ってみた。
備でもていたDC降圧で6V→3Vに。残り5個。
3Vにしなければ動作しないのでこのように結線
ついでに3Dプリンターで作成した台。下部はTPUのゴム製。
googleの生成AIのBardがGeminiになった。その実力を見るために何かプログラムを作って確かめてみた。 気象庁では定期的にXMLフォーマット形式の電文を配信している。 このXMLファイルを定期的に自動で読み込めばHP上に天気予報を表示できるので実際にGoogleGeminiを使用してプログラムしてみた。 以下に表示に至るまでの方法をステップごとに備忘録として記録する。 ===========
ステップ1. 気象庁のXMLフォーマット形式の電文を定期的に取り込む。 サーバーのcrontabで定期的にXMLファイルを取り込むよう設定。 気象庁のファイルは「https://www.data.jma.go.jp/developer/xml/feed/regular_l.xml 」にある。 読み込む方法はfreeBSDならfetchコマンドで取り込む。 fetch -mp -o /自分のサーバーのパス/weatherJapan.rdf https://www.data.jma.go.jp/developer/xml/feed/regular_l.xml 以上で、自身のサーバー内にweatherJapan.rdfファイルとして取り込み完了。 ---------------
ステップ2. 取り込んだデータから「山梨県の最新データ」を取り込む。 「ステップ1」で取り込んだ気象庁のデータは全国の気象データのindexのようなものなので、そこから山梨県の最新気象データを抽出する。 具体的には、indexに並んでいるデータ群(過去データもある)から目的のデータを見つける。 山梨県の気象予報なら、甲府気象台の「https://www.data.jma.go.jp/developer/xml/data/ データの日付_0_VPFD51_190000.xml」となる。 データは過去のアーカイブを含むので最新のデータ、つまりリストの先頭のindexを引く。 indexの引き方はunixのshellScriptで自動化する。 生成AIで、「VPFD51_190000を含むリストの先頭の文字を取り出すshellScriptを書け」と命令。 weatherF=$(grep -Eo 'https:\/\/www\.data\.jma\.go\.jp\/developer\/xml\/data\/(.*)VPFD51_190000\.xml' /自分のサーバーのパス/weatherJapan.rdf | awk -F/ '{print $NF}' | head -1) 上記の回答を得る。 次は変数weatherFを使用して山梨県のXMLデータをfetchで読み込む。 fetch -mp -o /自分のサーバーのパス/weatherYamanashi.rdf https://www.data.jma.go.jp/developer/xml/data/" ${weatherF}" 以上で、自身のサーバー内にweatherYamanashi.rdfファイルとして取り込み完了。 <Gemini最初の指令>https://www.data.jma.go.jp/developer/xml/feed/regular_l.xml にあるXMLファイルからhttps://www.data.jma.go.jp/developer/xml/data/ *****_VPFD51_190000.xml の部分を抽出し、抽出した先頭のみを表示するシェルを書け。 ただし、「*****」は任意の文字列。 解答→正規表現とgrepのパターンを提示してきた。正規表現はエラーになったのでgrepを使用し改良して使用。 ---------------
ステップ3. 「ステップ1」と「ステップ2」をcrontabで定期的に実行するようサーバーに記述する。 <weatherYamanashi.rdfファイルの中身例> 前段あり〜 <DateTime>2024-02-13T17:00:00+09:00</DateTime> <Duration>PT7H</Duration> <Name>今夜</Name> </TimeDefine> <TimeDefine timeId="2"> <DateTime>2024-02-14T00:00:00+09:00</DateTime> <Duration>P1D</Duration> <Name>明日</Name> </TimeDefine> <TimeDefine timeId="3"> <DateTime>2024-02-15T00:00:00+09:00</DateTime> <Duration>P1D</Duration> <Name>明後日</Name> </TimeDefine> </TimeDefines> <Item> <Kind> <Property> <Type>天気</Type> <DetailForecast> <WeatherForecastPart refID="1"> <Sentence>晴れ</Sentence> <Base> <jmx_eb:Weather type="天気">晴れ</jmx_eb:Weather> </Base> </WeatherForecastPart> <WeatherForecastPart refID="2"> <Sentence>晴れ 昼過ぎ から くもり</Sentence> <Base> <jmx_eb:Weather type="天気">晴れ</jmx_eb:Weather> </Base> <Becoming> <TimeModifier>昼過ぎ から</TimeModifier> <jmx_eb:Weather type="天気">くもり</jmx_eb:Weather> </Becoming> </WeatherForecastPart> <WeatherForecastPart refID="3"> <Sentence>くもり 後 一時 雨</Sentence> <Base> <jmx_eb:Weather type="天気">くもり</jmx_eb:Weather> </Base> <Temporary> <TimeModifier>後 一時</TimeModifier> <jmx_eb:Weather type="天気">雨</jmx_eb:Weather> </Temporary> </WeatherForecastPart> </DetailForecast> <WeatherPart> <jmx_eb:Weather refID="1" type="天気">晴れ</jmx_eb:Weather> <jmx_eb:Weather refID="2" type="天気">晴れ後くもり</jmx_eb:Weather> <jmx_eb:Weather refID="3" type="天気">くもり後一時雨</jmx_eb:Weather> </WeatherPart> <WeatherCodePart> <jmx_eb:WeatherCode refID="1" type="天気予報用テロップ番号">100</jmx_eb:WeatherCode> <jmx_eb:WeatherCode refID="2" type="天気予報用テロップ番号">111</jmx_eb:WeatherCode> <jmx_eb:WeatherCode refID="3" type="天気予報用テロップ番号">212</jmx_eb:WeatherCode> </WeatherCodePart> </Property> </Kind> <Kind> <Property> <Type>風</Type> 〜以下続く ---------------
ステップ4. 定期的に取り込んだ山梨県の天気予報データ(weatherYamanashi.rdf)を解析する。 解析にはperlプログラムを使用する。 必要な部分のみperlの正規表現を使用してプログラムしようとしたが、今回は「XML::Simple;」を使用することにした。 use File::Slurp; use XML::Simple; use Data::Dumper; my $xml = read_file("weatherYamanashi.rdf"); #ファイルの読み my $parser = XML::Simple->new(); #XML::Simple使用準備 my $parser_data = $parser->XMLin( $xml); #取り込み print Dumper($parser_data); #結果表示 〜取り込まれたデータ例 $VAR1 = { 'xmlns' => 'http://xml.kishou.go.jp/jmaxml1/ ', 'xmlns:jmx' => 'http://xml.kishou.go.jp/jmaxml1/ ', 'Control' => { 'DateTime' => '2024-02-11T01:34:15Z', 'Status' => "\x{901a}\x{5e38}", 'PublishingOffice' => "\x{7532}\x{5e9c}\x{5730}\x{65b9}\x{6c17}\x{8c61}\x{53f0}", 'EditorialOffice' => "\x{7532}\x{5e9c}\x{5730}\x{65b9}\x{6c17}\x{8c61}\x{53f0}", 'Title' => "\x{5e9c}\x{770c}\x{5929}\x{6c17}\x{4e88}\x{5831}\x{ff08}\x{ff32}\x{ff11}\x{ff09}" }, 'Head' => { 'xmlns' => 'http://xml.kishou.go.jp/jmaxml1/informationBasis1/ ', 'TargetDateTime' => '2024-02-11T11:00:00+09:00', 'Headline' => { 'Text' => {} }, 'InfoKind' => "\x{5e9c}\x{770c}\x{5929}\x{6c17}\x{4e88}\x{5831}", 'TargetDuration' => 'P2DT13H', 'EventID' => {}, 'Serial' => {}, 'Title' => "\x{5c71}\x{68a8}\x{770c}\x{5e9c}\x{770c}\x{5929}\x{6c17}\x{4e88}\x{5831}", 'InfoType' => "\x{767a}\x{8868}", 'InfoKindVersion' => '1.0_1', 'ReportDateTime' => '2024-02-11T11:00:00+09:00' }, 'xmlns:jmx_add' => 'http://xml.kishou.go.jp/jmaxml1/addition1/ ', 'Body' => { 'xmlns' => 'http://xml.kishou.go.jp/jmaxml1/body/meteorology1/ ', 'xmlns:jmx_eb' => 'http://xml.kishou.go.jp/jmaxml1/elementBasis1/ ', 'MeteorologicalInfos' => [ { 'TimeSeriesInfo' => [ { 'Item' => [ { 'Area' => { 'Code' => '190010', 'Name' => "\x{4e2d}\x{30fb}\x{897f}\x{90e8}" ---------------
ステップ5. 必要な部分のみ取り出す 例えば、天気予報の部分を取り出す sub getJMAWeatherTenki{ my $data = shift; #取り込んだハッシュ my $place_id = shift; #地域コード:富士五湖=1 my $time_id = shift; #今日=1,明日=2、明後日=3 my $content; foreach my $weather_define ( @{$data->{Body}{MeteorologicalInfos}[0]{TimeSeriesInfo}[0]{Item}[$place_id]{Kind}[0]{Property}{WeatherPart}{'jmx_eb:Weather'}} ){ if( $weather_define->{refID}==$time_id ){ $content = $weather_define->{content}; } } return $content; } 戻り値例:「くもり後晴れ」 <Gemini最初の指令> weatherYamanashi.rdfを解析し、天気データ「{jmx_eb:Weather}」の「{refID}」が一致する文字列「{content}」を得よ。 解答→得た答えを修正して上記を仕上げた。 ---------------
ステップ6. 天気予報の文字から画像を作成する まず以下の画像データを意味付けしたファイル名で作成する。 文字列から画像ファイル名を構成する。 sub getJMAWeatherImg{ my $weather_str = shift; #天気文字列 my $time_id = shift; # my %exDayId = ( '今日' => 1, '明日' => 2, '明後日' => 3 ); use constant WEATHER_CODES => { '晴れ' => 1, 'くもり' => 2, '雨' => 3, '雪' => 4, }; use constant TIME_CODES => { '時々' => 1, '後' => 2, }; my @parts = split(/(後|時々)/, $weather_str); my $a = WEATHER_CODES->{ $parts[0] } || 0; my $b = TIME_CODES->{ $parts[1] } || 0; my $c = WEATHER_CODES->{ $parts[2] } || 0; my $p = 0; my $name; #以下は「今夜」の場合を考慮する foreach my $time_define ( @{$exParserData->{Body}{MeteorologicalInfos}[0]{TimeSeriesInfo}[0]{TimeDefines}{TimeDefine}} ){ if( $time_define->{timeId}==$time_id ){ $name = $time_define->{Name}; } } Jcode::convert( \$name, 'utf-8'); #ファイル内はUTF-8だが、そのままでは使用できない my $fDayw = Jcode::convert( '今夜', 'utf-8'); #そのため比べる両者をUTF-8で再矯正する if( $name eq $fDayw ){ $p = 1; } my $fileImg = sprintf("tnk%04d.png", $p . $a . $b . $c); return $fileImg; } 何故か文字化けが発生し苦労したが上記の方法で回避 <Gemini最初の指令> 「晴れ」、「晴れ後くもり」、「雨時々雪」と言った文字列があります。 「後」と「時々」をキーに文字列を前後に分けて上の例なら、 「晴れ」、「晴れ」「後」「くもり」、「雨」「時々」「雪」と文字列を分解するperlプログラムを書け。 〜 得た文字列を、「晴れ」=1、「くもり」=2、…のように3桁の数字に置き換えよ。 解答→得た答えを修正して上記を仕上げた。 ---------------
ステップ7. 以上のプログラムを半分以上生成AIに手伝ってもらい完成させた。 あとは自分の環境に合わせて関数化し汎用ライブラリーとして保管。 --------------- 以上、動作例は「https://live.fujigoko.tv/?n=30 」等を参照。 今回は自身と気象庁のサーバー負荷を考え以上のようにしたが、「ステップ1」と「ステップ2」を省いて全てperlで記述すればその都度全国の気象データを得ることができる。 具体的には、https://www.data.jma.go.jp/developer/xml/feed/regular_l.xml から全国の気象データを抽出すれば良いようにプログラムをさらに汎用化し公開もできる。 が、自身のサーバーでそのサービスを提供するメリットがあるかどうかと考えてしまった。 #コンピュータ #AI #人工知能 #プログラム