2026年7月のNimf、Clair、Guiyom開発状況
最近、Nimf、Clair、Guiyomの開発には当初の予想より時間がかかっています。 目に見える機能を追加する作業よりも、プロジェクトの基盤構造を整理する作業が 増えているためです。
3つのプロジェクトはそれぞれ独立していますが、開発方針は密接に関係しています。 Clairは複数のオペレーティングシステムで共通して利用する基盤機能を提供し、 GuiyomはClair上で動作するクロスプラットフォームGUIツールキットです。将来的に NimfはClairとGuiyomの両方を利用する予定です。
現在の開発状況を簡単にまとめます。
Nimf
Nimfでは長期的に主要な構成要素をAdaへ移植し、さまざまなデスクトップ環境や アプリケーション環境で安定して文字入力できるように高度化する計画です。
現在のNimfには、GUIツールキットと入力メソッドサーバーのメインループが密接に 結び付いている部分があります。そのため、グラフィカル環境からコンソールへ 切り替えた際にGUI関連の処理が停止すると、Nimfサーバーとの通信まで影響を受け、 コンソールの入力メソッドが正常に動作しなくなることがありました。
GTKの処理を別スレッドへ分離し、イベントキューを介してNimfのメインループと 通信させる方式も試しました。当初は動作するように見えましたが、長時間実行すると 最終的に停止する問題があり、根本的な解決にはなりませんでした。
この問題は、今後GuiyomをNimfへ適用することで解決する計画です。GUI層の状態が 入力メソッドサーバーの中核動作を遮断しないよう、構造を改善することが目標です。
また、Wayland、Flatpak、Snap、SDL、Wineなどの環境では、既存の入力メソッド インターフェースだけでは入力が正しく渡らない場合があります。こうした互換性の 問題も解決する予定であり、必要であればIBus互換インターフェースを実装することも 検討しています。
現在は最初の段階として、nimf-settingsをAdaとGuiyomを利用する構造へ移行する
作業を進めています。その後、設定アプリケーションで確立したパターンを基に、
Nimfの中核状態管理、IPC、サービス管理、入力エンジン共通層を段階的にAdaへ
移行する計画です。
ただし、Nimfの本格的な高度化にはGuiyomとClairの基盤機能が必要であるため、 全体の日程は両プロジェクトの開発状況に影響されます。
Guiyom
GuiyomはAdaで開発中のクロスプラットフォームGUIツールキットです。
従来のGUIツールキットとは異なる独自の設計を採用していますが、まだP3特許の 出願前であるため、全体設計および詳細設計は公開しません。
Guiyomは、大規模・極限環境における性能、安全性、信頼性、保守性を主要な目標と して設計・実装しています。正常な実行経路だけでなく、さまざまな障害状況でも 状態と資源が予測可能に管理されることを目指しています。
現在は中核基盤とプラットフォーム別実装を整備しながら、P3特許出願前に必要な 技術実装と検証作業を進めています。
Guiyomの開発には、Clairのイベントループや各種プラットフォーム共通機能が 必要です。そのため、現在Clairで進めているMicrosoft Windows対応と プラットフォーム中立化の作業は、Guiyom全体の日程にも影響しています。
Clair
Clairは、クロスプラットフォームアプリケーションの開発に必要なシステム機能を 提供するため、Adaで開発中のライブラリです。
イベントループ、非同期I/O、シグナル処理、プロセス実行、時刻とタイマー、 ファイル、動的ライブラリ、ロギング、国際化、正規表現、テスト基盤などの機能を 提供することを目標としています。
公開リポジトリは次の場所で確認できます。
https://github.com/hodong-kim/clair
現在のClair開発の中心は、Microsoft Windows対応とプラットフォーム中立化です。
従来のClairには、Unix系オペレーティングシステムを前提として実装された機能や インターフェースが一部残っていました。Windows対応を追加する過程で、単に Windows向けコードを追加するだけでは不十分であり、プラットフォーム共通の契約と オペレーティングシステム別の実装を明確に分離する必要があることが分かりました。
そこで、Windows向けイベントループとシステム機能を実装すると同時に、Unix専用 機能とプラットフォーム共通機能を分離しています。ファイル、プロセス、ロギング などの主要機能も、複数のオペレーティングシステムで一貫して利用できるように 再検討しています。また、Windows向けの依存ライブラリとバイナリを再現可能な形で 生成・検証できるよう、ビルド環境も整備しています。
Adaだけでなく、Cや外部プログラムのテストも統合できるよう、Clair.Testも
言語中立なテストフレームワークへ拡張しています。
したがって、Clairは開発が停止している、あるいは単純に遅延している状態では ありません。Windows対応を契機として、必要な基盤作業の範囲が拡大した状態です。
短期的には、この作業がプロジェクト全体のボトルネックになっています。しかし 長期的には、Linux、FreeBSD、macOS、Windowsなどの環境で同じ上位APIと一貫した 障害処理を提供するために必要な工程です。
全体の開発状況
3つのプロジェクトの関係は、おおむね次のように表せます。
Clair
↓
Guiyom
↓
Nimfの高度化
ClairのMicrosoft Windows対応とプラットフォーム中立化が進まなければ、Guiyomの クロスプラットフォーム基盤を安定して拡張できません。また、Guiyomが十分に整備 されて初めて、NimfのGUI構造と入力メソッドサーバー構造を本格的に改善できます。
そのため、NimfとGuiyomの開発速度が遅く見えることがありますが、実際にはClairを 中心とした共通基盤の整備が継続しています。
目に見える機能を急いで追加するよりも、今後の機能開発が特定のオペレーティング システムやGUIツールキットの制約に再び縛られないよう、まず基盤を固めている段階です。
正確な完了時期を示すことはまだ困難ですが、現在のボトルネックが解消された後は、 3つのプロジェクトをより独立して並行開発できるようになると考えています。