「ものづくり筆耕ブログ」カテゴリーアーカイブ

ものづくりに関する想い

今から間に合う自由研究

自由研究のいろいろ

クーラーにかかる電気料金を節約して屋内にいながら熱中症で命をなくす痛ましいニュースを目にします。高齢者にも電化製品の一時間当たりの消費電力が適切に知らされていれば異なる結果になっていたかもしれません。

そんなものはすでに発表されているのでいまさら意味がないでしょうと言わずに発表してください。

そのほかにも役立つ自由研究はたくさんあります。一例を以下に挙げます。暑さにめげず頑張って欲しいです。

各種電化製品の一時間当たりの消費電力
テレビ、ラジオ、電灯、蛍光灯、冷蔵庫、トースター、クーラーなどの電力消費の節約とそれから生じる損失などを考える資料になるでしょう。

新聞や雑誌で使われる書体について
資料から世の中に存在するたくさんの書体を挙げて用途と紐づけると内容が充実します。

  フォント2例
電子機器で使われる書体を実際に表現

HTMLプログラミングできる範囲で十分ですが、代表的書体である明朝体とゴシック体の下記に挙げたサンプルから拡張できます。少なくも5~6例は欲しいところです。

明朝体とゴシック体を表示するHTMLコード

<html>								<!-- 書体のいろいろ, HG明朝E, HGゴシックM… -->
<head>
<meta charset="utf-8">
<style>
.style {float: left;}				/* floatの効果はstyle全体に及ぶ */
</style>
</head>
<span style="font-size:64px; font-family:HG明朝E;">あ</span>
<span style="font-size:64px; font-family:HGゴシックM;">い</span>
</html>


有名な数学の定理を挙げる
ピタゴラスの定理、フェルマーの定理などにおいて、発見されたときの逸話や証明できた人への賞金などのエピソードを一言寄せると評価者に喜ばれるでしょう。

  円周、2つの円周の差の求め方
円周率の歴史
紀元前2000年頃には22/7=3.142857など精密な近似値が使われていました。

ずっと時代が進んで手計算で求めた途中に誤りが発見されたことなどを添えると円周率の歴史に厚みが増すでしょう。

見た目と実際の違いを解明する
東京山の手線の線路の幅を1mとしたときの内周と外周の差、学校のグランド400mとそれよりも1m大きくした周りの差を調べます。

   地球を歩く
地球の地表の1m上を歩いて1周できると仮定し元の地球との差を考えることも同じです。

数式を基に解き明かすと実態とは思った以上に差がなく半径の値に無関係で2つの半径の差に依存し差が1mであれば6.28mであることが判ります。

bingo13

歯車13個からなるビンゴゲーム

2行目に7が1~3個、333, 666, 888, 999などが出ればファンファーレが鳴り響く。

スパーキング ビンゴゲーム
0 1 2 3 4 5 6 7 8 ©2023 TacM, Ver0.10

 

人手不足に協力

適切な運送方法

運送業務に携わる運転者の労力不足が取りざたされています。複数回配達を避けたり、配達総量を減らすことが叫ばれています。

複数回配達をなくす方法は無人のサテライトのような場所に仮置きする方法があり、受取人が通知された暗証番号を入力して受け取っていたのを目撃したことがあります。

写真やDVDを宅配で送るのは今どき、贅沢な送り方と言えます。結婚式の記念動画をDVD単品で送るのはもう止めて欲しいです。なぜなら動画を再生するDVDレコーダーやDVDドライブ付きパソコンを持っている人は多くいません。

今は個人や会員だけの動画をユーチューブなどにアップロードして限定公開できる時代になりました。この方式ならば送料は通信費だけであり、通信費は従量制でなく定額だから宅配便と比べ格段に安い費用で済みます。

また、ユーチューブなどにアップロードした動画はパソコン、タブレット、スマホなどのデバイスを限定せず閲覧の容易さが特長です。

時間と経費の節約、あて名書きの手間などの煩わしさからの開放に加えて、国民全体の配達総量を減らすことができます。付きあいの広い方が多人数に送付するときは絶大な効果を生むことでしょう。

