このWikiは、OSDNの管理グループが運営しています。

今月のプロジェクト

OSDNを利用している開発者の方に、月ごとにインタビューを行っています。

2009 年

2008 年

2007 年

Wikiガイド

最近の更新

2017-04-29
2015-12-25
2015-07-08
2015-06-30

今月のプロジェクト

potm_50x50.gif 2009年1月 - Azuki

プロジェクトの概要

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 ネイティブでないことから 不都合が多いため、 プライベートな実験としてエンジンの実装を始めました。

Azukiの名前の由来は?

実は前述の AiB Tools の名称案の一つで、 私自身が気に入っていたものです。 AiB Tools の前身を学会発表したのが 岡山の倉敷で、そこから 備の国、備前、備前長船、小豆長光、小豆 という連想ゲームからひねり出した名前です。 周囲から「さすがに分かりにくい」と不評(笑)だったので 採用しなかったのですが、 いつか使ってやろうと思っていました。 その「いつか」が、 現在の Azuki の元になった実験プロジェクトだった、というわけです。

このソフトウェアのターゲットユーザーは?

.NET でエディタを作りたい人です。 特に.NET Compact Framework で作りたい人から 興味をもってもらいたいですね。

このソフトウェアをどれくらいのユーザーが利用しているとお考えですか?

あまり考えたことは無いですが・・・ 数名程度ではないかと思っています(笑)。

プロジェクトがうまく行っていると感じるのはどんなときですか?

ユーザからのフィードバックが フォーラムに書き込まれているのを知ったときです。

このプロジェクトをやっていて最も驚いた出来事は?

驚きというよりショックというべきかもしれませんが・・・。 友人に .NET Compact Framework 版も作ってくれないかと言われて作ったところ、 性能(計算・描画)のシビアさを思い知りました。 これは、世界が少しだけ変わる体験でしたね。

このプロジェクトで最も苦労している点は?

実装の話で申し訳ないのですが、 パフォーマンス向上の工夫です。 内容変更による再描画とシンタックスハイライトが、 ドキュメント全体あるいは画面全体を 再スキャンするようなアルゴリズムで作ると モバイル環境では遅すぎるので、 必要な部分に絞って実行しています。 こうした最適化は他のデスクトップ用エンジンでは 行っていないため参考にできず、独自に設計・実装しています。

今後のプロジェクトの方向性は?

今まで通り、とにかく堅実に進めようと思っています。

作ってから改めて思ったのですがエディタのエンジンって、 信頼性が要求されるものなんですよね。 万が一エンジンのバグでテキストデータが破損しようものなら、 エンジンではなくそれを使っているエディタの信用が失墜してしまいます。 ですから 「やっぱりフリーのエンジンなんかウチの製品には使えない」 なんて言われないようにしないと、ユーザに申し訳が立ちません。 無償であることは、責任が無いということではないと思っていますので。

どのような要望がユーザーからあがっていますか?

現在挙がっているのは 日本語禁則処理を含むワードラップ機能、 TeX の文法をハイライトできる機能、 アセンブリへの電子署名、 そして検索機能です。 また「私」というユーザからは、 箱形選択、コード・フォールディングがあります。

これらすべてについて、 できるところから無理なく対応していきたいと思っています。

このソフトウェアあるいはプロジェクトについて誇れるところは?

正直なところ、まだ走り出したばかりという気分でして・・・(苦笑)。 Azuki の本当の価値はユーザフィードバックから知ることになると思うので、 誇れる点が分かるとしても先の話なのかなと思います。

このプロジェクトでどこかやり直せるとしたら、どこを変更したいですか?

また実装の話で申し訳ないですが、選択に関する構造設計です。 現在の Azuki では選択状態を 開始インデックスと終了インデックスので定義する範囲 「一つ」で保持しています。 複数の選択範囲を持てるよう設計しなかった上、 選択範囲が一つしかないことを 前提にした実装部分がすでに存在しています。 これが原因で箱型選択が実現できていません。

あなたの本業は何ですか?

プロジェクト立ち上げ時は大学院生でしたが、 今は大手 SI 企業で設計開発をしています。

あなたの開発環境は?

検証機として次のようなものを使っています。

  • デスクトップ自作機(Windows Vista Buisiness x64 Edition)
  • Advanced/W-ZERO3[es] (Windows Mobile 6)
  • ThinkPad T42 (Windows XP Professional)
  • 自作サーバ機 (SuSE Linux 11.1)

開発環境は主に次のものです。

  • Visual Studio 2005 Accademic
  • Visual Studio 2008 Accademic
  • Mono 2.0

なお現在の Azuki は Mono で動作するわけではありません。 ただ将来的に対応したいので、 「予想通りなエラーで動作しないこと」を確認しています。

バージョンヒストリー:

  • 0.8: 公開
  • 0.9: 折り返し表示、自動インデント
  • 1.0: シンタックスハイライター、マルチドキュメント
  • 1.1: 空白文字入力の自動変換(タブや全角スペースを半角スペースに)
  • 1.2: 各種言語用ハイライターを内蔵、サンプルアプリを簡易エディタ Ann に変更

ロードマップ:

  • 1.3: テキスト検索
  • 2.0以前: 箱形選択
  • 2.0以降: コード・フォールディング
  • 対応時期不明: Mono対応

このプロジェクトに貢献するには?

使ってください。 ダウンロードカウンターが増えるだけでやる気が出ます(笑) フィードバックがあれば、なお嬉しいですね。

SourceForge.jpへの要望をお聞かせください。

うーん、現在のサービスで十分満足なので特に無いです(苦笑) ありがとうございます。

(取材日:2009年1月23日)


記事へのご感想をお寄せください。

:

今月のプロジェクトに戻る