t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

三角関数を使ってSatisfactoryでの最適な線路敷設角度を求める

最近とある政治家が学校教育で三角関数よりも金融リテラシーを教えるべきだと主張して炎上した。
数々の反論を読んで改めて三角関数の重要性に気づかされた出来事でもあったので、私も三角関数について何か書いてみようと思う。

まぁ、正直ぐたぐだしてるうちにだいぶ話題に乗り遅れたんだけど。


最近よくプレイしているSatisfactoryという工場建設ゲームで以下のようなマップがあり、海岸線にそって線路を敷設したいという要件がある。

Satisfactoryは一人称視点のゲームなので、高所から見下ろして直感で一気に線路を引くということはできない。
その代わりに東西南北の方角はゲーム内のコンパスで分かり、そこから基礎となる土台を5度単位で回転させることができる。


つまり角度が分かれば起点からまっすぐに土台を伸ばしていけるので、パワポ等で適当に直角三角形を配置して斜辺を海岸線に沿わせてやれば、あとは高さと幅の情報から逆三角関数で角度が求まる。

あ、タイトルで嘘ついたごめんなさい。
今回は三角関数の話じゃなくて、逆三角関数の話。まぁ計算順が逆なだけなのでご容赦。

計算方法は受験とかじゃないかぎり便利サイト使えば良い。
keisan.casio.jp

こんな感じで、アークタンジェントを選択して変数xに計算式を入力すると、約70度と出た。

今回の場合は西から右方向へ70度土台を傾ければ概ね海岸線に沿ったラインが引けることが分かった。


ここで、分度器があるんだからわざわざ三角関数要らないのでは?という疑問を持たれる方もいるかと思う。
しかし現在はコンピューター全盛期。たとえば角度計算をよく使うから便利ツールとしてプログラムを組もうとなったときに三角関数をそもそも知らないと早々に行き詰ることになる。

コンピューターの画面は基本的に小さな四角いドットの並びで出来ており、内部で扱えるのは基本的にX・Y座標系である。
そこから角度を求めたいとか、指定した角度で線を引きたいとか、円を描きたいとか、斜線の距離を求めたいという話になると、基本的には三角関数・逆三角関数等を使って計算で対処することになる。

角度を求めるのに分度器を当てるという発想しかなければそもそもプログラムを組めるというイメージが全く湧かないのではないだろうか。

こんな記事を書いている私も実は三角関数についてちゃんと知ったのは去年の話である。壊れない棚を作りたくて材料力学という分野を学習していたのだが、そこで初めてちゃんと調べた結果便利すぎて衝撃を受けた。電子工作でも使えるしSatisfactoryでも使えるし、マイクラでも使える。

コンピューターの登場・発展によって三角関数の面白さ・有用性を身近に味わえる事例はむしろ増えているし、プログラミング教育との相性も抜群だ。

ようやくここまで身近に感じられる時代が来たのだ。
ここで義務教育から外すというのはちょっと時代が見えてないんじゃないかと思う。

ということで今回はここまで。


あ、そうそう。。例の線路どうなったかというと、

景観の問題で直線案はボツ、結局90度と45度の組み合わせで作った。。

三角関数関係なかった。

すみませんでした!

Satsifactory序盤を実況解説してみた ~ 自分の肉声に慣れるべし

今回はSatisfactoryの序盤を動画で実況解説してみた。
まぁ、いわゆる布教活動である。

youtu.be

先日記事でらくしげさんの実況をおススメしたけど、あの頃と比べるとゲーム自体がかなり進化しているので当時はめちゃくちゃだった日本語ローカライゼーションもだいぶマシになってるはず。

ということで日本語に設定して試しにチュートリアルをやってみた。

動画編集などという面倒な作業は避けたいので一発撮り。
実況解説は初めてなので放送事故ばりに何喋ろうか困惑するってことも予想してたけど、まぁ普通の人間並みには喋れてるな。
音声がちょっと小さいのが失敗した。

シリーズ化するつもりはないけど、動画を撮るというのはしゃべりの練習としては割と優れたトレーニングのような気もするので、機会があればそういうこともやっていきたいと思う。

そういえば自分の肉声を客観的に聞くのって最初は違和感しかなくて、昔は声入りで動画を出すなんてとんでもねぇなと思ってたんだけど、これはマジで慣れておくことをおススメする。

実は昔ヘルプデスクで働いていた頃に、ユーザーに直接会ったときに電話だと怖い人だと思ったと言われたことがあって、それから自分の声を客観的に聞くということをやり始めた。