便利さと危険は隣り合わせ

リスク回避

名だたる組織であるドコモ、au、ソフトバンクの3大キャリアでさえも時々、事故が起きます。事故が起きて非公開の写真が公開されたら問題です。

期間をあらかじめ決めておき、限定公開で会員に見てもらったら必要な方にはダウンロードすることをお薦めして、公開基準を非公開に変更したり限定公開を中止すべく削除すると安心です。

sparking BINGO

横長ボタンを押してストップ&スタート🎯️
2行目に7,70,77,700,707,770が出ると当たり、777☞大盤振る舞い
紙吹雪乱舞、特賞・1等賞・2等賞ごとにファンファーレ鳴り響く

スパーキング ビンゴゲーム
012345678©2023 TacM, Ver0.01

ネット後進国からの脱出

踏ん切りが大切

このたび、長年の懸案であったブログをSSL化する難題を実現させてホッとしています。情報を暗号化せずに平易な通信を非SSL通信、暗号化して盗聴などの心配を払拭した通信をSSL通信と呼びます。

前者のサイトアドレスがhttp://から始まるのに対して後者はhttps://から始まるアドレスであり、通信を担当するブラウザは数年前から、非SSLに対して『このサイトは保護されていません』というメッセージが出力されるようになっています。

今までこのサイトは怪しいですと言われているようで穏やかではありませんでした。

非SSL通信は違法ではありませんが自転車運転に例えれば、ブレーキの甘い運転と言えます。買い物などに自転車を使う分には問題ありませんが急な飛び出しなどにはブレーキが甘いと危険が伴います。

SSLに移行するには経費はそう掛かりませんが過去との継続性でなかなか踏み切れません。

今までだましだまし非SSLでやってきた輩(やから)からとやかく言われたくないという声が聞こえてきますが踏ん切りがつかないと実現できません。

最悪、ブログが閉鎖に追い込まれることになりかねません。清水の舞台から飛び降りる思いで決行したところ「かすり傷」程度の被害で済みました。

踏み切る前に主だった県のホームページを調査したところ、ほとんどの県でSSL化に変更済みでしたがある県では未だに非SSLでした。

予算は十分にあるでしょうから迅速な対応が求められます。

ナンバープレイスへの挑戦

ナンバープレイス自動解法ソフトの開発

このところ、脳の活性化のためナンバープレイスを追いかけていました。消しゴムと鉛筆によりナンプレを解いていましたが、途中からAIに解かせてみようと考えhtml, Css, JavaScriptによる『AIナンプレ自動解法プログラミング』に挑戦しました。

ナンバープレイスを解く鍵は9個からなるグループに与えられた数字をとらえて他のグループとの関連から必然性を見つけてひとつひとつ、空白マスを埋める方法がオーソドックスです。

以下のサンプルは41個の与えられた数字にナンプレのルールを適用して残りの40マスを埋める課題です。左上のスピーカーボタンをクリックすると回答の先頭部分が表示されます。この所作は言わずと知れた『音声が出るサイトにおいて初回は閲覧者が決める』という前提があり、自動開始を認めていないからです。

 

本格的な記事は『AIでナンプレを解く』です。

先人がナンプレを解くコツをまとめた定石がネットや書籍に掲載されています。コンピュータを用いてナンプレを解くソフトウェアはアプリケーションとして数多く出回っていますが、解く過程について解説している情報はまだ整っていません。当記事がフロントランナーとして役立てば幸いです。

候補として挙げられた数字を一つずつ削除する定石には親しみやすい名称がついていて、隠れ二国同盟、ポインティングペア、三国同盟などが有名です。三国同盟については 『ナンプレ三国同盟実装する』において詳しく触れています。

残した課題

前回、発表した記事はまだまだ発展途上であり不十分な点が多々あります。一番おおきな課題は「極めて難解な問題は解けない」です。これは永遠の課題であり引き継いだ新進気鋭の若者が成すことですので気にしていません。それも含めて残された課題を整理してみます。

