2026/05/04

時記エディタedjikiに至る道

HP100LX HP200LXはもともとniftyのフォーラムログをLEで読むのを主用途に購入しましたが、appointmentsや1-2-3やdatabaseやnotetakerやktxやvzやMEやEBRやperlや…様々な使い方を楽しむことになりました。そして、今でも時折使っている用途が時記です。

時記とは、自動でタイムスタンプが入るだけの日記です。

時記は仕事の日誌やtodoとしても活用できるとは思いますけれど、仕事をやめた今ではそちらの用途には使っていません。

個人の自由な日記としてテキストファイルに書くと、色々楽です。備忘録でもあり、体験の整理でもあり、心のゆらぎをテキストとして言語化したり、記録にすることで記憶から解放したりできます。いつでもどこでも書ければ、鉄道移動中や何かの待ち時間がテキスト作成の時間に変わります。退屈な時間などなくなります。

時記を書くのは、ストレス解消にはもちろん、新しく興味をもったり知ろうとしたり調べたり疑問を持ったり確認したくなったり納得したり気持ちよさを表現できたり、ととても楽しいことです。

 

もともとはLXを手に取って1秒で書き始められるように、ME.EXMとシステムマクロを組み合わせて、常に一つのテキストファイル冒頭にタイムスタンプ付の行を挿入するようにしていました。システムマクロで標準的に使えるように、

YYYY/MM/DD hh:mm:dd 本文

という形式にしていました。

日記というと、一日の終わりに日記帳を開いてその日一日を思い返して徒然を書くイメージが昔はありました。時記が少し違うのは、常に持っている小箱でリアルタイムで書き起こす点です。今でいうライフログのテキストファイル版になります。

HP100/200LXからWIndowsCE端末やPalm、Linux ZaurusやNokia端末、iPadやAndoridデバイスやiPhoneなど、常に持ち歩く小箱でリアルタイムにテキストを書き起こすという用途はずっと継続しています。もちろんノートPCやデスクトップPCでも同じ書式、一つのテキストファイルに統一するようにしてきました。

Androidスマホでは、Jota+という非常に優れたテキストエディタが使えます。定型文で日付時間を定義できるので、ショートカットとツールバーにファイル先頭ジャンプと定型文1を設定して使っています。

PCでは、テキストエディタのマクロで設定していました。秀丸やemacsやmeryや諸々設定していました。今はVSCodeです。ショートカットでさくっと書き始められるようにするのがPCの初期設定の一部となっていました。

Jota+とVSCodeについては不満なく使っていました。ちょっと問題を感じたのは長らく使っていたDropboxが無料プランでは3端末限定になったことでした。OneDriveに移行しました。またGoogle Driveでの運用もできるようにしてみました。

Chromebookを頻繁に使っていたとき、望むような機能のテキストエディタがなく、Shift-JIS padというchromebook向けアプリを自作しました。プラットホームとしてchrome拡張に移行し、SJIS memoとして開発継続しましたが、最終的にchrome拡張のプラットホームのポリシーアップデートでwebアプリへの移行方針となり、公開は終了となりました。

sjismemoは完全に自分用で仕様も自分用でした。いざ使えなくなると、Jota+への依存が非常に強くなりました。Google PlayがきちんとサポートされたAndroidデバイスではもちろんJota+で問題ないのですけれど、Androidベースでもそうでないデバイスもあります。VSCodeはPC的なデバイスなら割と動きますけれど、もちろんインストールや設定は必要です。やっぱり汎用的に動かせる時記用のアプリ、たとえばWebアプリで作るのがいいのかなと思っていました。

会社を退職して、バイブコーディングなどに時間を振り分けられるようになったので、sjismemoをもとに、Claude sonnet4.6と設計を検討しました。その前にGemini proと設計やデザインをしようとしたのですが、思ったほどうまくいきませんでした。かっこよさげなことは提案してくるのですが、実装の確認力が弱くてすぐにエンバグして動かなくなるので捨てて、Claude Codeで一から設計してプロトタイプを試します。

sjismemo同様、Webブラウザにデータを保存するHTML5の機能であるlocalStrageを使えば、ブラウザを閉じても、書いたテキストはそのデバイスで永続的に保存されすぐに続きを書くことができます。ここまではchrome限定ですがsjismemoで実装したことがあるので、1秒ですぐ書き始められ、書いたテキストを失わないというのは実現できることがわかっていました。

localStrageに自動保存するのは良いのですが、複数デバイスをまたいで時記を書きたいです。スマホは常に2台以上持ち歩いています。手ぶらでランニングするときで2台、ポーチやバッグがあれば3台、家などでは常用デバイスだけで10台以上になります。Dropboxはちょっともうやめておいて、OneDriveかGoogle Driveになりますけれど、OneDriveはとにかく同期が遅くて1秒で書き出すと一つのテキストファイルが端末ごとに別バージョンにフォークしてしまうこともしばしばです。今回はGoogle Drive経由で同期することにします。

以前は、クラウドファイルストレージサービスとは、自作のperlスクリプトで同期していました。その後Pythonで書き直しています。メールで追加原稿を送ってマージしたり、一つのテキストファイルとは別に追加専用の別ファイルをマージするような仕組みも作ったりしていましたけれど、ポケット一つの原則から外れていくとトラブルの原因になりがちです。結局一つのファイルを編集するのがトラブル対応の手間を減らせると感じています。

