数十年目のLinuxデスクトップ元年をOmarchyで体感する

古いMacBook (2013年製)にOmarchyをインストールしてみた。

インストール作業自体は公式サイトの指示を見たらスムーズに実行できた。 OSが古かったのか、リカバリーモードに入ってセキュリティーに関する設定を解除せよという指示があったけどもそもそもそういうものが備わっていなかった。 isoイメージをセットしたUSBメモリーをMacBookに装着して電源を入れoptionキーを押しっぱなしにして待ち、ブートデバイスを選択するとインストールが始まり、そのあとは表示される指示にしたがって操作を進めると何事もなくセットアップが完了した。

軽く触っただけの第一印象を列挙してみる。

  • とりあえず無難に動作する
  • 日本語入力をするには追加でmozcをインストールして設定をいじる必要がある
  • ウィンドウマネージャーのHyprlandを気分良く使いこなすにはワークスペースを使いこなす必要がありそう
  • アプリにBasecampが入っていて確かにopinionated
  • エディタがNeovim

トラブルとしては日本語入力ができなくなるというものがあった。 入力メソッド切り替え時にあ (Hiragana)と出ていたものががあ (Direct)という表示になり、その場合は日本語ではなくアルファベットが入力されるようになった。 fcitx5-configtool を実行なおすとまた使えるようになったりもしたけど、何かやってるとまた発生した。 入力メソッドの切り替えについてCtrl-Spaceによるトグルを無効にして、かなキーでオン、英数キーでオフだけを残すようにしてからはこの問題はまだ発生していない。 不具合とかではなく意図しないショートカットを発動させていただけかもしれない。

上記のfcitx5-configtoolはGUIのツールで、ターミナルから実行すると画面が左右に分割して新しい領域が作られてその領域に表示される。 ラップトップのディスプレイの半分の幅なのでそもそも狭く、GUIのウィンドウは領域の範囲内に表示されているもののその内側の右側が収まり切らずに表示されない状態だった。 ブラウザアプリであれば横スクロールできるのだろうが、このツールではそういう操作はできず、ディスプレイの表示解像度を変更することで全体が見えるようにした。 分割された領域の一つを一時的にフルサイズ表示にできるのでそれで対処することもできるのだが、それを知ったのはその後のことだった。 タイル式でなければ表示領域がディスプレイの幅より狭く制限されることもなく、そういう操作自体が不要なので、GUIアプリとタイル式のウィンドウマネージャーの相性がそもそもよろしくないのかもしれない。

自分は日頃macを使っていて、macではテキスト編集のUIなどでEmacsのキーバインディングを常用しているので、手癖で意図しないコマンドを発動させてしまう。 ⌘-C、⌘-Vあたりのショートカットキーはmacと同じように機能するので油断してしまうが、ショートカットキーはCtrlを使うようにしないとOSの機能のショートカットを発動させてしまう。 一方ターミナルで画面出力の内容をコピーしようとしてCtrl-Cを押すて実行中のプログラムを停止させることがあった。 なお、ターミナルではCtrl-Shift-Cなどとする必要がある。

感触としては、キーボード操作とHyprlandに慣れさえすればなんとかなりそうといったところ。

自分用のエージェントスキルを手元のリポジトリに置いておきたい

複数人で開発しているプログラムのリポジトリで、自分用のAIエージェントスキルを作りたいということがある。 将来的には共有するかもしれないが、雑なものをリポジトリに入れて他の人の環境で意図せず発動して迷惑をかけるのもよろしくないといったときだ。

$HOME/.claude/skills/に置けば自分用のスキルになるが、ここに置くとプロジェクトに関係なく発動するものになってしまう。 なので、プロジェクト内に配置しつつGitに管理させないようにしたい。 .gitignoreを使えばそれも可能だけど、.gitignoreは共有物なので自分だけが使うスキルの名前をそこに書き足していくのは理想的ではない。

要するに、.gitignoreを使わずにプロジェクト内のファイルをGitの管理対象から外したい。 こういうときは .git/info/exclude を使うことができる。 次のように書いておけば自分だけが使うスキルを手元のリポジトリに置いておける。

echo .claude/skills/my-skill/ >> .git/info/exclude

git-scm.com

IntelliJのエディタ上でVitestのテストを実行しても "No tests were found" などとだけ表示されてテストが実行されなくて困っていたが、Vitestがv4に上がった際の変更でうまく機能しなくなっていたようだった。

https://youtrack.jetbrains.com/issue/WEB-75191/No-tests-found-when-running-Vitest-4-tests

IntelliJを最新に上げたらテストが実行されるようになった。

出版社公式の書籍の要約

Manning社で書籍を買うとliveBookといって購入した書籍をブラウザで閲覧できるようになる。 この閲覧画面の右上にAIというアイコンが出ていて、そこのテキストボックスをクリックすると下にいくつかの典型的な用途と思われるテキストが表示された。

そこに "summarize this chapter" とある。 出版社が直々に要約機能を提供するのは目新しいのでは。

要約であれば事前に作っておいたものを出した方が速いし、AIを使った便利機能を試行錯誤する中で一時的に利用できているだけの可能性が少なからずありそうだけど、公式の要約が付くのが当たり前になってくれると個人的にはありがたい。

