ujimushi(@旧sradjp(15364))の日記

旧スラドの日記の引越先です

Julia言語 雑感(2026年2月)

はじめに

仕事の方が忙しく,またJulia言語よりも漢直のT-Codeの練習(目指せ指の運動記憶1200字)に興味が移ったので, あまり情報を収集できていませんが,今月も孤独なミーハー系Julia言語ユーザーによる雑感を書いてみます。

2026年2月のTIOBE Index,Julia言語の順位は安定の29位

今月もいつもと同じで,わりとどうでもいいTIOBE IndexのJulia言語の順位からの紹介です。

Julia言語の2026年2月の順位は29位。Ratingは0.54%でした。 先月は28位,Ratingは0.57%なので,他の言語より著しく安定している状態に見えます。

バージョン1.11.9リリース

最新安定版の一つ前の1.11系列の最新版,バージョン1.11.9が2026年2月9日にリリース されました。不思議なことに最新安定版とLTS版以外が更新される,非常に珍しいケースとなっています。

なお,v1.12.5testing periodのようなので,もうすぐv1.12.5が正式リリースされる運びとなりそうです。

Unexpected Boolean flag behavior in Julia 1.12 vs 1.10

Julia DiscourseからUnexpected Boolean flag behavior in Julia 1.12 vs 1.10の記事が印象に残りました。

発生条件は限られているのですがわりと致命的なバグなので注意が必要です。 つい先日1.11の最新が更新されたのもおそらくこれが原因ではないかと推測していますが,現時点では確認できていませんが, 1.11.9ではこの不具合は無いようです。 次の1.12系のリリースのリリースノートを確認する必要があるかと思っているところです。

記事内でも触れられているApparent mutation within kwarg functionのイシュー の件と関係があるようです。

プルリクとしてはCompiler: fix typo in can_propagate_conditionalなので, これがマージされた後のバージョンで解消されることになりそうです。なお,v1.12.5のタグのソースには含まれてなさそうなので,v1.12.6以降での解消となりそうです。

さいごに

今回はいつにも増して内容が無いような感じになってしまいましたが,また興味が戻ってくるタイミングもあるのではないかなぁ, とも思っている今日この頃です。

まだまだPlots.jlシリーズもまだまだ書けていない内容もあるので,ボチボチ日記の記事を追加してみる機会もあるかもしれません。

Promptingtools.jlでollamaを使ってOCR

特にドキュメントを見れば分かる内容なのですが,自分のメモ用として残しておきます。

using PromptingTools
PromptingTools.register_model!(; name="qwen3-vl:8b-instruct", schema=PromptingTools.OllamaSchema())
PromptingTools.MODEL_ALIASES["qwen3-vl"] = "qwen3-vl:8b-instruct"

result = aiscan("画像の文字列をそのまま抽出して下さい";
    image_path="/home/ujimushi/Downloads/test.png", model="qwen3-vl", 
    api_kwargs=(url="http://192.168.1.xx", options=(num_ctx=32768,)))

次の画像で実行した結果を参考例としておいておきます。

julia> println(result.content)
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted universe multiverse
deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted universe multiverse

deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted
# deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security universe

security universe
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security multiverse
# deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-security multiverse
userland@localhost:/etc/apt$ cd
userland@localhost:~$ uim-fep
userland@localhost:~$ ls
emacs-29.4  memo.txt  termux.properties
howm
memo.txt~
userland@localhost:~$ nano memo.txt
userland@localhost:~$ 日本語の入力が可能です
mozc [Mzあ RM]

ESC / - HOME ↑ END PGUP
← CTRL ALT ← ↓ → PGDN
1 2 3 4 5 6 7 8 9 0
q w e r t y u i o p
a s d f g h j k l
z x c v b n m , .
?123 QWERTY ?123

api_kwargsで指定する名前付きタプルにurl="http://xx.xx.xx.xx"とかで指定すると,別のPCのollamaサーバーに接続可能です。 ただし,サーバー側で外部からアクセス可能となるように別途設定が必要です。

num_ctxの指定とかは以前紹介した内容かと思います。

plantumlのstdlib(Google Material Design)を利用する環境をEmacsで作る

はじめに

Emacsを使って自分が考えていることを図で表現することについて, plantumlを利用できないかと考えています。