時記(今でいうライフログテキスト)は、

-1秒以内にリアルタイムにテキストを書き起こせる

-自動でタイムスタンプが入る

-ポケット一つの原則

が大事だと思っていて、

 

そのために自分の使い方としては、

-スマホでもPCでも、常用デバイスですぐ(遅くとも1-2秒で)書き始められる

-一つのテキストファイルにタイムスタンプ付降順で常に冒頭に自動挿入して書き始められる

-一般的なテキストファイルとして保存しいつでもテキストツールで処理でき、アプリやベンダーロックインされない

-クラウドと安定して連携する

-打ったデータは失わない、同期失敗しても後からマージが簡単にできる

-過去データの年ごとの整理が自動ででき、横断的に(備忘録確認的にも十年日記的にも)検索できる

-自分の日記サイトへ自動アップロードでき、公開したくないエントリはアップロードせずローカルだけで保存する

といった機能が必須だと思っています。

 

Jota+とVSCodeとPythonスクリプトで回している従来の環境も満足していましたけれど、sjismemoを発展的にWebアプリとして作り直したいとは思っていたので、Claude Codeでnovel_downloaderやepub_viewerを作った後で、時記エディタを開発するのは自然な流れで、自分用の仕様で考えていたので迷うこともあまりなく動き出しました。Google Driveとの同期の仕様は調べながらになるのでそこに一番時間がかかっています。

 

何台ものデバイスで動かして、それぞれのブラウザのlocalStrageに即時保存され保持されています。クラウドにも正本があります。したがって常にマージで動くことになります。打ったテキストを失うことは決してないようにします。同じエントリのバージョン違いが重複することは許容し、ワンタップでいらない方を人間が見て削除すればいいという動きにします。

Google WorkspaceのDrive認証トークンの期限切れについては自動再認証などしますが、HTMLやブラウザを閉じてしまうことも普通の運用と想定していて、localStrageでは全く問題なく保持して即時復元できている一方で、Google Drive接続は認証上の条件が細かくあるので、ユーザーがアクションを起こして接続するという手間がかかる分、よくわからないセキュリティ上の設定をユーザーに強いることを避けるようにします。具体的には、edjiki.htmlを開いたら、トップバーに自動で表示するdrive接続ボタンをタップすればdrive認証して接続するという形にします。全自動でないのは、クラウドの更新は今はしないでlocalStrageのテキストを確認したいときや、driveに同期しないテキストを推敲したりといった用途にも使えるようにしています。一方driveに接続ボタンをタップしたら設定しておけば自動保存が(100文字打つか10秒手が止まっているかなどの条件で)走るので、ローカルな保存だけでなく、driveへの保存についても最初のタップ以降の手間はなくなります。スマホで打っていてトンネルや山間などの圏外では、保存失敗ボタンを表示して圏内になったらタップすればすぐにクラウド保存できるようにもしています。

 

テキストファイルの書式については、タイムスタンプ降順というのが仕様です。これは勝手な基本仕様です。

また、非公開エンントリについては、LXのときに個人的にやっていた時刻の前にマイナス記号を挿入しておくという独自の印を互換機能として残しています。一方で、タイムスタンプについてはISO 8601という規格があって、YYYY-MM-DDThh:mm:dd+09:00のような決まった書式があるので、この場合はタイムスタンプ文字列の直後に「*」を挿入することで非公開エントリとする独自拡張としています。非公開エントリ機能を使わない場合は、ISO 8601通りにできますし、非公開エントリ機能を使わないならパスワード設定も不要です。そもそもテキストファイルダウンロードやdrive保存では平文で保存されますから、テキストファイルを読めれば非公開エントリもすべて見え、テキストファイル用ツールは普通に使えるようになっています。ブラウザのlocalStrageでは暗号化して保存していますので、edjiki上ではパスワードがないと非公開エントリは読めません。driveに平文で保存されたテキストファイルは、Google Drive側で公開しないように運用すればいいという考え方になります。

 

そんなこんなで、 edjiki が動き出しました。

MITライセンスなので、githubからソース(このアプリはHTMLファイル「edjiki.html」ひとつだけです。他は単にドキュメントです)をダウンロードして、たとえばPCのCドライブでも、Androidスマホのダウンロードファルダでも、そのままブラウザで開けばlocalStrageで動きます。

Google Driveとの連携のためには、Googleの規定する方法で設定する必要があり、file://では動かないという制約がありますので、自宅PCでもなんでもいいのでWebサーバー上にedjiki.htmlを置いて動かさないといけませんが、Webサイトの作成経験があれば好きに運用可能で、自分用にカスタマイズしたりもMITライセンスなので自由自在です。

 

といっても面倒でしょうから、ayati.comにサンプルを設置しました。

https://www.ayati.com/edjiki/edjiki.html

ここに設置したedjikiを使って入力した時記データは、基本的にはユーザーのブラウザのloacalStrageというブラウザが使う保存領域に全自動保存されます。必要な場合は、ローカルにテキストファイルとしてダウンロードしたり、設定画面からGoogle Driveとの連携ができるようになっています。