①難解な問題は解けない
②画面は600ピクセルより大きなモニタを想定
③解法の集計は大雑把でマス目に確定数字を埋め込むときのみ、カウントしている
④右の進行状況表示欄に解析中の重要情報をもっときめ細かに表示する

HTMLへの思い入れ

かつて、開発環境を整えるだけでも月に何百万円ものリース料を払って開発しなければならない時代がありました。

時代が進んで個人レベルでも様々なシステム開発ができるようになりました。あとは意欲一つの時代が訪れました。

HTMLは世界中の技術者が公開に向けて努力されました。何の代償もなく使わせていただくのはありがたいです。

他人、他組織、他国が開発したシステムを後追いするだけでなく、ユニークな企画のもと独特な商品開発につながることを祈っています。

電子機器今昔

お局様(おつぼねさま)

お局様の話はうざったい!耳を貸す気にはなりにくいが通例です。歴史に学ぶつもりで古い話を聞いてください。今般、古いWindows10パソコンを一掃してWindows11パソコンを導入しました。

朝、シャットダウン状態から立ち上げるのに20分ほどかかりました。限界を超えてる中古(ちゅうこ)品というより中古(ちゅうぶる)をだましだまし使ってきました。

いつ壊れるかと気をもみながら使うのは心臓に悪いと考え一念発起して切り替えました。

白黒テレビを見始めたころ古くなると電源を入れてから見れるようになるまで20分ほどかかるので、お気に入りの番組を見るのに早めに電源を入れていたことを思い出しました。

当初、バイクや四輪車にはセルモーターがついてなくキックしてエンジンをかけたものです。チョークをふかすという用語を知っている人はもう皆無に近いでしょう。

トラックやバスにはクランクというかぎ型の道具を非常用に携行してエンジン不調に対応しました。

古い知識は役立たないか

世の中は猛スピードで進展し古い知識が役立つことは少なくなりました。ChatGPTなるものが出現しなおのこと、古い知識には関心が薄くなったようです。

コロナが突然現れたように考えがちですが人間の歴史が始まったころにすでに存在したでしょうから、ChatGPTの雰囲気はこれまでもあったはずです。

なにも一朝一夕に世の中が変わるものではないでしょう。落ち着いて付き合っていけばいいのではないでしょうか。

今どきの動画や写真送信法

時代に合った手法

諸事において周りが変化したならそれなりに対応せざるを得ません。一昔前のファッションが気に入っているとしても流行遅れとみなされます。市場に出回っていなければ身に着けることはままなりません。電子機器の進歩は日進月歩でありぼやぼやしていると取り残されます。

大型連休では多くの動画や写真を収録したことでしょう。時代に即した動画・写真送信方法を体現してください。

情報伝達の変遷

動画や写真を他人に送るとき、紙に印刷したりテープ、フロッピーディスク、CD-ROMに複製して送っていました。近年になってインターネットが普及するとpngやmp3, mp4の電子媒体を作って関係者に送るようになりました。以下にその手法を挙げます。

①紙やテープなどを郵便で送る
②電子媒体(CD-ROM, DVD)を宅配などを使って送付する
③インターネットを使って電子媒体のイメージを送信する
④電子媒体のアップロード先アドレスをメールやLINEで送る

集合体を作る

①や②による伝達法は時間と経費がかかりますが、現在は③や④の方法を用いてネット社会になじんでいます。写真は1枚で終わることは稀で集合体にすると扱い易くなります。また、次の写真に移るときの切り替え効果を付けると退屈せず中身が引き立ちます。それらを作るツールとしてスライドショーやmovieMakerがあります。まず簡単にまとめる方法から述べていきます。

🔶ZIPに圧縮し一つにする

写真をひとつのフォルダにまとめ、フォルダ全体を圧縮してZIPにします。このZIPを送信先に送り、受信者が解凍(展開)して写真に復元します。

🔶複数の写真からスライドショーを作る