Markdown記法のテキストをGoogle Docsに貼る

Markdownで書いたテキストをGoogle Docsに手軽に取り込めないかと思って検索すると、Docs自身にすでにMarkdown記法フレンドリーな機能を有効にする設定があることを知った。

この機能を有効にしてMarkdownのテキストをコピーし、「マークダウンから貼り付け」コマンドを編集メニューまたはコンテキストメニューから実行すれば見出しや箇条書きなどが反映されたテキストになる。

個人アカウントだからかコードブロックが通常のテキストになってしまいちょっと残念。

AI向けの指示書きで情報を構造化するのにMarkdownが標準的に使われるので、人間向けとAI向けの書き物間でコピペするのに重宝しそう。

macOSのPreviewでフレーズ検索をする

macOSでPDFを読むとき、skimというアプリを使っている。 今となってはmacOS標準のPreviewアプリでもわりと快適にPDFを読むことができるのでskimを使い続けている必然性は薄れているが、使い慣れているので惰性で使っている。

今日もskimを使っていたところ、検索ワードを入力すると途中でクラッシュすることを繰り返した。 そこでPreviewで開き直して同じワードで検索したところ、スペース区切りの二つの単語に対して、単語の並びではなく、入力した単語すべてを含むページがヒットするという挙動をしているようだった。 Googleの検索よろしく二つの単語をダブルクオーテーションで囲ってみたが、そうすると一件もヒットしない。

Previewでフレーズ検索する方法を求めてWebを検索して、検索バーの虫眼鏡アイコンをクリックして“exact phrase”に変えられるよという掲示板の書き込みを見つけた。 言われてみると虫眼鏡アイコンの横に意味ありげな印がついている。 そしてそれをクリックすると「正確な語句」という設定が出てきた。

これにチェックを入れると意図した検索ができるようになった。 めでたしめでたし。

ちなみに古い情報だと引用符で囲うことでフレーズ検索ができるというものも見かけた。 どこかでこの辺の挙動が変わったのかも。

pgModelerをm1 macでビルドしたメモ

pgModelerはPostgreSQLを対象とするモデリングツールで、ビルド済みのバイナリは有料で販売していてソースから自分でビルドするのはご自由にという形で提供されている。 ちょっと試してみたいという程度なので今回はソースからビルドしてみた。 多少の試行錯誤があったので、手順をメモする。

前準備

$ brew install postgresql
$ brew install qt@5
$ git clone https://github.com/pgmodeler/pgmodeler.git
$ cd pgmodeler

libxml2も使うがXcodeに付いてくるものがあるので別途インストールする必要はない。

pgmodeler.priを修正する

バージョン番号などの詳細は実行したタイミングによって異なるので適宜修正する。

diff --git a/pgmodeler.pri b/pgmodeler.pri
index 1ab60335..e2dbdd1b 100644
--- a/pgmodeler.pri
+++ b/pgmodeler.pri
@@ -195,8 +195,8 @@ unix:!macx {
 }
 
 macx {
-  !defined(PGSQL_LIB, var): PGSQL_LIB = /Library/PostgreSQL/12/lib/libpq.dylib
-  !defined(PGSQL_INC, var): PGSQL_INC = /Library/PostgreSQL/12/include
+  !defined(PGSQL_LIB, var): PGSQL_LIB = /opt/homebrew/Cellar/postgresql/14.1_1/lib/libpq.dylib
+  !defined(PGSQL_INC, var): PGSQL_INC = /opt/homebrew/Cellar/postgresql/14.1_1/include
   !defined(XML_INC, var): XML_INC = /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libxml2
   !defined(XML_LIB, var): XML_LIB = /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/libxml2.tbd
   INCLUDEPATH += $$PGSQL_INC $$XML_INC

ビルドする

$ /opt/homebrew/Cellar/qt@5/5.15.2_1/bin/qmake -r CONFIG+=release pgmodeler.pro
$ make
$ make install

これで/Applications/pgModeler.appが作られるが、アプリをクリックしても実行できない。 実行するにはコード署名が要るようで、以下のコマンドでそれができる。

$ codesign --force --deep --sign - /Applications/pgModeler.app 

これでpgModeler.appを実行できた。

f:id:tsimo:20211218023128p:plain

余談

最初Qt5をインストーラでインストールして使おうとしたが、ビルドが通らなかった。 コンソール出力を見るとリンカがエラーを出していて、x86_64とarm64が混じってるらしかった。 qmakeで生成されたMakefilex86_64という指定があったので、インストールしたQtがx86版だったっぽい。 postgresqlに合わせてqt5もhomebrewでインストールしてqmakeからやり直すとビルドできた。

コード署名のやり方は、アプリの実行ができなくてコンソールアプリでエラー内容を確認して、そこにあった

Namespace CODESIGNING, Code 0x2

という文言で検索すると同様の問題に遭遇して解決できたケースを見つけることができた。

参考

pgModelerのサイトにソースからのビルド方法はあるが、コード署名については触れられていない。 pgmodeler.io