20250615 WaylandでVivaldiを使う

のんびり起床。洗濯したりDota2したりプログラミングしたり。昼に外に出てヴァイオリンを弾いてみたが、あまりに暑く体調を崩しそうだったのでそこそこで退散した。夏、と言うかムシアツの到来を感じる(このブログを書いている現在のちゃおハウス、室温28.9度で湿度100%)

夕方は攻めの昼寝。

私物PCのUbuntuをWayland以降したく、いろいろ試行錯誤していた。問題が発生したのは日本語入力のfcitx5とVivaldi、及びその組み合わせだけだ。逆にDota2は何も問題なかったんだよな。

fcitx5がログイン時に起動しない問題は https://gihyo.jp/admin/serial/01/ubuntu-recipe/0859#sec7_h2 の通り

$ mkdir -p ~/.config/autostart && cp /usr/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart

で解消した。

Vivaldiの方はもう少し複雑だったが、結局以下に落ち着いた。

# vivaldi:flags
Preferred Ozone platform: Auto
Wayland per-window scaling: Enabled
Wayland text-input-v3: Enabled
Wayland UI scaling: Enabled

# 設定
ハードウェアアクセラレーションを無効化

# GNOME拡張をインストール
https://extensions.gnome.org/extension/261/kimpanel/

まず、Ozone platform: X11にしてXWayland + NVidiaはチラつき・真っ黒化が頻繁に発生ししんどい。Ozone platformをWaylandにするとVivaldiは起動しなくなる。よってWayland + NVidiaなしのパターンに落ち着いた。ブラウザでGPUを使えなくなるが、まあ大して困らないだろう。

その上で日本語入力を動かすためにtext-input-v3の設定が必要であり、かつ変換候補の表示位置がそのままだと固定位置になってしまうので、入力位置に追従するようにGNOME拡張も入れた。それでもまだ少しずれているが、おそらくスケーリングを上手く読めていないのだろう。

この辺りをごちゃごちゃいじるたびに、日本語入力というのは恐ろしく困難なシステムだなと思う。文字入力とウィンドウシステムのそれぞれに依存しているため開発が振り回されやすく、モチベーションを持つ人間が英語圏に存在せず、辞書の作成・配布についてはライセンスの問題もつきまとう。そう考えるとこの辺りを一気通貫で提供するWindowsやAppleほどの安定動作を実現できないのも仕方のないことだろう。

20250614 すき家 生姜めかぶオクラ牛丼

ジムは定休日、雨なので外でヴァイオリンを弾くこともできない。Dota2は負けがこんでイライラ。特にすることなく、寝ていた。夕食の時間になり、冷凍ご飯がないことに気づいたのですき家で『生姜めかぶオクラ牛丼』を食べた。若干要素過多な感じもあったが、すき家の肉は和風味付けが合うんだよね。

夜は友人とGeoGuesserをした。ガチ勢の友人に複数人で挑んでボコボコにされていた。僕はインドとタイの文字の区別ができないということが判明した。そもそも僕高校で地理やってないから全然わかんないんだよな。

UbuntuをX11で使っているとログイン直後にシステムモニターやターミナルがしばらく起動しないということがあって、Waylandに移りたいんだけど、今回もまだ無理だった。というのはVivaldiの対応状況がイマイチで、X11モードのままだと(たぶん互換レイヤーが入る?)画面が定期的に一瞬真っ白になってしまうし、WaylandモードにするとWaylandとの通信に失敗して起動しなくなってしまう。まあこれは最近のアップデートで壊れたという報告もあるのでそのうち直っているかもしれない。

20250329 音声認識環境構築

自分のLinux PCに日本語音声認識の環境を構築した。今日の日記は完全にその方法で全部書いてみたい。ということにすると言い間違いの部分を訂正することができないので文章が不自然になったり誤字が残ったりしそうで怖いそもそもなんでそういうことをしようと思ったのかというと、VSコードのクライン君に指示を出すときに、キーボードからタイピングするのではもう遅すぎるなと感じたからだ。せっかく言語指示に対しては爆速で反応してくれるのだから、それ以外の場所もどんどんスピードアップしていこうと思った。

最初はVS Code Speechの拡張機能を試してみたのだが、エディターに対する入力ができるものの、フラインの拡張機能に対する入力ができない感じだった。コパイロットチャットに対する入力はできるのにクライアントにはできないというのはなんだかケチな感じがする