現在ではモニタリング機能付きのオーディオインターフェース(YAMAHA AG03)を使っているので自分がしゃべる声が遅延なくヘッドフォンから聞こえる。

常に自分の声を聞いていると「あ、今のちょっと感じ悪いなぁ」とかいう気づきもあるので少しづつ改善に繋がるのでおススメ。

まぁ、最初はどうしても歌いたくなるので喉壊さないように注意。

以上。

Satisfactoryの工場見学動画(垂れ流し)を作ってみた。

前々回のSatisfactoryの記事がそこそこアクセス良かったので、二匹目のドジョウ狙い。

といっても文章解説はもう飽きたと思うので今回はこれまで作った工場のうち代表的なものを動画で紹介してみた。

youtu.be

何の説明もなく、ただワールドを駆け巡るだけの動画だけど、こんな感じの建物・コンベアラインが作れるというイメージを持ってもらえれば。

ゲーム中の音楽もそのままで編集カットが無い分、実際のゲームの雰囲気はイメージしやすいかなと思う。
…というのは建前で、実況形式だと言い間違いを取り直したり編集したりといった作業が面倒なのでまぁ、実況なしの垂れ流しでいいや。

建築作業は全く載せてないけどまぁそれは他の方の動画でいくらでもあるのでYouTubeで検索いただければと思う。
気が向いたら次何か建築するときにでも撮ろうかな。

以上。

最近のLEGOが、私の知ってるやつと違う件

最近LEGOというオモチャを手に入れたので、少しずつであるが遊び始めている。

そう、あのLEGOである。


あの。。あれ?こんなんだっけ。。
youtu.be



。。。


いい歳した大人がレゴなんて!と侮るなかれ。
最近のレゴは凄いんだ。

私が買ったのはTHE LEGO MINDSTORMS EV3というもの。


Amazonで新品を見ると7万円くらいの値段がついててぶったまげる。お前、、そんなにか??プレステより偉いのか??

ということでメルカリへGo。
無事に2万ちょいでGet。

あとアイデアブックという書籍をAmazonで調達。一応洋書だけど「イケアの説明書かよ」ってくらい図しかないので読めなくても大丈夫。

これ見ながらギアの組み合わせとか、機構の学習中。

これ、パーツカラーが実物と書籍で違ってて、たぶんロット違いというかバージョン違いだと思うんだけど、すげー探しづらいのが難点。

さて、実はもともとLEGOがやりたかったわけじゃなくて、機械工作系のスキルが欲しかったのがきっかけである。
趣味のものづくりに役立つような工作系スキル全般に興味があって、このブログでも2019年末頃から雑多に扱ってきているんだけど、現状のスキル認識としては下図の黄色のレーダーチャートといったところ。これを赤の点線くらいまで引き上げたいんだけど、機械工作系だけはさっぱりだったので、ようやくスタートラインに立てた。

※これだけ見ると全然仕事出来ねぇポンコツに見える。。いや、違うんだ。。私の本業はIT統制なので、このチャートはあくまで趣味の話だ。あとVBAならたぶん5。

機械工作というよりは、マシン機構系に興味があるという感じかな。



他にもパーツをメルカリで買ったんだけどそっちは微妙に臭いがついていたので台所用洗剤とぬるま湯で超音波洗浄。

よく水で濯いだら最後に精製水で再度超音波洗浄。

精製水は回路基板製作のテストで使った化学実験器具の洗浄用に買ったのだが、不純物が取り除かれているため自然乾燥させても水垢が残らないという特徴がある。

レゴのような細かいパーツはいちいち拭いてらんないので、これを使って自然乾燥させようという作戦。
10本追加購入したけど、今回の案件で既に5本使用してしまった。

あとはひたすら地獄の選別作業。。

そんなこんなありながら学習を進めていくと途中で知らない子に遭遇。

ナニコレ、そんなパーツ入ってねぇけど??
しかもこの本、図しかない弊害でパーツ名でググろうにも何てやつなのかさっぱり。

で、色々調べてるとどうやらTHE LEGO MINDSTORMS EV3には拡張パーツセットなるものがあるらしい。。

え?また2万??

悩んだけど、まぁスキップするのもの気が晴れないので結局購入した。

メルカリでも1万5千円とかだった気がするけど、また洗うのも手間だしこれくらいの値段差なら新品で良いかなという判断。

