【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

コードのリッチテキスト化

テキストエディタでコードを打ち込むのは嫌いなので、あまりプログラミングを楽しむということがありません。いつまでこんな旧態依然とした状態が続くのでしょうか。画期的な言語と言われても「所詮はプレーンテキスト」と思ってしまいます。かと言って完全にフローやUMLだけでコーディングするわけにもいきません。後者に可能性を賭けたいと思ったこともありますが、現状との溝が埋まらないまま打開できずに来ました。

完全に図形化するのは棚に上げて、もっと現実的な方法はないでしょうか。

オブジェクトの埋め込み

プログラミングに使うエディタは文字修飾やオブジェクトを埋め込めないという面では、ワードパッドの域にすら達していません。しかしワードパッドの域に達して何か嬉しいことがあるのでしょうか。コーディングの場合は慣習的に、予約語などが自動的にカラーやボールドになるため、自由に字体を変えたりすることにあまり意味はありません。

コードを説明するときに、図などを入れてきれいに説明しようとすると、コードとは別に解説を書くことになります。doxygenのようなマークアップはありますが、主にリファレンスを作ることが目的で、コードそのものに対する説明を目的としたものではありません。しかしオブジェクト(絵など)が埋め込めればコメントで概念を図示できるため、コードとの直接比較することができます。

D言語ではHTMLの中にコードを埋め込んでそのままコンパイラに通せるようですが、うまく使えばHTMLのWYSIWYGエディタで説明や図と一緒にコードを書けるのかもしれません。

表の埋め込み

定型処理を並べて書く場合、マトリックス状に並べると見栄えがします。現状では等幅フォントを前提にスペースやタブでレイアウトするという原始的な方法を使うしかありません。こういうときに表を埋め込めるようになれば、すっきりしそうです。

2-way

オブジェクトの埋め込みはタグ付きコメントでどうにかなるとして、問題は表の埋め込みのようなコードの自動生成が絡むものです。自動生成したコードは2-wayで反映されることが理想だとされていますが、それを実現するのは困難です。パーサーの出来が悪いと、正しい部分まで壊してしまうような問題が起きかねません。一方通行が無難かもしれません。

VC#ではGUIエディタのデザインがコードに落とされますが、ちゃんと2-wayになっていて、コードを直に編集すればパースされてGUIエディタに反映されます。NetBeansでは一方通行で、コードを編集しても破棄して上書きされるようになっています。技術的には前者が高度ですが、後者のように割り切っても実用上はそれほど問題はありません。そのため2-wayはあまり重視しない方針で行きます。

一方通行だと割り切った場合、自動生成した部分はタグ付きコメントで明示しておけば良いでしょう。たとえば表からの自動生成だと以下のようになります。

/// <table>
/// <output><arg/> <arg/> = <arg/>;</output>
/// <tr><td>int</td><td>a</td><td>1</td></tr>
/// <tr><td>double</td><td>aa</td><td>1.0</td></tr>
int    a  = 1  ;
double aa = 1.0;
/// </table>

これを対応するエディタで開けば、表として表示されるというイメージです。

こういったものが実際に使いやすいのかは不明ですが、いつか試してみたいです。