それはともかく、OSレベルで入力できた方がいいと思ったので、P1ノートを使うことにした。Speech NotePeach to Text Engineとしては、Fastor Whisper Large V3 Turboを採用。CPUのアクセラレーションを有効にすれば、変換の時間はとても短い。GPUね。なんだけど、別のアプリケーションに対して文字を入力するという機能を使っているので、 変換は早く終わるけれども、別のアプリケーションに入力するところに結構ラグがあるようだ。

変換の精度はご覧の通り相当高いと言っていいと思うが、プログラミングで使う英語名なんかはうまく変換してくれないこともままある。もう一度言っておくけれども、これは本当に音声認識の出力をそのまま入力した文章で一切の訂正をしていないので、凄いよねで移動精度が高いと言っているんですが とても短い文章はむしろうまく変換できないことが多い英語名の問題に関しては、ある程度適当に突っ込んでもクロード君が何とかしてくれることが多い。

さて、ここまでこの調子で日記を書いてきて、まして音声認識の入力が効率的か早いかと言われると微妙なところ。もちろん決まりきった文章を出力するという点では ピンクより早いと思うんだけれど特にプログラミングのような複雑な思考に関しては、思考の道筋が必ずしも文章のシーケンシャルではないので思いついたアイディアを文章の形に成形している段階で考えていたことを忘れてしまったりする。いや冷静にこれ俺喋るの下手なだけかもちろんラグの問題もあるあとは音声という形で出力をするので、耳からの音声入力と干渉が発生しやすくて、適当なものを聞きながら口で全く別の内容を出力するというのはとても難しい。BGMが効けない

でもこの方法にどんどん慣れていったら だんだん面白い感じになってくる いい感じになってくるんじゃないかなと思いますね

今日の昼ご飯はゴロゴロした肉が食べたいなと思ったので、松屋のゴロゴロチキンカレーでした。ゴルゴルはひらがらなんだよなおやすみ

Ubuntu23.10に上げたときの作業記録

私物のUbuntuは定期的に(だいたい年に2,3回)OSの再インストールをしている。このくらいの頻度でやっていると再インストール後の作業にも慣れてくる。手元にメモはあるが、一応インターネットにも載せておこう。

前提

  • インストールするのは純正のUbuntu
    • 日本語Remixではない
    • 普段はLTSしか使わないが今回はpipewireを今すぐ使いたかったので特別に23.10
    • 経験的にLTSとそれ以外の安定性にはかなりの差があるので、よほどの理由がない限りはLTSを使うべき
  • ルートはNVMe SSD
  • ホームディレクトリ下の以下はHDD上の同名のディレクトリへのシンボリックリンクにしてある
    • Documents
    • Downloads
    • Music
    • Pictures
    • Public
    • Templates
    • Videos
    • workspace
      • 個人開発のコードが置いてある
    • .ssh
  • なので、持ち越したいデータは全部HDDに置いているのでNVMe SSDはUbuntu Installerで全消ししている

再インストール作業

  • USBメモリにISOを焼いてUEFIの起動メニューからそちらを起動
  • Default Installation(全部入りではないほう)
    • サードパーティソフトウェアは入れる
    • メディアフォーマットサポートも入れる
  • NVMe SSDを完全に上書きする設定
    • LVM, ZFS, 暗号化はしない
  • パスワードはpasswordとしておいて後で変更する
    • インストールウィザード中に記号を含んだ複雑なパスワードを設定すると、なぜか正確に記録されず、後で同じパスワードを入力してもログインできない

セットアップ作業

  • ディスプレイの並びを物理空間と一致させる
  • 4KディスプレイをWQHDに設定しなおす
  • アクセシビリティから「大きな文字」を有効化、カーソルを最大に
  • ホームディレクトリ上のディレクトリ名を英語にする
    LANG=C xdg-user-dirs-gtk-update
  • 「ディスク」からHDDを ~/storage にマウントする
  • 前述のホームディレクトリ上のディレクトリをstorage下へのシンボリックリンクにする
    ln -s ~/storage/Documents/ ~/Documents
  • firefoxからvivaldiを入れる
  • vivaldiの拡張機能としてbitwardenを入れる
  • vivaldiの設定をsync機能で復旧する
    • syncにはID/パスワードとは別に復号パスワードも必要なのでそれもbitwardeに覚えさせておく
  • フォントをtakao系に戻す
    sudo apt install 'fonts-takao-*'
  • vscode入れる
  • steam入れる
  • 日本語変換をできるようにする
    sudo apt install fcitx5-mozc
    im-config # fcitx5を選択
    fcitx5-configtool # 変換・無変換をそれぞれ入力メソッドオン・オフに割り当てる
    再起動
  • nerdctl入れる
  • vim入れる
  • git入れる
    • ユーザー名・メールアドレス・デフォルトエディタ
  • thunderbird入れる
    • メールアカウントの登録。YahooはIMAPとPOPを選べるがIMAP