写真を動画風にするには、例えばmovieMakerのようなスライドショー作成アプリを用います。以前はWindowsに付属していましたが最近のOSには付いていません。教材などを大量に扱う学校の教師や塾講師の職業においては購入されてはいかがでしょう。字幕(キャプション)やメッセージを付けたりBGMを流すこともできます。

電子媒体をアップロードするには

写真や動画をYoutubeなどの公開サーバー上にアップロードすると写真・動画本体を相手に送ることなく見てもらうことができます。閲覧条件を設定することにより、家族、会員などに制限することも可能です。公開条件に制限を設定しないとブラウザの検索にヒットすれば誰にでも閲覧されてしまいます。

せっかく、閲覧条件を設定したのにロード先のURLアドレスを誤って公開に及んだら何にもなりません。このような場合はYoutubeから動画を削除すれば大丈夫です。

過去の作品例

以下の作品は動画風写真に手づくりしたものです。▶再生ボタンをクリックしてお楽しみください。

まとめ

動画や写真をそのまま、関係者に送ろうとしたときアップロードする方法を考えてください。ZIPにしてメールに添付したり、DVDを宅配で送るのはもはや時代遅れです。公開サーバー上にアップして限りある通信資源を有効に使いましょう。

送り側はアップするときに公開条件に配慮し、受け取り側は情報がサーバーにいつまで保存されているかに気を配る必要があります。後日、再び見たいと思ったらダウンロードして自分の領域に確保することを忘れてはなりません。

チャンス到来

若者に期待

先日、靴やカバンの修理をしてくれるお店を尋ねました。駅から少しかかりますが散歩気分で徒歩で行くことにしましたが大きな河を渡る橋の入り口がわかりません。近くの人に聞いてようやく辿りつけました。

以前、整備されたバイパスの歩道を散歩していると高速道路の入り口に差し掛かり歩道がなくなっていました。

車と歩行者の共生にまで考えが回らなかったのでしょう。この街に来てようやく慣れてきましたが心の奥底にたまった違和感をまとめてみます。

車優先社会

今住んでいる町はところどころにクレーン車が立ち並びいまだに発展途上という珍しい町ですが60年以上も前に策定されたであろう車社会対応版街づくりがずっと踏襲されているようです。

当時、気鋭の若者たちがアメリカや福祉先進国の北欧を視察に回って作り上げた町のように感じられます。

その功労者も市役所の部長等に昇りつめ引退されたことでしょう。

コンビニなど新規に続々開店されますが、広い駐車場には歩行者の導線が見当たりません。

車や自転車の勢いに押され街並みを楽しむ気分が湧かず、地下鉄やバスに足が向く街づくりは何とかならないでしょうか。

空飛ぶ車が夢でない時代が到来しています。

いつまでも杓子定規に手あかのついた街づくりを金科玉条として守り続けるのはいかがなものでしょう。

若者の選挙離れが報道されていますが、若者にとって今こそチャンス到来というものです。

引かれ者の小唄や愚痴を聞いている暇はありません。やったが勝ちです。斬新な町づくりを期待しています。

さいごのひとこと

本末転倒

限りある地球の資源を大切に扱って古くなったものを修繕して使う生活スタイルは「江戸時代のリサイクル精神に学ぶ」を標榜している身にとって大いに満足しました。気分を良くして帰りには生ビールをしこたま飲んで英気を養いました。収支決算は甚だつじつまが合いませんが後悔のない一日でした。

ナンプレ実装化1

実装化に当たっての方針

これまでプログラミングを考えるという観点から、AIを用いてナンバープレイスを解くというミッションに挑戦してきました。

ここに至るまで、ナンプレ解法を2桁サポートすることを目指してHTMLを使って実装化に励んできましたが先日、10個目の『XY-WING』の動作確認を終えたところです。

さて、モノを作るには製造技術を持っていなければなりませんが、品質の高い商品を作るには最終的な製造技術があれば事足りるというわけではありません。ナンプレは1~9の数字を扱い、3つに限定する処理が極めて多いです。縦、横、ブロックと常に3に関わっています。

