mieki256's diary



2019/04/01(月) [n年前の日記]

#1 [anime] 「絶対監督主義 〜シネマラボ 押井守たちの挑戦〜」を視聴

NHK-BSで放送されてたソレを録画して視聴。低予算で野心的な映画を作る、シネマラボという集団を、押井守監督、本広克行監督、等々と設立したそうで、その第1弾作品の制作に密着取材、という番組らしい。

13歳の役者さんを起用してしまったものだから、労働基準法の関係で夜08:00までしか撮影ができず、スケジュールがアレになってキレ気味の押井監督の図。撮影は終わったけど公開の予定が立たず編集すら始められず。なんやかんやで完成したけど映画祭での上映は試写扱い故にスタッフロールを流せない等々、次から次へとトラブルが。

はたして件の作品は劇場公開にこぎつけられるのか。戦いはこれからだ! みたいな。

#2 [anime] 「歴史秘話マクロスヒストリア」を視聴

NHKで以下略。

冒頭の「キューンキューン」にクラクラ。NHKのセルフパロディは、やはり強い…。

シリーズの傾向を、歌、メカ、三角関係の3つで紹介していく感じで、比較的分かりやすい説明になっていた印象。

2019/04/02(火) [n年前の日記]

#1 [ubuntu] VMware + Ubuntu 18.04 で Ubuntu-Mate をインストールしようとしたのだけど

Windows10 x64 + VMware Player 12.5.9 + Ubuntu 18.04 LTS 上に、ubuntu-mate をインストールして動かそうとしたのだけど。
sudo apt install ubuntu-mate-desktop
sudo reboot

ログイン画面で、MATE を選んでログインすると、画面が真っ暗になって先に進まず。なんでだろう…。

とりあえず ubuntu-mate はアンインストール。Ctrl + Alt + F1 を押して CUI でログインしてから以下。
sudo apt remove ubuntu-mate-desktop mate-* ubuntu-mate-* plymouth-theme-ubuntu-mate-*

Wayland とやらが絡んでるのかと思ったけれど、gdm3 ならともかく、lightdm関係でそれらしい設定は見つからないし。よくわからんな…。

試しに Cinnamon もインストールしてみたけど、そちらも画面が真っ暗になる。うーん。
sudo apt install cinnamon-desktop-environment
sudo reboot
sudo apt remove cinnamon cinnamon-*

参考ページ。 :

#2 [anime] 「ポプテピピック TVスペシャル」を視聴

BS-11放送版を視聴。

「スーパーバリザー」「大爆発 青山敏之」にやられました。たしかに正しい役職名。100%正しい。

2019/04/03(水) [n年前の日記]

#1 [ubuntu] Ubuntu MATE をVMwareやVirtualBox上でインストールしてみた

Windows10 x64 + VMware Player 12 + Ubuntu 18.04 LTS x64 上で、ubuntu-mate-desktop をインストールしても動かなかったのが気になったので、Ubuntu MATE 18.04 x64 の iso をダウンロードして、最初からインストールしてみた。

VMware Player 12 と VirtualBox 6.0.4 上でそれぞれインストールしてみたけど、ちゃんと起動してくれた。

ということは、Ubuntu 公式をインストールして、後から MATE を使おうとすると妙なことになるのかな。相変わらず原因は分からんけど。もしかするとアレコレ色んなパッケージをインストールする前に MATE を入れれば動くのだろうか。

#2 [ubuntu] Vagrant と VirtualBox をアップデート

せっかくだから、Vagrant と VirtualBox をアップデート。環境は Windows10 x64。 Vagrant 2.2.4 + VirtualBox 6.0.4 の組み合わせで動いてる模様。

pluginも更新した。
vagrant plugin expunge --reinstall
vagrant plugin update
> vagrant plugin list

vagrant-global-status (0.1.4, global)
  - Version Constraint: > 0
vagrant-hostmanager (1.8.9, global)
  - Version Constraint: > 0
vagrant-share (1.1.9, global)
  - Version Constraint: > 0
vagrant-vbguest (0.17.2, global)
  - Version Constraint: > 0

#3 [movie] 「忍びの国」を途中から視聴

昨晩TVで放送されていたので途中から視聴、かつ、録画して最後のあたりを視聴。

ジャニーズの人が出てる映画だからどうせたいした映画ではないのだろう、ある種のアイドル映画なんだろう、などと失礼なことを思いながら眺めていたけど、予想外に面白かった。アクションシーンが凄い。そしてラストがなんかイイ。ちゃんとフツーに楽しめる映画、だったような気がする。

主演の人が時折見せる、どこか奇妙な気配の表情が、キャラ設定に合ってるなと…。怖さを感じる…。軽さが虚無に通じてるというか…。

#4 [anime] 「荒野のコトブキ飛行隊」最終回を視聴

BS-11で放送されてたソレを視聴。TVアニメでありながら無謀にも戦車アニメ「ガルパン」を作ってしまった水島努監督が、舞台を陸から空へと変えて、みたいなアニメ。

とにもかくにも空戦シーンが凄かった。見ていて「いやいやいやいや」「無理無理無理無理」と思わず呟いてしまうほど。素晴らしい。CGの強みを存分に活かした映像。こんな映像、手描きではとても作れないなと。いやまあ、数機で飛ぶぐらいなら「紅の豚」等もあるけれど、これだけの数が、こんな場所で、しかもこの尺の分量で飛びまくるのは、手描きじゃ無理だろうと。

なんとくだけど、空戦シーンに全てをつぎ込んだ、一点豪華主義のアニメ、だった印象。

惜しいと思ったのは、どの飛行機に誰が乗ってるかさっぱり分からなかった点。翼に描かれた模様が違うと言われても、あんなに激しく動いてたら分かるわけがない。誰が乗ってるか分からないから、誰がピンチになってるのかも分からないわけで、当然ドキドキハラハラ感も減少気味に。キャラの顔がアップになってから、「えっ。このキャラが乗ってたの?」とようやく驚くという。赤いシャアザク等、昔のロボットが色分けされてたのって、とても大事なことだったんだなと改めて認識。

2019/04/04(木) [n年前の日記]

#1 [anime] 「revisions」最終回を視聴

BSフジで放送されていた、3DCGによるSFアニメ。最終回を視聴。

3DCGアニメというと、なんだかちょっとアレな作品が多い印象があったのだけど。ちゃんとフツーに面白かった。やはり、谷口悟朗監督と3DCGの相性はイイのではないかなあと思えたり。「ID-0」も面白かったし。カッチリした見た目の映像と、おそらくは監督の志向性が、パチリとハマるというか。

現時点では、3DCGだってちゃんと面白いアニメをコレこの通り作れるよ、という前例を一つでも多く増やして、視聴者側の印象・抵抗感をちょっとずつでも変えていくことが大事だと思うので、売れる売れないは別にして、こういう成功事例は実にありがたいなと。

シリーズ構成として、深見真氏が参加していたあたりも大きかったのではないかと個人的に邪推してるのだけどどうなのだろう…。

最後のあたり、主人公のアレな素性が明らかになったあたりに感心。もしかすると、巷に溢れる異世界転生モノへのアンチテーゼも入ってたりしないか…。

#2 [anime] 「けものフレンズ2」最終回を視聴

一応最後まで視聴。ちなみに1は未見。

面白いかどうかは別にして、全体的に、子供向けの企画であればコレでも十分じゃないか、という印象だった。おそらくはこの方向性が、プロジェクト全体が目指してた本来の方向性ではないのかなと勝手に想像。

某アニメのように、関節が変なめり込みをしていたり、線のゴミが出たり等も無かったし、映像は綺麗だったなと。モデリングも、おそらくは原作絵に近づいているのではないかと。

つくづく、「2」がついてなければ…。「本家」「元祖」「新」「真」等をつけるわけにはいかなかったのだろうか。まあ、シリーズ化したいという野望がそこにあったのかなと邪推したりもするけど。ナンバリング以外でもシリーズ化はできると思うのだけどなあ。

そういえば、某アニメ同様、モーションがガチガチだった気もする。今の動きはスゴイ、てな瞬間が無かったような…。まあ、どちらもリソースが少ないのだろう…。どうもこのあたり、手描きアニメを参考にしつつモデルを歪ませてまで動きを追及する本格派と、動いてればいいじゃん派に二分化してきている感じが…。いやまあ、それは手描きアニメも同じか…。でも、CGアニメーターは手描きアニメーターと違って、モーション以外については拘ることができないのに、そのモーションすら拘らなくてどうするの、てな気分にもなったりして。

#3 [anime] 「劇場版 ソードアート・オンライン -オーディナル・スケール-」を視聴

NHK-BSで放送されてたソレを録画して視聴。

面白い。これはかなり良い出来なのでは。TVシリーズを見ていることが前提の設定・脚本ではあるけれど、既存作を見ていた人へのサービス心が溢れ出ていたように感じたり。クライマックスのアクション作画も凄かった。ような気がする。

ARを基本設定に据えたアニメと言えば「電脳コイル」だけど、このアニメもARアニメとして双璧扱いしても良いのではないかとすら。描かれる光景に、リアリティと夢があるよなと…。まあ、電脳メガネもオーグマーも、今の段階では実現が難しいわけだけど。

2019/04/05(金) [n年前の日記]

#1 [anime] 「平成狸合戦ぽんぽこ」を一部視聴

TVをつけたら流れていたのでほんの少し視聴。

改めて眺めてみると、アニメならではの自由奔放なメタモルフォーゼが活用されていて、晩年、手描きアニメらしさを追及してスタッフに地獄を見せた高畑監督の志向性が感じられた気もしたり。いやまあ、今ならCGが使えそうなカットがあるような気もするけど。

と思ったけれど、ググってみたらジブリで一番最初にCGを導入してみた作品、だったらしい。

_ジブリで1番最初にCGが使われた作品『平成狸合戦ぽんぽこ』 | 非公式スタジオジブリ ファンサイト【ジブリのせかい】 宮崎駿・高畑勲の最新情報

まあ、メタモルフォーゼ部分で使ってたわけではなさそうだけど。

全然関係ないけど。誰かが、「ぽんぽこの先にけもフレがある」みたいなことを言っていて、なんとなく「あー」と思いました。

2019/04/06() [n年前の日記]

#1 [anime] 「とある魔術の禁書目録」3期の最終回を視聴

BS11で放送されてたソレを視聴。

何が何だかさっぱり分からないアニメだった…。

まあ、BSでは1期も2期も未放送なので、いきなり3期を見せられても、そりゃワケワカランわなと。しかも前作を見てること前提の作りだったし。なんで3期から放送しちゃったのか、そこからして意味不明。

見ていて色々言いたくなってしまったけれど、そのあたりはGRPでメモ。

2019/04/07() [n年前の日記]

#1 [anime] ルパン三世pert5、19話「7.62mmのミラージュ」を視聴

脚本が、「キノの旅」「ガンゲイル・オンライン」の時雨沢恵一氏だった。もちろん題材は、銃。ひたすら射撃の応酬。さすがとしか言いようがない。素晴らしい。

携帯灰皿に煙草の吸殻を入れて、「カシャッ」と閉じるのがカッコイイ。ポイ捨てより全然カッコイイし、今後喫煙シーンを見せるならコレだなあ、などと感心したり。

2019/04/08(月) [n年前の日記]

#1 [gimp] GIMPの「対話的歪め」はどこに消えた

GIMP 2.10 で作業をしようとして気づいたのだけど、フィルタ → 変形 → 対話的歪め (IWarp) が見つからず。どこに消えたのだ。

_4.7. 対話的歪め...

GIMP 2.10 では、Warp Transform というツールに進化していたらしい。

_4.12. Warp Transform

リリースノートに書いてあった…。

_GIMP - GIMP 2.10 Release

小さいサムネイル画像ではなく、実画像サイズで作業できるので、たしかに改善されてる気がする。

Windows 10 x64 + GIMP 2.8.22 Portable + 対話的歪め、で動画を作成しようとすると画像がグチャグチャになったけれど、GIMP 2.10.8 + Warp Transform ならそういうこともなく。バグも取れているっぽい。

#2 [cg_tools] シネマグラフについて少し調べていたり

最近ちょっと気になるCGソフトがあって。 _PhotoMirage というソフトなのだけど。なんでも、静止画に矢印等で動きを指定するだけで、ループ動画を作成できるっぽい。どういう仕組みなのだろうと。

色々調べていたら、その手の動画・アニメgifは「シネマグラフ(cinemagraph)」と呼ばれていて、数年前に流行ったことがあるようで。

ただ、一般的なシネマグラフは、動画ファイルの一部を切り出して、動く部分と動かない部分をマスクで切り分けて、という流れで作るっぽい。最近の Photoshop は動画を取り込むこともできるので、Photoshop でシネマグラフを作るチュートリアル記事などをそこそこ見かけた。

もっとも、自分が気になるのは、静止画を無理矢理動いてるように見せかける手法のほうで…。そういう方法はほとんど誰も紹介しておらず、さて、どうやって作るのかなと気になってるところ。

ループ動画の作り方について。 :

シネマグラフはループ動画なわけだけど、どうやってループさせるかが気になるところ。巷の記事では、3種類ぐらいあるらしい。
  • ピンポン風。「A」→「B」で構成されてる動画があったら、ABBAと並べる。動きが行ったり来たりすることで、ループしてるように見える。
  • ループの繋がりを気にしない。ABCDで構成されてる動画があったら、そのまま流す。ループの繋ぎ目がガタッとなるけど気にしない。
  • ループの繋ぎ目をオーバーラップする。ABCDの動画があったら、ABの部分にCDを重ねて、CDをフェードアウトさせる。

PhotoMirage でやっているのは、3番目の方法だろう。

これをひとまず手作業で再現できないものだろうか。仕組みさえ分かれば自動化できるだろうし。と思って、AviUtl を使って試してたのだけど、なかなか上手くいかない。動きが逆再生されるような見た目になる。なんでや。

静止画を変形させるソレ。 :

静止画が変形していく動画の作成には、もしかすると GIMP 2.10.x の Warp Transform ツールが使えるのではないかと思えてきた。Warp Transform には、変形する様子を複数のコマで出力してくれる、「Create Animation」というボタン(機能?)が用意されているわけで。まあ、GIMP 2.8.x の IWarp(対話的歪め)にも、同様の機能があるのだけど。

てなわけで、適当な画像を開いて実験してたのだけど。これがなかなか上手くいかない。

2019/04/09(火) [n年前の日記]

#1 [cg_tools][gimp] GIMP 2.10 で静止画からシネマグラフを作成

GIMP 2.10.8 Portable + AviUtl 1.00 + 拡張編集プラグインを使って、静止画からシネマグラフを作成する実験をしてみたり。環境は Windows10 x64。

_GIMP Portable (image editor) | PortableApps.com
_AviUtlのお部屋

実験用の元画像は以下から入手して使わせてもらった。

_Pixabay
_済州島天地淵の滝 済州天地淵の滝 千の遅れの滝 - Pixabayの無料写真

作業の流れをメモ。 :

GIMPで、元画像を640x360に縮小。

cinemagraph_ss01.png

レイヤーをコピーしてから、Warp Transform ツールで、滝の部分だけを変形させた。

cinemagraph_ss02.png

Warp Transform ツールの使用直後に、ツールオプションウインドウ内にある、 Create Animation ボタンを押せば、指定したフレーム数分、レイヤーが並んだ新規画像が ―― 1コマが1レイヤーとして扱われてる新規画像が作成される。

注意点。Warp Transform ツールで変形した後、xcf等でファイル保存をしてしまうだけでも、Create Animation ボタンがグレーアウトして、動画を作れなくなってしまう。おそらく、件のツールを使ってる間は動画を生成するための情報を保持しているけど、そこから一旦抜けると、動画生成用の情報をクリアして、変形を確定してしまうのではないかと。

ちなみに、1コマが1レイヤーになっている画像は、Filters → Animation → 再生、を使ってプレビュー再生することができる。