あとは必要になってから

  • 各種プログラミング言語処理系

Q. 今回はなんでUbuntu23.10にしたの?

A. https://github.com/edisionnano/Screenshare-with-audio-on-Discord-with-Linux にpipewireが必須だったから(そして22.04のpulseaudioを止めてpipewireを入れたらなぜか日本語変換が壊れるという大事故が起きたから)

実際にやってみたところ音質が悪かったのでこれを使うのはやめたが、pipewireに移行したことによってbluetoothヘッドホンの扱いがよくなり、これまで何故か使えなかったHSP接続が可能になり完全に死に機能だったヘッドホンのマイクが使えるようになった。まあこれも音質悪いからあまり使う気ないけど…

あとはPC内での音声入出力の繋がり方が、pavucontrolでは見づらかったが、 https://github.com/Ax9D/pw-viz を使って視覚化できるようになった。

Q. LTSじゃないけど大丈夫?

OBSのソースに画像ファイルを選択するとき、ファイル選択ダイアログを開くと非常に重くなる。なんで?

Ubuntu 23.04への式年遷宮 トラブル録

普段はLTSしか使わないのだが、なんかやりたい気持ちになったので珍しく奇数系を入れてみた。

https://www.ubuntulinux.jp/News/ubuntu2304-ja-remix

をUSBメモリに焼いて(今はUbuntu公式でもEtcher使えって書いてるんですね、昔はUbuntuにUbuntuのイメージを焼くためのソフトウェアが付属していた気がするが)、PC再起動。

インストールの手順については、特に変化はなさそう。今回はLVM使用、ディスク暗号化をつけてみた。

gnome-text-editorで日本語入力できない

毎度の鬼門(と言いつつ、熱心な日本Ubuntuユーザーが結構情報を残してくれているので言うほどではない)。こちらのページが参考になった。

https://www.kkaneko.jp/tools/server/gnome_ja_input_method.html

注意点として、23.04では(正確には22.10から)はgeditに代わってgnome-text-editorというソフトウェアが入っている。こいつがfcitxとの相性が悪いのか、日本語変換が一切効かない(日本語入力モードに入れない)。シェルから開いてみるとこんなエラーメッセージが残されていた。

(gnome-text-editor:9858): Gtk-WARNING **: 03:13:56.134: No IM module matching GTK_IM_MODULE=fcitx found

意味はよくわからないのだが、fcitxを使えと言われているがgnome-text-editorがそれを理解できていないように見える。実際にはgnome-text-editorのリポジトリにこのようなエラーメッセージはなさそうなので、GTK自体に何らかの問題があるのかもしれない。

20230507追記

fcitxじゃなくてfcitx5を入れると問題が起きなかった。

vscodeで日本語入力時に確定するまで文字が表示されない

確定するまでは変換ボックスを見ないと入力中の文字が確認できず、Enterで確定すると一気にエディタ上に文字が追加される状態になった。これはUbuntu Softwareからデフォルトのsnapで入れていたのが悪いので、消してdebで入れ直したら直った。

bluetoothヘッドホンで音が鳴らない・途切れる・汚い

Linuxでbluetoothヘッドホンを使うのはコツがいる。僕が使ってるのはWH-1000XM4ね。

まず音が途切れるのはドライバのバッファリングが下手くそなせいなので、pavucontrol→出力デバイス→WH-1000XM4→高度な設定でLatency offsetを10msくらいにしてやる。ほんの少しでも設定してやるといい感じになる。

