プログラミング
現ハード:富士通LH55/C2、2TのUSB外付けHDD、USB外付けDVD書き込みも可。CPUはCeleron 3865U 2コア Kaby Lake-U (第7世代Intel Coreプロセッサ)、HD610内蔵GPUが一応あるが、GPUありとは認定されない悲しきGPUであり、Windows11非対応。メモリ4GB。
現回線:BIGLOBE光 (フレッツ、実質上下230Mbps程度)。
完習済みプログラミング言語:旧C (ANSIより前、アドレス定数値を利用した「黒魔法」が駆使できた頃の仕様)、Java1.2前後 (含全クラスライブラリ)、ECMAScript初版
ソースが読める程度には会得済みのプログラミング言語:Z80A用マクロアセンブラ、(MSX)BASIC、ObjectPascal (最初に完読したクラスライブラリ体系がTurboPascal用Turbo Visionなので、Apple Pascal系の簡潔さを極めた頃の、で、現在の複雑化したものは知らない)、Python (2.1あたり)
Debian 13 trixieベースのLMDE7にした (安定状態へ持っていくまでが結構大変なので (IBus設定がどうしても保存できず、最終的には.config/dconfを一旦削除してから改めてIBus設定で自動作成させて、ようやく保存できるようになった)、Linux初心者は極めて安定かつ堅牢なMint22 (この本はCinnamonの他、WINEにも詳しい) 自体の方でおとなしく勉強研究するのが吉ではあろう; ちなみにManjaroは、Debianほどパッケージは多くなくまた色々と雑なので、Linux初心者には現状最も至れり尽くせりなDebian系をお勧めする)。Debian Xfceに比べ完全フリーには限定されずまたMintスタッフの努力によってずっと扱いやすくなっており、またMintに比べればUbuntuの拘束下には無く、かつこれら3つの中ではデフォルトのパッケージ数が最も多い (Snapが使えないように初期設定されているMint22と異なり、こちらは普通に使える)。
GnomeとKDEにおける最低限の一貫性 (Gnome/Gtkは迷走気味であり、KDE/Qtの方が一貫性は高い; 前者は既に枯れて安定したC言語ベースで後者は未だ発展途上なC++言語ベースではあれども) のためにfreedesktop.orgが組織され、xfceはその規格を非常に尊重しているので、xfce専門本が無くてもそちらを参照すればおおよそ事足りる (もっとも、Qtベースへの移行を受けて、現在はLXQtを研究中であり、いずれはそちらがメインとなろうが、LXQtは足りない部分をKDEで補う形なので、KDEの研究はしておいた方が良さそうだ)。とりあえず簡単に言えば、外部から導入したアプリは、メニューエディター (menulibre) で適切な.desktopファイルを作ってやれば、パッケージ版と同様にメニュー等で取り扱えるようになる。Linuxの諸文書 (po、texi、man等) のフォーマットの概要は「Inside Linux」にそれなりに記述されている (makeやconfigureについてもそれなりに記述されている)。xfceのセッション機能は、位置等は保存できてもアプリを自動的には起動しないので、セッションと起動の自動起動アプリに手作業で登録しておく必要がある。ウインドウボタンの並び順を事前に定める方法は不明なので、DnDでいつでも手動で並び順を入れ替えられるようにするのが妥協点だろうか。xfconf-gsettings-backendをインストールするとibusが起動時にリセットされてしまうので、絶対インストールしないように。
Thunarの「コピー」はコピー先に応じて本体かパス名かが変わる; 端末やテキストエディタへ貼り付けるとパス名コピーの意味になり、他のフォルダへ貼り付けると本体コピーの意味になる。
外付HDDは、MyHDDの名前で/etc/fstabでuid=1000,gid=1000を指定して巨大な自分のhomeディレクトリ拡張として使えるようにした。その上で、~/.wineをそこの専用ディレクトリWineDriveへのリンクとして設定した。この他、BlenderやOpenUtau等、サイズの大きいあるいはファイル数の多い外来的なものはそちらへ展開することにして、自分のhomeディレクトリ自体はバックアップしやすいようにスリムさを維持したい (システムのバックアッパーTimeshiftはext4を要請するので、本来NTFSである外付HDDから200GBをext4な別パーティションに切り離して領域を割り当てた (Dropboxの配置先もext4を要請するので、そのパーティションにしている)。トータル2TBの超巨大ドライブなので、それでも全然余裕ではある。まあそんなわけで、自分のhomeディレクトリ自体のバックアップにはNTFSにも対応する別のバックアッパーFreeFileSyncを使うことにした (使い方初級、上級、秘伝))。
下のSublime Textでの対応もあって、日本語入力はfcitx5のmozcにした (Qtでもこれ推しのようだ); Filesに置いたMyMozckeymap.txtはそのままインポート可能な書式で、Compositionは変換前入力中、Conversionは変換中、DirectInputは直接入力、Precompositionは入力文字なし、Predictionはサジェスト選択中、Suggestionはサジェスト表示中、に各々対応する。
テキストエディタには、Sublime Textを使うことにした。日本語化、日本語入力; 私自身は「shift+tab」を割り当て。開発は止まってしまっているが、Qtクローンも作られていたりする。Notepadqqはメモ帳代わりに使おうと思う (デフォルトでは起動がやたら遅いが、設定の拡張機能にnodejsとnpmのパスを与えるとこの遅さは嘘のように解消される)。Qt Createrが、Lua拡張もできて、いらないプラグインを外しまくればちょっといいテキストエディタ程度にもできる、と知って (IDEとして紹介している書籍はQtプログラミング系でいくつかある)、いずれはそちらに切り替える可能性も無くはない (Python拡張はLua拡張の次に歓迎なので、Sublime Textを一通り使い込んでみようとは思うけれども)。
IDEは、Visual Studio Codeを使うことにした (本が1.36.1なので、その版のdebを入れて、Synapticでバージョンを固定にし、さらに自動で追加されるMicrosoftのリポジトリも削除する)。キーバインドはGeanyに合わせる (Sublimeも同様; ノートパソコンだと面倒なキーはファンクションキーに替えたもののA3版をFilesに入れておく)。
いわゆるプラットフォームには、Qtを使うことにした。4を基本とし、4ベースのソースは5ではincludeを少し調整するだけでよく、そうしてQt5対応としたソースはQt6でもそのまま流用できるようだ (大きな違いはQmakeからCmakeへ切り替わったことぐらいで、ゆえにこの本はCmakeの参考本にもなる; なお、QmakeもCmakeも、その名から連想されるような「Makeの代替」では無く、configureの方を代替して適切なMakefileを生成するものである)。Luaバインディングはこちら; Debian14ではもはやQt5はサポートしなくなるので、LuaのQt6バインディングもその頃には出来上がっているのではないかと思う (Debian13のQt6は6.8.2なので対象外なことに注意)。Make、GDBの参考書も。あと、Go言語ではあるが (Go言語はその簡潔さゆえにLuaに次いで習得しやすい) 言語処理系の簡単な作り方も (インタプリタは、その本の内容を要約的にまとめた簡易なLua版が既にある)。
Qtのベース言語であるC++は、まずC++03の入門書で概要を把握し、C++03のリファレンス (Qt4はこれで良い)、C++14と17に関する追加情報 (Qt5の後半からC++14ベース、Qt6はC++17ベースになる)、と順を追って会得していこうと思う。
Kindle Readerは、WEB版のみを使用することにした。アカウントからコンテンツライブラリを開き、表示をコレクションにすれば、新しいコレクションもWEB版から作成できる。
翻訳ソフトとして、Lokalizeを導入。様々な文書をpo化できるpo4aも研究しておく所存; .moと.poとの相互変換法 (これらのコマンド群はDebianではgettextパッケージに入っている)。QtのLinguistも研究しておきたい。また、会計ソフトとしてKMyMoneyを導入 (MSMoneyに似せてあるので、その書籍を参考書とできようが、英米の会計ソフトは簿記方式なので簿記の仕方を会得しておくとなお良いだろう。簿記の英語については、ここが良いだろうか)。
マイ本格言語は、Lua5.1を、公式本を熟読しIDEで厳密にプログラミングすることでそれとしたい (5.1のオンラインマニュアル; 5.1の文法だけを1枚PDFにまとめたものがFilesに置いてあるので、ご自由にどうぞ)。5.1から5.4までをまとめたリファレンスも、書籍版は高いが幸いに現在はPDF版が無料で入手できる。また、サードパーティなライブラリ群 (使い方) も必要となろう (utf8、iconv、LuaSystem、LuaFileSystem、penlight、json、cliargs、argparse、luaterm)。その他、メタ機能は使わない、luacheckを使用して不備の変数を検知、モジュール化の徹底、bustedを用いてモジュール単位での自動テストを心がける、など (大規模開発に有力なその他のライブラリ群 (say (gettextのLua版)、luassert、mediator_lua))。
他言語で記述されたソースを移植するために、Go言語、ECMAScript5.1、node.js等JavaScript系の最新的諸情報の参考書、Perl5.8、Gtk+参考書 (Gtk+英語ドキュ。この本の対応バージョンは2.12.9。Gtk3に対応させたPDFが読める)、Win32API参考書、も揃えておきたい。
シェルスクリプト代わりにも、Lua5.1をただし厳密ではなく適度に簡易化しつつ用いる。
オフィススイートは、LibreOfficeを使うことにした; OpenOffice3.3用だが、マクロBASICの型や制御構造も載っている。より安い3.0用ガイド本でも同様と思われ、どのみち古い文書なのでそっちの方が良いだろう (自分の3.3用は送料込みで718円とはるかに安いときに買った)。データベースは、より簡易には (表計算レベルの外観で済むものなら)、DB Browser for SQLite (Debian13にはsqlitebrowserパッケージとして入っている) をとりあえずは使うことになろう (SQLite入門、DB Browserの使い方)。
DebianのデフォルトブラウザはFirefoxなので、そのまま使う (Chromeのデベロッパーツールも参考)。userChrome.cssを例の場所に置いておく。
メーラーもDebianデフォルトのThunderbirdを使用 (GMailについては、Google自体にログインする形で対応できる)。トレイアイコン化はBirdTrayを利用 (IMAPメールボックスの更新も確認してくれる)。
RSSリーダー (私自身は専門的書籍も持っているほどのRSS推進派だ; 近似した技術ということでXMPPも研究してはいるが) はRSS Guardを使用。
ヴァージョン管理にはGitとGitHubを使うことにした。
軽量マークアップ言語は、一番シンプルで汎用性も高いMarkdownがもっぱらになろう (日本語基本文書 (オリジナル版の範囲のみ解説; GFMも解説しているものはしかし残念ながら版が大き過ぎて本棚に置きづらいし、やはり解釈に一番悩むのはオリジナル版の範囲なので、それで充分ではある)。reStructuredTextやAsciidocほどではないが、よりシンプルでも簡易な本のソース程度には対応できるtxt2tagsを、我が本用マークアップ言語としたく思う (このソース読みと先のpenlightがPythonライブラリを参考しているために、Pythonは3.11を研究する)。
MyWikiは現状のまま@WikiをMarkdownモードで用い、Obsidianをバックアップ兼エディタとして使おうと思う。MyBlogも現状のままはてなブログをMarkdownモードで使い続ける。ミニブログはXに代わってMastodonを使いたいが、どこに寄生するかは悩ましいところ。
画像処理は、Blender2.71; 大元のlinux用を持って来れば、解凍するだけで起動できる (うちのマシンスペック的に、このあたりのバージョンが使用可能な上限だと思われる)。2D用はKritaで済ませたい。動画編集はShotcut、3DアニメはBlender2.7でいずれは済ませるようにするつもり (MMDおよびPMXは、それらを使って作ったものの商用利用が一切禁じられているので、いつか商用利用せんとする際に心許ない)。
マインクラフトのようなボクセル系が、GPUへの負荷も少なくWEB版も作りやすいなど良さげなので、3D系はその研究をメインにしようと思う (Linuxでは、WINEを要するMagicaVoxelよりネイティブ版があるvengiの方が良いが (オリジナルのdebセットは、0.0.25以降はbinutilsのバージョンが違うと怒られてインストールできない; 大人しく0.0.24のdebセットにとどめておこう)、YouTubeでのアニメ動画を探すとMagicaVoxel系が圧倒的に多いので、そちらを使い慣れてからvengiへと移行するのが良いのかもしれない。ただし、アニメ機能等はvengiの方が簡単そうではある)。LinuxではLuantiがLuaJitで記述できるボクセルエンジンであり、そのマインクラフトクローン実装が名高いが、MMORPGとしてVelorenも注目に値しよう。また、ボクセルでは無いが簡易なゲームシステムとして、Luaでゲームを記述できるTIC-80も研究する。
WINEの文字化け問題は、Windowsのフォントを持って来ずとも簡易に解決できる。
WINEはもはやMMDとPMX用にしか使わないので、より問題が少ない32ビットモードオンリーで使うことにした。最初にコマンドラインで、
WINEARCH=win32 WINEPREFIX=~/.wine winecfg
とすれば32ビット版用システムしか作らないので、そこを使う限り32ビット専用になる。
PMXエディタが起動時に「DirectX初期化失敗」エラーを出したが、コマンドラインから起動させてログを取るとd3dcompilerエラーなようで、winetricksでその系を全部入れたら解消された。
MMDは、複雑なステージはロードしただけで落ちるので、できる限りシンプルなステージを選ぶようにする (画面サイズも、これまで通りの640x360にした)。MMEはオンでAutoLuminous4とExtendShadowは常に使用、AVI化は非圧縮で。タイトル等はShotCutで入れ、MP4化もそれのYouTube設定で済ませる。
シミュレーション的なゲームは、案外 (ここの作るものはほとんどが同一の世界観に依拠しており、その世界観は二次創作自由だそうだ) NScripter で作れるようだ (書籍版のNScripterバージョンは2.82とかなり古めだが、ONScripterなら古いバージョンにも対応しているかもしれない)。
AIは、お試し的にOllamaのqwen3:0.6bで適当に遊んでみることにした (スマホローカル用の極小モデルなので、メモリ4GBでGPU無しのうちのノートパソコンでも高速に日本語で(も)返してくれる)。クラウド版はより高機能ではあっても設置側の都合で新しいものに随時差し替えられてしまい、従って使用期限が自ずと生じるが、ローカルAIならずっと同じモデルを使い続けられる、という半永久的な一貫性が私の性に合っているので、クラウド版を使うことは、これまではもちろんこの先も無いだろう。