ということで暫くチマチマと学習を進めていこうと思う。

一応、THE LEGO MINDSTORMS EV3は本体からサーボモーター等のパーツをプログラミングで動かすことができるのでこれだけでロボット工作もできる。ただ私はオモチャとしてのロボットそのものはあんまり興味なくて何か実用的なモノを作るために基本的な機構の学習がしたいという動機なので、あんまりプログラミング機能を活用ってことは今のところ考えてない。

今の私のスキルでは作れないけど、将来的にはベルトコンベアを使ったキーキャップを並び替える装置を作ってみたいなぁと思う。
キーボードって割と短期間で汚れるのでよく洗浄するんだけど、最後にキーをはめる作業が超大変なので、機械学習で文字認識させてQWERTY順に並び替えてくれるマシンとか作れないかなぁと。まぁ、まだこの夢は遠いんだけど。

ビジネスとしては成立しないけど、自分は欲しい。そういうのを好き勝手に作れるのがモノづくり趣味の醍醐味なので今後もスキルを磨いていきたい。

以上。

GWに50時間を費やしたゲーム、Satisfactoryについて

今年のゴールデンウィーク、起きている時間のかなりをSatisfactory(サティスファクトリー)というゲームに費やした。
このゲームはかなり面白いので、ちょっと紹介してみようと思う。


Satisfactoryは異星に工場を建設してひたすら製品を製造しつづけるというPCゲームで、一応最上位のプロダクトは存在するもののこれといってゴールはない。

クラフト要素、建築要素、冒険要素などがあるけど、中核の要素は工場のオートメーション。
クラフトマシン同士をコンベアベルトで接続して素材から部品、最終製品まで自動で製造することを目的としている。

最初期はこんな感じで手で鉄を掘る。

そして加工も最初はハンドクラフト。

しばらくするとポータブル採掘機が作れるようになり少し効率が上がる。

ゲームを進めると次のようにマシン同士をつないで全自動でプロダクトが生成されるようになる。

ただ、この初期の自動化工場はまだまだ効率が悪い。
どういうことかというと、マシンによって1分あたりに処理できるアイテム数に違いがあるので一番遅いマシンがボトルネックとなって生産ライン全体の足を引っ張ってしまうのだ。
今回の場合、採掘機のほうは鉱石を1分間に120個掘り出すことができる。
一方で今使っているベルトはアイテムを60個までしか運ぶことができず、更に製錬炉は1度に鉱石30個までしか処理できない。

効率を上げるには、ベルトをアップグレードして、分岐機を使って製錬炉を並列で動かせばよい。

このように、実際の工場で考えなければならないような各ラインの生産量調整がこのゲームの難しさであり、また醍醐味でもある。


しばらくすると土台を建築できるようになり、コンベヤも90度ターンさせるなど審美性に拘ることができる。

ここに壁や屋根をつければ小さな工場の完成だ。

そしてゲームを進めるにつれ新しい製品を製造できるようになるが生産ラインは複雑化し、工場はどんどん大規模になっていく。

今回ゴールデンウィークで取り掛かったのはターボモーターという製品を生産する工場。
現時点でこのゲームの最上位クラスの製品なので生産ラインは非常に複雑になる。。

更に、どうせ作るなら何かこだわった形の工場にしたいということでデザインに凝った結果、割とマシンをギチギチに詰め込むことに。。

写真ギャラリーとしていくつかご紹介。

外観はこんな感じ

1階の製作フロア

2階の原材料精錬フロア

屋上の原材料搬入ドローンポート

地階の原材料搬入貨物駅


ここまで、生産ラインの複雑さに比べてスッキリして見えたと思うけどそれは搬送路の大半を0.5階の搬送専用フロアと、地階に押し込んだ為だ。

サードパーティー製のツールでみたときの工場マップがこんな感じ。

かなり複雑怪奇で何のこっちゃ分からなくなっているけど、形としては結構面白い工場になったんじゃないかなと。

コンベヤラインだけを表示させるとこんな感じ。

この規模になってくるとゲームとはいえちょっとしたプロジェクトである。
頭で考えながらでは無理があるので、Excelで管理表をつくり、

Redmineでプロジェクト管理しながらなんとかGW内に稼働にこぎつけた。


まぁターボモーターはこのゲームの集大成に近いようなプロダクトなので極端な例である。
正直途中から仕事じみてきてしんどいこともあったけど、大きな達成感を得られることができたので大変満足度の高い休暇だったと思う。