音が汚いのはコーデックがHSPになっているから。bluetoothヘッドホンの通信コーデックにはA2DPとHSPがあり、前者は聞く専用で高音質、後者はヘッドホンの付属マイクからの音声入力も可能だが音質は悪い。なのでA2DPに設定してやることで解決(これはbluemanからでも標準のbluetooth設定からでも、たぶんCLIからでもできる)。

音が鳴らないのは今回初めて遭遇した。HSPでの接続は可能だったがA2DPが選べなかったり、A2DPにすると音が鳴らなくなったりした。これは理由が不明だが、ペアリング直後にbluemanからA2DPに設定してやることで解決した。

ストレージデバイスのマウント

今回はなるべくGUIでやっちゃうのを目標にした。普段はストレージデバイスのマウントは/etc/fstabを手で編集してやっているが、今回は「ディスク」から。デバイス→パーティションを選択して、歯車マークのメニューから「マウントオプションを編集」でGUIからマウントを設定できる。ここで設定した内容がfstabに書き込まれていた。

やはり奇数系のUbuntuを使うのはエキサイティングだ。時間のあるときに限るが、楽しいんだこれが。

サーバーゼニ節約&kubernetes入門

ふと毎月のサブスク費用を確認したらAWSとさくらインターネットで月額5000円くらいかかっていて、いくらなんでも辛いのでこれを圧縮する。

原因は必要以上に多くのサーバーを稼働していること。現在稼働しているのは3つ。

さくらインターネット 2GB

  • 1738円/月
  • 2017年から借りており、中途半端な技術的挑戦の残骸が最も多い
  • 金額に対するスペックが良い

積載物

AWS EC2 t2.micro

  • 1544円/月

積載物

AWS EC2 t4g.micro

  • 1076円/月
  • AWS謹製のGravitonプロセッサなので安くて高性能。ただしArm。

積載物

  • gotosocialインスタンス

移行計画

どうしたものか…

とりあえずEC2は新世代ほど高コスパの原則があり、t2.microはt4g.microに移行すべき。自分の学習を考えるとさくらはやめてEC2に揃えたい。全部t4g.microに相乗りを狙ってみようか。

そしてどうせならkubernetesに全部載せてみたい。複数のアプリケーションを相乗りさせるときのトラフィック管理をこれまではjwilder/nginx-proxyでやっていたが、もうちょっとナウいやつに移行して監視とかも統一的にやりたい。

自分用ActivityPubインスタンスとしてGoToSocialを立てた

ツイッターがいよいよヤバそうなのでActivityPubのインスタンスを立てたくなった。まずMastodonを検討したが、リソースの要求が高いので諦めた。不慣れなRoRだしTypeScriptじゃないし構成も複雑なので個人で管理・改造するのは負担が大きいというのもある。

改めてActivityPub実装の中で軽量なものを探したところGoToSocialが良さそうだったので立てた。AWS EC2のt4g.microで現状問題なく稼働している。と言ってもまだフォローが少ないからかもしれない。ActivityPub、というか分散型SNSという仕組み上フォロー関係が増えると加速度的に通信が増大していくはず。

GoToSocial

GoToSocialはGoで書かれている。シングルバイナリで吐かれるアプリケーションとsqliteで動き、公式に提供されるdocker-compose.ymlを少し調整してリバースプロキシとしてnginxを立てるだけで動かすことができた。

現段階ではアルファリリースという位置づけであるが、大部分の基本的な機能に問題はない。今自分が把握している問題は以下の2つだ。

  • 動画が表示されない
  • notestockが利用できない
    • 利用を開始するためのnotestockのbotアカウントへのメッセージ送信がエラーで失敗する
    • mastodonには送れるのでnotestock側に何か問題があるのではと思っているが、notestockのソースコードは公開されていないので詳細不明

フロントエンドをほとんど持たず、サードパーティのクライアントから叩かれるAPIサーバーに専念している。推奨されているクライアントはpinaforeだが、pinaforeは2023年1月に開発の停止が発表された。webクライアントに限ればこれが最も盛んに開発されていたので先行きが不安だ(しかし作者自身が述べているようにpinaforeもだいぶ技術スタックが尖っていて将来性は怪しかった…)。ActivityPubデビューする人は最初にサーバーに登録してからクライアントを導入するだろうが、GoToSocialはユーザー登録用のフロントエンドも持っていないので一般に公開するにはハードルが高めかなと思う。自分はdockerコンテナに入ってCLIからアカウントを作成した。