各レイヤーを連番png画像として保存。以下のプラグインを使わせてもらった。導入すれば、ファイル → Export Layers で利用できる。

_khalim19/gimp-plugin-export-layers

動かない部分も作っておいて、アルファチャンネル付きのpng画像として保存。この画像は、動画編集ツール等で作業する際、上から被せて使う。

cinemagraph_ss03.png

先ほど出力した連番png画像を AviUtl + 拡張編集プラグインで読み込んで mp4動画にする。

そのまま作ると以下のように並べることになるけれど。この状態だとループの繋ぎ目がガタッとなってしまう。

cinemagraph_ss04.png

クリップの最後のあたりで分割して、以下のように並べて、徐々に透明度が高くなってフェードアウト(?)するように指定した。

cinemagraph_ss05.png

というわけで、以下のような結果になった。



ループの繋ぎ目を処理しない場合は以下のようになる。ガタッとしてる。

感想。 :

画像を変形させるのが面倒臭い…。綺麗に動いてるように見えない…。

ということで、GIMP を使って手作業でやれなくもないけれど、PhotoMirage等の専用ソフトを購入したほうが、圧倒的に作業が楽だろうし、はるかに綺麗な動画が得られそうだな、と。

2019/04/10(水) [n年前の日記]

#1 [nitijyou] 外は雪

夕方頃、みぞれ状の雪がガンガン降って、夜にはうっすら積もってしまった。

#2 [gimp] GIMP 2.10 Windows版の入力欄のバグが取れたと一瞬思ったらまたバグり始めた

GIMP 2.10 Windows版には、日本語環境で入力欄に半角英数文字を入力すると半角カタカナになってしまうという不具合・バグがあって。
GIMP は GTK+ を使って作られているけれど、比較的新しいバージョンの GTK+ 32bit版がバグってるようで。GTK+ 32bit版を使ってるIDE、Geany Windows版でも同じバグが発生しているので、やはり GTK+ 32bit が犯人としか思えない。

以下でも報告があるけれど、Windows10 の build によって、症状が出たり出なかったりするらしい。

