このWikiは、OSDNの管理グループが運営しています。
OSDNを利用している開発者の方に、月ごとにインタビューを行っています。
Azuki は .NET Framework と .NET Compact Frameworkの両方で動作するテキストエディタエンジンです。 zlibライセンスで開発しています。
.NET Compact Framework を含めた .NET 環境用の、 C# で作られているテキストエディタの「エンジン」です。 Visual Studio を使っていればドラッグ&ドロップで配置できる GUI コンポーネント、ドキュメント、ビュー、 シンタックスハイライターなどを提供しています。
基本的な用途であれば GUI コンポーネントをドラッグ&ドロップしただけでもう使えるはずです。
実は、エディタは作っています。 AiB Tools という重度視覚障害者向けシステムに含まれているエディタで、 点字・音声による操作環境でのプログラミングに特化しています。 これには Windows 標準の RichEdit を使って開発していたのですが、 RichEdit に感じていた限界を越えるべくエンジンを探したところ 私が実現したい特殊ニーズ(割愛)に応えられるエンジンが見つからず、 自作するに至りました。
前述の AiB Tools 用にエンジンを探しているときに Scintilla の優れた設計に触れ、 触発されたのが動機です。 ただ Scintilla を C# から使用すると 内部文字コードの違いや .NET ネイティブでないことから 不都合が多いため、 プライベートな実験としてエンジンの実装を始めました。
実は前述の AiB Tools の名称案の一つで、 私自身が気に入っていたものです。 AiB Tools の前身を学会発表したのが 岡山の倉敷で、そこから 備の国、備前、備前長船、小豆長光、小豆 という連想ゲームからひねり出した名前です。 周囲から「さすがに分かりにくい」と不評(笑)だったので 採用しなかったのですが、 いつか使ってやろうと思っていました。 その「いつか」が、 現在の Azuki の元になった実験プロジェクトだった、というわけです。
.NET でエディタを作りたい人です。 特に.NET Compact Framework で作りたい人から 興味をもってもらいたいですね。
あまり考えたことは無いですが・・・ 数名程度ではないかと思っています(笑)。
ユーザからのフィードバックが フォーラムに書き込まれているのを知ったときです。
驚きというよりショックというべきかもしれませんが・・・。 友人に .NET Compact Framework 版も作ってくれないかと言われて作ったところ、 性能(計算・描画)のシビアさを思い知りました。 これは、世界が少しだけ変わる体験でしたね。
実装の話で申し訳ないのですが、 パフォーマンス向上の工夫です。 内容変更による再描画とシンタックスハイライトが、 ドキュメント全体あるいは画面全体を 再スキャンするようなアルゴリズムで作ると モバイル環境では遅すぎるので、 必要な部分に絞って実行しています。 こうした最適化は他のデスクトップ用エンジンでは 行っていないため参考にできず、独自に設計・実装しています。
今まで通り、とにかく堅実に進めようと思っています。
作ってから改めて思ったのですがエディタのエンジンって、 信頼性が要求されるものなんですよね。 万が一エンジンのバグでテキストデータが破損しようものなら、 エンジンではなくそれを使っているエディタの信用が失墜してしまいます。 ですから 「やっぱりフリーのエンジンなんかウチの製品には使えない」 なんて言われないようにしないと、ユーザに申し訳が立ちません。 無償であることは、責任が無いということではないと思っていますので。
現在挙がっているのは 日本語禁則処理を含むワードラップ機能、 TeX の文法をハイライトできる機能、 アセンブリへの電子署名、 そして検索機能です。 また「私」というユーザからは、 箱形選択、コード・フォールディングがあります。
これらすべてについて、 できるところから無理なく対応していきたいと思っています。
正直なところ、まだ走り出したばかりという気分でして・・・(苦笑)。 Azuki の本当の価値はユーザフィードバックから知ることになると思うので、 誇れる点が分かるとしても先の話なのかなと思います。
また実装の話で申し訳ないですが、選択に関する構造設計です。 現在の Azuki では選択状態を 開始インデックスと終了インデックスので定義する範囲 「一つ」で保持しています。 複数の選択範囲を持てるよう設計しなかった上、 選択範囲が一つしかないことを 前提にした実装部分がすでに存在しています。 これが原因で箱型選択が実現できていません。
プロジェクト立ち上げ時は大学院生でしたが、 今は大手 SI 企業で設計開発をしています。
検証機として次のようなものを使っています。
開発環境は主に次のものです。
なお現在の Azuki は Mono で動作するわけではありません。 ただ将来的に対応したいので、 「予想通りなエラーで動作しないこと」を確認しています。
使ってください。 ダウンロードカウンターが増えるだけでやる気が出ます(笑) フィードバックがあれば、なお嬉しいですね。
うーん、現在のサービスで十分満足なので特に無いです(苦笑) ありがとうございます。
(取材日:2009年1月23日)
今月のプロジェクトに戻る
[ページ情報]
更新日時: 2009-01-27 13:32:55, 更新者: morihide
[ライセンス]
GNU Free Documentation License
[権限]
表示:無制限, 編集:メンバー, 削除/設定:メンバー