興味を持った方はYouTubeでいくつか実況動画。日本語だと「らくしげ」さんの動画がおススメ。
PCスペックの関係で自分でプレイできない方も実況動画見てるだけでもそこそこ楽しめると思う。
youtu.be


さて、最後にこれまで建設した工場の写真をいくつか貼って記事を終わろうと思う。
いまのところゲームブログに転向する計画はないのでこういう機会に貼っとかないと人に見せる機会もあんまりないだろうし。

こちらはバッテリー工場。空輸ドローンはバッテリーを消費するのでこの工場で生産して、ドローンで各地に届ける。

中はこんなかんじ。

次に一応自宅として使っている基地。バッテリー工場の崖を上ってすぐのピンクの森の端にある。

中は特段なにもないけどベランダからの眺めはお気に入り。


こちらはかなり初期に作った小規模な基本パーツ工場。

床用のコンベアリフト穴がゲーム内に実装される前に作った工場で、アイテムの上下移動は壁伝いにリフトで運んでいる。今となっては逆に特徴的な外観なのであえてこのまま残すことにした。


実はかなり最近まで壁を作るのが面倒で以下のように廃墟のような外観でずっと使っていたが、Update 5が来たときにコンクリ壁やいい感じの窓が実装されたので外観をきれいにした。

次に最近建設した石油発電所。こちらは海上に土台を敷き詰めて160機の石油発電機を脳筋で置いて行った感じ。

発電所は他と比べると単純なので作りやすかったけど、唯一水中でのパイプ引き回しに苦労した。

あと作りかけで放置し、先日解体した原子力発電所。
こちらはUpdate 4の頃に作っていて、50時間くらいかかっていたと思う。



当時はマシンとコンベアが干渉できず、隙間が空いているように見えても実はマシンがもつ立方体の干渉不可エリアでブロックされていてベルトを通す隙間が無いなど、技術的な理由でかなり苦労した。
ほぼ完成に近かったんだけど、Update 5で土台や壁の選択肢が増えたため今となっては古めかしく見えてしまい、放置していた。先日このあたりのバイオームの再開発が発表されたので思い切って撤去した。


最後はスーパーコンピューター工場。

アスファルトの土台が実装されたので道を整備してトラック輸送を活用した拠点だ。

スパコンもターボモーターと同じくらいハイレベルの製品なのでそれなりに複雑な搬送路になってしまう。

ただフロアが沢山あるので、念のためギチギチに詰め込んだら割とどのフロアも片側に寄っていて反対側はスカスカだったりする。


さて、今回の記事はここまで。
それではまた。

休日を有意義に過ごそうと焦る必要は無いという話

さて、昨日から連休に入った。
昔はまとまった休みが取れると何かしなくてはと焦り、連休の終わりに特に何もできなかったことを悔やむというパターンに陥っていたことがある。

同じ轍を踏む人を少しでも減らすべくここに私の考えを残そうと思う。


まず、折角の休みなので有意義に過ごしたいという焦りを覚えている時点で、恐らくあなたは疲れている。
元気があり余っている人は、そもそも既にやりたいことを計画してそれを始めているはずで、有意義に過ごしたいなどという焦りとは無縁だからだ。

休日とは読んで字のごとく、休む日である。
好きな物を食べて、惰眠をむさぼる。これで十分有意義に過ごしたと言える。
無理に何かしなくてはと焦る必要はないのだ。

私は連休の度に「何も成さない」ことを目標にしている。すると不思議なことに2~3日休むと自然とやりたいことが見つかり、それを始めてしまう。まあこれはこれで十分に回復したという証拠なので良い。

あるいは短い連休だとそれで本当に家でダラダラしているだけで終わってしまうこともある。
そういうときは喜ぶべし。目標は完遂されたのだ。休日を100%休むことに費やした。これ以上に有意義なことがあろうか。

そもそも、年に数回の連休ごときで成し遂げられることなんて高々しれている。
何かを成し遂げるためにはやはり年の大半を占める平日に短い時間でもコツコツやるのが一番。そして休日は義務感から解放され、心身のコンディションを整えることに専念するべし。

それでも折角の休みに何もできなかったと感じてしまう人は、「ぼーっとする時間」「何もしない時間」などと検索してみると良い。それらの有用性を示唆する記事が多数見つかる。

もちろん、やりたいことがあって気力が充実しているのに無理に何もしないことを推奨しているわけではない。
平日が義務に従う日だとすれば、休日は心に従う日。何かやりたいことがあればどんどんやれば良い。

