bar_1

contents_map

2026年7月15日水曜日

[習作][Ruby/GTK4][VibeCoding] シンプルなToDoアプリ

Claude を使ってVibe Codingのテストを行った. 題材として, Rubyを使ってシンプルなToDoアプリを作ることとした. GUIライブラリはGTK4を使うこととした.

最新版は以下のgistに置こうと思う. https://gist.github.com/mephistobooks/18eb63bafca1370a21494ec1289caad2#file-simple_todo_app-rb

大まかな作りはClaudeが吐いたものそのままだが, 細かな挙動部分については修正を行っている. 例えばファイル名の初期値, セーブ・ロードする際のファイル名の自動入力といったところだ.

またRuby/GTK4でのGObjectの扱いについて, Claude は全くできなかった. この点については筆者がClaudeに対してGObjectの生成方法を具体的に指示することとなった.

Ruby/GTK4 のドキュメントについてだが, ほぼ皆無に等しい. これについては, これからいくつかの記事で補足したいと思う.

2025年7月31日木曜日

music_set_theory.gem

Murphyによる Pythonのパッケージ `musictheory` を Ruby に移植した. `fiddle_fluidsynth.gem` と組み合わせて使いたいと思っている. 

(わたしの音楽理論の理解が浅いため, オリジナルのメソッド名や変数名がいまいちわかりにくい. この点, 今後大幅に変更する可能性があるかもしれない)

---

## Usage

`examples/` ディレクトリ以下にあるサンプルプログラムを見ると, わかりやすいと思う. いかに主要なメソッド, 定数について紹介しておく.

### 重要なテーブル

`MusicSetTheory::WestTemp` コード, スケール, モードなど全てを含むテーブル.ここに問い合わせをすることで, 必要な情報を得たり処理をしたりする. 現状, ノートの情報を得ることを想定している.

### スケール

`MusictSetThoery.{def_scale, undef_scale, scales}` を新たに用意した. 定義するには以下のようにする.

`def_scale 定数名, name: "スケール名称", tment: Temperament, note_pos: <半音での位置の定義> [, modes: <モード>]`

定義の例.
```ruby
include MusicSetTheory  # 必要に応じて.

def_scale :MajorScale, name: "Major", tment: 音律テーブル,
    note_pos: CHROM_NAT_NOTE_POS, modes: MAJOR_MODES
:
:
# Pentatonic scales.
def_scale :MajorPentaScale, name: "Major Pentatonic", tment: WestTemp,
    note_pos: MAJOR_PENTA_NOTE_POS
def_scale :MinorPentaScale, name: "Minor Pentatonic", tment: WestTemp,
    note_pos: MINOR_PENTA_NOTE_POS
def_scale :RyukyuPentaScale, name: "Ryukyu Pentatonic", tment: WestTemp,
    note_pos: RYUKYU_PENTA_NOTE_POS

# Hexatonic scales.
def_scale :BluesHexaScale, name: "Blues", tment: WestTemp,
    note_pos: BLUES_HEXA_NOTE_POS
```

モードについては, 省略可能である.