ナンプレ解法の三国同盟、隠れ三国同盟、BoxLine、XY-WINGなどにおいて、『3マスに限定された3つの候補』という条件がしばしば出現します。

実装化に当たり3にまつわる事柄について整理しておきます。

3つに限定された3つの候補

9個のなかから3個を選ぶ組み合わせは84通りあります。123から789まであり、求め方を含めて下記に示されます。

9C3=84
9個の中から3個を選び3限定を成立させる組み合わせは次の84通り
 

普遍化とは

以前、当サイトのナンプレ三国同盟実装するにおいて、普遍化の部分で123以外の数字を出現回数を調べて123に引き当て普遍化テーブルと突き合わせると述べましたが、この方法は適切でありませんでした。

普遍化とは多くの例証があるとき、すべてのケースに合致する法則を見出して一つの例題で説明するときに適用するものです。

あらゆる事象に応用できない場合は誤りです。今回の記事により訂正いたします。

9C3=84はそれほど大きな情報量ではないので、起こりうるすべてを定数として用意する方式に変更しました。定数は1, 2, 3と3個1組で使われることもありますが、12, 13, 23と2桁で利用される場合が多くこの他にも三国同盟においては12, 13, 123や23, 123, 123など8種類のバリエーションが存在します。これらのテーブルを追加するとさらに情報量が膨らむので必要になったときに生成して利用しています。

基本形の123から2桁の組合せ(12, 13, 23)や三国同盟を成立する候補の組合せは平易な方法で生成することができます。

まとめ

数多くのバリエーションがあるとき、代表的な値で全体を説明可能な場合、普遍化して少ない情報で代替できますが、そうでない場合はすべてを例証として挙げることが手堅い手法と言えます。

おまけ

9個のなかから3個を選ぶ組み合わせを表示するHTML関数コードをおまけとして以下に掲載して終わりにします。

SyntaxHighlighter Evolvedプラグインを有効化するのを忘れていました。あぁ反省!

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<Div style="margin:0 auto; width:600px; height:280px; font-size:18px; background:ivory; border:1px solid green;">
<div style="text-align:center;">9個の中から<b>3個を選び3限定</b>を成立させる組み合わせは次の<b>84</b>通り</div>
<div id="item" style="text-align:left; margin:20px; width100%; height:auto; font-size:16px;"></div>
</Div>
<script type="text/javascript">
var vMax=ary=0;
const combination = (nums, k) => {				//numsで指定された文字からk文字を選ぶ組み合わせ配列を求める
    let ans = [];								//1,2,3,4 ===> 1,2 1,3 1,4 2,3 2,4 3,4
    if(nums.length > vMax)	vMax=nums.length;
    console.log("nums.length="+nums.length, k, vMax);
    if (nums.length < k) {
        return []
    }
    if (k === 1) {
        for (let i = 0; i < nums.length; i++) {
            ans[i] = [nums[i]];
        }
    } else {
        for (let i = 0; i < nums.length - k + 1; i++) {
            let row = combination(nums.slice(i + 1), k - 1);
            for (let j = 0; j < row.length; j++) {		//ここで指定された文字からk文字を選んでいく
                ans.push([nums[i]].concat(row[j]));
            }
        }
    }
    return ans;
}
for(var i=3; i<=9; ++i){
	var number=new Array(i);
	for(var j=0; j<i; ++j)	number[j]=j+1;				//1, 2, 3, 4, 5, 6
	ary = combination(number, 3);
	console.log(i+" "+letter2(ary.length)+" "+vMax+"C3="+JSON.stringify(ary));//'a', 'b', 'c' ===> ["a","b"],["a","c"],["b","c"]]
}
	//document.getElementById("item").innerHTML = JSON.stringify(ary);
	console.log(ary.length, ary[0], ary[83]);
	for(var i=0; i<ary.length; ++i){
	  document.getElementById("item").innerHTML += ary[i] + " "
	}
function letter2(n) {return (" "+n).slice(-2);}	<!-- send ' 1' -->
</script>
</html>