webベースのIDEのbespinについてちょっと注目している所で、EclipseをつかったBespinサーバがあるとのことでメモ。
調べてみる価値は十分ありそうな感じ。eclipseのプラグインを使い、ヘッドレス(GUIなしの意味と思われる)なサーバを使って実現しているらしい。javaの開発が出来るとか。
ちょっと前のエントリでは簡単にさらっと書いてみたのですが、上の記事に触発されもうちょっと検討&詳しく考えてみることに。個人的にアイデア的には似たようなことを以前から考えていて、当面ではCDTでやれば私の本業である組み込み分野に実に有効と思っているところ。
組み込み分野では最近でこそeclipseベースのIDEとgccバックエンドという組み合わせが主流になって来つつありますが、未だにメーカ製の独自の開発ツールを使うことは一般的。また組み込みという性格上複数の種類のCPUを使う可能性が高い。
arm, mips, powerpc, dspからsh4, h8, nios, x86なども入れるとメジャーと言われるものだけでも10種類では足りません。 これらが別々にコンフィグされたeclipseを持っていたり、OSや開発ツールベンダーが開発ツールを別途用意していると考えてみてください。ディスクスペースもバカになりませんし、使い方を覚えるのも面倒ですし、各ベンダーが微妙に違うバージョンのeclipseを用意しておりCDTベースとはいえ使い勝手も微妙に異なるなど結構うんざりです。
こういうのをもっと統一的にし、ローカルへのインストールはデバッガインターフェースのみ、もしくはデバッガやターゲットシステムもサーバ(クラウドでは無理ですが)に接続しておく。webベースのフロントエンドで統一して、エディタは以前のエントリで書いたようにemacsクラスのモノ。
上の記事にはコマンドラインとありますが、これは素晴らしい。。。ただ行き過ぎると結局Linuxのwebフロントエンドを作るだけって感じになってしまうので注意ですね。変なモノを用意するくらいならjava appletかなにかでsshクライアントを用意するだけで十分です。
組み込み分野へのwebベース開発システムの利点というかアイデアというか妄想を書くと
- 外部・内部ドキュメントとの動的・静的リンク機能
最も欲しいのはwebベースならではの機能。以前は文芸的プログラミングと称されたものがありましたが普及しなかった。もっと容易にドキュメントとの動的かつ自動的なリンク機能やフレーム的な機能でのインライン表示。もちろんpdfのマニュアルなどリンクやtracのような進捗管理やバージョン管理システムとのリンクなども
うまくやれば不慣れなプログラムによく見られるような無用で意味無く長いコメントを見なくてすみますし、ベテランのコメントなさ過ぎなコードなどには後付でコードを汚すことなくドキュメント追加出来るではありませんか。 当然コードへの付箋の貼り付けや共用オンラインメモへのリンクも。
ソースはテキストでないと(たぶん)困るので実現はwikiチックな簡単な文法でやるか関数名などから自動でやるか、javadoc風なのをリアルタイムでやるか
- 操作性やプラグインなどの統一
サーバ側でAPIや外部コマンドとの連携手段を統一しておけば多少バージョンの異なるコンパイラだろうが問題ないはず。
- (組み込み)種々のコンパイラインストールの手間の削減
開発サーバに必要な種類のクロスコンパイラを入れておけばOK。ライセンスが必要な場合もサーバ単位で管理可能。
- (組み込み)設定ファイル(リンカスクリプトなど)の自動生成や共用
組み込み分野ではターゲットシステムやCPUごとにリンカスクリプトやメモリマップの構成は千差万別ですが、webベースの設定ツールを用いて生成させることが出来るとわかりやすく、半自動生成も可能。当然ドキュメントとのリンクまたはドキュメントからの生成も考慮
- (組み込み)メモリマップ、レジスタ表等の半自動生成
最近よく見られるハードのVHDL/Verilogなんかとの関連づけ。
レジスタなどは半定型文書なので専用フォームを用意することで自動リンクやコードの自動生成を行う。
また同じくデバッグ情報用のテキストデータやprintf用情報も生成
- リモートデバッガとの連携も
ターゲットシステムとのリモート接続がサーバ側で出来ればクライアントにはブラウザ以外何も入れる必要がなくなる。
ちょい現実ではないものもあるかもですが、数年前に夢想してたものです。現状の技術基盤ならほとんど実現可能かと。また開発者が現在のスタイルを崩すことなく移行できるよう、自動リンクを主体として、お手軽にリンクやコンテンツを作れるのがいいかと。
各メーカはgcc/binutils/gdb等と定義ファイル用バックエンドツールとのインターフェースを用意すればフロントエンドはほとんどいらなくなり開発も容易。
ライブラリも訳のわからんライブラリやヘッダ類をお互い統一して、newlibとのインターフェースもまとめればメーカごとの混乱は避けられる。
サーバや通常のPCアプリよりコストコンシャスなシステムの多い組み込み分野だからこそ、ライブラリやインターフェースの統一を行って開発コストを下げて欲しいが実情は全くメーカ毎に異なる。まあ中には他ではまねできないような素晴らしいインターフェースのライブラリなんかも見たことありますが...
いずれもwebを使ってリンク、インラインフレーム、AJAXを生かしてかなり面白いツールが出来るのではと思うのですが。。