2024年1月の日記
2024-01-31 (水)
晴れ
Zigを触ってみた感想
Zigの短めな入門ガイドをいくつか読み終えた。
Rustで書いたMemory Puzzleをプログラムの構成にはあまり変更を加えずに、Zigで書き直すことにした。
Rustのコードとしても初歩的なものなので、Zigの手慣らしにちょうどよいだろう。
実際に書いてみると、コードの見た目には表れない特性を少し体感することができた。
顕著なのは、Rustと劣らないくらいコンパイラのチェックが厳しいところだ。
Cでは警告で済まされていたところは、かっぱからエラーにしてくれる。
もしRustをやってなかったら面食らってしまっていたところだろう。
全体的には、Rustのような革新的でありながら高い完成度を備えた言語には及ばないと感じた。
しかし、Zigはまだまだ実験的で不安定な状態で、これからどうなるか全くわからない。
Rustキラーになる可能性を完全には否定はできない。
2024-01-30 (火)
晴れ
本を購入
ちょっと出かけたついでに本屋によってみた。
特に目的はなかった。
「日英語表現辞典 (ちくま学芸文庫)」というのが目について、妙に気になったので買っておいた。
Spacemacsとhaxe-mode
SpacemacsにHaxeレイヤーは提供されていない。
ありがたいことに、Emacsのhaxe-modeは作られている。
これを基礎にプラベートなHaxeレイヤーを作ろうとしたら、厄介な問題に遭遇した。
spacemacs/declare-prefix-for-modeとspacemacs/set-leader-keys-for-major-modeの2つ関数を使って、SPC mをプレフィックスとしたキーバインドを設定するのが定石なのだが、どうやっても有効にならない。
Haxeのファイルを開いてhaxe-modeをロードした後に、直にそれらの関数を評価すれば有効になる。
かなり時間を費やしたが、解決できなかった。
VSCodeを使わざるを得ないという結論になった。
Zigをやっている
Memory Puzzleのやり直しはZigでやることにした。
シンプルな2Dゲームに適したZig純正のライブラリが見つからなかったので、raylibのバインディング、raylib-zigを使うことにした。
プロジェクトを生成するスクリプトが提供されていて、build.zigを自分で書かずにすむ。
Zigのバージョンは、最新の0.12.0ではなく、0.11.0でないとだめだった。
2024-01-29 (月)
晴れ
Memory Puzzleの動画の失敗を振り返る
昨日のMemory Puzzleで音声がまともに入ってなかった件について。
あのままほったらかしておくのは不誠実に思えるので、なにかフォローをしておきたい。
もう1度やり直すのはあまり得るものがない。
それくらいなら、完成品を見ながらしゃべる方がまだ良い。
あるいはリファクタリングの実況というのも考えられる。
改良するところはたくさんある。
残念ながら、リファクタリングを学んだことがないので、ちゃんとしたことができない。
そんなに形式張ってやらなくても、単なる修正を施すだけと思ってやってみても良い。
何にしても、このまま放っておくのは良くないので、何か考えよう。
HaxeとOpenFLを試す
興味深い。
Memory Puzzleをこれでやってみても良いかも。
Rust The Book 11〜14章を読んだ
少し手に馴染んできた感じがする。
ゲームのコードを書いていることの相乗効果もありそうだ。
Zigが良いかも
なんとなく、Rustとコンセプトが近い言語のような印象を持っている。
注目度もそれなりに高いようで、個人的にも気になっている。
一度触れてみて、感触を確かめてみたい
2024-01-28 (日)
曇り
YouTube Game Code 2本目 投稿
Memory Puzzle。
4時間の動画になった。
まだ許容範囲の長さと内容になった、と思っていたら、なんと音声がまともに入ってなかった。
原因はおそらく、昨日知って、採用したOBS Studioのノイズ除去フィルターのせいだろう。
マイクのサー音が消えるので、いいものを見つけたと世論子でいたのに、まさかこんな結果になろうとは思わなかった。
もうちょっと短い動画でテストしてからにすれば良かったと後悔しても遅い。
流石に取り直す気にもなれず、そのままアップした。
すると、公開されてまもなく、初めての低評価をもらうこととなった。
もっともな評価であり、何であれフィードバックが得られるのはありがたいことだ。
今後の参考にしよう。
2024-01-27 (土)
曇り
YouTube Game Code 2本目 失敗
長くなるを覚悟で撮り始めた。
半分くらい進んだところで、グダグダ感が増してきたので、中断した。
2024-01-26 (金)
曇り
C++ 20 The Complete Guide が届いた
テンションがあがってきた。
Memory Puzzle ができた
2本目。
前回と同じく、Rust + Macroquadでやった。
Neovimを設定する
なかなか大変だ。
パッケージマネージャーはpacker.nvimを使うのが良い。
2024-01-25 (木)
曇り、雪
C++ 20 The Complete Guide
買った。
700ページで11000円と、やや高い。
著者のサイトにあるリンクから、電子版をかなり安く買えるのだが、やけ気味でAmazonで買ってしまった。
あまり気にしていない。
Rust The Book 4日め
3章分読んだ。
- (8) Common Collections
- (9) Error Handling
- (10) Generic Types, Traits, and Lifetimes
8章には練習問題があって、手こずった。
10章のライフタイムは良い内容だった。
かなり自信がついた。
2024-01-24 (水)
雪
除雪
雪が積もった。
大雪警報が出ている割には大したことなかった。
それでも、除雪しないといけない程度ではあった。
今年2回めの除雪機の使用となる。
きれいになっていくのが気持ち良いので、手作業でやっていた頃とは段違いに気が楽だ。
車のオイル交換など
サービス券の期限が今日までだったので、せねて使える分だけでも使っておこうと思い、行ってきた。
ワイパーのゴム交換、エレメントの交換、以上がないかの点検をしてもらった。
ほったらかしだったけど、ちゃんとメンテナンスしてやらないとなと思い直す機会にもなった。
Rust The Book 3日め
7章を読んだ。
- (7) Managing Growing Projects with Packages, Crates, and Modules
ほとんどが新鮮な情報だった。
一度も学んでないということはなかったとは思うが、記憶の片隅にもない。
ここで学んだことを知っていなければ、コードを分割するにはどうすればよいのか、分かりようがない。
今までどうやってやってきたのか、そういう機会もなかったのか。
ともかく、これで対応できるようになった。
とても大きな収穫だった。
2024-01-23 (火)
晴れ、のち雪
JavaScriptのゲームについて検討中
Pixiを試してみようと思った。
npmでインストールする方法が書かれている。
それを試そうと思ったのだけど、どのようにブラウザで実行すればよいのかわからない。
npm install pixi とすると、当然、node_modulesの中にインストールされる。
ブラウザ側からはどうすればそれをロードできるのか。
根本的な考え方が間違っていたようだ。
単純にHTMLを書けばよいというものではない。
webpackなどによる支援が必要となるようだ。
この辺の手順をどうやって学べばいいのかがわからない。
さしあたって、フロントエンド開発のドキュメントなどに手を付けてみることにした。
- Frontend Development Projects with Vue.js 3 - Second Edition
Packtのこの本なんかが良さそうだ。
レンタルサーバーを申し込んだ
そろそろ仕事をしないといけない。
何よりホームページが必要だ。
ということで、無料じゃないちゃんとしたところを利用することにした。
まずは2週間のお試し期間がある。
申し込んだら即座に利用可能になった。
これは期待できる。
ドメインをどうするかが迷うところっだ。
無料期間中に取得してしまうのもなんか変だ。
もし、やっぱりやめとく、となった場合、ドメインだけ残ってしまう。
それに、本契約で条件を満たすと、契約中は1つ無料でドメインがもらえるという特典がある。
それに依存するかどうかも悩ましいところだ。
お試し期間は2週間あるので、ゆっくり考えよう。
Rust The Book
4、5、6章を読んだ。
- (4) Understanding Ownership
- (5) Using Structs to Structure Related Data
- (6) Enums and Pattern Matching
いくつか新たに知ったこと、あるいは風化していた記憶を呼び覚ますことがあったものの、大筋はだいたい把握していたことが多かった。
まだ序盤なのでこのくらいでちょうどよい。
2024-01-22 (月)
晴れ、雨
Rust The Bookを読み始めた
3章まで読んだ。
- (1) Getting Started
- (2) Programming a Guessing Game
- (3) Common Programming Concepts
YouTubeの動画でRustを使っていくにあたって、一度ちゃんと読んでおくことにした。
とても読みやすくて3章まで読み終えた。
オライリーのより入門的な内容になっている。
2024-01-21 (日)
YouTube再開
再開の告知のような動画と、昨日のDodgerを作るところを動画にした。
途中で、Macroquadのバグに遭遇した。
録画環境では、動画で文字が小さくて見えないということにならないように、画面を拡大するためにDPIを高く設定していた。
そうすると、Macroquadのウィンドウの座標が狂ってきて、正しい位置に描画されないようになる。
GitHubのissueにもあがっている未解決のバグのようだ。
仕方ないので、DPIは規定に戻して、テキストエディタのフォントサイズを大きくすることにしておいた。
画面を広く使えるようになって、楽になった。
テキストエディタ以外の文字は動画では大して重要ではないので、最初からこれでも良かった。
2024-01-20 (土)
RustでDodgerを書いた
ゲーム自体はかなり簡単だった。
Pongよりも簡単だった。
工夫が必要なところはゲームの状態遷移で、理想的な形にするのは難しい。
今回のは、単純に条件分岐で処理する、初歩的で愚直な方法で済ませることにした。
何か参考になるようなものがないものだろうか。
2024-01-19 (金)
曇り、雨
今日読んだ本
- アルゴリズム・C 4章 1/2
- Learning Scala Programming 5章
Rustでゲームコーディングの練習
今日から始めることにした。
ライブラリはSDLとかじゃなくて、Rust製のものを使う。
いくつか候補がある。
しばらくはmacroquadを使うことにした。
これは極めて直感的で、機能も十分にそろっている。
2Dを始めるには最適だ。
今日はまずPongを書いた。
またPongかと思うところもあるが、学ぶことはたくさんある。
2024-01-18 (木)
雨
ちょっと遠出
遠くと言うほどでもないが、出かけてきた。
ラーメンを食べて、せっかくなので本屋によって買い物をした。
「入門モダンLinux」とNewtonの2月号を買った。
オライリーから出ているWebAssemblyの本も気になったけど、別の気になっているのを抱えていたので、とりあえずやめておいた。
帰宅後、その気になっている「入門 WebAssebly」をKindleで買ってしまうことにした。
オライリーのは次の機会にしておく。
今日読んだ本
- アルゴリズム・C 3章 3/3
- Learning Scala Programming 4章
2024-01-17 (水)
曇り
Spacemacsの問題が一つ解決した
~/.spacemacs.env の XAUTHORITY を削除するだけで幸せになれる。
これだけでシェルからXアプリケーションを起動できない問題と、SPC q r で再起動できない問題が解決した
~/.spacemacs.env は、Spacemacsを起動したときに、もし存在しなければ、現在の環境変数がいくつかを除いてそのファイルに書き出される。
ここに XAUTHORITY があると、Ubuntuではログインごとに変更されるにも関わらず、ずっと以前の値のままになっていて、存在しないパスが記録されることになる。
Xアプリケーションはこの値を使用するので問題が起きるという罠だった。
これで快適にゲームのコードをかけるようになって、嬉しい限りだ。
WebAssemblyに興味が湧いた
そろそろ活動を再開したい。
なんとなくPacktの本を読み始めた。
- Game Development with Rust and WebAssembly
オライリーから和訳されて出ているので、気になっていた。
2章まで読んだ。
めっちゃ面白い。
WebAssemblyの基礎や仕組みについてはあまり触れられていないので、別の本で補っておく必要がある。
macroquad
Rustのゲームエンジン、というとやや大げさなくらいシンプルなもの。
とても簡潔で直感的なコードでグラフィックスを描画できる。
ファンシーなコードは必要ない。
SpacemacsのdapとCodeLens
Rustをセットアップしたら、mainの横に Run | Debug というテキストのトリガーが表示されている。
Runは機能するが、Debugがエラーになる。
SPC d でdapから起動するときは上手くいく。
この情報を表示する機能はCodeLensと呼ばれるらしい。
VSCodeで広く使われている。
無視してもいいのだけど、微妙に気持ち悪く、なんとかならないか色々やっていた。
結果、だめだった。諦めることにする。
2024-01-16 (火)
読んだ本
- Learning Scala Programming 3章
- アルゴリズム・C 3章 2/3
- GOSICK S 1章
2024-01-15 (月)
曇り
償却資産申告書を提出
あっさりと終わった。
読んだ本
- Learning Scala Programming 2章
- Docker Quick Start Guide 3章
- アルゴリズム・C 3章 1/3
2024-01-14 (日)
晴れ
読み始めた
Packtの本
- Learning Scala Programming
- Docker Quick Start Guide
OdinでOpenGLを使ってみた
Cのデータ型との変換が厄介なのは仕方がない。
他の言語に比べたら洗練されている方だ。
ポインタの扱いにはクセがある。
ドキュメントを参照しながらやれば、こなせないことはなかった。
OpenGL SuperBibleのC++で書かれたプログラムをいくつかOdinに書き直してみた。
問題なく動かすことができて、これは悪くないかもと思い始めた。
Odinについてちょっと嫌なところがある。
stringsパッケージにsplitとかjoinといった関数がある。
names := strings.split(list_of_names, ",") defer delete(names)
こんな感じで、deleteしてやらないといけない。
これはモダンな言語としてはイケてない。
ぜひ改善してほしい。
2024-01-13 (土)
曇り、雪
アルゴリズム・Cを読み始めた
今年中に必ず読み終える本の1冊に選出した。
止まっている2章から再開した。
かなり厳格な雰囲気で議論が展開される。
内容も高度だと思う。
練習問題などをみても、難しくて手が出せない。
最後までついていけるかどうか、あまり自信がない。
Manningのサブスクリプション
KindleでHaskell in Depthという本を買おうと思っているのだが、7000円弱とやや高い。
これはManningから出版されているもの。
先日も5800円するものを購入した。
こんなに高いならサブスクリプションに入った方がいいじゃないかと思うところがある。
価格は1年で36000円程度と、かなり高めになっている。
毎月1冊サービスでもらえるのと、常に半額で購入できる特典がついていることを考えれば、価格面では圧倒的にお得だ。
しかし、すでにPacktのサブスクリプションにも入っているので、2つも入っていても有効活用しづらい。
とりあえず、サブスクリプションは見送ることにした。
Kindleで購入するかはまだ検討中。
2024-01-12 (金)
曇り、雨
PSPソフトの消化完了
所有しているPSPのソフト148本全てについて、序盤だけプレイして感触を確かめる作業が完了した。
これでプレイするかどうかの判断ができるようになったということにしておく。
1週間近くかかった。
もう思い切ってPSPは諦めても良い気もする。
PS5は当分手を出さないけど、PS4だけでも処理するのが難しいくらいの量がある。
PSPにかまっている暇はないはずだ。
やるにしても、軽い気持ちで始めるのではなく、厳選したほうがいい。
2024-01-11 (木)
曇り
償却資産申告書
19日までに提出しないといけない。
いくつか迷うところがある。
今年度購入したものには該当するものがない。
開業する前に購入したPCはどうなるのだろう。
調べていると色々分かってきたことがある。
確定申告との関係もある。
これでいいのかちょっと不安になってきた。
PSPソフトの消化中
しんどい。
本を購入
- Functional Programming in Scala, Second Edition
なぜかScalaに惹かれるものがある。
2024-01-10 (水)
PSPソフトの消化中
一度も起動していなのを、序盤だけチェックしていく。
そのなかでプレイしたいなと思えるものを探していく。
作業じみていて、結構苦痛だ。
2024-01-09 (火)
CLANNAD PSP版 完結
ようやく終えることができた。
以前プレイしたセーブデータは2015年となっていて、実に9年越しのプレイとなる。
ずっと頭の隅に居座っていたものを取り除くことができた。
感慨深いものがある。
当時は自力での攻略を目指していた。
今回はもうそんなことを考えないようにした。
クリアしたときの達成感が下がるとか言っていられない。
途中で放棄してしまうよりはずっといい。
攻略サイトを見ながら実際にやってみて、これを自力でクリアするのは相当大変だと分かった。
もし自力でやっていたらあと1週間以上はかかっていたことだろう。
そして、おそらく途中で放棄してしまっていたことだろう。
理想的な形ではないが、無事に完結できたことを喜ぼう。
エンディングを迎えても、全てが明らかになるわけではなかった。
幻想世界についての真実がゲーム中で語られていなくて、プレイヤーに委ねられている。
どうもスッキリしない。
これもやはり他の人の考察を参考にさせてもらった。
一応は、納得のいく解釈を得られた。
ゲームプレイだけでなく、考察においてもやはり自分の力だけでは到達できないものであった。
2024-01-08 (月)
CLANNAD PSP版 プレイ中
自力での攻略は諦めて、攻略サイトを見ながらエンディングを目指している。
2024-01-07 (日)
曇り、雪
2024-01-06 (土)
2024-01-05 (金)
2024-01-04 (木)
南海トラフ地震について調べた
強い不安を感じた。
2024-01-03 (水)
曇り
地震のあと
能登では、余震なのか、震度5クラスの地震が発生したようだ。
もうこれ以上被害が拡大しないことを祈る。
2024-01-02 (火)
曇り
地震のあと
まだ昨日の不安が続いていて、ニュースチャンネルをずっと見ていた。
夕方までには津波の注意報、警報が解除になっていた。
過去の傾向から、1週間程度の間に同じ規模の地震が発生する可能性が10〜20%くらいあるらしく、不安は拭いきれていない。
2024-01-01 (月)
曇り
地震
午後4時頃に揺れた。
最初は「あ、地震だ」と思うくらいで、そんなに激しいものではなかった。
しかし、しだいに揺れが強くなりつつ、なかなかおさまらない。
だんだんと、「これはまずいんじゃないか」と不安を覚えるほどになった。
家が潰れるんじゃないかという恐怖を覚えた。
2〜3分程度続いた。
潰れることなく無事でホッとしたところ、すぐに下に降りてテレビのある親の部屋に行って速報を確認すると、大変なことになっていた。
石川の能登で震度7、日本海側の沿岸部ほとんどに津波の注意、警告が出されていた。
家は海から離れているので、津波が来ることはまずないのだけど、揺れが大きかったので、恐怖感が拭えなかった。
この日の残りはニュースの中継にかじりついていた。