自分でちょっとした改造を試みたときにdocker buildが大量のメモリを食ってEC2が落ちた(2GBでは足りなかった)。Dockerfileからswagger関連の処理をゴリッと消してやると直る。

3/9~3/15 スパゲッティ時代の到来/Haskellすき/サーバーめっちゃ攻撃されてた/休暇の予定/コロナ相場

スパゲッティ時代の到来

今週はスパゲッティをよく食べた。スパゲッティは既製品の味が豊富で飽きにくいのがよい。欠点は野菜の摂取が難しいことと、7分という長くも短くのない待ち時間だ。

沸騰したお湯に麺を投入するとき、捻ってパッと手を離すことで麺が360度きれいに分散するテクニック、あれがかなり上手くなった。きれいに分散すると麺どうしの摩擦が小さくなるので、そのまま放っておいても麺の下部の湯に浸かっている部分が柔らかくなるに従って沈み込んで麺の全体が湯の中に収まる。言葉で説明すると何を言っているのか意味不明だろうが…

Haskellすき

Haskellの本を読み始めている。記法が大胆で、なるべく値ではなく関数(関係)を組み合わせていくというスタイルが気持ちいい。一方でどんな富豪的実装なんだ…と驚くような機能もある。パフォーマンスはどうなんだろう。

サーバーめっちゃ攻撃されてた

ある理由で新しくサーバーを借りてWebサイトを公開したのだが、ログを見てみるとすごい勢いで攻撃(ご挨拶程度のものだが)されまくってて笑ってしまった。

まずnginxのログ。うっかりまずいファイルが公開されてしまっていることを狙ってアドレス決め打ちで大量のアクセスがあり、全部404NotFoundを返していた。nginxのルーティングをミスするとこういう攻撃を食らうのだろう。攻撃元は海外。

sshdのログもすごかった。ユーザー名rootでランダムなポートに向けて大量のアクセスあり。しかしパスワード認証は当然切ってるしrootログインは禁止しているうえにポートもデフォルトの22から変えているので突破はされていない。これも攻撃元は海外。IPアドレスを調べるとあちこちに攻撃を仕掛けている有名人(?)で笑ってしまった。

これらのログを毎日catしてtailして読むのは大変なのでlogwatchを導入した。crontabで1日1回、/var/log下の各種ログファイルをサマライズしてメールで送ってくれる。素晴らしい(postfixの設定が必要でそれはそれで大変だった)。

思った以上に頻繁に攻撃されてビビってるのでchao.tokyoのセキュリティも一新したい(というかサーバーの構成をなるべくAnsibleにしてしまいたい)。

そう、Ansible。とても便利で重宝しているが、Ansibleだと逆に手間になってしまうような処理(冪等にするのが難しい)もあって悩ましい。たとえばnginxをhttps化する作業は、Ansibleで書くとかなりややこしいことになるが、sudo certbot --nginxを実行すれば一瞬で終わる。

サーバーやミドルウェアをいじるのは楽しい。フロントエンド中心の仕事と変化がつくのがいいのかも。

休暇の予定

金曜日から長大な休暇を取るがいまだ予定はない。静岡に寄りつつ適当に関西をぶらつくか。遠くに行かなくても適当な温泉地でグータラするのもよい。

コロナ相場

確定拠出年金がすごい勢いで溶けてて笑ってる。

適当にパソコンをポチポチしていた

2/1(土)

していたら土曜日が終わった。

OpenToonzの1.4.0が出たのでLinuxでビルドしてみた。ドキュメント通りで特に問題なし。

動画サイトの再生エリアのスクショをワンクリックで撮れるようにしたくて調べていたんだけど、ざっくりMDNを読んだ感じセキュリティ上の理由でクライアント側だけではどうにもならないっぽい。

その他、寝たり起きたり鍋作ったりDota2したりしてたら1日が終わってた。僕は休日は無計画に浪費する方が好きだ。あまり褒められたことではないが…。

お得な情報を2つ

1/21(火)

スマホFTJ161BはBluetoothを有効にしているとwifiが断続的にしか通信できなくなる。

Ubuntu18.04+GTX1060でKrita4.2.8を動かすとき、ドライバのバージョンは440だとキャンバスのグラフィックアクセラレーションが効かず、ズームや回転がカクカクになる。435に戻すと直った。