ネットでplantumlに関する日本語情報を検索すると, stdlibに関しては,ネットワーク構成図を描くような情報ばかりで, 汎用的な図の描画に利用する方法についてはあまり情報がないような気がします。

そこで,色々なアイコンが利用可能なGoogle Material Design を利用できないかと色々調べてみました。

Material Designのstdlib

stdlibのgithubレポジトリはplantuml-stdlibです。

Material Designのアイコンはバージョン2系バージョン7系があるようなのですが, バージョン7系について自分が利用しているEmacsで利用する方法について試してみました。

アイコンの検索は次のサイトが有効かと思います。 Material Design

Emacsのplantuml-modeの設定

Emacsでplantumlを利用するには,plantuml-modeをインストールするのがいいかと思います。

インストールする方法は省略します。 下の設定は,javaが実行できる(PATHが通っているところにjavaコマンドがある)前提での設定です。 init.el内相当のところに記入する感じです。

(require 'plantuml-mode)
(setq plantuml-jar-path "/home/ujimushi/.local/opt/plantuml.jar")
(setq plantuml-output-type "png")
(setq plantuml-default-exec-mode 'jar)
(setq plantuml-indent-level 2)
(setenv "PLANTUML_LIMIT_SIZE" "8192")

Emacsのauto-completeの設定

今ではもう化石と化しているEmacs補完パッケージauto-completeですが, plantumlのようにわりと単純な補完だけでいいケースでは, 自分で制御しやすいauto-completeもわりと使い勝手がいい面もあります。

今回は今さらですが,auto-completeで編集環境を構築してみます。

auto-completeの辞書登録機能

元々,plantuml-modecapfcompany-modeでのキーワード補完が可能なのですが, auto-completecapf対応がそれほど良くないので, 個別に辞書に登録することにします。

Emacsauto-completeでは,ac-dictionary-directoriesで設定されているフォルダに モード名のファイルを作成してキーワード辞書を登録しておくと, そのモード名に登録したキーワードを補完するようになります。

plantumlのキーワードの登録

Emacs上で*scratch*バッファ上で, (print plantuml-kwdList) と入力してctrl+jとすると,plantumlのキーワードのリストが表示されます。 2つ目の(とそれに対になる)の間をテキストファイルに保存します。

その後,そのテキストファイルに対して,Julia言語で次のような処理をして, 一行ーキーワードのテキストファイルを作成します。

open("plantuml-dict-example.txt", "w") do io
    kwds = map(
        replace(read("kwdlist.txt", String), " t " => "\n") |>
            IOBuffer |> readlines
    ) do x
        strip(x, ['\"'])
    end
    for s in kwds
        println(io, "$s")
    end
end

Material Designのインクルードファイルの補完の工夫

auto-completeだと直接Material Designのinclude補完は難しいので, githubのmaterial7.4.47のフォルダ構造と同じ構造のダミーファイルを作成, そのフォルダを自分がplantumlのファイルを置いているフォルダ内に シンボリックリンクを作成して,auto-completeのファイルパスの補完機能を使って 補完させようと考えました。

using JSON

function make_plantuml_stdlib_materail7_dummy_files(srcdir, destdir)
    categories = open(joinpath(srcdir, "all.json"), "r") do io
        JSON.parse(io)
    end
    isdir(destdir) || mkdir(destdir)

    mydict = Dict()

    for category in categories
        files = readdir(joinpath(srcdir, category))
        mydict[category] = map(x -> first(splitext(x)), filter(x -> endswith(x, ".puml"), files))
    end

    for (key, values) in mydict
        module_path = joinpath(destdir, key)
        isdir(module_path) || mkdir(module_path)
        for v in values
            touch(joinpath(module_path, v))
        end
    end
    nothing
end

の後, plantuml-stdlibのレポジトリからソースをダウンロードして展開してから,

rootfolder = "/home/ujimushi/Downloads/plantuml-stdlib-master/stdlib/material7.4.47"
destfolder = "material7.4.47"
make_plantuml_stdlib_materail7_dummy_files(rootfolder, destfolder)

ぐらいでダミーのファイルを作成してから,作業フォルダ内から生成したダミーファイルを格納しているフォルダにシンボリックリンクを貼るといいでしょう。

Material Designのスプライトキーワードの登録

最後に,スプライトのキーワードの登録を考えてみます。先ほどplantumlのstdlibのgithubアーカイブのフォルダ 構成から生成をしてみます。次のような関数を作成します。

using JSON
function write_stdlib_mdi7_kwdfile(srcdir, destfile)
    categories = open(joinpath(srcdir, "all.json"), "r") do io
        JSON.parse(io)
    end
    tmpdict = Dict()

    for category in categories
        files = readdir(joinpath(rootfolder, category))
        tmpdict[category] = map(x -> first(splitext(x)), filter(x -> endswith(x, ".puml"), files))
    end
    open(destfile, "w") do io
        for (_, values) in tmpdict
            for v in values
                if v != "all"
                    println(io, "<\$mdi$(uppercasefirst(v))>")
                end
            end
        end
    end
end

から,

rootfolder = "/home/ujimushi/Downloads/plantuml-stdlib-master/stdlib/material7.4.47"
destfile = "plantuml-icon-keywords.txt"
make_plantuml_stdlib_materail7_dummy_files(rootfolder, destfolder)

を実行すると,できたテキストファイルの中身は次のような感じです。

<$mdiTooltipAccount>
<$mdiTooltipCellphone>
<$mdiTooltipCheck>
<$mdiTooltipCheckOutline>
<$mdiTooltipEdit>
<$mdiTooltipEditOutline>
<$mdiTooltipImage>
<$mdiTooltipImageOutline>
<$mdiTooltipMinus>
<$mdiTooltipMinusOutline>
<$mdiTooltipOutline>
<$mdiTooltipPlus>
...

これを先ほどのkwdlist.txtと結合して,plantuml-modeという拡張子なしのテキストファイルを用意しておきます。

auto-completeの設定

最後にauto-completeの設定をします。

(require 'auto-complete-config)
;; 自分で登録した辞書を置くディレクトリ
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")

(ac-config-default)

;; Emacs 30用のワークアラウンド
(add-hook 'auto-complete-mode-hook
          (lambda ()
            (setq ac-sources (remove 'ac-source-abbrev ac-sources))))

;; 文字列内でも補完をする設定
(setq ac-disable-faces nil)

;; plantuml用の補完候補の登録
(add-hook 'plantuml-mode-hook
      (function (lambda ()
              (setq ac-sources
                '(ac-source-dictionary ac-source-filename ac-source-words-in-same-mode-buffers)))))

;; auto-completeをplantuml-modeで自動で有効にする設定
(add-to-list 'ac-modes 'plantuml-mode)

先ほど作成したplantuml-modeファイルを~/.emacs.d/ac-dictフォルダの中に保存します。

そして,作業用フォルダ内に先ほど作成したダミーファイル群のフォルダをターゲットに シンボリックリンクを作成すると環境作成は完了です。

使用例とか

基本的にはplantumlのスプライトの利用方法を見ていただければと思います。 後は,配置図とかのヘルプが参考になるでしょうか。

ちょっとした利用例です。 !includeのところは個別にincludeするとコンパイルの時間も短くてすむかと思います。

@startuml
!include <material7/all>

card 自宅 [
自宅
<$mdiHome,color=orange>
]
card 会社 [
会社
<$mdiOfficeBuilding,color=blue>
]
card 駅1 [
家の最寄り駅
<$mdiTrain,color=red>
]
card 駅2 [
会社の最寄り駅
<$mdiTrain,color=green>
]

自宅 -> 駅1 : <$mdiBike,scale=0.4>自転車
駅1 -> 駅2 : <$mdiTrain,scale=0.4>電車
駅2 -> 会社 : <$mdiWalk,scale=0.4>徒歩

@enduml

まとめ

とりあえずEmacsでplantumlを利用しやすいように環境を構築してみました。 といっても,普通はcompany-mode等でセットアップすると思うので, 非常に古めかしい環境での構築となりました。(単に日本語の補完パッケージとの兼ね合いです。)

ただ,図を描くのはまだまだ勉強中でこれからといった感じです。

Julia言語 雑感(2025年12月~2026年1月)

はじめに

先月は漢直アドベントカレンダーのネタ製作に忙しかったので,お休みしたJulia言語雑感。 仕事も忙しくあまり調べていないのですが,とりあえず少しだけやっておきます。

Tiobe Index 2025年12月は29位,2026年1月は28位

いつものどうでもいいTIOBE Indexの順位ネタです。 Julia言語の2025年12月の順位は29位。Ratingは0.48%でした。 また,2026年1月の順位は28位。Ratingは0.57%でした。

順位の急激な変動がなく非常に安定しています。

JuliaLang Japan 2025 2025年12月13日に開催される

JuliaLang Japan 2025が2025年12月13日(土)のPMに開催されました。

漢直アドベントカレンダー2025のネタ書きに忙しかったので参加できなかったのですが,盛況だったようです。 上のリンク先に当日の発表の資料等があったりするので,興味のある方は覗いてみてはいかがでしょうか。

自分もオンライン参加の登録をしかけていたのですが,明らかに学生や教職の方向けのフォームで, おまけにオンライン参加なのに撮影の同意とか確認させられて,気分的に嫌になって結局途中でやめました。

土日は家事等があってどのみち参加は難しいというのもあります。 実際13日は子供用の昼ご飯作ったり洗い物したりもろもろ。 土日は妻が働いているので,貧乏暇なしといったところです。

その他のネタ

仕事も忙しくなって,最近はJulia言語のネタをあまり仕入れていません。 また,Newsletter系もあまり更新されていないような気がします。

とりあえず,次の二つのリンクを貼っておきます。

さいごに

X.comとか久しぶりに日本語でのJulia言語ネタが盛り上がっているような気がしますが, いつも同じ人がポストしているだけのような気もします。

新ネタをポストするのはいいのですが,自分の過去のネタのリポストだけ何度も何度も繰り返すのは本当に止めて欲しい。 一回見たら内容分かるし,ウザいから。

仕事が忙しくなってきているので,しばらく日記の方は放置になるかと思います。 Julia言語や漢直以外のネタも書きたいものがあるのですが,しばらく先になりそうです。

Julia v1.12.4リリース [2026-01-11追記]

Julia言語の最新安定版v1.12.4が2026年1月8日にリリースされました。

This month in Julia world 2025-12 [2026-01-11追記]

毎月更例のニュースレターThis month in Julia world 2025-12が公開されています。

先月のJulia言語界隈(ただし主に海外)を知るにはいい情報源だと思うのでチェックしてみてはどうでしょうか。

主催者から締めのご挨拶

※この記事は漢直アドベントカレンダー 2025 の25日目の記事になります。

動画で書いた文章

本日は漢直アドベントカレンダー2025の最終日25日の記事になります。

自分としては、何とか最終日まで記事を書くことができてホッとしているというのが正直なところです。

まぁ誰も他の人が参加しないのはある程度想定していたのですが、 本当に参加しないとなるとなかなか精神的にくるものがありました。

何というか、これが漢直の現状なのだと思う今日この頃です。

さて、個人的にはこの漢直アドベントカレンダーの記事を書いていくなかで色々な気付き、学んだことがありました。

漢字が直接入力できることで、色々工夫ができることに気付いた、というのもその一つです。

何というか当て字の変換がその一つなのですが、それでもその原案といえば、自分のオリジナルとはほど遠く、過去のアイデアをパクっているような感じです。

そして、Google日本語入力やMozcでT-Codeが利用できるということはかなり多くのOSで同じようにT-Codeが利用できるということを意味していて、その意義は非常に大きいのではないかと思っています。

そして最後にはなるのですが、様々な漢直入力環境を実装・メンテナンスされている方々に大きな感謝の意を表したいと思います。

ただ、最後に一言言わせて下さい。

おっさんの日本語入力が変だっていいじゃないか!!

では。

さいごに

あまり文章のチェックもできず何とか最後まで書いただけ,という感じですがこれも自分の精いっぱいという感じなのでまぁしょうがないところです。

他に色々やらなければいけないことがあるので,漢直に関してここまで書くのはおそらくこれで最後になるかと思います。

それでは,最後まで見ていただいてどうもありがとうございました。

もしujimushiが今漢直を作るなら

※この記事は漢直アドベントカレンダー 2025 の24日目の記事になります。

はじめに

誰も参加してくれそうになかったのでとりあえずタイトルを登録してみた, という感じなのですが,今回色々調べてみて「もし自分が今から漢直の仕組みを作るなら」 ということで,少し話をしてみたいと思います。

T-Codeは理想の漢直か?

今回色々調べてみて,T-Codeの弱点というのが分かってきました。 大雑把な最適化のために,頻度の高い文字でも右手の小指連続とかあったり, 最適化が進んでないところです。

過去の文献とか見ても,T-Codeの記載があるのは150字/分しかないので, ライプットの平均 220字/分とかと比較してもかなり遅い結果となっています。

改善するところはまずその点かな,と思います。

ただ,同時打鍵等が全くない点は気に入っていて,特にEmacs等のエディタの編集作業に 邪魔になるようなものが必要なものはそもそも論外だったりします。

同時打鍵が必要ないというのはGoogle日本語入力やMozcでも環境構築可能 という利点もあり(設定はかなり必要,といっても今は設定ファイル読み込むだけなので楽チンです) こういうところは嬉しいところだったりします。

自分がもし漢直を作るなら

基本的には「怠惰な漢直ユーザー」。面倒臭がりなので,基本はT-Codeと同じ感じにすると思います。 実装もまるまま使えるでしょうし。

  • 平仮名,片仮名も含めてランダム
  • 一字二打鍵
  • 直接入力可能1350字程度

はおそらく踏襲するかと。

ただ,もう年寄りなのでもう少しスムーズに打鍵ができる運指がいいので, 文字の連続も考慮したスムーズな打鍵になるような最適化をしたいです。

まぁどっかに落ちている論文かなんかのデータを引っ張ってきて, 勝手に設計してくれる何かが欲しいです。

また,頻度データも昭和41年の新聞ではなく最新の頻度に更新したいところではあります。

19日目の日記でも利用した 2010年のウェブコーパスとか,国語研の現代日本語書き言葉均衡コーパス とかを利用したいところですが,国語研のは有料なので少しハードルが高いところです。

ただ,これを考慮しても今度は補助入力とのバランスを取る必要があるので, 部首合成等に有用な漢字を100ぐらい見繕う必要がある…なかなか難しそうです。

その辺り,何かバランス取れるようなプログラムを書いてあとはよしなにやってくれる何かが欲しいところです。

自分の場合ちょこっとずつ追加していくと「つぎはぎ式」みたいな感じになって, 訳分からんようになってしまうので,基本のルールはシンプルに, 後は機械的にやってもらって私は使うだけ,が性に合っている気がします。

さいごに

とはいうものの,もう50代も中ばなので,たとえ作っても自分が利用することはないような気がします。

ただ,漢直って10年後の自分の日本語入力をどうするかを考えて使うものなので, うっかり作ってしまって,もしキーの入力がスムーズになるのだったら,ひょっとしたら こっそり使い始めるかもしれません。

まぁ,どちらかというとズル入力をどんどん工夫して追加していく方が楽しいかもしれないなぁと, 今のところは思っています。

この点はかな漢字変換ユーザーにはない楽しみかと思います。

それでは24日目はこれで終わりにしたいと思います。

ではまた。

Mozcの補助入力のアイデアを他の環境で利用する方法

※この記事は漢直アドベントカレンダー 2025 の23日目の記事になります。

はじめに

16日目17日目にMozc(Google日本語入力)を用いた補助入力のアイデアを出しました。

今回は他の漢直環境であるtc.elや漢直WSで利用する方法について説明します。

補助入力を利用する方法

と言っても,すごく簡単で,交ぜ書き変換に見出し語と変換後の文字列を登録するだけです。

元々,交ぜ書き変換は入力文字にも出力文字にも漢字かな交じり文が設定可能なので, 既に色々な補助入力の可能性を秘めているという訳です。

例えば,自分が使っているtc.elでの設定ファイルであるmazegaki.dicの内容の一部は次の通りです。

色々「思う」関連の言葉が登録されています。

また,漢直WSでも交ぜ書き変換辞書に登録すると次のような感じで交ぜ書き変換で利用可能となっています。

かなしか入力できないかな漢字変換よりも,見出し語に入力できる文字種が多いので, その点色々なユーザー独自の工夫がしやすいといえるでしょう。

さいごに

簡単にはなりましたが(既にネタ切れとも言う),今回の記事はこれで終わりです。

後2日。まだ,21日~23日の記事の分ができていません。とりあえず今から書きます。

それではまた。