RAD Studio 12.1が数週間前にリリースされ、このバージョンは主に品質改善に焦点を当てておりますが、いくつかの重要な新機能も追加されています。そのうちの主要な機能の一つとしてはIDEの生産性向上を目的とし、エンバカデロが以前から実装することを検討していた「分割エディタ」という非常に便利な機能があります。
以前までのバージョンでは、IDEのメインウィンドウには、1 つのエディタ (多くのタブを持つ) が存在していましたが、12.1では(それぞれに多くのタブを持つ)隣接したエディタを任意の数だけ配置することができます。つまり水平または垂直に分割するエディタの数に制限はありません。
下図は、その画面レイアウトの一例です。
上図のレイアウトの例では、左側にはフォームデザイナがあり(もちろんコードに切り替えることも可能)、右側にはコードを表示するエディタが2つあります。このレイアウトは完全にフレキシブルで、好きな数のエディタ(それぞれが好きな数のタブを持つ)を使用して、画面上に好きなように配置することができます。
例えば、分割エディタでは、以下のような使い方が可能になります。
- フォーム デザイナと同じユニットのコードを、両方を並べて (または上下に好きなように) 開く
- 複数のユニットを開き、両方を並べてコードの可読性、編集作業の向上
- 複数ユニットのコードを同時に編集
- あるユニットを参照しながら、別ユニットをコーディング
- 同じユニットでインターフェイス部と実装部を同時に編集する
- 例えば、同じユニットを10個開いて、10個所を別々に編集する・・なんていう極端な使い方も可能です。
- 分割エディタは、複数のエディタウィンドウとしても機能するため、複数のウィンドウを複数のエディタで埋め尽くすことも可能です。
また現在では、多くの開発者が画面の広いPCモニタで作業を行っていると思いますが、分割エディタは、画面が広いモニタとの相性がとても良いです。
このブログでは、分割エディタの機能をさらに掘り下げて解説していきます。なお、後述の「デスクトップレイアウトの保存」に関するセクションは必ずお読みください。そうしないと予期しない動作が発生する可能性があります。
Table of Contents
分割エディタ
12.1よりも前のバージョンでは、エディタをホストするIDEのウィンドウは、IDEのメインウィンドウと、タブを右クリックして「新しい編集ウィンドウ」を選択したときに表示される別ウィンドウのように、一度に1つのエディタしか表示できませんでした。
12.1では、IDE における分割エディタ ビューのサポートが追加されています。複数のエディタを同じウィンドウ内で並べて使用したり、上下に並べて使用したり、組み合わせて使用したりできます。水平または垂直に分割するエディタの数に制限はありません。
複数のタブがあるので、多くのファイルを切り替えて編集することができますが、入力可能なUIコントロールは1つだけです。今回のブログでは、IDEのメインウィンドウの動作についてだけの説明となりますが、別ウィンドウでも動作することもご留意ください。
上図では、IDE の左右 (場合によっては下にも) にドッキングされたペインがあり、中央に 1 つのエディタがあります。12.1以前のバージョンではIDE内にドッキングして表示できるエディタスペースは1つだけでしたが、12.1以降ではこれが変更されています。
「分割ビュー」という名称は、エンバカデロ独自のネーミングではなく、「エディタスペースを2つに分割する」という考えから由来する一般的な機能の総称となります。
上図では、エディタのスペースは、垂直に 2 つに「分割」されています。
そしてエディタのスペースは、さらに細分化することができます。例えば、下図の例では、ドッキングされたパネルの1セットが非表示になり、ビューが左右と上下に分割されています。
このように分割するには、エディタタブを右クリックし、表示されるポップアップメニューから[分割する]を選択します。上下左右に分割するサブメニューが表示され、現在のエディタに対して新しいエディタが表示されます。新しいエディタは、同じファイルを 1 つのタブだけで開きます。 つまり、同じファイルが 2 回開かれることになります。
同じポップアップメニュー内に「移動」というメニューがあります。これとまったく同じ動作になりますが、編集中のファイルを一緒に移動します。ファイルは左、上、右、または下の新しいエディタに移動されます。
ドッキング可能なエディタ
「分割ビュー」は、他のソフトウェアより一歩進んでいる点があります。それはエディタウィンドウは、オブジェクトインスペクタ、構造ビューなどと同様に、完全にドッキング可能なペインであるという点です。
分割すると、すべてのエディタにタイトル バーが表示されていることがわかります。
ドラッグして移動することができます。さらにドラッグしてドッキングを解除できます。他のエディタの隣にドッキングさせれば、そのエディタ側に挿入され、マウスを離せば、フローティングウィンドウになります。またウィンドウを他のエディタにドッキングさせ、表示されるタブセットを結合することもできます(タブの上をドラッグしてください)。
マウスを動かしてもドッキングしようとしないようにするには、Controlキーを押したままにします。閉じる(X)ボタンもあります。これをクリックするとエディタタブ全体を閉じることができます。
デスクトップレイアウトの保存
ドッキング可能なウィンドウと保存されたレイアウトは相互に作用するため、このセクションは、期待する動作を得るためにお読みください。
まずは、デスクトップレイアウトの概要について
デスクトップレイアウトは、ドッキングされているウィンドウの種類、サイズ、位置などを保存します。デバッグを開始すると、IDE はコールスタックやローカル変数など、デバッグ時にのみ役立つウィンドウを表示するように、表示するウィンドウを並べ替えます。これらのウィンドウの表示がレイアウトに保存され、そのレイアウトがデバッグ中にIDEの状態が変わったときに切り替えるレイアウトとして設定されているからです。
これらの設定は、IDEを利用する開発者自身で制御できます。[ツール] > [オプション] ダイアログで[IDE] > [デスクトップとレイアウト] に移動すると、さまざまな IDE の状況に応じて、どの保存済みレイアウトに変更するかを選択できます。
保存されたレイアウトはいくつでも作成できます。IDEのタイトルバーには、デスクトップレイアウトコンボボックスがあります。これにより、手動で任意のレイアウトに変更することができます(例えば、コーディングレイアウトとフォームデザインレイアウトの好みがあるので、それぞれのレイアウトを作成し、手動で切り替える人もいます)。すべてのウィンドウを適切な場所に配置し、適切なドッキングペインを表示するなど、IDEを自身の好みのレイアウト配置を行った後、あとはこのコンボボックスの隣にある[デスクトップを保存]ボタンをクリックするだけです。デスクトップを保存する際の名前は、任意の名前を入力することも、既存の名前で上書きすることもできます。
デスクトップレイアウトと分割表示
上記でデスクトップレイアウトは、「ドッキングされたウィンドウの表示、サイズ、位置などを保存する」と説明しましたが、12.1ではエディタがドッキングされたウィンドウになっています。
エディタを分割して作成した後、IDE を終了して再度開くと、期待どおりにエディタが再表示されません。 レイアウトを保存するには、「デスクトップレイアウトを保存」ボタンをクリックします。
しかし、レイアウトを変更する場合も同じです。デフォルトのレイアウトで多数のエディタをセットアップしてデバッグを開始すると、IDE はデバッグレイアウトに切り替わります。 そのレイアウトでは、エディタがあった場所にエディタがありません。
IDEは、このような状況(エディタがドッキングされているが、エディタを置く場所がない)に遭遇すると、エディタをフローティングウィンドウに変換します。したがって、必要な場所にドッキングし直して、デバッグレイアウトを保存してください。
奇妙な挙動について
冒頭で、IDEは以前は1つのウィンドウに1つのエディタを中心に設計されていたと言いました。しかし、1つだけ問題が残っています。それは最初に分割した IDE の元のエディタを閉じることができないという点です。
そのエディタは空白のスペースとして表示され、その上にタブをドラッグするようにメッセージが表示されます。この現象はタブ グループを閉じるとき、元のエディタですべてのタブを閉じようとした場合にのみ稀に発生することがあり、 将来的に解決される可能性があります。
同じファイルを複数のエディタで編集する
エンバカデロでは、しばらくの間、分割エディタビューに向けて取り組んできました。そしてここ数年、複数のフローティングエディタウィンドウが適切に機能するかどうかに重点を置いてきました。これまでの取り組みによって、複数のフローティングエディタウィンドウも分割エディタも基本的な仕組みは同じものであり、それはエディタが配置されている場所にすぎないという結論に至りました。
マルチウィンドウは、今でも非常に便利であり、開発者が複数のPCモニターを使用する限りずっと便利であり続けるでしょう。エンバカデロでは、度々ユニットのデザイナとユニットのコードを同時に表示し、編集可能にする方法について議論してきました。デザイナは1つのウィンドウ/エディタにしか表示できませんが、[デザイン]タブをクリックし、デザイナが別の場所に表示されている場合、現在のエディタに移動させることができます(つまり、エディタ間でデザイナを自由に移動可能) 。もちろん、これは分割ビューでも機能します。
また同じユニットを同時に 2 つのウィンドウで開くことができる機能は、特に新しい機能ではなく、何年前のものなのかは確認していませんが、おそらくTurbo Pascalの時代まで遡る話になるかもしれません。もちろん、これは分割ビューでも機能しますので、画面上の複数のエディタで同時に同じファイルを開いて、いずれかのエディタに好きなように入力できます。
同じファイルを同時に編集することに関して
- 「エディタはどのように同期するのですか?」
- 「ある項目を入力し、保存せずに別の項目を入力しても安全ですか?」
といった内容が質問がございました。
答えは、「完全に安全です。エディタ内のファイルデータの同期と表示は、まったく異なる仕組みで動作しており、アーキテクチャが異なります。グラフィカルエディターコントロールは、単一のエディタバッファ上のビューです。バッファにはファイルテキストが格納されます。バッファ(つまりグラフィカルエディタ)には任意の数のビューがありますが、テキストのインスタンスは1つしかありません。
したがって、あるエディターで入力し、そのテキストが同じユニットの別のエディタに表示される場合、そけが同期しているというのは正しくありません。定義上、同じコンテンツであるため同じテキストデータが存在し、どのビューで見ても同じはずです。
上図は、同じファイルCell.cppを3つのエディタで開いた例です。左側にはフォームデザイナが表示されていますが、右側にはコードが表示されています。この3つのうちどれに入力しても問題なく、変更内容はすぐに他のエディタにも反映される。たとえ複数のエディタが表示していても、IDEにはCell.cppというファイルのコピーは1つしかありません。
したがって、同じファイルに対して好きな任意の数のエディタを開いて入力することができるわけです。
生産性の向上
以上が 12.1 で新しく登場した分割エディタビューの機能に関する説明となります。
- 複数のエディタ(任意の数)
- 同じユニットのフォームとコードを隣り合わせて同時に使用可能
- 同じユニットを複数の場所で編集可能
など様々なエディタの使い方ができるようになったので、これまで以上にコーディングする上でとても便利になりました。
最後に一例ですが、筆者のお気に入りのエディタレイアウトをご紹介いたします。
下図の例は、2 つの列を使用し、ドッキング ウィンドウの [ピン] ボタンをクリックして、IDE メイン ウィンドウの左右のタブに折りたたみます (マウスを置くと再び表示されます)。これにより、全幅のコーディング スペースが得られます。
RAD Studio 12.1 Athensのリリース情報
RAD Studio 12.1の詳細については、以下のリンクをご確認してください。
- エンバカデロテクノロジーズの製品ページ
- DocWikiの新機能情報 – RAD Studio 12.1 Athens
- 12.1で修正されたお客様から報告された問題(英語)
- RAD Studio 12機能一覧(PDF)
RAD Studio 12.1の無料トライアルは、こちらのWebページからダウンロードいただけます。