Google Driveとの連携は、driveのどのフォルダに時記テキストファイルを保存するかをURLで指定し、フォルダ内のどのテキストファイルを編集するかをURLで指定することで可能になります。

drive自動保存ボタンをONにすれば、一々クラウド保存ボタンを押さなくても自動保存が走ります。いや一々クラウドにアップロードボタンを押すのも明瞭で、悪い運用ではないと思います。

 

ひとつのテキストファイル冒頭に次々追加するので、テキストファイルはだんだん大きくなります。chromeで10MB、safariでは5MBの制限があります。実はテキストファイルで5MB書くのは簡単ではなく、400字詰め原稿用紙4166枚も書いても5MB弱です。とはいえ、10年日記を保存できなさそうですので、年ごとに整理して切りすてる必要があると思います。というか、今までそうやって年ごとのテキストファイルを作成してアーカイブとして運用してきました。

edjikiにも、年単位でテキストファイルのアーカイブを自動で作成する機能を実装しました。drive設定で、アーカイブ(年ごとに切り分けた時記テキストファイルを保存する)フォルダをURLで指定すれば、drive設定画面でアーカイブして切りすてのボタンを押せるようになります。jk2025.txtやjk2024.txtといったテキストファイルが生成されます。

ついでに検索機能も拡張して、このアーカイブフォルダの年ごとのテキストファイルからも検索できる機能をedjikiに追加しました。

 

手持ちのテキストファイルからの取り込み機能もあるのですが、個人的に必要な機能として、UTF-8だけでなく、取込はシフトJISのテキストファイルも自動で変換して取り込むことができるようにしました。HP200LXで打って、そのファイルを取り込むためです。もちろん、すべてのテキストファイルの処理は(上書きではなく)すべて自動マージで処理しますから、エントリが失われることはありません。

 

こんな感じで、自分用にとても便利な時記エディタedjikiが作られました。

 

ついでに、今まで自作のPythonスクリプトをいくつか組み合わせて運用していたのですが、タイムスタンプ降順テキストファイルからはてなブログへの投稿をできるPythonスクリプトも新たに作成しなおしました。以前は過去のエントリを再投稿すると二重に登録されたり順番が前後したりしていましが、日付を指定して更新できるようにしました。昔ははてなダイアリーに結城さんのPerlスクリプトでやっていたようなことをできるようになりました。

この uphatena も公開しています。仕様は本当に自分用になりますが、MITライセンスなので好きにいじってもらえばいいと思います。

 

自作Perlスクリプトをいくつも作ってつなげて処理していたことが、edjiki(とuphatena)できれいに処理できるようになって、トラブルも減りメンテナンスも楽になりました。

edjikiでいつでもどこでもなんででも書けるようになったので、時記をくだらないどうでもいいことでも書き起こせるようになりました。

完全に自分のためのものですが、なかなか楽しいものです。本当に便利な世の中になったものです。そして、仕事辞めて時間を取れるようにして本当によかったと思います。ぷーたろうになったので収入はゼロですけれど、貯金を溶かしながら楽しく生活できていて、満足です。

 

| | コメント (0)

2026/04/30

カクヨムなどのWeb小説をePubで読みたい