_GIMP 2.10.2 Windows x86 Only, Keyboards Key Binding Error (#1603) - Issues - GNOME / GIMP - GitLab
Windows10 1803 still has this problem even if it is latest build.

* 1803 (build 17134.1〜17134.83) didn't have this problem.
* 1803 (build 17134.112〜17134.472) has the problem.

Windows 10 1809 fixed this problem with latest build.

* 1809 (build 17763.1〜17763.134) has the problem.
* 1809 (build 17763.168〜17763.195) does not have the problem.

しかし、ここ数日、GIMP 2.10.8 Portable (32bit版)を起動して使っていたら、そのバグが解消されていることに気づいたり。その際確認した Windows 10 のバージョンは、1803, build 17134.6xx、だったはず。メモするのを忘れてしまったけれど、たしか最後の数字が600番台だった。

これは、1809 で行われた修正が、1803 にも下りてきたのかな、と喜んでいたのだけど。

ところが。今日になって確認してみたところ、また件の症状が再発生して…。今現在の、自分の手元の Windows10 は、1803, build 17134.706。

どうなってるんだ。Microsoft。いや、この場合、GTK+ がアレなのかもしれないけど。

ていうか、いつになったら 1809 にアップグレードされるんだろう…。もう次の版が出てきそうなのに…。

2回目の起動からはバグが出なくなるような気がする。 :

GIMP 2.10.8 Portable を弄ってたら、何かの拍子に件のバグが出なくなった。なんだコレ。

Windows10 を再起動してからアレコレ試してみたところ、どうやら最初の1回目の GIMP 2.10.8 の起動時はバグが出るけど、2回目の起動時には件の不具合が出てこなくなる、ような気がしてきた。実際本当にそうなのか、ちょっと自信がないけど…。

と思ったら、3回目の起動時は件の不具合がまた発生。

4回目の起動時は…。不具合が出ない。

なんだコレ。どこで何が起きてるのだろうなあ…。

2019/04/11(木) [n年前の日記]

#1 [anime] 「異世界かるてっと」1話を視聴

KADOKAWAから出版されてる異世界転生モノのラノベ、に登場するキャラが集結した、コメディギャグアニメ、という説明でいいのだろうか。つまりは異世界転生版スパロボ、みたいな感じのアニメを視聴。

色んな作品の、色んなキャラの性格が、かなりちゃんと把握されてるように見えて感心。たしかにこういう場面なら、あのキャラはこういうことを言いそうだよな、みたいな。

スタッフ名でググってみて驚いた。 _「なつみSTEP」の作者さん が作画担当なのか…。脚本等を担当してる社長さんもスゴイ。 _獣医とアニメ制作の兼業 とは…。そんなスタジオが存在するのか…。兼業で、この出来…。これはスゴイ。素晴らしい。

それにしても、FLASHアニメをコツコツと作り続けていたら、こういう展開だって十分あり得たかもしれないのですね…。

2019/04/12(金) [n年前の日記]

#1 [tv][anime] 未知との遭遇は笑ってするものだろうか

NHK朝ドラ「なつぞら」を、ここのところ一応視聴しているのです。なんでも、ヒロインが後にアニメーターになるそうで、その設定ならちょっと見ておかないといかんかなあ、と。

ただ、今日の回の冒頭で、妙なシーンがあったように感じてしまって。いやまあ、一般的にはたいしたアレではないよなとも思うけど。

どんなシーンかというと…。子供時代のヒロインが、おそらくは生まれて初めてアニメーションを目にするシーン、だったのかな。たぶん。

一つ前の回で、学校の先生が、「皆さんに、まんが映画を見てもらいます」と説明して、小学生達が「…まんが映画ってなんじゃ?」と疑問をつぶやいてたりしたので、おそらく設定上は、まんが映画を見たことがない子供達ばかりがそこに居るのだろうと推測したのですが。

しかし、今回、そのまんが映画 *1 の上映が始まる前から、子役ヒロインや、モブの同級生達が、いきなり最初から満面の笑みをたっぷりと浮かべてスクリーンを見つめていて。「いやあ、コレは楽しみだなあ。どんなアニメを見れるのだろう」てな感じの楽し気な顔で…。

ソレ、ちょっとおかしいよなー、と。

例えばだけど、フツーに考えたら、以下のような光景・描写にならないか…。
  1. 「まんが映画ってなんじゃ?」「わしらはこれから一体何を見せられるんじゃ?」と怪訝・不安げな子供達の表情。
  2. 上映が始まると、「おお…。まんが映画を見たことある○吉が得意気に言ってた通りじゃ。絵が動いとるぞなもし…」的に、驚きの表情。
  3. キャラのコミカルなアクションを見て、教室のあちこちから「ハハッ」「ふふっ」と笑い声が少しずつ漏れ始める。
  4. 最後のあたりは、教室中からどっと笑い声が発せられる。全員が満面の笑みを浮かべている。
こういう感じの流れを妄想してしまうと、朝ドラのソレは、なんだか雑だなと。

どうして雑になってしまったのか。これは勝手な推測だけど、作り手世代が、自分達の世代感覚だけで、うっかり描写していた可能性がないかと。脚本家も演出家も、おそらくは子供の頃からアニメが存在するのが当たり前の世代。故に、子供がアニメを見るとなれば最初から「楽しみだなー」てな顔をするもんだろう、と思い込んでいるのではないかと。 *2

しかし、それは間違いだと思うわけで。生まれて初めて目にする、自身にとっては未知のモノを、最初から笑って見ている子供がはたして居るのだろうかと。

作り手のおじさん世代の体験で置き換えれば…。例えば、TVゲームなんかはどうだろう。子供の頃の自分が、TVゲームを生まれて初めて目撃した時、最初からニッコニコした顔で眺めてましたかと。そんなわけないですよ。「TVの中で、何だか変なものが動いてるぞ…。一体なんだコレ…」と真剣な顔でじっと凝視して、ソイツの正体を突き止めてやろうとしていたんじゃないですかね。

未知との遭遇って、そういうもんじゃないのかな。笑いながら目撃したりはしないよなと。

今回、ヒロインが、いずれはそういう職業につくわけで、コレはもう人生を変えるほどの出会いだったはず。結構重要なシーンだろうと思うわけで。それにしちゃ、描写が雑過ぎないかと。こういう重要なシーンで説得力を持たせなくてどうするのだろう。こんな調子で今後大丈夫なのか。

アニメがまだ一般的には知られてなかった時代に、それを初めて目にする子供達の姿を描けるなんて、かなり面白い仕事じゃないかとも思うわけで。自然と妄想が膨らむじゃないですか。一体どういう気分で見るんだろう。どんな顔して見てたんだろう。想像せずには居られない。でも、こんな面白いシーンを、「どうせこんなもんだろ」「ガキの反応なんてこんな感じに決まってる」的に見せちゃうのって、ソレどうなんだ。みたいな。

でもまあ、どんどん撮影していかないと放送に間に合わないですわな…。朝ドラはスケジュールが厳しいと聞いた記憶もあるし。なので、仕方ないよなー、とも思うのですけど。

まあ、そんな感じで、ちょっぴり気になってしまったのでした。「え? それでいいの? これでOKなの?」「ココ結構重要なシーンとちゃうんか?」みたいな。それだけの話です。

実写畑の甘え。 :

ちょっと失礼な話かもしれんけど、もしかすると実写畑には、役者の存在に甘えてるところがありそうだなと思ったりもして。

実写は、カメラの前に役者さんが居るので、何も努力しなくても実在感が確保できる。現実にはありえない言動でも、目の前の役者さんが演じれば、それだけでもそれなりに説得力が出てきちゃう。なので、ちょっとおかしな描写をしていても、うっかりスルーしちゃう。

これがアニメだと、そういうわけには行かない。良くも悪くも、所詮は人が描いた絵に過ぎないので…。そこに、本当に人物が居るかのような錯覚をさせるためには、細かいところで説得力を持たせる努力をしないといけない。コマ単位で、「こいつ今どんな気分になってるんだろ」と想像しながら、ちょっとした動きや表情を意識的に挿入して、視聴者の脳内で眠っている記憶を釣り上げて、「そうそう、○○ってこういうときがある」と気づかせることで感情移入を誘う、というか。そのためには、とにかく観察が必要で…。

そんな工夫や努力を、延々と、愚直なまでにコツコツやってきたのが、東映動画で育った高畑監督だったり、宮崎駿監督だったり、共に働いていたベテランアニメーターの方々、だったりするのだろうと。

今回の朝ドラは、ヒロインが将来アニメーターになる ―― それも、初期の東映動画相当に入社するヒロインということで、アニメとは何なのかを再確認する機会が密かに含まれているのかもしれん、と想像していたりするのですけど。

図らずもこういうところで、アニメだったら許されないけど実写畑ならうっかり許されちゃう、いわば実写畑の甘えのようなものを、ちらりと目撃してしまったのかもしれないな、などと思ったりもして。

まあ、そのあたり、実写の強みでもあるし、弱みでもあろうし…。便利な時もあるし、不利な時もあるのだろう、と…。

気づくための儀式。 :

完全に余談だけど。こういう時に、「高畑監督だったらこういうときどうするかなあ」みたいなことをちょっと考えてみると有効かもしれないと想像したりもして。

高畑監督ならあんな描写したかな。しないよな。あんなシーンをスタッフが作ろうとしたら、3時間ぐらいネチネチ説教されてスタッフの目がみるみる死んでいくか、無言で監督が帰っちゃって3日ぐらいスタジオに出てきてくれなかったりしそう。

まあ、別に、高畑監督を思い浮かべなくてもいいんだけど。小津監督でも黒澤監督でも誰でもいいけど、「〜監督なら、〜さんなら、コレどうするかな」みたいなことをチラリと考えたら、「む。このシーンは違うな。これじゃねえな」ぐらいは気づくんじゃないか ―― 気づけるための儀式がゲットできるんじゃないか。などと妄想したりしました。

まあ、以下の話からそういうことを妄想しただけなんですけど。

_「宮崎監督と一緒に仕事をされて何を学びましたか?」

*1: 劇中ではポパイの映像だった。
*2: あるいはもしかすると、子役の人達に、「皆さんには、生まれて初めてアニメを見る小学生を演じてもらいます」と説明しちゃった可能性もありそうだなと。もう、そんな説明をした段階でアウトだよな…。だって子役さん達は、アニメとはどんなものかを知っているのだから…。子供心に「めっちゃ楽しそうな顔を見せないとダメなんだな」と絶対に思い込むわな…。

#2 [zatta] WTOについて少し調べたり

ちょっと気になるニュースがあって。

_日本が逆転敗訴、韓国の水産物禁輸巡り WTO最終審

これはもしかして、「日本の提出した資料が捏造データだったということが判明しちゃったのでは」「日本人は政府からずっと騙されていたということになるのでは」「安全性云々が怪しくなってきたのかな」などと妙な邪推(?)をしながら判決(?)の原文をあたってみたのだけど。

_WTO | 2019 News items - Appellate Body issues report regarding Korean restrictions on Japanese food imports

何が書いてあるのかさっぱりだけど、少なくとも、安全性について新しい何かがわかったわけではなさそうだなと…。冒頭では、「日本が提出した資料が不十分なのでこれじゃ判断できねえな」「日本の言い分は信用できねえ」てなことしか書いてないように見えるというか。コレ、もしかして、外務省の担当官僚がポカをしちゃったケースなのではと邪推しちゃったりもして。

そもそもWTOって何なのか、そこからして恥ずかしながら知らなかったのでググってみたのだけど。

_世界貿易機関 - Wikipedia
_RIETI - WTOなき世界:何が問題なのか?
_韓国WTO提訴:韓国メディア「敗訴する」 危険性の証明困難 過去日本も敗訴 | NewSphere
同紙は、アメリカが1997年に、反対に日本の禁輸措置(害虫の流入を防ぐためだとして米国産リンゴを禁輸)をWTOに提訴、米側が勝訴した件を例に挙げる。その際、WTOは、禁輸品目の危険性については「輸入禁止国側が科学的に証明しなければならない」と判断した。韓国の専門家らは、今回のケースでも同様に、禁輸措置を取っている韓国側が危険性の立証をしなければならならず、それは「容易ではない」と指摘しているようだ。

韓国WTO提訴:韓国メディア「敗訴する」 危険性の証明困難 過去日本も敗訴 | NewSphere より


必要性はあるらしいけど、なんかちょっと変なことしてる組織にも見えるなと…。以前日本が輸入禁止をした時は、「輸入禁止してる日本が危険性を証明しろよ。言いがかりつけてんじゃねえ」と言ってきたのに、今回韓国が輸入禁止をした事例では、「輸出してる日本が安全性を証明しろよ」みたいな状態になってる感じがするし、これもう韓国から日本が差別されてるとかそういう話じゃなくて、WTOから日本が差別されてるんじゃないの? という不安が。

WTOはもはや機能してないという評もあるようだし、去年の中頃からアメリカのトランプ大統領が、「このままだとアメリカはWTOを脱退するぞ」と脅しをかけてたらしいし。

_トランプ米大統領、WTO脱退を警告 不公平な扱い受けたと - BBCニュース
_WTOとトランプ米政権の壊れた関係,修復可能か? | 馬田啓一
_コラム:米国離反でWTOに「機能不全」の恐れ - ロイター

ということで、ググって色々眺めてみたけど、WTOの現状自体が、どうもよくわからんなと。

2019/04/13() [n年前の日記]

#1 [ruby][dxruby] DXRuby 1.5.22devのshader機能にバグがありそう

ふと、以前書いた Ruby + DXRuby 用のスクリプトについて動作確認していたら、今頃になってDXRuby開発版のバグらしきものを発見。shader を使うと、テクスチャが表示されないときがある、ような気がする。気がするというか、表示されてない…。

環境は、Windows10 x64 + Ruby 2.2.6 p396 mingw32 + dxruby 1.5.22dev。例えば、以下のようなスクリプトを動かすと、テクスチャが表示されない。

_mieki256's diary - タイトル画面をグネグネするアレを書いてみたり

以下の環境では正常動作した。
まあ、一般的には、開発版ではなくて dxruby 1.4.x を使う人がほとんどだろうと思うので特に問題は無いのではと思うのですが。一応、こういう症状が出た、とメモ。

2019/04/14() [n年前の日記]

#1 [ruby][dxruby] DXRuby 1.4.6が公開されていたとメモ

Ruby 2.3 - 2.6 まで対応した、 _DXRuby 1.4.6 が公開されていたことを、遅ればせながら今頃知った。とメモ。ありがたや。

一応説明しておくと…。DXRuby は、Ruby というプログラミング言語から、Windows の DirectX を制御できる、2Dゲーム制作ライブラリ。

特長としては…。
ただ、最近まで、ちと問題があって。Windows上で動作するRubyとしては一番メジャーであろう _RubyInstaller for Windows が、ある時期からビルド環境を変更した関係で、DXRuby のバイナリをビルドできなくなっていたそうで。ここ数年、Ruby本体のバージョンはどんどん上がっていくけれど、DXRuby はRuby本体のバージョンアップに追従できない状態になって…。「DXRubyを最近のRubyで使いたいのですが」と尋ねられても、「最近のRubyには対応してません。サポート期間が終了しちゃってる古いバージョンのRubyを使ってください」と返答するしかなかったという。

しかし、今回、DXRuby 1.4.6 が公開されたことで、少なくとも Ruby 2.6 までは DXRuby を使えそうな状態になったわけで。ありがたや。

動作確認してみた。 :

Windows10 x64 + Ruby 2.5.3 p105 i386-mingw32 + dxruby 1.4.6 で動作確認してみたけれど、公式で配布されてる、 _DXRuby1.4.4サンプル集 の一部が動かないことに気づいたので一応メモ。
  • shader_sample/sample_lens.rb
  • shader_sample/sample_mapping.rb

それぞれ以下のエラーメッセージが表示される。
> ruby sample_lens.rb

Traceback (most recent call last):
        2: from sample_lens.rb:47:in `<main>'
        1: from sample_lens.rb:47:in `new'
sample_lens.rb:47:in `initialize': D:\hoge\dxruby144-samples\sample\shader_sample\memory(4,8): error X3000: syntax error: unexpected token 'point' (DXRuby::DXRubyError)
> ruby sample_mapping.rb

Traceback (most recent call last):
        2: from sample_mapping.rb:38:in `<main>'
        1: from sample_mapping.rb:38:in `new'
sample_mapping.rb:38:in `initialize': D:\hoge\dxruby144-samples\sample\shader_sample\memory(14,28): error X3005: 'distance': identifier represents a variable, not a function (DXRuby::DXRubyError)

ちなみに、Ruby 2.3.3 p222 i386-mingw32 + dxruby 1.4.5 では、上記のエラーは出なかった。

CustomRenderTargetは追加されてなかった。 :

DXRuby 1.5.21dev / 1.5.22dev で追加されていた CustomRenderTarget も追加されているのかなと期待したけれど、そのあたりは追加されていなかった。とメモ。

CustomRenderTarget というのは…。頑張れば DXRuby で3D描画ができるようになったりする機能、という説明でいいのだろうか。3D描画にしか使えないわけではなく、作者様はベクターグラフィック関係の実験をするために実装したらしいけれど。

とりあえず自分は、以下の実験で使った。と一応メモ。

_mieki256's diary - DXRuby開発版のCustomRenderTarget関係を勉強中
_mieki256's diary - DXRubyのCustomRenderTargetを勉強中その2
_mieki256's diary - COLLADA形式の3Dモデルを読み込むRubyスクリプトを書いた
_mieki256's diary - フォンシェーディングっぽくなってきた気がするけどまだなんだか怪しい

2019/04/17追記。 :

Shaderのサンプルが2つほど動かないのは、去年の時点で把握済みの現象だった模様。

_mirichiさんのツイート: "シェーダ周りでなんか変なのが2つほどあって..."
とりあえず致命的なバグはもう無いっぽいけども、シェーダ周りでなんか変なのが2つほどあって、変数名がなぜか怒られるのと、関数が使えないのと。 変数名は予約語関連だろうし、関数はHLSLコンパイラの話だから、こっちではどうにもできん。せいぜいサンプル書き換えるぐらい。
シェーダ内のpointという変数と、distanceという関数がひっかかりました。 変数名は変えれば動きまして、関数のほうは無いと言われたので簡単だし自分で作ればいいのかなと思ってるところです。

なるほど。

2019/04/15(月) [n年前の日記]

#1 [dxruby] DXRuby 1.5.22devで不具合が出る状況が分かった

DXRuby 1.5.22dev で、Shader を使って描画しようとすると何も描画されない状態になる場合があったのだけど。色々試してみたところ、症状が出てしまう記述の仕方がちょっと分かってきた。

状況としては、Shader の描画元として RenderTarget を指定して、かつ、RenderTarget に対して明示的に update() を呼んでしまうと、描画されない状態になる模様。

サンプルソース。 :

例えば、以下のソースで、最後のあたりの rt.update をコメントアウトすると、症状が改善する。

_02_shader_with_rendertarget.rb
# RenderTarget に画像を描画してからshaderに渡す事例

require 'dxruby'

hlsl = <<EOS
  texture tex0;

  sampler Samp0 = sampler_state {
    Texture =<tex0>;
  };

  float4 PS(float2 input : TEXCOORD0) : COLOR0 {
    float4 output;
    // input.y = input.y / 2.0;
    output = tex2D( Samp0, input );
    return output;
  }

  technique HelloShader {
    pass P0 {
      PixelShader = compile ps_2_0 PS();
    }
  }
EOS

core = Shader::Core.new(hlsl)
shader = Shader.new(core, "HelloShader")

img = Image.new(128, 128)
v = 0
img.height.times do |y|
  img.width.times do |x|
    img[x, y] = [255, 0, (v>>8) & 0x0ff, v & 0x0ff]
    v += 2
    v = 0 if v > 0x0ffff
  end
end
imgs = [img]

rt = RenderTarget.new(640, 480)

Window.loop do
  break if Input.keyPush?(K_ESCAPE)

  rt.draw_tile(0, 0, [[0]], imgs, 0, 0, 3, 2)
  rt.update

  x, y = 0, 0
  Window.draw_shader(x, y, rt, shader)
end

対策。 :

スクリプトソースを書く側で行える対策としては…。そもそも RenderTarget に対して update() を呼ばないようにする、というのが一番手っ取り早い気がする。

というのも、RenderTarget に対して update() を呼ぶのは昔の書き方で。DXRuby 1.4.1 以降は自動で update() が呼ばれるようになっているので、比較的新しいバージョンの DXRuby を使っているなら、わざわざ update() を呼ぶ必要はないわけで。古いスクリプトに対する互換性のためだけにメソッドが残されてる状態らしい。

_DXRuby RenderTarget#update

ちなみに、DXRuby 1.4.6 では、update() を呼んでも問題は起きない模様。もっとも、最近の DXRuby を使っているなら、そもそも呼ばなくていいのだけれど。

ちなみに、以下のスクリプトも、update を削除したらフツーに描画されました。とメモ。

_mieki256's diary - タイトル画面をグネグネするアレを書いてみたり

2019/04/16(火) [n年前の日記]

#1 [cg_tools] KumoWorksを試用

以下の記事で、雲を生成できるCGソフトが公開されたと知り。

_KumoWorks v1.0 - 輪郭から簡単に雲生成!「OpenToonz」による雲生成ソフトウェアWin&Mac
_KumoWorks

興味が湧いたので試用してみたり。環境は Windows10 x64 + KumoWorks 1.0。

スゴイな…。マウスで輪郭を描くだけで、ガンガンそれっぽい雲になる…。単純に、これは楽しい…。

#2 [zatta][neta] ぶら下がりたい

先日、大河ドラマ「いだてん」を見ていたら、体育館等に設置されてる謎の木製巨大梯子っぽいもの ―― なんでも _肋木(ろくぼく) と呼ばれているものが紹介されていて。

記憶が定かじゃないけれど、子供の頃にアレに登ろうとしたら先生に怒られたような記憶があって。見るからに「さあ君達、我に登ってみたまへよ」的デザインなのに登っちゃダメとなると、一体コレは何に使うんだと子供心に結構不思議だったわけだけど。そうか…大正時代に普及した、単なるぶら下がり健康器具だったのか…。知らなかったぜ…。

劇中では、当時の頓珍漢な施策の一つとしてアレな紹介をされていたけれど。ふと、コレは今の時代にこそ必要なのではないかと思えてきたりもして。

例えば、IT関係なら、同じ姿勢でPC画面を凝視して作業するし、漫画家さんやアニメーターも、同じ姿勢でずっと作業しなければならないけれど、そんなときに肋木があれば、ちょっとは体をリフレッシュできそうだなと。「ううーん。ちょっとぶら下がってきます」「おう。いってらっしゃい」みたいな。

昔のように、体を動かして仕事をすることが当たり前だった時代なら、必要性について鑑みられることはなかったかもしれないが、同じ姿勢で延々作業することが比較的当たり前になってしまった現代こそ、ああいった器具が必要なのではないか。一時期、ぶら下がり健康器具が流行して、そのうち下火になってしまったけれど、今こそ復権の時ではあるまいか。

実際自分も、ずっとキーボード+マウス操作をしていると、時々、「ううーん。体がシンドイ。なんだかどこかにぶら下がりたい」と思えてくる時があって。もっとも、部屋の中にぶら下がられる場所なんてないので、肉体から脳に渡された「ぶら下がりたい」欲求を無視するしかないのだけれど。

例えば、同じ姿勢でずっと寝ていたら、自然と寝返りを打つわけで。同様に、同じ姿勢で作業していたら、そのうち別の姿勢をとりたくなるのは当たり前。しかし、その別姿勢が取れないというのは、まるでベッドにベルトで縛り付けられて寝返り一つ打てない状態でさあ眠れと言われてるようなもので。これは不健康極まりない。肉体が発したメッセージは、それなりに尊重せねばなるまい。「ぶら下がりたい」と肉体から言われたら、要望は極力叶えるべきである。

そもそも、我々人類は猿から進化した生物。木の枝等にぶら下がってぶらぶらすることに最適化された肉体のデザインになっている。しかし現代社会では、ぶらぶらできる場所なんて皆無。人類は、猿からアップグレードした肉体を保有していることをもっと明確に意識するべきではないのか。時にはどこかにぶら下がって、猿だった時代の原始的なアクションを再現することで肉体と脳をリフレッシュしてしっかり英気を養い、また現代社会の荒波へと身を投じて戦い続けるのだ。…みたいなことを言い出す人がどこかに居てもいいのではあるまいか。

おそらく、ぶら下がることで、脳の働きも違ってくるだろう。猿だった時代に活用していた原始的な部位を活性化するわけだから、ニューロンの間を流れる電気信号も普段とは違う部位へと流れていくはず。もしかすると会議室で椅子に座ってウンウンと唸るより、会議室で皆でぶら下がって議論したほうが妙案が次々に発生するかもしれない。いやまあソレちょっとシュールな光景なので「どんな罰ゲームだよ」「一旦なんのプレイやねん」という気もしてくるけれど。

人間は、絶えず重力に逆らって自立するために筋肉を使っているが、その動きは基本的に伸びる方向、肉体を持ち上げる方向で動いてるのではないか。しかし、ぶら下がるというアクションは、重力に引っ張られる肉体を引っ張り上げる方向、縮む方向で動くように思えたり。絶えず伸びようとする筋肉を、たまには縮める方向で働かせても悪いことにはならない気もする。どちらの方向でもバランスよく動かしてやることが、肉体にとってより快適な状態を維持できることに繋がりはしないか。

などと書いてはみたけれど、実際どういう効果があるのだろう。今の科学技術なら、ぶら下がった際の、筋肉の動き方、骨の状態の変化、脳の活動部位の変化等、そこに現れる効果のほどを、それなりに分析できそうな気もするのだけれど。

もちろん、必ずしも良い方向に働くとは限らない。人類が二足歩行を可能にした際の肉体変化の影響は大きく、もはや人類はぶらぶらできるほどのスペックを保持しておらず、予想以上に負荷ばかりかかって体を痛めるからやめましょうね、といった事実が判明してしまう可能性だって否定できない。

いや、マジに、どこかでその手の研究してないのかなー。

#3 [nitijyou] 日記をまとめてアップロードしておいた

_2019/02/10 を最後に日記をアップロードしてなかったので、少しずつアップロード開始。

2019/04/17(水) [n年前の日記]

#1 [pc] KM-BASIC 0.8.1の動作確認をしてみたり

以前、MZ-80K/700用として公開されている、KM-BASIC を試用してみたことがあり。MZ-80K や MZ-700 で、今現在合法的に入手可能なBASICは、調べた限りでは KM-BASIC しか存在しないようで、これは大変ありがたいソフト、なのだけど。

_mieki256's diary - KM-BASIC 0.8.0 はバグがあるような気がする

当時の最新版 KM-BASIC 0.8.0 は、残念ながら上手く動作しなかったわけで。しかし、コメント欄で作者様からバグ修正した旨を教えてもらえたので、手元の環境、Windows10 x64 + MZ700WIN 0.53 で動作確認してみたり。わざわざ連絡していただきありがとうございます。

_Katsumi (電子工作好き)さんのツイート: "デバッグ出来ました。KM-BASIC for MZ-80K/MZ-700 ver 0.8.1
_Z80 File Downloads on Chamber Katsumi - OSDN

結論から書くと、少なくとも、 _IF/GOSUB文を実装 - 電子ブロック工房 で紹介されてるソースは、エラーを出さずに実行できることが確認できました。対応に感謝いたします。ありがたや…。

※ 2019/04/18追記。

その後、文字列型変数を使うとエラーがでる不具合を見つけてしまいました…。詳細は別記事で。

_mieki256's diary - KM-BASIC 0.8.1の不具合を見つけてしまったような気がする

起動の仕方。 :

一応、念のため、起動の仕方をメモ。
  1. kmb081.zip をダウンロードして解凍。中に release.mzt というファイルが入ってる。
  2. MZ-700のエミュレータ、MZ700WIN の File → Set Load Tape で件のファイルを選択。
  3. エミュレータの画面で、LOAD だか L だかを打ってロード。

スクリーンショット。 :

動作確認時のスクリーンショットも、念のために(?)アップロード。

ひとまず、Monitor ROM として、以下の3つを選んで動作確認してみたり。
  • MZ-80K/C/1200(J) / NEW-MONITOR
  • MZ-700(J) / MZ700 NEW-MONITOR
  • MZ-700(J) / 1Z-009A/B

以下は、MZ-80K/C/1200(J) / NEW-MONITOR 利用時のスクリーンショット。

newmonitor_mz80kc1200_ss.png

以下は、MZ-700(J) / MZ700 NEW-MONITOR 利用時。

newmonitor_mz700_ss.png

以下は、MZ-700(J) / 1Z-009A/B 利用時。

monitor_1z_009b_ss.png

#2 [pc] MZ700WINのキー割り当てで少しハマった

久々に MZ700WIN を起動したので、キー割り当てを完全に忘れていて…。そのあたり、同梱の mz700win_jp.txt に書いてはあるのだけど、念のために一応引用してメモ。

キーボード配置
--------------
 エミュレータ上と、MZ-700実機のキーボード対応は以下の通りです。
(キーボードは106/109キーボードを基準にしています。)

    キーボード       画面上
    ---------               ------
    '['                     (
    ']'                     )
    [^]                     +
    [\|](BackSpaceの左)     *
    [\_](右SHIFTのとなり)   ?
    [Shift]+[0]             π
    [page up]               [Graph]
    [Tab]                   [英数]
    [page down]             [カナ]
    [BackSpace]             [Break]
    [F7]                    [@]
    [F8]                    [?]
    [F9]                    [=]

 MZ-700実機のキーボード配置になるべく近くなるように調整してあります。
しかし、106キーボードとMZ-700実機のキー配列の違いから、必ずしも
押したキーと同じ文字が入力されるとは限りません。

上記は Keyboard として、「106/109 JP Type」を選んだ場合の割り当てだけど。「106/109 JP Type (MZ-80K/C)」を選んだ場合は、また違う割り当てになるようで。まあ、key.def で定義されてるので、眺めればいいのだろうけど…。

とりあえず、Keyboard として「106/109 JP Type (MZ-80K/C)」を選んだ場合は、以下のようになるのかな。たぶん。

KeyboardScreen
Shift + -+
@=
Shift + @*
Shift + 0π
Shift + Q<
Shift + W>
Shift + E
Shift + R[
Shift + T]
Shift + U
Shift + U@
Shift + I?
Shift + O:
Shift + P

しかし、ややこしいな…。キーボードのレイアウト図を書いてメモしないと把握が難しい気もしてきた。

昔のPCのキーボードレイアウトは、なんだかアレだなと…。

#3 [cg_tools] Photobatを試用

以下の記事を目にして興味が湧いた。

_無料の画像一括編集アプリ「Photobat」が公開 〜サイズや形式変換のほかエフェクト付与も可能 - 窓の杜

親父さんが写真画像をリサイズする際に使えたりしないだろうかと。試しにインストールして少し触ってみたり。Windowsストア経由で入手できる。今回は、Windows10 x64上で試用。

感想。 :

前述の記事中でも評価されているけれど、行いたい処理がスイッチ一つで切り替えられるのは分かりやすいなと感心。このUIなら初心者も迷わなくて済むのではないか…。素晴らしい。

変換前の画像と、変換後の画像を、並べてプレビューできるのもイイ感じ。実に分かりやすい。

出力ファイル名として、ファイル名の前、もしくは後ろに特定文字列をつけられるのもグッド。

ただ、画像を出力する際、出力フォルダのパスをちゃんと指定しないといけないのが、ちょっとアレだなと。一般的に、その手のリサイズツールは…。
  • 元画像が保存されているフォルダを出力先にしたり、
  • 元画像が保存されているフォルダ内に _resize 等のフォルダを新規作成してそこに保存したり、
等の指定ができるものが大半だったりする印象なので、明示的にパスを指定する仕様しか用意されてないのは、若干面倒だなと感じるところもあるなと。

シャープフィルタ処理が、リサイズ後の画像に対して行われるのか、それとも元画像に対して行われてからリサイズされるのか、といったところが若干気になったり。でもまあ、その手のリサイズツールって、リサイズ後にかける場合が多いのだろうか。たぶんそんな気がする。処理時間や、効果が分かりやすい/分かりにくいという問題もあるので、画像を小さくしてからかけたほうが効果的かもしれないなと想像。

JPEG画像のEXIF情報はどうなるのか確認したら、変換後はごっそり削除してくれるように見えた。えてして、リサイズした画像はWeb上にアップロードしたりするものだし、EXIFを削除してくれるのはありがたい仕様かもしれず。

また、元画像のEXIF情報に、「この画像は縦向き」と記録してあった場合は、変換後画像は縦向き画像の実データにしてくれるようで。EXIFを無視するツールと連携して作業する場合は助かる仕様だなと。

兎にも角にも、UIが分かりやすい。出力フォルダの仕様がアレなので親父さんには薦められないけれど、新規にこの手のツールを使い始める人なら、たしかにオススメのツールかもしれないなと。

2019/04/18(木) [n年前の日記]

#1 [pc] KM-BASIC 0.8.1の不具合を見つけてしまったような気がする

KM-BASIC 0.8.1 の動作確認をしていたのだけど、もしかするとまた別の不具合を見つけてしまったのかもしれず。そのあたり、一応メモ。環境は、Windows10 x64 + MZ700WIN 0.56 + KM-BASIC 0.8.1。

症状としては、文字列型変数を使おうとするとエラーが出る模様。

前提として…。KM-BASIC は、変数名として、A〜Z の英文字を使えるようで。
A=10
PRINT A
10

X$="TEST"
PRINT X$
TEST

しかし、KM-BASIC 0.8.1 で X$ 等を使うと、以下のようなエラーが出てしまう。

kmbasic081_ss01_fail.png

代入まではできているのかもしれないけれど、参照しようとするとエラーになる。また、ASC(X$) や LEN(X$) でもエラーが出ている。

ちなみに、KM-BASIC 0.6.8 では、そういった症状は出なかった。

kmbasic068_ss01_safe.png

気になって、KM-BASIC 0.8.0 でも確認してみたけれど、そちらも 0.8.1 と同様にエラーになった。

他の命令その他についても動作確認してみた。 :

もしかすると、他にも不具合があるのではと気になったので、KM-BASIC 0.8.1 上で色々試してみたり。

結果を先に書いておくと、X$(x) という記述と、SGN() の結果が怪しい感じだった。

以下、確認中のスクリーンショット。

関数をチェック。

kmbasic081_ss02_safe.png

kmbasic081_ss03_fail.png

STRNCMP()、VAL()、CHR$()、DEC$()、HEX$() は、おそらく問題無し。

ただし、X$(x) という書き方はエラーが出る。

ちなみに、0.6.8上ではエラーは出なかった。

kmbasic068_ss02_safe.png

演算子についても確認。

kmbasic081_ss04_safe.png

kmbasic081_ss05_safe.png

+、-、*、/、% は問題無し。比較演算子の、=、!=、<、>、<=、>= も問題無さそう。ビット演算子の AND、OR、XOR も大丈夫そう。

配列を示す DIM についても確認。

kmbasic081_ss06_safe.png

DIM も大丈夫そう。

SGN()、ABS()、NOT() についても確認。

kmbasic081_ss07_fail.png

ABS()、NOT() は大丈夫そうだけど、SGN() が気になる。ドキュメントには、-1,0,1 を返すとあるけれど、-1,0しか返さない。これは 0.6.8 も同じ結果になった。

ということで、文字列型変数絡みと SGN() が、なんだか気になるなと…。

動作テスト用のプログラムを書けないものか。 :

LOADしてRUNすると結果が出てきて、各命令や機能が一通り正常に動作していることを確認できる、そんなプログラムを書けないものか…。

2019/04/24追記。 :

修正版 0.8.2 が公開された旨を作者様から連絡していただけました。ありがとうございます。

動作確認の記事を書いたので、一応メモしておきます。

_mieki256's diary - KM-BASIC 0.8.2の動作確認をしてみたり

この記事へのツッコミ

Re: KM-BASIC 0.8.1の不具合を見つけてしまったような気がする by 名無しさん    2019/04/21 16:13
いろいろ調べて頂き、有り難うございます。見てみます。のんびりお待ちください。
Re: KM-BASIC 0.8.1の不具合を見つけてしまったような気がする by 名無しさん    2019/04/22 11:46
とりあえず、ver 0.8.2を試してみて下さい。
Re: KM-BASIC 0.8.1の不具合を見つけてしまったような気がする by mieki256    2019/04/24 22:49
連絡及び修正、ありがとうございます。>作者様
KM-BASIC 0.8.2 をDLして動作確認してみたところ、
文字列型変数とSGN()の挙動がたしかに改善されてることを確認できました。
対応していただきありがとうございます。感謝します。

ただ、REM文を使うと、LIST結果が崩れる症状を見つけてしまいました…。
一応報告させていただきます。
小出しに見つけてしまって、なんというか…申し訳ありません…。
Re: KM-BASIC 0.8.1の不具合を見つけてしまったような気がする by 名無しさん    2019/04/27 08:55
テストをどうもありがとうございます。
小出しでも、気づいた段階で言っていただける方がありがたいです。
見てみます。

#2 [pc] MZ700WINが公開中止になっていたらしい

ふと気づいたら、Windows上で動作する MZ-700 のエミュレータ、MZ700WIN が公開中止になっていたと知った。ショック。かなりショック。めちゃくちゃショック。

_まるくん療養中さんのツイート: "MZ700Winの一切のメンテナンスとサポートを打ち切ります。

2019/03/20頃に、githubのリポジトリ削除も含めて、行われてしまったらしい…。理由について調べてみたら…いやはや…。 *1

代替案。 :

Windows上で動作する MZ-700 のエミュレータとして、他に何かあるのかなとググってみたり。おそらくは、EmuZシリーズがメジャー、なのだろうか。

_EmuZ-700 / EmuZ-800 / EmuZ-1500 謎WIPページ

実機の再現性が非常に高いエミュレータで、 _野球拳2000 for MZ-700 すら動いてしまう。その代わり、テープのロード時なども、実機と同様に数分かかったりする。そこまで再現しますか…。みたいな。 *2

この方は、他にも膨大な数のレトロPCエミュレータを制作していて、まあ、とにかくスゴイ。ただただ脱帽。

_TAKEDA, toshiya's HOME PAGE

自分が知らない型番のレトロPCもたくさんあって、日本ってこんなにPCを作ってたのかと全然別の方向でも驚愕というか。

もう入手できないのだろうか。 :

MZ700WIN は、もう入手できないのだろうか。気になって調べてみたけど…。

github上で公開されてたらしい、最新版の 0.57 は見つからなかった。でも、かろうじて、0.56 は入手できた。とメモ。どこで入手できるかは…。まあ、 _はてブ でも眺めて、そのあたりはどうにか…。

2019/06/24追記。 :

コメント欄で再配布が始まったことを教えていただけたので、ここにもメモしておくのです。

_MZ700WIN関連ファイル再配布所

ありがたい…。これは本当にありがたい…。

*1: しかし…。ちゃんと功績を褒めてくれる「たくさんの人達」が皆一様に悲しみの顔を浮かべ、自身を攻撃してくる「たった一人」がニタニタと笑みを浮かべる、そんな行動をわざわざ選ぶ意味が一体どこにあるのだろう、とも。自身が相手にすべき・付き合うべき人達と、無視すべき人の位置付けが、あべこべになっている気もする。てなことを、 _小池一夫先生_お言葉_読みながら 、ほんやりと思ったりもする。
*2: 特殊なテープ読み込みをしているプログラムも動作させられるメリットがあることは理解しつつも。利便性を鑑みて、瞬間ロードモード、みたいな何かは実装できないものだろうか…。もっとも、そういう仕様は開発ポリシーに反するのかしらん。

この記事へのツッコミ

Re: MZ700WINが公開中止になっていたらしい by AKD    2019/05/05 14:40
MZ700WIN関連ファイル再配布所
http://mzakd.cool.coocan.jp/mz-memories/mz700win.html

mz-700winのサイトで公開されていたファイルは、許可をいただき、再配布を始めました。このまま静かにまるくんさんの復活を待ちたいと思います。

2019/04/19(金) [n年前の日記]

#1 [ruby] Ruby 2.5.5 と 2.6.3 をインストール

Windows上で使える Ruby、 _RubyInstaller for Windows の、Ruby 2.5.5-1 が公開されていたようなので、Windows10 x64上でインストールした、とメモ。今までは Ruby 2.5.3 を入れていた。せっかくだから、ついでに、Ruby 2.6.3-1 もインストールした。

ダウンロードしたファイルは以下。 x86、WITH DEVKIT版を使用。

インストール方法は、以下を参考にした。

_Rubyのダウンロードとインストール | Ruby入門 | RubyLife

MSYS2 をインストールする際に、1、2、3 の順番で入力するあたりが参考になった。

ちなみに、異なるバージョンの Ruby を Windows上で切り替えて使う場合は、 _uru_pik が利用できる。

標準で使う Ruby を 2.5.5 にしてみた。 :

今までは、標準で使う Ruby を Ruby 2.2.6 p396 i386-mingw32 にしていたのだけど。試しに、今回インストールした Ruby 2.5.5 p157 i386-mingw32 を使うようにしてみた。

green_shoesが動かない。 :

Ruby 2.2.6 上でインストールしていた gem をアレコレインストールしていたけれど、ふと green_shoes が動かないことに気づいたり。

_ashbb/green_shoes: Green Shoes is one of the colorful Shoes written in pure Ruby.
_green_shoes | RubyGems.org

yaml_as が未定義、みたいなメッセージが出てくるけれど、ググってみたら psych とやらが yaml_as から yaml_tag に定義を変更した、みたいな話が見つかって。

_Ruby 2.2.3 で動いている Rails アプリケーションを Ruby 2.6.2 にアップデートした話 - Qiita
_instance method Module#psych_yaml_as (Ruby 2.6.0)

green_shoes は gtk2 を要求するけど、その gtk2自体は、Ruby 2.5.5 + gtk2 3.3.6 の組み合わせで動いてることを確認。となると、green_shoes に問題があるのは明らかで。

green_shoes は 2013年が最後の更新だから、これもまた、死んでしまった外部ライブラリの一つ、なのだろうなと。

#2 [anime] 「ルパン三世」劇場版第1作を視聴

「ルパン三世」原作者のモンキー・パンチ先生が、2019/04/11にお亡くなりになったとのことで、追悼企画としてTV放送、ということらしい。

今見ても、感心するところがある作品だなと。せっかくの劇場版だから豪華にしたい、という気持ちがチラホラ垣間見える、そんな印象。コンテが凝っていて面白いのだよなあ…。

先生がルパンを描いてくれなかったら、こういうアニメが生まれることもなかったわけで。先生、本当にありがとうございました…。

2019/04/20() [n年前の日記]

#1 [ruby] ShoesをインストールするとWindowsが破壊される

Rubyスクリプトっぽい感じでソースを書いていくとGUIアプリが作れる、Shoes というツール、というか環境があるのだけど。

_Shoes! The easiest little GUI toolkit, for Ruby.

手元の Windows10 x64上で、Shoes 3.2 や Shoes 3.3 のインストール・アンインストール等を行いながら動作確認をしていたら、ふと、Windows10 の、システム側の環境変数 PATH がめちゃくちゃになってることに気が付いた。状態としては、ユーザ側の PATH 内容で、システム側の PATH が全て上書きされている、みたいな感じ。

破壊された、システム側の PATH の一番最後に、Shoes のパスが追加されていて、しかし、ユーザ側の PATH にはソレがないので…。もしかすると、Shoes 3.2 か 3.3 のインストーラ・アンインストーラが、環境変数 PATH を壊してしまったのではないかなあ、と予想。

犯人は Shoes 3.3だった。 :

気になったので、もう少し調べてみた。順に以下の作業をしながら、その都度、環境変数 PATH を確認。
  1. Shoes 3.2 をアンインストール
  2. Shoes 3.3 をインストール
  3. Shoes 3.3 をアンインストール
  4. Shoes 3.2 をインストール

犯人は Shoes 3.3 だった。コイツをインストールすると、直後に、ユーザ側の PATH 内容で、システム側の PATH を全て上書きする。

つまり、Shoes 3.3 をインストールすると、Windows が破壊される。ヤバイ。コイツはヤバいぜ。気をつけよう。

ちなみに、Shoes 3.2 をインストールした場合は、そんな状態にはならないように見えた。3.2 を使っておいたほうが、まだ安全なのかな…。

ググってみたら、不具合報告は上がってたらしいけど、3.3.7 beta で修正済みのつもりらしい。怖。おーい、まだ直ってないよー。

_Windows Path Destroyed - Issue #421 - shoes/shoes3

報告しようにも、自分は英語が分からんから、どうにも…。

GTK+アプリは怖い。 :

Shoes 3.2、3.3 は GTK+ を使っているらしいけど。以前、Windows用のGTK+ランタイムをアンインストールしたら、環境変数PATHを全削除されちゃったことがあって…。これだから GTK+ は嫌いなんだ。 *1

*1: このあたり、GTK+ ではなくてインストーラの問題なので、GTK+を悪者扱いするのはおかしいだろと言われそうだけど。しかし、GTK+ を使ってるプログラムは、何故か致命的なバグがあるインストーラを採用する印象もあり。GTK+ は基本的に *NIXで動かすことを前提にしているので、Windows版はバグチェックがおろそかになる傾向があるのではと邪推。

#2 [ruby] green_shoes を動かせないか試したり

Windows10 x64 + Ruby 2.2.6 p396 x86 mingw32 上で、green_shoes が動かせるようにならないか試したり。

green_shoes と言うのは、Ruby でGUIアプリを作れるようになるライブラリ、という説明で合ってるのかどうか…。一般的なGUIアプリとはノリがちょっと違う気もするけど。

gtk2 が動くかどうか実験。 :

green_shoes を動かすためには、gtk2 がインストールされている必要がある。まずは gtk2 が動くかどうかを確認した。

色々なバージョンをインストール・アンインストールして試したけれど、とりあえず、以下のバージョンの組み合わせなら、昔書いた gtk2用スクリプトも動作した。
  • cairo 1.15.11 x86-mingw32
  • gtk2 3.2.1 x86-mingw32
  • atk 3.2.1 x86-mingw32
  • cairo-gobject 3.2.1 x86-mingw32
  • gdk_pixbuf2 3.2.1 x86-mingw32
  • gio2 3.2.1 x86-mingw32
  • glib2 3.2.1 x86-mingw32
  • gobject-introspection 3.2.1 x86-mingw32
  • pango 3.2.1 x86-mingw32

インストール方法は以下。
gem install cairo -v="1.15.11" --platform=x86-mingw32
gem install gtk2 -v="3.2.1" --platform=x86-mingw32
  • cairo をインストールしてから gtk2 をインストールしないとエラーが出る。
  • cairo のバージョンが古いと gtk2 が動かない時もあったので注意。
  • gtk2 3.2.1 は、Ruby 2.2 - 2.4 までの対応らしい。

ちなみに、以下の組み合わせでも動作したが、後で green_shoes を修正する際、対応させる方法が分からなかった。
  • cairo (1.15.14 x86-mingw32)
  • gtk2 (3.2.9 x86-mingw32)
  • atk (3.2.9 x86-mingw32)
  • cairo-gobject (3.2.9 x86-mingw32)
  • gdk_pixbuf2 (3.2.9 x86-mingw32)
  • gio2 (3.2.9 x86-mingw32)
  • glib2 (3.2.9 x86-mingw32)
  • gobject-introspection (3.2.9 x86-mingw32)
  • pango (3.2.9 x86-mingw32)
gem install cairo -v="1.15.14" --platform=x86-mingw32
gem install gtk2 -v="3.2.9" --platform=x86-mingw32

gtk2 は 3.2.9 まで、cairo は 1.15.14 までなら、x86-mingw32向けのバイナリが用意されていて、インストール時間はさほどかからない。しかし、それ以降の現行版は、MSYS2 でビルドしてインストールするので結構時間がかかる。手っ取り早くインストールして、ちょっとだけ試す程度なら、バグ等はあるだろうけど、3.2.9 までの版をインストールしたほうが楽かもしれない。

green_shoesを修正。 :

まずは green_shoes をインストール。
gem install green_shoes
> ruby -v
ruby 2.2.6p396 (2016-11-15 revision 56800) [i386-mingw32]

> gem list green_shoes

*** LOCAL GEMS ***

green_shoes (1.1.374)

そのままだと green_shoes を使ったスクリプトを動かそうとしてもエラーが出てしまうので、green_shoes の関連ファイルを直接修正して試してみたり。

<Ruby 2.2.6 インストールフォルダ>/lib/ruby/gems/2.2.0/gems/green_shoes-1.1.374/lib/ 内の、以下のファイルを修正。
  • shoes/shy.rb
  • green_shoes.rb
  • shoes/ruby.rb
  • shoes/helper_methods.rb

以下の記述を修正。
beforeafter
yaml_asyaml_tag
Gdk::PixbufGdkPixbuf::Pixbuf
GdkPixbuf::Pixbuf::ROTATE_NONEGdkPixbuf::PixbufRotation::NONE
GdkPixbuf::Pixbuf::ROTATE_CLOCKWISEGdkPixbuf::PixbufRotation::CLOCKWISE
GdkPixbuf::Pixbuf::ROTATE_UPSIDEDOWNGdkPixbuf::PixbufRotation::UPSIDEDOWN
GdkPixbuf::Pixbuf::ROTATE_COUNTERCLOCKWISEGdkPixbuf::PixbufRotation::COUNTERCLOCKWISE
Pango::WRAP_WORDPango::WrapMode::WORD
Pango::WRAP_CHARPango::WrapMode::CHAR
Pango::ELLIPSIZE_ENDPango::EllipsizeMode::END
GdkPixbuf::Pixbuf.new(path)GdkPixbuf::Pixbuf.new(:file => path)

helper_methods.rb の 146行目を修正。
      layout.alignment = eval "Pango::ALIGN_#{align.upcase}"
↓
      layout.alignment = eval "Pango::Alignment::#{align.upcase}"

一応 diff も載せておく。

green_shoes.rb
--- green_shoes.rb.orig	Sat Apr 20 04:03:23 2019
+++ green_shoes.rb	Sat Apr 20 04:08:17 2019
@@ -19,7 +19,7 @@
   LINKHOVER_DEFAULT = "<span underline='single' underline_color='#039' foreground='#039' weight='normal'>"
   BANNER_DEFAULT, TITLE_DEFAULT, SUBTITLE_DEFAULT, TAGLINE_DEFAULT, CAPTION_DEFAULT, PARA_DEFAULT, INSCRIPTION_DEFAULT, IMAGE_DEFAULT = 
     {}, {}, {}, {}, {}, {}, {}, {}
-  ROTATE = [Gdk::Pixbuf::ROTATE_NONE, Gdk::Pixbuf::ROTATE_CLOCKWISE, Gdk::Pixbuf::ROTATE_UPSIDEDOWN, Gdk::Pixbuf::ROTATE_COUNTERCLOCKWISE]
+  ROTATE = [GdkPixbuf::PixbufRotation::NONE, GdkPixbuf::PixbufRotation::CLOCKWISE, GdkPixbuf::PixbufRotation::UPSIDEDOWN, GdkPixbuf::PixbufRotation::COUNTERCLOCKWISE]
   VERSION = IO.read(File.join(DIR, '../VERSION')).chomp
   BASIC_ATTRIBUTES_DEFAULT = {left: 0, top: 0, width: 0, height: 0, angle: 0, curve: 0}
   SLOT_ATTRIBUTES_DEFAULT = {left: nil, top: nil, width: 1.0, height: 0}
@@ -30,7 +30,7 @@
   LINECAP = {curve: Cairo::LineCap::ROUND, rect: Cairo::LineCap::BUTT, project: Cairo::LineCap::SQUARE}
   SPAN_FORM = {emphasis: :style, family: :font_family, weight: :weight, rise: :rise, 
     strikethrough: :strikethrough, strikecolor: :strikethrough_color, underline: :underline, undercolor: :underline_color}
-  WRAP = {word: Pango::WRAP_WORD, char: Pango::WRAP_CHAR, trim: Pango::ELLIPSIZE_END}
+  WRAP = {word: Pango::WrapMode::WORD, char: Pango::WrapMode::CHAR, trim: Pango::EllipsizeMode::END}
   FONT_SIZE = {"xx-small" => 0.57, "x-small" => 0.64, "small" => 0.83, "medium" => 1.0, "large" => 1.2, "x-large" => 1.43, "xx-large" => 1.73}
   COLORS = {}
 end

shy.rb
--- shy.rb.orig	Sat Apr 20 04:03:23 2019
+++ shy.rb	Sat Apr 20 04:06:14 2019
@@ -13,7 +13,7 @@
   MAGIC   = "_shy".freeze
   LAYOUT = "A4vV".freeze #Force to Little Endian for all platforms
 
-  yaml_as 'tag:hackety.org,2007:shy'
+  yaml_tag('tag:hackety.org,2007:shy')
   attr_accessor :name, :creator, :version, :launch
 
   def self.launchable(d)

ruby.rb
--- ruby.rb.orig	Sat Apr 20 04:03:23 2019
+++ ruby.rb	Sat Apr 20 04:09:22 2019
@@ -107,7 +107,7 @@
   def ask_color title = 'Pick a color...'
     $dde = true
     dialog = Gtk::ColorSelectionDialog.new title
-    dialog.icon = Gdk::Pixbuf.new File.join(DIR, '../static/gshoes-icon.png')
+    dialog.icon = GdkPixbuf::Pixbuf.new(:file => File.join(DIR, '../static/gshoes-icon.png'))
     dialog.run
     ret = dialog.colorsel.current_color.to_a.map{|c| c / 65535.0}
     dialog.destroy
@@ -120,7 +120,7 @@
 
   def get_win
     Gtk::Window.new.tap do |s|
-      s.icon = Gdk::Pixbuf.new File.join(DIR, '../static/gshoes-icon.png')
+      s.icon = GdkPixbuf::Pixbuf.new(:file => File.join(DIR, '../static/gshoes-icon.png'))
     end
   end
 end

helper_methods.rb
--- helper_methods.rb.orig	Sat Apr 20 04:03:23 2019
+++ helper_methods.rb	Sat Apr 20 04:09:57 2019
@@ -143,7 +143,7 @@
       layout.spacing = leading  * Pango::SCALE
       layout.text = text
       layout.justify = justify
-      layout.alignment = eval "Pango::ALIGN_#{align.upcase}"
+      layout.alignment = eval "Pango::Alignment::#{align.upcase}"
       fd = Pango::FontDescription.new
       fd.family = font
       fd.size = size * Pango::SCALE

この修正をすることで、Windows10 x64 + Ruby 2.2.6 p396 x86 mingw32 + gtk2 3.2.1 x86-mingw32上で、green_shoes 1.1.374 が一応動いてくれた。

Ruby 2.3.3でも動いた。 :

Ruby 2.3.3 p222 でも、同じ作業をしてみたところ、一応 green_shoes が動いてくれた。とメモ。

無理して使うものでもないよなと。 :

ここまでやっておいてなんだけど、green_shoes は無理して使うものでもないよなと…。

元々 Shoes は「簡単にGUIアプリが作れますよ」というのが売りだったけれど。こういう修正作業を要してしまう時点で、当初の目的をもはや達成できていないわけで。これでは存在意義が無いというか、使う意味がないというか。

もっとも、 _Red Shoes (単体で動くShoes)をインストールして使えば、こんな苦労はしないで済むはずだけど。そっちはそっちで、Windows が破壊される不具合がありそうだし…。

どうしても Ruby を使ってGUIアプリを書きたいなら、 _gtk2_gtk3_fxruby 、 等を使ったほうがマシだろうなと…。

そもそも、「RubyでGUIは鬼門」というのが定評なので…。 _LL *1 でGUIアプリを書きたいなら Python を選んだほうがいいよなと。

Python なら、tkinter、wxPython、PyQt(PySide)、Kivy等々、色々あるし。Ruby のGUIライブラリと違って、ライブラリが軒並み死んでいるということもなさそうだし。

*1: Lightweight Language。軽量プログラミング言語。

#3 [python] GUIライブラリ Kivy をインストールしてみたり

Kivy という、Python で使えるGUIライブラリがあるのだけど、そういえば触ったことがなかったので試しにインストールしてみたり。環境は、Windows10 x64 + Python 2.7.15 x86(32bit版)。

インストール手順は公式サイトに書いてあったので、DOS窓上でそのまま一つ一つ実行。

_Installation on Windows ・ Kivy 1.10.1 documentation

python -m pip install --upgrade pip wheel setuptools
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
python -m pip install kivy.deps.gstreamer

Python 3.5 の場合は、glew の代わりに以下を使えるらしい。今回は 2.7 を使っているので、インストールしなかった。
python -m pip install kivy.deps.angle

python -m pip install kivy
python -m pip install kivy_examples

すんなりインストールできてしまった。

以下でデモを動かせる模様。
python (Pythonインストールフォルダ)\share\kivy-examples\demo\showcase\main.py
なんだかカッコイイ画面が次々に出てきた。コレ、もしかしてスマホ等の上でも動かすことを前提にして設計されてるのかな。

サンプルは、Pythonインストールフォルダ\share\kivy-examples\ 以下に入ってる。

インストール結果は以下。
> pip list | grep -i -E "kivy|docutils|pygments|pypiwin32"

docutils                           0.14
Kivy                               1.10.1
Kivy-examples                      1.10.1
Kivy-Garden                        0.1.4
kivy.deps.glew                     0.1.10
kivy.deps.gstreamer                0.1.13
kivy.deps.sdl2                     0.1.18
Pygments                           2.2.0
pypiwin32                          219

環境変数 KIVY_GL_BACKEND で、glew、angle、sdl2 のどれを使って描画するのかを指定できるらしい。標準では glew が使われている模様。

日本語訳があった。 :

インストール作業を終えてからググってたら、公式ドキュメントの日本語訳があることを知った。

_Installation on Windows(翻訳済み) ・ Kivy 1.10.0 ドキュメント

コレを見て作業すればよかった…。

2019/04/21() [n年前の日記]

#1 [ruby][rubysdl] Ruby/SDLをインストールしようとしてハマった

Windows10 x64 上で Ruby/SDL をインストールしようとして、ちょっとハマったのでメモ。

そもそも Ruby/SDL は、どのバージョンのRubyまで対応してるのか、そこからして分からない。手元に保存してあったファイルを確認してみたら、Ruby 1.8 / 1.9 用のファイルがあったので、おそらく Ruby 1.8 と 1.9 には対応しているのかなと。

とりあえず、Ruby 1.9 p551 i386-mingw32 を使って、インストールできるのか試みた。 _uru を使って Ruby のバージョンを切り替え。

gemでインストール。 :

Ruby 1.8 / 1.9 用の Ruby/SDL は、gem でも公開されてるらしい。

_rubysdl-mswin32-1.9 | RubyGems.org
_rubysdl-mswin32-1.8 | RubyGems.org

以下でインストール。
gem install rubysdl-mswin32-1.9

インストールされてるか確認。
> gem list | grep rubysdl

rubysdl-mswin32-1.9 (2.1.1.1)

しかし、これだけではインストールが終了しない。

gem インストール時に案内メッセージが表示されているけれど、Ruby 1.9インストールフォルダ\bin\ 以下に、install_rubysdl.bat というファイルが入っているので、コレを実行する。

install_rubysdl.bat

コレで Ruby/SDL が、Ruby 1.9上で使えるようになった。

zipを解凍してインストール。 :

上記の手順でインストールできた、と思ったが、甘かった。以前手元で保存していた、Ruby/SDL を使ったスクリプトを動かしてみると、mikmod.dll が見つからないと言ってくる。どうやら、.itファイル _(MODファイルフォーマット) を再生しようとして mikmod.dll を要求するけど、入ってない状態らしい。

Rubyインストールフォルダ内で探してみたけど、どうやら gem でインストールした場合は、mikmod.dll が同梱されていないようで。しかし、以下のファイルには入ってる模様。
  • rubysdl-2.1.1.1-mswin32-1.9.1-p243.zip
  • rubysdl-2.1.1.1-mswin32-1.8.7-p174.zip

しかし、上記のzipファイルは、RubyForge ( http://rubyforge.org/ ) なるサイトで公開されていたらしく…。その RubyForge は既に死んでいるわけで。これでは入手できない…。

Internet Archive で、公開されていたファイルの一覧を確認することぐらいはできるけど、zip も gem もダウンロードはできない。

_RubyForge: Ruby/SDL: Project Filelist

ググって探してみたら、 _Index of /rubyforge/rubysdl でミラーされているソレを見かけた。いくつかDLしてみたけど、手元のファイルと内容は同じだった。

(上記ページが消滅したら怖いので、念のためにバックアップを兼ねてココにも置いておこう…。 _[1]_[2]_[3] 。このあたり RubyGems.org に置けたりはしないのだろうか…。)

rubysdl-2.1.1.1-mswin32-1.9.1-p243.zip を解凍して、中に入って、以下を実行。
ruby install_rubysdl.rb

これで、Ruby/SDL の動作に必要な dll等が、Ruby1.9インストールフォルダ/bin/ 以下にコピーされた。mikmod.dll も入っている。

参考ページ。 :

#2 [rubysdl][ruby] Ruby/SDLでSFontが表示されなくてハマった

Ruby/SDL は SFont形式のビットマップフォントを描画できるはずなのだけど。

Windows10 x64 + Ruby 1.9.3 p661 mingw32 + rubysdl 2.1.1.1 で、SFont を描画しようとしても、png画像のSFontをそもそも開けないことに気が付いた。以下のようなエラーが出てしまう。
sfont.rb:69:in `open': Couldn't open font: font/verabd_sfont01_32col.png (SDL::Error)
        from sfont.rb:69:in `<main>'
おかしいな。手元のスクリプトを眺めた感じでは、昔は png の SFont をフツーに読み込めていたように見えるのだけど…。

Ruby/SDL が使われていた頃の Ruby のバージョンを調べてみたら、1.8 だった。ということは、Ruby 1.8 + Ruby/SDL なら動作が違ってくるのだろうか。

そして、Ruby/SDL は、2.0.0 から Ruby 1.9.x に対応したらしい。すると Ruby 1.8 には、Ruby/SDL 1.3.1 を使ったほうが、昔のスクリプトを動かす分にはヨサゲかもしれないなと。

試しに、Ruby 1.8.7 p330 mswin32 上で、rubysdl 1.3.1 (rubysdl-1.3.1-mswin32-1.8.6-p36.zip) をインストール。

それぞれで動作確認してみたところ、結果は以下のようになった。
RubyRuby/SDLload bmpload png
Ruby 1.8.7 p330 mswin32rubysdl 1.3.1PASSPASS
Ruby 1.9.3 p661 mingw32rubysdl 2.1.1.1PASSFAIL

つまり、SFont については、以下のような状態になる。
ただ、以下の記事によると、*NIX環境 + Ruby/SDL 2.2.0 なら、png の SFont も読み込めるっぽい。

_Ubuntu に Ruby/SDL を入れる - Marginalia

サンプルスクリプトと画像。 :

動作確認用にスクリプトを書いてみた。

※ 2019/04/22追記。サンプルとしては分かりづらかったので書き直した。

_sfont.rb
# Ruby/SDL birmap font (SFont) draw.
#
# ESC key : exit

require "sdl"

fontimg = "font/verabd_sfont01_32col.bmp"
#fontimg = "font/verabd_sfont01.png"

SDL.init( SDL::INIT_VIDEO )
screen = SDL::Screen.open(640, 480, 16, SDL::SWSURFACE)

fontflag = SDL::BMFont::TRANSPARENT | SDL::BMFont::SFONT
font = SDL::BMFont.open(fontimg, fontflag)

while true
  while event = SDL::Event2.poll
    case event
    when SDL::Event2::Quit
      exit
    when SDL::Event2::KeyDown
      case event.sym
      when SDL::Key::ESCAPE
        exit
      end
    end
  end

  screen.fill_rect(0, 0, 640, 480, [128, 128, 128])
  font.textout(screen, fontimg, 0, 0)
  x, y = 8, 64
  font.textout(screen, "SFont (BitMapFont) Testing..", x, y)

  screen.updateRect(0,0,0,0)
  sleep 0.016
end

_sfontex.rb
# Ruby/SDL birmap font (SFont) draw.
#
# usage: ruby sfont.rb [font_kind]
# RIGHT, LEFT : change font
# ESC : exit

require "sdl"

fontdir = "font/"
fontfiles = [
  "verabd_sfont01_32col.bmp",
  "verabd_sfont01_32col.png",
  "verabd_sfont01.png",
  "verabd_sfont02_width_fix.png",
  "sfont_mplus1m_m.png",
  "vlgothic_sfont01.png",
]

kind = ARGV.size > 0 ? ARGV[0].to_i : 0
if kind >= fontfiles.size
  puts "please input 0 - #{fontfiles.size - 1}"
  exit
end
fontfile = fontfiles[kind]
puts "font image : #{fontfile}"

SDL.init( SDL::INIT_VIDEO )
screen = SDL::Screen.open(640, 480, 16, SDL::SWSURFACE)

fontflag = SDL::BMFont::TRANSPARENT | SDL::BMFont::SFONT
font = SDL::BMFont.open(fontdir + fontfile, fontflag)

ang = 0

while true
  while event = SDL::Event2.poll
    case event
    when SDL::Event2::Quit
      exit
    when SDL::Event2::KeyDown
      font_reload = false
      case event.sym
      when SDL::Key::ESCAPE
        exit
      when SDL::Key::RIGHT
        kind = (kind + 1) % fontfiles.size
        font_reload = true
      when SDL::Key::LEFT
        kind = (kind - 1 + fontfiles.size) % fontfiles.size
        font_reload = true
      end
      if font_reload
        fontfile = fontfiles[kind]
        puts "font image : #{fontfile}"
        font = SDL::BMFont.open(fontdir + fontfile, fontflag)
      end
    end
  end

  screen.fill_rect(0, 0, 640, 480, [128, 128, 128])

  font.textout(screen, fontfile, 0, 0)
  y = 64.0 * Math.sin(ang * Math::PI / 180) + 128
  ang += 1
  font.textout(screen, "SFont (BitMapFont) Testing..", 8, y)

  screen.updateRect(0,0,0,0)
  sleep 0.016
end

sfontex.rb は、カーソルキーの左右で、SFontの種類を切り替えられる。ESC で終了。

使った SFont画像は以下。元にしたttfフォントはライセンス面で自由度が高いものを選んだ、はず。ファイル名を見ればフォント名も分かるかと。

_verabd_sfont01_32col.bmp
_verabd_sfont01_32col.png
_verabd_sfont01.png
_verabd_sfont02_width_fix.png
_sfont_mplus1m_m.png
_vlgothic_sfont01.png

一応、画像表示もしておくかな…。

verabd_sfont01_32col.png

verabd_sfont01.png

verabd_sfont02_width_fix.png

sfont_mplus1m_m.png

vlgothic_sfont01.png

動作時のスクリーンショット。 :

こんな感じに。

rubysdl_sfont_ss01.jpg

#3 [ruby][rubysdl] Ubuntu 18.04上で Ruby/SDL をインストール

Windows10 x64 + VMware Player 12.5.9 build 7535481上で、Ubuntu Linux 18.04 LTS を動かして、その上で Ruby/SDL をインストールしてみたり。

Ruby のバージョンは、ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu] 。

gem でインストールする方法と、apt でインストールする方法がある。たぶん apt でインストールしたほうが楽、かもしれない。

必要なパッケージをインストール。 :

事前に、以下のパッケージをインストール。
sudo apt install libsdl2-2.0 libsdl-sge-dev
sudo apt install libsdl-image1.2-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libsdl-sound1.2-dev libsdl-ttf2.0-dev

巷の解説記事を読むと前者だけでも良さそうな感じで書いてあったけど、後者も入れないとpng画像の読み込みその他がエラーになった。

gemでrubysdlをインストール。 :

sudo gem install rubysdl
$ gem list | grep sdl
rubysdl (2.2.0)
rubysdl 2.2.0 がインストールされた。

と、ここまで作業して気が付いた。Ubuntu の場合は ruby-sdl というパッケージが既に用意されているように見えるのだけど…。

aptでrubysdlをインストール。 :

gem で rubysdl をアンインストールしてから、apt でインストールしてみた。
sudo gem uninstall rubysdl
sudo apt install ruby-sdl
rubysdl 2.2.0 がインストールされた。手元のスクリプトも動いてる。こっちで良かったのか…。

参考ページ。 :

#4 [anime] 「クレヨンしんちゃん ガチンコ!逆襲のロボとーちゃん」を中途半端に視聴

戦隊の放送が終わった後で、「クレしん」の映像が流れ始めて、なんでこんな時間に流れてるのだろうと思いながら音声を消してBGVとして流しっぱなしにしてたのだけど。なんだか劇場版アニメのようでもあり、また、途中から妙な映像が出てきて興味が湧いて、音声も聞き始めたらどんどん画面に引き込まれ、結局最後まで見てしまった。

失敗した。こんなに面白い映画だったと知ってたら、最初からちゃんと見ておくのだった。大失敗。

脚本がとにかく秀逸。ググってみたら、中島かずき脚本だった。道理で…。監督は、シリーズと縁が深いらしい高橋渉氏。湯浅監督もコンテと作画で参加してたと後で知り、ますますちゃんと見ておくべきだったなと。本当に大失敗。

これぞまさしく、笑いあり、涙ありの映画だなと…。間違いなく名作。素晴らしい。最初からちゃんと見ておけばよかった。大失敗。

ロボットアニメ好きなら絶対に視聴すべき作品、かも。 :

そういえば、ロボット同士の戦闘シーンで目から鱗が落ちた。体の各部位を360度回転させられる設定を活用して、敵の攻撃を避けながら瞬時に反撃に転じる等の見せ方をしていたり、パーツの位置をずらせる故の奇妙な回避運動をしていたり。

自分が、人型ロボットという設定に対して、完全に固定観念を持ってしまっていた・思考停止していたことを気づかされた…。見た目は人型でも、どこがどのように動くのかによって、人間のソレとは全く異質なアクションシーンを描けるのだなと…。

ロボットアニメ好きなら、あるいは、ロボットアニメを作ってる方なら、戦闘シーンだけでも絶対に視聴すべきだなと。ポーズを決めてビーム発射とか、パースをつけて剣を構えるとか、そんなことばかりしていてはダメだよなと…。まあ、そのあたりは様式美だからアレだけど、他にも色んな見せ方はあるのだと意識ぐらいはしておかないと…。

2019/04/22(月) [n年前の日記]

#1 [rubysdl] jiskan16.bdfはどこにある

Ruby/SDL でビットマップフォントの描画について動作確認していたのだけど、bdfフォントを描画しようとしたところでちょっと悩んでしまった。jiskan16.bdf って、今現在はどこから入手できるのだろう。

ちなみに、BDFフォントと言うのは、ビットマップフォントを示すファイルフォーマットの一つ。テキストデータで記述されているので、テキストエディタで開いて一部を修正することも可能。

ググってみたけれど、jiskan16.bdf の公式配布ページらしきものは見つからず。また、色んなバージョンがあるようで…。どれを選ぶべきなのだろう…。

_jiskan - Wikipedia

入手先ページをメモ :

半角フォントの入手。 :

jiskan16.bdf には全角文字部分が入っているけれど、半角文字部分は入っていないらしい。一般的には、SONY が作ったらしい、8x16rk.bdf と組み合わせて使う場合が多いようで。

_Re: mgl2 make failured

SONY製のフォントとなるとライセンス面が厳しいのではないかと思ったけれど、当時は緩い感じで使えてたようだなと。

intlfontsを入手すれば良かったらしい。 :

その後もググっていたところ、intlfonts なるフォントファイル群を入手できれば、その中に jsikan16.bdf や 8x16rk.bdf も入ってると知った。

_Index of /old-gnu/intlfonts
_With Emacs Next - 3.1.2 フォント設定

その他のフォントについて。 :

他の選択肢として、東雲フォントを使うのもアリかなと。jiskan16.bdf と比べると、すっきりした見た目で、可読性が向上しているフォントのように感じたり。

_東雲フォント - Wikipedia
_shinonome font family
_日本語漢字ビットマップフォント、東雲フォントについて | mgo-tec電子工作

M+ Bitmapフォントという選択肢もありだろうか。丸みがあって、コレも読みやすい。

_M+ BITMAP FONTS

BDFフォントを使うメリットは何だろう。 :

余談。

今時はTTFフォントを使う場面が多いわけで、するとBDFフォントをあえて使う理由は何だろうと考えたのだけど。やはり、ドットを寸分違わずきっちりと画面に出したい、という需要を満たしたい時に使えるのかなと。アウトラインフォントだと、最終的にどんな見た目になるのか予想しづらいところがあるし。

もっとも、漢字を含んだ、こういったBDFフォントを使う必要が出てくるとしたら、大量のテキストを画面に表示する場合であろうし。であれば、ドットがどうこうより、読みやすいか否かでフォントを選んだほうがいいのかもしれない。

それとは別に、ライセンスの問題もありそうか…。当時のBDFフォントは、ライセンスに関して比較的緩く指定されてるものが多い印象もあり、ソフトウェアに同梱する際に問題が起きにくい面もありそうな。もっとも、昨今のフォントも、SIL Open Font License 等、ソフトウェアから使う分には比較的緩いライセンスになってるものも多いかな…。と思ったけれど、そのあたりは英語圏のフォントの話で、日本語フォントとなるとまた状況が違ってくるか…。

2019/04/23(火) [n年前の日記]

#1 [cmder][windows] Cmderをインストールしてみた

自分は普段、Windows10 上でDOSプロンプトを開いて作業する時は、cmd.exe ではなく ConEmu を使っていたのだけど。巷の記事を眺めていると、ConEmu より Cmder が使われている事例が多いようなので、試しにそちらもインストールしてみたり。なんでも、ConEmu をベースにしながら、各種機能を追加したものらしい。

_Cmder | Console Emulator

環境は Windows10 x64 1803。

少し触ってみた感じでは、最初から alias が使えるようになっていたり、ショートカットキーの割り当てが調整されていたりして、たしかにイイ感じかもしれないなと。

インストールの仕方。 :

Mini版と、Git等を含んだFull版があるが、自分の環境は Git を既にインストール済みだったので Mini版を選択。

cmder_mini_1.3.11.zip を解凍して任意のフォルダに置いて、Cmder.exe を実行。

最初の起動時に、「設定ファイルをココに作成したよ」と英文メッセージが表示される。

プロンプトの「λ」を変更。 :

コマンド入力時に、「λ」が表示されて、なんだか気になる。キモイ。

Cmderインストールディレクトリ/vendor/clink.lua を修正して変更する。
local lambda = "λ"
と書かれた行を探して、 "λ" を ">" に変更した。

プロンプトを2行から1行にしたい :

cmd.exe の場合、プロンプトは以下のようになっている。
C:\Users\hoge>

しかし、Cmderのデフォルト設定では、以下のように、2行になる。
C:\Users\mieki256
>

cmd.exe のように1行にしたい。

Cmderインストールディレクトリ/vendor/clink.lua を修正する。
local cmder_prompt = " ... "
という行を探して、中に入っている \n を削除する。
    local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m"
↓
    local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg}{svn} \x1b[1;39;40m{lamb} \x1b[0m"

タスクバーにピン止めする。 :

cmder.exe を右クリックして「タスクバーにピン止め」を選べばピン止めできるが、その作業をする前に「スタートにピン止め」をしてしまうと、タスクバー上の Cmder のアイコンをクリックして起動した際に、Cmder のアイコンが2つになってしまう。

スタートメニューのピン止めは外してから、タスクバーにピン止めすること。

なんでも、スタートメニューに登録した段階で、謎IDが設定されて、タスクバー上のピン止めに影響を及ぼすらしい…。

起動時にカレントディレクトリを変更したい。 :

cmder.exe の後ろにディレクトリパスを指定すれば、起動時にそのディレクトをカレントディレクトリにしてくれるらしい。
cmder.exe 指定ディレクトリ

例:
cmder.exe %HOME%
cmder.exe %USERPROFILE%

Cmderのショートカットファイルのプロパティを開いて、Cmder.exe の後ろにディレクトリを指定すればヨサゲ。

aliasが使える。 :

*NIX の bash のように、alias が使えるようになっている。alias で、現在定義されている一覧が表示される。

Cmderインストールフォルダ\config\user_aliases.cmd で内容が定義されているらしい。

参考ページ。 :

参考にしたページが多すぎるので、はてブを見てもらったほうが…。

_はてなブックマーク - Cmderに関するmieki256のブックマーク

と思いつつも。一応ココにもメモしておこう…。

_Windowsで使えるターミナルとシェルのまとめ - Qiita
_Windowsのコマンドプロンプトの代わりに、高機能な「Cmder」でLinuxライクに使う:Tech TIPS - @IT
_[備忘録]Cmderの設定 - Qiita
_Cmder changing the lambda - update! | i-py.com
_Cmderでオシャレにcmd.exeを使う -前編-
_Windows-アプリケーション/ConEmu/タスク・起動設定 - yanor.net/wiki
_Console Emulator「Cmder」で、起動時のディレクトリを設定する方法 - 明日会社がなくなっても
_Cmderでタブやカレントディレクトリの状態を保存する - エクセレンス★ブログ
_Cmder (または ConEmu) を使う際にいつも変更している設定項目 | ラボラジアン
_[Cmder]cmder.exe自体の起動時に、初期ディレクトリを指定する - akamist blog
_[cmder]プロンプトをラムダ「λ」から、他の文字に変更する - akamist blog
_Customization - cmderdev/cmder Wiki
_cmder
_Cmderをエクスプローラの右クリックメニューから開く『Cmder Here』 :: コマンドプロンプト | Refills
_Taskbar icon after pinning the program reverts to default ConEmu icon. ... - Issue #154 - cmderdev/cmder
_ConEmu | Settings - Environment page
_ConEmu | Settings - TaskBar page

2019/04/24(水) [n年前の日記]

#1 [pc] KM-BASIC 0.8.2の動作確認をしてみたり

MZ-80K/1200/700上で動作するBASIC、KM-BASIC の不具合を修正したと作者様から連絡していただけたので、KM-BASIC 0.8.2 の動作確認をしてみたり。環境は、Windows10 x64 1803 + MZ700WIN 0.56 + KM-BASIC 0.8.2。

_Katsumi (電子工作好き)さんのツイート: KM-BASIC for MZ-80K/MZ-700 ver 0.8.2を、OSDNにアップロード...
_Z80 File Downloads on Chamber Katsumi - OSDN

文字列型変数と SGN() の挙動は、修正されていることを確認できました。対応ありがとうございます。感謝します。

しかし、REM文を使うと LIST の結果がおかしくなる不具合を見つけてしまいました…。なんだか小出し(?)に見つけてしまってスミマセン…。まあ、REM文(コメント文)なので、使わないという手もあるかもですが…。

REM文の挙動。 :

REM文の挙動について一応メモ。

以下のような感じで REM文を入れると、LIST をした際に妙な挙動になる模様。
  • REM に続く文字列が表示されない。
  • REM文の次行の冒頭が妙な表示になる。
kmbasic082_ss10_rem_fail.png

kmbasic082_ss11_rem_fail.png

ちなみに、KM-BASIC 0.6.8 で確認したところ、そちらでも同じ結果になりました。
kmbasic082_ss12_rem_fail_kmb068.png

ただ、LISTの表示がおかしくなるだけで、プログラムの実行はできるようです。

その他の命令の動作確認。 :

一応、その他の命令についても動作確認したので結果をメモ。他の命令に関しては、問題無く動いてるように見えました。

FOR - NEXT, GOSUB, IF - THEN - ELSE はOK。
kmbasic082_ss01_forgosub.png

文字列型変数もOK。
kmbasic082_ss02_str1.png

kmbasic082_ss03_str2.png

演算子もOK。
kmbasic082_ss04_op.png

DIM(配列)もOK。
kmbasic082_ss05_dim.png

SGN(), ABS(), NOT() もOK。
kmbasic082_ss06_sgn.png

INKEY() (押されたキーのアスキーコードを取得)もOK。
kmbasic082_ss07_inkey.png

INPUT$() (入力文字列+ENTERの取得)もOK。
kmbasic082_ss08_input.png

PEEK() (メモリの読み込み)、POKE (メモリへ書き込み)もOK。
kmbasic082_ss09_peekpoke.png

念のため、動作確認に使ったプログラム (.mzt) も zip にして置いておきます。

_apicheck_20190424.zip

せっかくだから少し遊んだり。 :

動作確認だけではアレなので、せっかくだから少し遊んでみたり。

KM-BASICには、メモリの読み込みと書き込みができる、PEEK, POKE文があって。
 PEEK(メモリアドレス)    : 指定メモリアドレスから1バイト読み込んで値を返す。
 POKE メモリアドレス,値  : 指定メモリアドレスに1バイトの値を書き込む。
この命令を使うと、ちょっと面白いことができる。

例えば、MZ-700 は、$D000番地からVRAMが割り当てられているので…。

_Programming MZ-700: Display

$D000 - $D3E7 の間に、何かディスプレイコードを書き込むと、画面のその位置に文字を表示することができるので、ソレを使って色々遊べる。とメモ。

例えば、以下は、画面上をキャラが行ったり来たりする例。
kmbasic082_ss14_pingpong.png

kmbasic082_ss15_pingpong.gif

以下は、キャラをカーソルキーで移動、Qキーでプログラムを終了させる例。
kmbasic082_ss16.png

kmbasic082_ss17.gif

以下で、MZ-700のメモリマップその他が説明されてるので、この手のソレには参考になりそうな予感。ありがたや。

_Programming MZ-700
_Programming MZ-700: Memory
_Programming MZ-700: Keyboard
_Programming MZ-700: Sound
_Programming MZ-700: Interrupt

INKEY()を利用した際の返り値をメモ。 :

KM-BASIC は、INKEY() を使うと、その時に押しているキーのアスキーコードを取得できる。どのキーを押すと何が返ってくるのか、少し調べたのでメモ。環境は MZ700WIN 0.53b。

KEYASCII CODE
17
18
19
20
SPC32
Z90
X88
A65
S83
Q81

例えば _TIC-80 などは、カーソルキー, Z, X, A, S (要は、十字キー + A, B, X, Yボタン)だけでアクションゲームを作ろうとしてるノリがあるので、このくらいのキーさえ判定できればなんとかなるのではないか。

でも、MZシリーズって、同時押しを取得できるキー種類に制限があったり、したかな。どうだったかな。むしろ制限が無かったほうだったろうか。

FM-7あたりは、サブCPUがキーボードを制御してる関係で何か制限があった気もするけれど、具体的な内容をもう覚えてないや…。 *1

などと、ちょっと悩んでみたけれど、ふと気が付いた。そもそも KM-BASIC の INKEY() は一つの値しか返さないのだから、キーを同時押しされても取得できないわな…。悩む必要がなかった…。

*1: テンキーの5キーでキャラ移動を止められる、とかだっけ。それはキーを離した瞬間を取得できないから、だったかな。同時押しとは別の問題か。

この記事へのツッコミ

Re: KM-BASIC 0.8.2の動作確認をしてみたり by 名無しさん    2019/04/29 11:19
ver 0.8.3をアップロードしました。REM文に関しての挙動は、直っていると思います。また何か発見しましたら、お知らせ頂けると嬉しいです。
Re: KM-BASIC 0.8.2の動作確認をしてみたり by mieki256    2019/05/08 21:23
> ver 0.8.3をアップロードしました。

0.8.3を試したところ、REM文が正常表示されることを確認できました。
対応・修正していただき感謝します。ありがとうございます。

2019/04/25(木) [n年前の日記]

#1 [pc] Z80のアセンブラについて調べていたり

MZ-700エミュレータ上で動く何かしらを、アセンブラで書けるかどうか確認したくなったので、Z80用のバイナリを出力できるアセンブラをググっていたり。

ググった感じでは、Z80AS が使われている場合が多いようだなと…。

_We Love MZ-700
_Z80 Abusolute Assembler 'Z80AS'

MZ-80K/700エミュレータで利用できるファイルフォーマット ―― .mzt で出力できるあたりがとてもヨサゲ。

問題は、どういうアセンブラソースを書けば MZ上で動くのか、そこが分からないという…。

モニタサブルーチンの一覧をメモ。 :

MZ-700 のマニュアルを発掘して眺めてみたり。

モニタ 1Z-009A に色々サブルーチンがあるので、そのあたりを呼べば Hello World ぐらいは楽に書けそうな気がする。後々作業する際のことを考えて、サブルーチンの一覧を試しにメモ。

_1Z-009Amonitor_note.pdf
_1Z-009Amonitor_note.csv

MZ-80K/700 は、テープからロードすると 1200h以降にプログラムが格納されるらしいけど、終了する時はどんな儀式を行わないといかんのか、そこが分からない。RET を呼ぶだけでいいのだろうか。

余談。マニュアルを眺めていたら、S-BASIC や Hu-BASIC がロードされた直後は、VRAM がフツーのRAMに切り替わると知った。フリーエリアは増えるけど、その代わり S-BASIC や Hu-BASIC で、いきなり VRAM に値を書き込んで何かを表示しようとしても、メモリ上の何かが破壊されるだけで画面表示はされない、ということかな…。これが MZ-80K用のプログラムなら、VRAM を RAM に切り替えたりはしないから、いきなり VRAM に書き込むこともできるのだろう。その代わり、フリーエリアは少なくなるはず。

#2 [pc] PC-6001のエミュレータを試用

Z80関係のサイトを眺めていたら、PC-6001の互換BASICがあると知り、興味が湧いたのでエミュレータを試用してみたり。

今回試したのは以下。

_PC-6001用互換BASIC
_PC-6001VX - ダウンロードのページ: 808 Midway
_Burnout.-Develop- PC6001VW3
_Burnout.-Develop- PC6001VW4
_ぱぴこんのこころ - PC6001V

PC-6001VX、PC-6001VW3/4 は互換BASICでも動いてくれた。ただ、PC6001V は CRC が違うと言われて動かなかった。おそらく実機のROMを入手しないと動かない作りになっているのだろうな…。

さておき、懐かしい緑色の画面が表示されて、なんだか感動。

もっとも、自分がナイコン族をやってた頃に触っていたPCなので、BASICの仕様等をさっぱり把握してなくて。仕様が分からないから、何かしらを打ち込んで遊ぶこともできず。当時はベーマガのリストを意味も分からずに打ち込んでいただけだから…。

2019/04/26(金) [n年前の日記]

#1 [pc] Z80のアセンブラでHello Worldをしてみたり

Z80のアセンブラで何かしらを書いて、アセンブルしてバイナリを作って、MZ-700 のエミュレータ上で動かす、といった作業が実際にできるのかどうか気になったので、少し調べて試してみたり。環境は Windows10 x64。

必要なもの。 :

必要になるのは、
  • MZ-700 エミュレータ
  • MZ-700 モニタROM (IPL.ROM)
  • MZ-700 フォントROM (FONT.ROM)
  • Z80用のアセンブラ(Windows上で動くもの)
ぐらいだろうか…。

MZ-700 のエミュレータは、以前は MZ700WIN が入手できたけど、もはや入手が難しいので、EmuZ-700 を利用させてもらうことにした。

_EmuZ-700 / EmuZ-800 / EmuZ-1500 謎WIPページ
_Common Source Code Project

binary.zip をダウンロードして解凍すると、100種類以上のレトロPCエミュレータが入ってるので…。mz700.txt と binary/mz700.exe を、任意のフォルダにコピーする。この mz700.exe が、EmuZ-700。

mz700.exe を実行するためには、IPL.ROM と FONT.ROM が必要になる。

IPL.ROM は、MZ-700/80K/C/1200用互換モニタ MZ-NEW MONITOR を利用させてもらう。

_MZ-NEW MONITOR 使用許諾条件
_MZ-NEW MONITOR 使用許諾条件 (Internet Archive)

(※ 2019/04/28追記。上記リンク先が404になったので、Internet Archive のページを追加。)

mz_newmon.zip をDLして解凍すると、ROMSフォルダの中に、NEWMON.ROM、NEWMON7.ROM があるので…。MZ-700版の NEWMON7.ROM を mz700.exe と同じフォルダにコピーして、IPL.ROM にリネームする。

FONT.ROM は、以下のページを参考にして作成。

_MZ-700WIN フォントデータの作成

MKFNT.zip をDLして解凍。DOS窓を開いて、解凍したフォルダをカレントディレクトリにして、以下を実行。
mkfnt mz700fon
MZ700FON.DAT というファイルができるから、mz700.exe と同じフォルダにコピーして、FONT.ROM にリネームする。

この状態で、mz700.exe を実行すると、EmuZ-700 が起動する。

emuz-700_ss1.png

これでエミュレータは動いた。ありがたや。

次に、Windows上で利用できる Z80アセンブラを入手する。今回は、Z80AS を利用させてもらう。

_We Love MZ-700

上記リンク先ページの真ん中あたりで Z80AS が公開されているので、z80as_012.zip をDL。解凍すると、中に z80as.exe というファイルがあるので、パスが通った場所にコピーする。

これで環境は整った。

Hello wroldのソースを書く。 :

まずはとにかく Hello world だろう…。ということで、画面に「HELLO WORLD」と表示するだけのソースを書いてみる。

適当なエディタで、Z80向けのアセンブラソースを書く。アセンブラソースの拡張子は .asm にしておけばいいのだろうか。

今回は、以下のソースを参考に書いてみたり。ありがたや。

_marukun700/tinyimas700_v1_src: TinyIMAS for MZ-700 source
_tinyimas700_v1_src/tinyimas.asm at master - marukun700/tinyimas700_v1_src

_helloasm.asm
; Display "HELLO WORLD" in MZ-700

; define monitor subroutine

LETNL EQU 0006h
MSG EQU 0015h
        
        ORG 1200h

        ; start

        CALL LETNL      ; newline
        
        LD DE,MSGDT0
        CALL MSG        ; display "HELLO WORLD"
        
        CALL LETNL
        
        LD DE,MSGDT1    ; display "IN MZ-700"
        CALL MSG
        
        RET
        
MSGDT0:
        DB "- HELLO WORLD -"
        DB 0Dh

MSGDT1:
        DB "- IN MZ-700 -"
        DB 0Dh

        END

簡単に説明しておくと…。
  • ORG 1200h で、「このプログラムは 1200h番地から始まるプログラムだよ」と指定する。
  • MZ-80K や MZ-700 は、1200h番地以降にユーザの作ったプログラムを読み込むので、ほとんどの場合、ORG 1200h を最初に書くことになるはず。
  • xxx EQU yyyyh で、xxx というシンボルに、yyyyh という数値を定義する。
  • ソースの最後には、END と書いておく。
  • xxxx: はラベル。
  • DB "HOGE" で、HOGE をASCIIコードにしたバイナリ列を記述できる。
  • DB 01h,02h,03h と書けば、01h,02h,03h というバイナリを記述できる。
  • 16進数を記述する時は、0003h とか 0D000h のように、最後に h をつける。

その他の仕様は、Z80AS のドキュメントを参照のこと。

_Z80 Abusolute Assembler 'Z80AS'

Z80のニーモニック(命令?)については、以下が参考になりそう。

_Z-80の命令の簡単な解説(1)
_Z-80の命令の簡単な解説(2)
_8ビットCPU Z80 (命令セット)
_Z80 Code Refference -
_Z80 MNemonic Refference -

さて。MZ-700 のモニタROMには、改行をしてくれるサブルーチンや、メッセージを表示してくれるサブルーチンが用意されてるので、今回はソレを使わせてもらう。前述のソース内では、CALL LETNL や CALL MSG が、それらのサブルーチンを呼び出している行。

モニタROMにどんなサブルーチンが用意されているかは、以下を眺めればおおよそ分かる。たぶん。

_1Z-009Amonitor_note.pdf
_SP-1002 - Enri's Home PAGE (mz-80K)

1Z-009A が、MZ-700のモニタの型番で、SP-1002 が、MZ-80K のモニタの型番。MZ-700 のモニタは、MZ-80K のモニタと中身が完全に同じではないけれど、サブルーチンを呼び出す際のアドレスが合わせてあったりするので、ある程度は互換性がある。

プログラム側のメインルーチンで RET が呼ばれると、モニタの処理に戻ってくる模様。

アセンブルする。 :

ソースを書いたのでアセンブルする。DOS窓上で以下を打つ。
z80as helloasm.asm
helloasm.bin という、Z80用のバイナリファイルができた。バイナリエディタの類で中身を覗いてみると…。

helloasm_bin_ss1.png

Z80の各命令が、Z80用のバイナリに変換されて並んでいることが分かる。アセンブルはできているっぽい。

このままだと、MZ-700のエミュレータでは読み込めないので、.mzt 形式(カセットテープ相当のファイル)として出力させる。
z80as -mHELLOASM helloasm.asm
helloasm.mzt が出力された。

Z80AS は、-m オプションをつけることで、アセンブル結果を .mzt 形式にして出力することができる。
  • -mHOGE とつければ、テープに保存されたファイルのファイル名は「HOGE」になるし、
  • -mFUGA とつければ、テープに保存されたファイルのファイル名は「FUGA」になる。
今回は -mHELLOASM とつけてるので、テープに保存されたファイル名は「HELLOASM」になる。

MZ-80系の場合、テープに保存する際のファイル名は英数大文字にしておいたほうが良さそう。元々は小文字が存在しないPCだったようだし…。

エミュレータ上で実行。 :

MZ-700のエミュレータ、EmuZ-700 上で、先ほどアセンブルして出来上がったファイルを読み込んで実行してみる。

EmuZ-700 を起動すると、
 MZ-700
*
と表示されて入力待ちになる。L[Enter] と打ち込んで、「テープからロードせよ」と指示する。(L は LOAD の L。)

メニューの、CMT → Play を選択。ファイル選択ダイアログが開くので、先ほど生成した helloasm.mzt を選択してやる。実機であれば、データレコーダにカセットテープを入れて、データレコーダのPlayボタンを押した状態に相当する。

EmuZ-700 画面下部のステータスバーに、テープの読み込み状況が表示される。ある程度進むと、画面上に、「LO. HELLOASM」と表示される。「テープに入っているファイル名(HELLOASM)は認識したよ」「このまま読み込みを続けるよ」ということ。

ロードが終わると、読み込んだプログラムが自動で実行される。

helloasm_mzt_ss1.png

「HELLO WORLD」が表示された。動いたっぽい。

ちなみに、再度実行したい時は、
GOTO$1200
と打ち込む。1200h番地にジャンプするらしい。

別のプログラムを書いてみる。 :

調子に乗って別のプログラムを書いてみる。画面全体を何度も書き換える処理を書いてみよう…。

_fillscrn.asm
; Fill screen in MZ-700
;
; EXIT : Q key or SHIFT + BREAK

GETKY EQU 001Bh
BRKEY EQU 001Eh
?BLNK   EQU 0DA6h
        
        
VRAM EQU 0D000h
VRAMA EQU 0D800h
        
        ORG 1200h

        ; start

        ; attribute VRAM fill
        LD A,70h
        LD HL,VRAMA
        LD BC,40*25
        CALL MEMFIL

        LD IX,CHRLIST
        LD A,(IX)
LOOP0:
        CALL ?BLNK      ; wait VBLANK

        LD HL,VRAM
        LD BC,40*25
        CALL MEMFIL     ; fill screen

        CALL GETKY
        CP 81           ; check ASCII 'Q' Key
        JP Z,SCRCLR

        CALL BRKEY      ; check SHIFT + BREAK
        JP Z,SCRCLR
        
        INC IX
        LD A,(IX)       ; get new display code
        CP 0
        JR NZ,LOOP0
        
        LD IX,CHRLIST
        LD A,(IX)
        JR LOOP0

SCRCLR:
        LD A,0
        LD HL,VRAM
        LD BC,40*25
        CALL MEMFIL     ; screen clear
        
        RET

MEMFIL:
        LD D,H
        LD E,L
        INC DE
        DEC BC
        LD (HL),A
        LDIR
        RET

CHRLIST:
        DB 70h,30h,74h,34h,78h,38h,7Ch,3Ch
        DB 00
        
        END

z80as -mFILLSCRN fillscrn.asm

_tinyimas700_v1_src/tinyimas.asm を参考にさせてもらいました。ありがたや。

実行結果は以下。



Qキーか SHIFT+BREAKキーで処理を抜ける。

一応簡単な説明を。MZ-700 は、0D000h からVRAMが、0D800hからアトリビュートVRAMが割り当てられているので、そのあたりに何かを書き込めば、文字を表示したり、色を変更したり等ができる。

_Programming MZ-700: Display

また、MZ-700は、1文字 8x8ドット、40x25文字のキャラクタ画面しか持ってないので、ドット単位のスクロールなんてできないのだけど。文字の中に1ドットずつずれてる横線があるので、今回はソレを使って画面を埋め尽くすことで、ドット単位のスクロールをしているような気分だけをほのかに味わっているという、なんだかちょっと悲しさが漂うプログラムだったりもする。

ということで、Z80のアセンブラでソースを書いて、アセンブルして、MZ-700のエミュレータ上で動かせることが確認できた。とメモ。

EmuZ-700について少しメモ。 :

EmuZ-700 は、実機動作の再現度を高めたエミュレータなので、実機と同程度の速度でテープ(.mzt)からプログラムを読み込むため、プログラムのロードに数分かかったりするのだけれど。

メニューの、Control → Full Speed にチェックを入れると、動作速度が上がってテープの読み込み時間も短くなることに今頃気づいた。とメモ。もちろん、ロード後は、件の項目のチェックを外さないとアレだけど。

#2 [pc][windows] Z80のアセンブラソースを書くエディタを物色

Z80用のアセンブラソースを書けそうなエディタを探したり。環境は Windows10 x64。

Vsiaul Studio Code + 拡張 :

Microsoft が公開している Visual Studio Code に、Z80アセンブラ用の拡張を追加すると、イイ感じになる…と以下の記事で知った。

_Visual Studio CodeでZ80の開発環境を作るまで - Qiita

_Visual Studio Code - Code Editing. Redefined
_Z80 Assembly - Visual Studio Marketplace

試してみたところ、たしかにイイ感じ。コレでいいんじゃないかな…。

xyzzy + asm-mode :

自分は普段、xyzzy というエディタを使っているので、xyzzy でも書けないものかなと。

ググってみたところ、asm-mode を公開されている方が居ると知り。ありがたや。基本的には RISC CPU に合わせて書かれたモードらしい。

_ムトー研究所【asm-mode for xyzzy】
  • asm.0.02.lzh と asm-keywords.lzh をDLして解凍。
  • 中に入ってる asm-mode.l を xyzzyインストールフォルダ/site-lisp/ にコピー。
  • Asm、及び Asm-* ファイルを、xyzzyインストールフォルダ/etc/ にコピー。
  • ~/.xyzzy に設定を追加。

更に、以下のページで、asm-mode のキーワードファイルを増やしたり切り替えたりする lisp があることを知り、利用させてもらったり。

_私のsiteinit.l #xyzzy

Asm-Z80 というファイルも必要になるっぽいけど…。とりあえず今回は自分で作ってみたり。まだ足りてないキーワードがありそうだけど。

_Asm-Z80

それと、Z80のアセンブラソースは、コメント文が「;」で始まるので、以下の設定も ~/.xyzzy に追加。これで「;」以降はコメントとして表示されるようになった。
(set-syntax-start-comment *asm-mode-syntax-table* #\;)

2019/04/27() [n年前の日記]

#1 [python] Pythonでバイナリファイルを扱う方法を調べてたり

Python でバイナリファイルを扱う方法について調べていたり。環境は Windows10 x64 + Python 2.7.15 32bit。

ファイルの読み込みは、以下でいいらしい。
    f = open(infile, "rb")
    buf = f.read()
    f.close()
バイナリが文字列として buf に入るようだなと…。

バイナリの中から、C言語の構造体っぽい形で値を取得するなら、struct というモジュールが使えるようで。

_7.3. struct --- 文字列データをパックされたバイナリデータとして解釈する ・ Python 2.7.16 ドキュメント

こういう感じだろうか。
import struct

buf = struct.pack("<BHL", 1, 2, 3)
print(repr(buf))

lst = struct.unpack("<BHL", buf)
for i, v in enumerate(lst):
    print("%d : 0x%x" % (i, v))

実行結果。
> python 01_struct.py
'\x01\x02\x00\x03\x00\x00\x00'
0 : 0x1
1 : 0x2
2 : 0x3

unsigned char や unsigned short を取り出すフォーマット文字列は分かったけど、文字列を取り出す指定がちょっとよく分からず。"s"を指定すればいいのだろうか…。

こんな感じかな。
import struct

buf = struct.pack('<B17s', 2, 'FILENAME')
print(repr(buf))

v, s = struct.unpack("<B17s", buf)
print(repr(v))
print(repr(s))

実行結果。
>python 02_struct_string.py
'\x02FILENAME\x00\x00\x00\x00\x00\x00\x00\x00\x00'
2
'FILENAME\x00\x00\x00\x00\x00\x00\x00\x00\x00'

こんな感じでいいのだろう。たぶん。

2019/04/28() [n年前の日記]

#1 [nitijyou] 弟が帰省

道路状況はいつもと似たような感じだったらしい。反対車線は連休だから混んでたそうだけど。

親父さん用の新PCその他をたくさん持ってきてくれた。ありがたや。

2019/04/29(月) [n年前の日記]

#1 [pc] 親父さん用のPCを新調

弟が持ってきてくれたアレコレで、親父さん用PCを新調。

スペック等、忘れてしまいそうなので一応メモ。
_RACING B350GTN | BIOSTAR | 株式会社aiuto
_W4U2400CM-4G:Crucial DDR4-2400 288pin DIMM 4GB 2枚組 | CFD販売
_価格.com - サイズ Betty 価格比較
_手頃なMini-ITXケース発見 サイズ「Betty」検証 - エルミタージュ秋葉原
_株式会社サイズ | Betty (Internet Archive )
_SilverStone Technology Co., Ltd.製品紹介:ST30SF
_AMC-HD10V20 | Ainex

サイズ Betty は、背面に 6cm排気ファンが2個つけられる。前面に 8cm吸気ファン x 1 がついているし、比較的消費電力が少ないCPUなので、 今回は背面のファンはつけてない状態。

M/Bにブザーはつけてないけれど、M/Bの箱に、Betty のパーツと一緒にブザーも入っているので、必要なら追加すること。とメモ。忘れそうだな…コレ…。

電源は、負荷が少ないとファンが回らない仕様なので注意。ファンの駆動音がしないから動いていない、などと判断しないように>自分。V2.0 は改良(?)されて、必ずファンが回るようになっているらしい。

M/B に DispalyPort は無いので、HDMI でディスプレイと接続した。

今回使用した純正CPUファンは高さがあるので、Betty の5インチベイは、奥がCPUファンで塞がってしまって利用できない。5インチベイも使いたいなら、薄型CPUファンも貰ったのでソレと交換すること。ただ、そのCPUファンは音が煩い、との弟の評。

SSD は、親父さんが今まで使ってたPCのSSD、SanDisk Ultra II 240GB SDSSDHII-240G-J26 をそのまま利用した。マイクロソフトアカウントでログインしておけば、利用してるPCの台数が特定できるせいか、OSの再アクティベーション等しなくて済む模様。

今まで親父さんが使ってたPCのCPUは、AMD A8-3850 だったので、Ryzen 3 2200G とベンチマーク等を比較すると、おおよそ2倍程度の性能アップになっているらしい。

余談。 :

サイズのサイトが新しくなって、以前販売していた製品情報がごっそり無くなってしまったのは痛いなと…。

2019/04/30(火) [n年前の日記]

#1 [python] 1バイトの半角カナは今時どういう扱いになっているのだろう

Python を使って、MZ-700時代のファイルを読み取ってヘッダ情報を表示するツールを書いているのだけど。1バイトのカタカナを読み取って表示するあたりで悩んだり。そもそも今時、1バイトで表せるカタカナのコードって、どういう扱いになっているのだろう…。

調べてみた感じでは、そもそも、MZ-80K のカタカナと、SJISの半角カタカナは、位置が合ってないようで…。

_Enri's Home PAGE (mz-80K)
_文字コード表 シフトJIS(Shift_JIS)

MZ-80K は 0x81 からカタカナが始まっているけれど、SJIS は 0xa1 からカタカナが始まっているように見える。これでは変換のしようがないよな…。

辞書だかハッシュだかで変換してしまおうか。でも、カタカナ表示にも対応すると、英語圏で使われた場合にカタカナが表示されなかったりもするのだろうし。カタカナは全部「?」表示にしてしまったほうがいいのだろうか。

#2 [windows] メインPCの Windows10 を 1803 から 1809 にアップグレードしてみた

メインPCの Windows10 x64 1803 を、1809 にアップグレードしてみたり。Windows 10 October 2018 Update、という呼び方でいいのだろうか。

MSのサイトを開いて、Windows10 更新アシスタントを入手して実行。2〜3時間かかって、アップグレードできた。

_Windows 10 のダウンロード

一応、ドキュメント等は中身が残ってる感じに見える。

空き容量が比較的ある、外付けHDD(SSD)に、Windows10Upgrade というフォルダが作成されて、中に以下のようなファイルが入ってた。
17763.107.101029-1455.rs5_release_svc_refresh_CLIENTCONSUMER_RET_x64FRE_ja-jp.esd_
また、Cドライブにも Windows10Upgrade フォルダが作成されて、中には110ファイルほど何かが入ってるようで。

#3 [windows] 親父さん用PCの Windows10 がアップグレードできない

親父さん用PCの Windows10 を、1803 から 1809 にアップグレードしようとしたところ、以下のエラーメッセージが表示されて処理が進まず。

We couldn't update the system reserved partition.

win10upgrade_failure_20190430.png

ググってみた感じでは、システム予約パーティションの空き容量が少ないと、こういうメッセージが表示されて止まってしまうらしい。

_“We couldn’t update system reserved partition” error installing Windows 10

上記のページでは、システム予約パーティションに、一時的にドライブ文字を割り当てて、中に入ってるフォントファイルを全部削除して無理矢理空き容量を増やす策が紹介されていた。そんなことして大丈夫なのかな…。

他にも、そもそもシステム予約パーティションのサイズを増やしてしまう方法もあるらしい。

本来 Windows10 は、システム予約パーティションとして 500MB ほど確保するらしいのだけど。Windows7時代は100MBだったので、Windows7からWindows10にアップグレードした環境では、システム予約パーティションのサイズが少ない場合もあるそうで。

また、HDD から SSD に換装した際に、関連ツールがシステム予約パーティションのサイズを小さくしてしまう場合もあるようで。自分の環境も、HDD から SSD に変更した際、100MB から 54MB にサイズが縮小されていた。

_windows10更新プログラムが出来ない|容量不足のシステムで予約済みパーテンションを拡張した - 田舎に暮らすぞ計画
_「システムで予約済みのパーティションを更新できませんでした」と表示されて Windows 10 - マイクロソフト コミュニティ

上記事例によると、MiniTool Partition Wizard 無料版、もしくは、Easeus Patition Master 無料版を使って、システム予約パーティションのサイズを増やせた場合もあるらしい。

#4 [zatta] 平成になった時とはノリが随分違うのだな

昭和から平成になったときは、何せ天皇が亡くなってるわけだから自粛ムードが凄かったわけだけど。今回、平成から令和への変更は、TV番組等が完全にお祭りムードで、これはこれでなんだかちょっと…。そのはしゃぎぶりに、若干怖さすら感じるなと…。でもまあ、今回のように、お祭りムードで退位・即位が行われるほうが全然いいだろう、とは思うのだけど。

#5 [nitijyou] 弟が仙台に戻った

高速道路の渋滞具合をWebで確認しつつ、14:00ちょっと前ぐらいに出発。16:30頃に到着したと電話があったらしい。

以上、30 日分です。

過去ログ表示

Prev - 2019/04 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project