*note_pos* は, たとえば一番最後の6音音階のブルーススケールの場合, `[ 0, 3, 5,6,7, 11]` となっている. 半音個数の配列で, 最初の音を0(基準)としたとき, 次の音は基準から半音3つ上, 次の音は基準から5つ上, ... という風な意味の配列である.
これは最初の音がCであったら, [C, D#, F, F#, G, A, B] ということになる.



---

2025年5月16日金曜日

『流体エンジンアーキテクチャ』サンプルコードのビルド方法

Doyub Kim著, 高瀬 紗月 監訳,中本 浩 翻訳の『流体エンジンアーキテクチャ』株式会社ボーンデジタルの付録 (https://github.com/doyubkim/fluid-engine-dev) のビルドについて.


基本的には fluid-engine-dev.gitINSTALL.md の通りに:

mkdir build
cd build
cmake ..
make

でいい. だが, そのままではPythonライブラリのバージョンとコンパイラのオプション, ヘッダの構成に起因してエラーとなる.

そこで python3.10環境と, パッケージ setuptools, pybind11; C++のソースとして ssize_t のためのラッパーを用意して, 以下のように cmake を実行する.

cmake .. -DPYTHON_EXECUTABLE=$(which python3) \
-DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS -Wno-error=unused-but-set-variable \
-Wno-error=alias-template-in-declaration-name \
-include /full/path/to/ssize_t_wrapper.h"

以下, 詳細を説明する.

2022年10月16日日曜日

[macOS]外付けストレージのボリュームラベルを変更したいがグレーアウトしていて変更できない場合の対処法

小ネタ. ずっと困っていたけど, 先ほど解決できたので.

* OS macOS Monterey 12.6
* ディスクユーティリティ 21.5
* 外付けストレージ SSD 500GB. USB 外部物理ディスク・GUIDパーティションマップ/APFSコンテナ/APFSボリュームグループ・APFS


1. ディスクユーティリティを起動して, 当該ボリュームを選択
2. 取り出しかマウント解除をする
3. 再度マウントする
4. 右ペインのラベル名をクリックして, 変更する

1〜3を行うと, ディスクユーティリティの右ペインにある, ボリュームラベルの名前が, グレーから白い文字になる. この状態でクリックして変更できるようになっている (なんでだよw).

brewでインストールする際に, まれにパスにスペースを含まないことを前提とするものがあり, 困っていた.

2022年10月14日金曜日

OyayubiKE: Karabiner-Elements 14.10.0 でmacOS上の親指シフト環境を構築する2022

OyayubiKE: Karabiner-Elements 14.10.0 でmacOS上の親指シフト環境を構築する2022

2022-10-05

Karabiner-Elements (KE) を 14.10.0 にバージョンアップしたところ, だましだまし使っていた自前の親指シフト環境が使えなくなってしまった.

そこで今回, 以前リリースしたものを思い切って全面的に見直し, 新たにOyayubiKE
と称することとした. 一応使えるレベル (完成度は自己評価で51%くらい) にはなったと思うので公開する.
が……後述のように 一定の不具合は存在するので注意すること.

OyayubiKEの動作確認した環境

動作確認した環境は以下の通り:

  • ハードウェア環境
    • Mac本体: Mac mini (M1,2020)
    • USB Hub: ELECOM 2x7 USB switch U2SW-B27SBK
    • USB Keyboard: Logicool K120 (ごく一般的な日本語JIS 109キーボードです)
  • ソフトウェア環境
    • OS macOS Monterey 12.6
    • IME 日本語入力プログラム(Kotoeri)
    • Krabiner-Elements 14.10.0
  • 動作確認したソフト
    • ブラウザ - Safari, Brave.
    • エディタ等 - ターミナル.app, ターミナル上のvim, Visual Studio Code (+vscodevim).
    • その他アプリ - Libre Office (Writer), Discord, League of Legends.

2019年12月25日水曜日

Karabiner-Elementsだけで親指シフト環境を構築(2019年版)


以前, Karabiner-Elements (以下, KE)だけで親指シフト環境を構築した. これはKEのバージョンアップのいつかのタイミングで, 不具合が発生するようになっていた.
この不具合について今回対策を試みたので, 本記事で2019年版として紹介する. 確認したのは以下の環境である:
  • OS: macOS High Sierra 10.13.6
  • IME: Google 日本語入力 2.25.3700.1(ローマ字入力)
  • Karabiner-Elements: 12.8.0
  • システム環境|キーボード>キーボード>修飾キー…のKarabiner VirtualHIDKeyboardの設定: デフォルト
  • キーボード: USB接続のJISキーボード Logicool K120
なお今回提案の親指シフト環境で, システム環境設定でのキーボード設定で修飾キーの入れ替えをしている場合, 分節調整(Ctrl-I, Ctrl-O)がうまく動作しなくなることを, 筆者は確認している. 原因は不明である

2019年5月16日木曜日

macOSでマウスカーソルがウィンドウにくっついてしまうなどの現象の対処法

最近, macOSでマウスカーソルがウィンドウにくっついてしまう現象が生じた. 以降の操作が何もできなくなってしまうのでとても困る. 環境は以下の通りである:
  • macOS High Sierra 10.13.6
これとは別のケースで, ウィンドウがアクティブにならなくなってしまう現象は前から稀に起きていた. これら2つの不具合の対処方法を示す.

2018年12月25日火曜日

calendar_days.gem ドキュメント

平日のみの日を取得するためのライブラリcalendar_days.gemを作った.

以下, 下書き