最近なろうに限らず、カクヨムやアルファポリスのWeb小説も読んだりするのですが、公式Webで読むのはつらいです。そもそも鉛活字にならってボールドの明朝体の縦書きで読むのがデフォルトだと思っていて、かつPCの前に長時間座って読む時間を作れないので、eInk端末やスマホで同期して読むことが前提になってしまい、勢いなんとかテキストにして(それこそWebページのテキストをコピペなり名前を付けて保存して1ページずつテキストファイルにして結合してテキストファイルをePubにすることもいとわないくらいにはWeb画面で読むことをよしとしません。

なろうは、パドラッパさんのスクリプトあるので青空文庫形式のテキストにできます。これで本当に助かりました。

小説家になろうだけ読んでいたころはよかったのですけれど、カクヨムが充実してきていてアルファポリスやエブリスタにも面白い作品があるので、色々ツールをググったりしたものの、サイトのアップデートなどで動かなくなることもめずらしくなく、結果、読まない、サイトに行かないということになってしまっていました。

カクヨムで気になった作品があって、公式アプリなどを試したものの、自分にはとてもつらい使い勝手で、特にフォントがどうもだめです。せめて自作のフォントで読みたいと思いました。

そもそも、なろうをテキストにして読んでいたときも、AozoraEpub3でePubに変換してから読んでいました。ePub変換アプリは色々あっても、縦書きとルビを青空文庫形式からとなるとAozoraEpub3が一番です。ところがこれもフォント組み込みをしても環境によって思うようになりません。自分で作るかと思って先延ばしになっていました。

去年からGeminiでバイブコーディングを試して、でもどうもうまくないと思っていましたけれど、今年Claudeを試すとかなりまともに作れるようになっていることに気づきました。無料のWeb版ではあっというまに制限に達したので、Pro版月17ドル相当で課金してみました。Web版とは異なりCLIでローカルな環境で動くのでしっくりきます。十年以上登録しただけで使っていなかったgithubにリポジトリを作りました。慣れません。

そうして、novel_downloaderができました。カクヨム専用のePub作成を最初試していて、Claude、Gemini、ChatGPTと試行錯誤した後、Claude Codeでもう少し汎用的に動くようにと最初から作り直しました。日々動かしながら機能拡張して二週間ほど。とりあえず自分用には動作するようになりました。

使い方ですが、githubからのダウンロードは緑のボタン【Code▼】からDownload ZIP を選ぶと全ソースコードとドキュメントをダウンロードできます。

20260429-184518

 

novel_downloaderについては最新リリースのAssetsにWindows用バイナリのZIPもアップしてあるので、例えば最新がv1.7.4だったらそのリリースをクリックして、スクロールして下の方のAssets欄から、novel_downloader_1_7_4.zip

をダウンロードするとEXE化したスクリプトを入手できます。

Windows上にPythonをインストールしてt使う場合は、WINDOWS_SETUP.mdの通りに進める感じです。Windows用バイナリnovel_downloader.exeをダウンロードした場合はPython環境の構築は不要でそのままWindowsのターミナルなどで使えます。


単純にただダウンロードするだけなら、Web小説のURL(Chromeなどのブラウザのアドレス欄)をコピーして、clipnoveldwn.batをダブルクリックすれば、自動でターミナルが開いて実行できます。ダウンロード結果はエクスプローラーが開いてファイル一覧を表示します。

WINDOWS_SETUP.mdの通り、できたePubはsend to kindleやGoogle Play Booksで読めます。

なお、novel_downloader.pyの動作確認用に、ePubビューアも作りました。シンプルに動作確認するのに思うようなePubビューアがなかったため、自分用にePubビューアを作ることになりました。
こちらは、ePubビューア yomikake と名付けました。作っているうちに機能が充実してきて、なんか自分には一番使いやすくなってしまったので名前ぐらいつけようかという感じです。kindleみたいに謎の制限にひっかかることがないし、Google Play Booksに比べフォントのサイズや種類などを細かく選べるようにしているうちに、自分にはyomikakeの方が使いやすいePubビューアになりました。ただモダンブラウザを前提をしているので、kindleやkobo等の専用端末の簡易ブラウザでは動きません。BigmeやBooxなどのAndroid eInk端末では普通に使えます。

 

| | コメント (0)

2025/12/13

いつでもどこでもブラウザから自室PCにリモートデスクトップ! ワカモレ(Guacamole)設定手順

アボカドディップの『ワカモレ』(Guacamole)でいつでもどこでも自分のPCを楽しめます!

Guacamole01_


自室のPC、一番環境充実してますよね。もしWindows11がProでしたら、リモートデスクトップで接続できる機能があることをご存じのことと思います。
この場合、リモートデスクトップクライアントソフト(Windowsツールのリモートデスクトップ接続など)を使う必要があり、3389ポートが遮断されていないことも条件です。

ところが、Webブラウザさえあれば自分のPCのデスクトップをいつでもどこでも表示でき、キーボードやマウスが付いたデバイスからならPC操作もできてしまうのが、Apache Guacamoleです。

Guacamoleですけれど、単語の意味はメキシコ料理のアボカドディップ(ソース・サルサ)のことです。上の写真のようにトルティーヤにつけてたべるとさわやかな香りで美味しいやつです。ソフトウェアのApache Guacamoleは、Webブラウザから様々なリモートデスクトップに接続できるオープンソースソフトウェアです。

Linuxサーバーも自室に立てている方なら試しているかもしれませんけれど、Windows PCだけで機器構成していることも多いでしょう。そもそもパソコン一台だけしか稼働していない方もいるでしょう。

でも、今のWindows 11は素晴らしいOSで、仮想マシンプラットフォーム(WSL2)というLinuxを動かす機能が標準で備わっています。
サティア・ナデラCEOになってMicrosoft Loves Linuxを掲げてから本当に良くなりました。

ここでは、Windows 11 PCのUbuntu 24.04 LTSでApache Guacamoleを動かして、いつでもどこでもWebブラウザで自室PCのデスクトップを見られる環境を作る手順をメモしています。ポートも3389が通る環境でなくても構いません。(ここでは8080ポートやhttp標準の80ポートで試しています。ポートだけ変更してリモートデスクトップクライアントソフトを使うならrdgwをRDゲートウェイにするのがシンプルでよさそうですけれど)


Windows 11のエディションはProが必須です。Homeの場合はMicrosoft Storeでライセンスを購入します。約1万4千円です。
ms-windows-store://pdp/?productid=BF712690PL0G&OCID=windowsproupgradesupportpage

 

さて、Windows 11 Proなら、早速Microsoft Storeから無料のUbuntuを入れます。普通は最新版を入れますけれど、ここでは難解と言われるGuacamoleのインストール手順を確定させるためUbuntu 24.04.1LTSを入れます。
Microsft StoreでUbuntu24.04で検索して入手(インストール)ボタンを押します。

ms-windows-store://pdp?ocid=pdpshare&productid=9nz3klhxdjp5

 

Guacamole_msstore_20251213-140514

ダウンロードとインストールに少し時間はかかります。スタートボタンのアプリ一覧からUbuntuを起動します。

Ubuntu初回起動時の初期設定でUbuntu用のユーザー名(Windows用とはまったく別のローカルユーザーです)とパスワードを設定します。

さて、Ubuntu上で$というプロンプトが表示された状態から以下の通りコマンドを入れていきます。

新しいOSを入れたら、最初にアップデートしておくのが礼儀です。

sudo apt update
(Ubuntuのユーザーパスワードを聞かれるので、初期設定で設定したパスワードを打ちます)
sudo apt upgrade -y

初回は多少時間がかかるかもしれません。Windows 11 ProへのUbuntuというOSのインストール作業は以上です。

ここから,UbuntuにApache Guacamoleを入れていきます。まず前提となる色々を終わらせます。

必要なライブラリが色々あるので、以下のコマンドを打って一気に入れます。(6行全部コピペして貼り付けてEnterです。)
(Ubuntuが24.04以外のバージョンの場合ここが少し変わる可能性があります。)

sudo apt install build-essential libcairo2-dev libjpeg-turbo8-dev \
libpng-dev libtool-bin libossp-uuid-dev libvncserver-dev \
freerdp2-dev libssh2-1-dev libtelnet-dev libwebsockets-dev \
libpulse-dev libvorbis-dev libwebp-dev libssl-dev \
libpango1.0-dev libswscale-dev libavcodec-dev libavutil-dev \
libavformat-dev -y

2025年12月11日時点では,Guacamoleのバージョンは1.6.0でした。1.6.0と決めたらこの後の手順も1.6.0で統一して進めます。
もっと新しいGuacamoleのバージョンが出たらそちらでもできそうですけれど、tomcatはtomcat9が必要です。

Guacamole11_20251213-144746

以下、Ubuntuの画面で順番にコピペして(打ち込んで)進めていきます。

Guacamole12_20251213-144855

wget https://downloads.apache.org/guacamole/1.6.0/source/guacamole-server-1.6.0.tar.gz

tar -xvf guacamole-server-1.6.0.tar.gz

cd guacamole-server-1.6.0/

sudo ./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots

sudo make

sudo make install

sudo ldconfig

sudo systemctl daemon-reload

sudo systemctl enable guacd

sudo systemctl start guacd

sudo systemctl status guacd

ここで Active: active (running) since Thu 2025-12-11 13:08:22 JST; 6s ago
のように動いていればインストールは成功です。

Guacamole13_20251213-145123

sudo mkdir -p /etc/guacamole/{extensions,lib}

ここで、Ubuntu24.04標準のtomcat10ではなくtomcat9を入れます。

sudo add-apt-repository -y -s "deb http://archive.ubuntu.com/ubuntu/ jammy main universe"

sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user -y

sudo wget https://downloads.apache.org/guacamole/1.6.0/binary/guacamole-1.6.0.war

sudo mv guacamole-1.6.0.war /var/lib/tomcat9/webapps/guacamole.war

sudo systemctl restart tomcat9 guacd

続いてMariaDBを入れます。

sudo apt install mariadb-server -y

sudo mysql_secure_installation

ここでは、色々聞かれながらMariaDBの初期設定をしていきます。特に大事なのはMariaDBのrootパスワードをブランクでなくきちんと適当に決めて打ち込みます。先ほどWindowsのパスワードとは別にUbuntuのユーザー名とパスワードを初期設定しましたが、MariaDBのrootパスワードはまた別です。(なおこの後guacamoleの管理者ユーザーとパスワードも作らないといけないので、それぞれメモするか記憶しておきます)
まずSwitch to unix_socket authentication [Y/n] ときかれたらn[Enter]して、Change the root password? [Y/n] にY[Enter]して、
MariaDB rootパスワード設定に進みます。
そのパスワードはこの後の設定ですぐ使いますので覚えておきます。

Guacamole14_20251213-145333
MariaDBの初期設定は続きます。これ以降はなんか聞かれたら[Y/n] にY[Enter]して進めます。

Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
All done!

という感じです。続けてMariaDBにGuacamoleからつなげて使えるように設定していきます。$プロンプトに以下のコマンドを順次打って(コピペして)いきます。

sudo wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-9.5.0.tar.gz

sudo tar -xf mysql-connector-j-9.5.0.tar.gz

sudo cp mysql-connector-j-9.5.0/mysql-connector-j-9.5.0.jar /etc/guacamole/lib/

sudo wget https://downloads.apache.org/guacamole/1.6.0/binary/guacamole-auth-jdbc-1.6.0.tar.gz

sudo tar -xf guacamole-auth-jdbc-1.6.0.tar.gz

sudo mv guacamole-auth-jdbc-1.6.0/mysql/guacamole-auth-jdbc-mysql-1.6.0.jar /etc/guacamole/extensions/

sudo mysql -u root -p

ここでEnter password:と聞かれたら先ほど設定したMariaDBのrootパスワードを打ちます。ここでMariaDBの中に入った状態になります。プロンプトも$からMariaDB [(none)]> のように変わります。

Guacamole15_20251213-145555

MariaDB上で四つほどSQLを打ちます。Query OKと出れば成功です。

MariaDB [(none)]> CREATE DATABASE guac_db;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> CREATE USER 'guac_user'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.004 sec)

MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE,DELETE ON guac_db.* TO 'guac_user'@'localhost';
Query OK, 0 rows affected (0.004 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> EXIT;
Bye

EXIT;と入力すると、MariaDBから通常の「$」プロンプトに戻るので、続きのコマンドを打ちます。

cd guacamole-auth-jdbc-1.6.0/mysql/schema

cat *.sql | mysql -u root -p guac_db

ここでもEnter password:に先ほどのMariaDBパスワードを打ちます。

sudo vi /etc/guacamole/guacamole.properties

 

最低限の設定だけだと、

mysql-hostname: 127.0.0.1
mysql-port: 3306
mysql-database: guac_db
mysql-username: guac_user
mysql-password: password

でいけます。iでコピペ貼り付けて[ess]:wq[enter]ですね。

 

sudo systemctl restart tomcat9 guacd mysql

これでGuacamole環境完成です。お疲れさまでした。


実際つないで試してみましょう。ブラウザでGuacamoleを開いて、Guacamole管理ユーザーを追加し、接続設定を作るところからです。
GuacamoleをインストールしたPC上なら、

http://localhost:8080/guacamole

をWindows 11上の(ChromeとかEdgeとかの)ブラウザで開きます。

Guacamole_guadmin20251213-134521

管理者アカウントとパスワードの初期値は、いずれも「guacadmin」です。すぐに変更します。
右上のプルダウンメニューから設定-ユーザ設定タブでパスワードを変更します。

Guacamole_setting20251213-134034
次に新規ユーザーを追加します。設定-ユーザタブで、[ユーザ追加]ボタンを押します。

適当なGuacamole新規管理ユーザーとパスワードを入力して作成します。このとき、権限にすべてチェックを入れます。今後はそちらの新規管理ユーザーを使います。
一度ログアウトして、新規管理ユーザーで入り直し、guacadminユーザーは設定-ユーザタブからさくっと削除します。

さて、ようやくリモート操作したいPC(LAN内の別のPCだったりもここで追加できます)への接続設定を作ります。
まず、自室のLAN内のPC(Guacamoleを設定したWindows 11 Pro PC自身でももちろん大丈夫です)のIPアドレスを確認します。

ターミナルとかPowerShellとかコマンドプロンプトとかで

ipconfig

で、

IPv4 アドレス . . . . . . . . . . . .: 192.168.1.XXX

のようなやつです。これはWindows設定の歯車アイコンでネットワークとインターネットからも確認はできますね。ルーターの管理画面でも確認できるかもしれません。

この接続先のPCのIPをメモしておきます。
(別のPCに接続する場合も、GuacamoleをインストールしたPCのIPアドレスを確認しておく必要があります)

GuacamoleをインストールしたUbuntuはWindows 11とは別のIPアドレスが仮想環境でふられているので、Ubuntuの方のIPアドレスも確認してメモし、Windows11のIPからUbuntuのIPにサーバー転送する設定も必要です。

Ubuntuの$で、

ifconfig

と打って出てくるeth0: flags=XXXX<UP,BROADCAST,RUNNING,MULTICAST> mtu XXXX
inet 172.20.69.210 netmask 255.255.240.0 broadcast 172.20.79.255
inetのIPアドレスをメモ(コピペ)します。この例では 172.20.69.210です。Windows11の仮想環境のNATで管理されたIPです。

Guacamole25_20251213-151932

Windowsの管理者権限PoweShell(Winスタートアイコン右クリックで「ターミナル(管理者)等を起動」)で、ふたつのIPアドレスを紐づけます。IPは自分の環境で置き換えて打ってください。

netsh.exe interface portproxy add v4tov4 listenaddress=192.168.10.89(Windows11のIPアドレスです) listenport=8080 connectaddress=172.20.69.210(仮想環境UbuntuのIPアドレスです) connectport=8080

と打ち込んで設定すれば、Windowsに届いた8080をUbuntuに転送してくれます。

Guacamole21_20251213-145935

Windows11の、Windows Defenderファイアウォールで,新しい規則で8080を通します。

WinスタートボタンでWF.mscを検索して、「セキュリティが強化されたWindows Defenderファイアウォール」を起動し、左の受信の規則をクリックし、右上の新しい規則で、ポート-特定のローカルポートに8080、接続を許可する、名前を付けて完了します。
Guacamole31_20251213-150744

Guacamole32_20251213-150959

Guacamole33_20251213-151124

Guacamole34_20251213-151225

Guacamole35_20251213-151320

 

 

Windows11の設定はこれで終わりです。

インターネット接続ルーターの設定もしておきます。

GuacamoleをインストールしたPCのIPアドレスは、インターネット接続用のルーターで、DHCP固定割当設定をして決めてしまいましょう。
たとえば192.168.10.89に決めてしまうとかです。さらに、ポートマッピング設定で、優先度:10 LAN側ホスト:192.168.10.89 プロトコル:TCP ポート番号:8080-8080のように設定すると外野からアクセス可能になります。ルーターはAtermの場合の例です。

さて、Guacamole接続設定に戻ります。Guacamoleのブラウザ画面で、設定-接続で追加します。

Guacamole_conct1_20251213-135502
接続の編集 ←接続先一覧に表示する名前をつけます。PCから接続用の横長とスマホから接続用の縦長など分かりやすい名前だと便利です。
名前: jibun_no_PC
ロケーション: ROOT
プロトコル: RDP
接続の編集
最大接続数: 10
ユーザごとの最大接続数: 10
ロードバラシング
Guacamoleプロキシパラメータ (guacd)
パラメータ
ネットワーク ←ここに操作したいWindows PCのIPアドレス(192.168.1.12等)を登録します。
ネットワークホスト名: 192.168.10.XXX←
ネットワークポート: 3389
キーボードレイアウト: Japanese(Qwerty)
認証 ←接続先のPCのログインアカウントです。
ユーザ名: Microsftアカウント(@の前)
パスワード: (ここで登録しない場合、接続の時に入力を求められます)
ドメイン: outlook.comとかoutlook.jpとかのmicrosoftアカウント登録先(@の後ろ)
Trust host certificate on first use: チェック(サーバ証明書を無視するの方にチェックしてもつながりますが)
リモートデスクトップゲートウェイ
基本設定
キーボードレイアウト: Japanese(Qwerty)
タイムゾーン: Asia Tokyo
ディスプレイ ←手元の接続元デバイスに合わせて見やすい幅と高さを設定します。色々試すとよいでしょう。
ディスプレイ幅: 1400
ディスプレイ高さ: 1050
カラー深度: Lowカラー(16ビット)
サイズ変更方法: 再接続
クリップボード
デバイスリダイレクト
パフォーマンス
クリアタイプフォントの有効化: チェック
リモートアプリケーション
事前接続 PDU / Hyper-V
ロードバラシング
スクリーンレコーディング
SFTP
Wake-on-LAN (WoL)

Guacamole_cnct2_20251213-135612

[保存]ボタンを押します。右上のメニューからホームを選ぶと、今設定した接続先が一覧に出るようになります。
接続先PCで同じ自分自身に接続すると、Windows ServerでなくWindows11 Proでは一度に一つのログインしかできないので強制ログアウトさせられてしまいます。つないでしまったら、ログインしなおしてブラウザを閉じましょう。

さあ、他のPCやスマホから接続をためしてみましょう!
自室ネットワーク内の他のPCやスマホから、
http://ワカモレを設定したPCのIPアドレス:8080/guacamole
これでGuacamole画面でログインして接続先をクリック

出先からなら、ルーターにポートマッピング設定をした上で、DDNSサービス(mydns.jpやf5.siなど)に登録してDiCEなどでグローバルIPをDDNSに反映しておけば、http://ホスト.ドメイン:8080/guacamoleでつながります。


スマホからの接続用に縦画面の接続設定も追加しましょう。
接続の編集
名前: tatenagagamen_jibun_no_PC
ディスプレイ
幅:800
高さ:1080
くらいから試します。スマホの機種によって画面の解像度が異なるので色々試してみます。

Guacamole51_251213152605791
たのしー!

今回、PCが一台だけで、Windows 11 ProのPCの場合でもブラウザからリモートデスクトップでつなげられる手順となっていますが、
自室に複数のPCがある方は、接続先にどんどん登録していくと選んで接続できるようになります。

もちろんリモートデスクトップクライアントからつなぐ方が安定して操作できますけれど、接続元クライアントデバイスにリモートデスクトップクライアントが入っていなくても、ブラウザさえあればつながって自室のPCの画面を確認できるのは意外と重宝するものです。

スマホがハードウェアキーボード付きの機種の場合は、ブラウザ経由でつないだ時の利便性がさらに上がります。Androidスマホなら、BLuetoothマウスをつなげることもできます。ポート3389が通らない環境でも大丈夫です。
今回ポート8080ですが、tomcat9の設定で他のポート(80など)に変えることも可能です。

Ubuntu上で、

sudo vi /etc/tomcat9/server.xml

<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

のように、8080から80に書き換えます。

sudo systemctl restart tomcat9 guacd mysql

さらに、Windows 11上で管理者権限のPowerShellを使い、Windows 11から仮想環境Ubuntuにポート80を転送するよう設定します。
netsh.exe interface portproxy add v4tov4 listenaddress=192.168.10.89(Windows 11のIP) listenport=80 connectaddress=172.20.69.210(仮想環境UbuntuのIP) connectport=80

これで、
http:/(Guacamole PCのIPやDDNSホスト.ドメイン)/guacamole
だけでブラウザでリモートデスクトップ接続できるようになります。

また、tomcat9の設定をいじらなくても、
Windows 11上で管理者権限のPowerShellを使い、Windows 11から仮想環境Ubuntuにポート80からポート8080を転送するよう設定もできます。

netsh.exe interface portproxy add v4tov4 listenaddress=192.168.10.89(Windows 11のIP) listenport=80 connectaddress=172.20.69.210(仮想環境UbuntuのIP) connectport=8080

他のデバイスから接続する場合は、こちらの設定方法でもよいですが、Guacamole PCそのもので管理画面を出すときは、http://localhost:8080/guacamoleで開く必要がありますので、こちらの簡易的な設定の場合は注意してください。

なお、管理者ターミナルでnetshのportproxy設定を一度初期化する場合は以下のコマンドです。

netsh.exe interface portproxy reset

設定状況を確認するには、

netsh.exe interface portproxy show all

ですが、うまく動かないときはresetしてやり直した方が早いように思います。

 

 

Guacamole52_251213152938991

さて、unihertz titan2のようにハードウェアキーボード付¥スマホなら、キー入力も可能ですが、そうでない場合、このままではテキスト入力可能なポイントをタップしているかわからないためソフトウェアキーボードが表示されず入力ができません。

これについては、guacamoleの管理画面で設定-ユーザー設定で、デフォルトの入力方法を変更します。

Guacamole41__20251213153517display0jpg

デフォルトの入力方法について、オンスクリーンキーボードを選ぶと、Guacamoleのソフトキーボードが常時表示されて、いつでもそこからキー入力が可能になります。

Guacamole42_20251213153736display0jpg

 

スマホのキーボードアプリではなく、Web画面上にguacamole作り付けのソフトキーボードが常時表示されることになります。

Guacamole43_20251213155332display0jpg

 

そういう意味では、Clicksのようにハードウェアキーボードを装備した方が便利に使えるかもしれません。

この場合、デフォルトの入力方法をテキストインプットにすればよいです。

Guacamole44_251213160108751

 

 

 

 

 

 

| | コメント (0)

2024/12/29

ボールド明朝体FONTX2形式16ドットフォント作成と配布

AyatiRounded明朝フォントのfontx2形式変換
------------------------------------
2024/12/29

これらのファイルは、AyatiRounded明朝フォントを、
FontX2形式に変換したものです。

Arz01


AyatiRounded明朝フォントは以下のフォントを改変して制作しました。
BIZ UDPMincho
https://fonts.google.com/specimen/BIZ+UDPMincho

縦棒を太く横棒は細くし、半濁点を大きくし、(半角)数字のゼロに斜め線を入れています。

乱視(倒乱視)に老視(老眼)が加わった状態で液晶画面の細かい文字を読むときの
視認性を重視して、自分用に改変したものです。
明朝体フォントは横棒が不当に細く感じていますし、UD明朝や教科書体は縦棒横棒の
太さを同一にしすぎ、ボールド体は太すぎると感じる個人的な好みから変更しています。
数字のゼロに斜線を入れたり半濁点を大きくしたのはお約束です。

自分用として、ブラウザのフォント設定でSans Serifフォントとして使っています。

FontX2形式への変換手順は、
Yoshiki OkaさんのWFONTX.EXE
をねむいさんのぶろくにてWindows10対応した
http://nemuisan.blog.bai.ne.jp/?eid=243986
WFONTX64を使わせてもらいました。Windows11で動きます。助かります。
https://github.com/nemuisan/WFONTX64
ねむいさん、ありがとうございます。

また、さらに微調整を行うため事前に大きさをずらして生成したフォントを、
DOS上でK_UCHさんのCVTSIZEV.COM ver 1.06を使い、ドット単位で
サイズ調整を行いました。
また、まるはさんのFUTOME.EXEでさらにボールド化を行いました。

ARH16X.FNT  16ドット半角フォント 8x16
ARZ16X.FNT  16ドット全角フォント 16x16

https://www.ayati.com/LX/fontx2_ARZ16X_20241229.zip


以下のライセンスに従い、無料でダウンロードでき、無料で利用できます。


ライセンス
----------
2024/12/29

「SIL OPEN FONT LICENSE Version 1.1」によるライセンスです。

同梱の
LICENSE.txt
の通りです。

この日本語訳は、以下から参照することができます。
https://licenses.opensource.jp/OFL-1.1/OFL-1.1.html

AyatiRoundedSerif.ttf
のメタデータで改変元フォントの著作権表記を参照できます。

 

| | コメント (0)

フォントデータ一部訂正AyatiRoundedSerif.ttf

http://ayati.cocolog-nifty.com/blog/2024/06/post-d1c37a.html

について、フォントデータが一部壊れていた(U+7DDA「線」の字‘)ため、

そこだけ修正したデータを以下公開します。

https://www.ayati.com/font/AyatiRoundedSerif_20241229.zip

以下のライセンスに従い、無料でダウンロードし無料で利用できます。

 

AyatiRounded明朝フォント
------------------------
2024/12/29

このファイルは、AyatiRounded明朝フォントです。

AyatiRounded明朝フォントは以下のフォントを改変して制作しました。
BIZ UDPMincho
https://fonts.google.com/specimen/BIZ+UDPMincho

縦棒を太く横棒は細くし、半濁点を大きくし、(半角)数字のゼロに斜め線を入れています。

乱視(倒乱視)に老視(老眼)が加わった状態で液晶画面の細かい文字を読むときの
視認性を重視して、自分用に改変したものです。
明朝体フォントは横棒が不当に細く感じていますし、UD明朝や教科書体は縦棒横棒の
太さを同一にしすぎ、ボールド体は太すぎると感じる個人的な好みから変更しています。
数字のゼロに斜線を入れたり半濁点を大きくしたのはお約束です。

自分用として、ブラウザのフォント設定でSans Serifフォントとして使っています。


ライセンス
----------
2024/12/29

「SIL OPEN FONT LICENSE Version 1.1」によるライセンスです。

同梱の
LICENSE.txt
の通りです。

この日本語訳は、以下から参照することができます。
https://licenses.opensource.jp/OFL-1.1/OFL-1.1.html

AyatiRoundedSerif.ttf
のメタデータで改変元フォントの著作権表記を参照できます。

| | コメント (0)

«フォントデータ一部訂正AyatiShowaSerif.ttf