でも、もともとやりたいことだったはずなのに、気が乗らないとか、それが焦り、プレッシャーになっているなと思ったらいったん落ち着こう。それは義務ではない。いつだってやめて良い。

それでも、何もやりたいことが見つからないないのに退屈だなぁ、でも眠くもないなぁ、何かしたいなぁ、と漠然とした焦燥感に駆られることがある。最近はもう、それも受け入れてしまえば良いと考えることにした。まぁいいや、どうせ休日だしと。
「何も成さない」ことを、あえて高らかに宣告するというのはつまりそこを出発点にすれば焦ったり後悔したりはしないという判断である。

ここ数年ずっとこの方針で休日を過ごした結果、この判断は正しかったと確信している。

さて、締めの言葉が思いつかないが、眠くなってきたのでそろそろ寝よう。
別にブログは趣味で書いてるんだし、締まらない回があっても良いだろう。
これこそ有限実行である。

以上。

自宅Wifiに接続された不明な機器をMACアドレスから特定する

先ほどWifiアクセスポイントで設定をいじっていたら、接続中のクライアントにIP Address 0.0.0.0と表示される謎の機器が存在することに気づいた。ナニコレ怖い。

侵入か!?いやセキュリティは万全のはず。

ということで表示されたMACアドレスから調べることにした。

MACアドレスとは

MACアドレスとはネットワーク機器に付与される固有のアドレス※で、同一ネットワーク内の通信に用いられる。

※正確にはネットワークインターフェースごとなので、LANポートの数だけ、あるいは無線と有線があればそれぞれMACが異なる。
※TP-LinkやHuaweiなど、一部企業が固有であるはずのMACを使いまわしている実態があるので、そうした会社の製品は必ずしも固有とは言えない。

そして先頭の6桁はネットワークインターフェースのベンダー※ごとに付与される固有の番号なのでこれを検索すればそのネットワークインターフェースがどの会社の製品か分かる。

※本体機器メーカーと同一とは限らない。

調べてみた

今回は8c:aa:b5ということで検索すると、上海の企業 Espressif Inc. というところらしい。
maclookup.app

何その聞いたことないメーカー怖い。

と思って調べてみると、こんなロゴが出てきた。

あ!これ何かの基盤で見たことある。

と思って電子工作パーツを漁ってみたところ、見つけた!

あぁ、Espressifって、あのESPか。なるほど。

てことは今ネットワークに繋がってるESPモジュールといえば、、M5 Stackだな!

あとはM5 Stackの電源落としてみてクライアントから消える、電源入れたら復帰することを確認し、確定した。
StaticでIP振ってるはずなんだけど、なぜWifi-AP上にIPアドレスが表示されないのかは謎。
ひょっとしたら私のコードがまずくて標準的な無線接続の手続きを取っていないのかもしれない。。

ということで解決。

おまけ知識

MACアドレスはスイッチングHUBで使われるアドレスだから、家はルーターに直接つないでるからMACは関係ないみたいな誤解をしてる方がいて、何事も中途半端にかじると厄介だなぁと思ったので、家庭でよく使われる無線LANルーターの内部構造(想像図)をご紹介。

厳密な構造はメーカーではないので分からないけど、無線LANルーターって要するに複合機器なので、直接指してるそれはスイッチだし、Wi-Fi接続も内部APを通じてスイッチ機能に繋がっていると思われる。

このスイッチに繋がれた区間は宛先IPアドレスは相手の宛先MACアドレスを調べるための手がかりとして使われているだけで、スイッチはIPアドレスを見て転送してるわけではない。

なお、ルーターはIPアドレスを見て転送先を決めるが、ルーター同士の実際の転送はやはりMACアドレス宛なので、機器同士の直接通信はどこまでいってもMACアドレスというのが事実。

なので家庭内にMACアドレスが重複する機器が2台以上あると、まともに通信できなくなる。

最近高性能な割に価格が安くて人気のTP-Link、ガジェット系YouTuberがよく宣伝してるので皆さんも気になっている方いるかと思うけれど、上記の前提を理解したうえで以下の記事を読むと、この騒動がよく理解できるかと思う。
www.itmedia.co.jp

このメーカー、他にもなんか怪しいので、私は個人的にはおススメしない。
anonymous-post.mobi

これ知る前に同社製のUSB-有線LANアダプター買ってしまったけど。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。