記事 Tomohiro Iwamoto · 10月 3, 2023 7m read

VSCodeサーバサイド編集のサーチ機能を有効化する

こちらの内容は、今後のリリースにより変わる(不要になる)可能性があります。

バージョン2023.2以降で、IRISスタジオが非推奨となったこともあり、VSCode拡張機能を評価される方も今後増えるかと思います。

既存のCache'資産をお持ちで、ソース管理をソースコントロールフックで実施されている方などにおかれましては、その際にサーバサイド編集を選択される方もおられるかと思います。

VSCode拡張には、Cache'/IRISスタジオの「ファイルから検索」と同じ要領でサーチを行いたいというご要望に応えるための機能が備わっています。その導入方法が、VSCodeの未公開APIを使用している関係で、ひと手間かかるものとなっているため、解説します。

方法は複数ありますが、手順を簡素化するべく、なるべくGUIを使わない方法をご紹介しています。

導入方法

サーバサイドのサーチ機能は、VSCodeの"Proposed API"であるTextSearchProvider,FileSearchProvideを使用しています。 いずれこれらのAPIが安定化してStableとしてリリースされるまでの措置として、これらを使用している拡張機能はマーケットプレイスからの導入(クリックするだけの簡単インストール)が制限されています。

サーバサイドのサーチ機能を使用する目的でVisual Studio Code Insidersリリースを使用する必要はないようです。

それまでは、マニュアルで導入する必要があります。以降、その導入手順をご紹介します。

InterSystems ObjectScriptのベータ版を導入

使用中のバージョンの「次のバージョン」のbeta.1をインストールします。

VSCode拡張は、日々更新・改良されていますので、常に最新バージョンを保つことをお勧めします。

使用中のバージョンは、下記で確認できます。

この例では2.10.3ですので、2.10.4-beta.1をダウンロードし、ダウンロードされたファイル(拡張子vsix)を、Extentionsにドラッグ&ドロップします。

再起動を促されますので、VSCodeを再起動します。

Proposed APIを有効化

Command Paletteで"Preferences: Configure Runtime Arguments"を選択し、下記を追加します。

	"enable-proposed-api": ["intersystems-community.vscode-objectscript"]

実体はC:\Users\Windowsユーザ名.vscode\argv.jsonにありますので、直接編集しても良いです。

// This configuration file allows you to pass permanent command line arguments to VS Code.
// Only a subset of arguments is currently supported to reduce the likelihood of breaking
// the installation.
//
// PLEASE DO NOT CHANGE WITHOUT UNDERSTANDING THE IMPACT
//
// NOTE: Changing this file requires a restart of VS Code.
{
	// Use software rendering instead of hardware accelerated rendering.
	// This can help in cases where you see rendering issues in VS Code.
	// "disable-hardware-acceleration": true,

	// Allows to disable crash reporting.
	// Should restart the app if the value is changed.
	"enable-crash-reporter": true,

	// Unique id used for correlating crash reports sent from this instance.
	// Do not edit this value.
	"crash-reporter-id": "xxxxxxxxxxxxx",

	"enable-proposed-api": ["intersystems-community.vscode-objectscript"]
}

有効化されると、OUTPUT(ObjectScript)に下記のようなメッセージが表示されるようになります。

VSCodeのワークスペースを作成・保存

VSCodeのワークスペースを作成・保存して、アクセスしたいIRIS環境を追加(感覚的にはマウントする感じです)します。

この作業はUIで行っても良いのですが、ここではワークスペースの設定ファイル(.code-workspace.code-workspace)を直接編集する方法をご紹介します。ワークスペースの設定ファイルをVSCode自身で編集するには、いったん、フォルダとして開き直します。

編集後の.code-workspace.code-workspaceは下記のようになります。

{
	"folders": [
		{
			"name": "local:scdemo",
			"uri": "isfs://local:scdemo/",
		},
		{
			"name": "local:samples",
			"uri": "isfs://local:samples/"
		},
		{
			"path": "."
		}
	],
	"settings": {
		"objectscript.showExplorer": false,
		"intersystems.servers": {
			"local": {
				"webServer": {
					"scheme": "http",
					"host": "localhost",
					"port": 52773
				},
				"username": "SuperUser"
			}
		}
	}
}

上記の意味は

  • local:scdemoという名前(name)で,アクセス先サーバ isfs://local/ のネームスペースscdemoを、ワークスペースにマウントする
  • local:samplesという名前(name)で,アクセス先サーバ isfs://local/ のネームスペースsamplesを、ワークスペースにマウントする
  • フォルダの"."、つまりルートフォルダをワークスペースにマウントする(これはローカルにファイルがなければ不要です)
  • ただしサーバlocalの実体は、http://localhost:52773/ 、IRISユーザ名SuperUserを使用する

となります。IRISサーバのホスト名やポート、ユーザ名は、環境に合わせて変更してください。

nameは、検索対象のフォルダ名の一部として使用されますので、あまり長くすると、サーチ結果を読みにくくなります。

これでサーバサイド編集やサーバサイドサーチを使用する準備が出来ました。ワークスペースとして開き直してください。

ご参考までに、UIで行う方法は下記になります。

接続するIRISサーバの定義と、ネームスペース指定して、仮想的なファイルシステムであるisfsをワークスペースに追加します。

使用

ここまでの作業を行ったフォルダをGitHubで公開してありますので、ご利用ください。git cloneした後に、フォルダ内の.code-workspace.code-workspaceをワークスペースとして開いて使用します。

うまく設定が出来ていれば、Exploreに下記のようなフォルダが表示されます。

この時点で、各フォルダをクリックすれば、IRISサーバ内の要素がツリー表示され、編集、保存(コンパイル)可能になっているはずです。

初めてアクセスする場合はパスワードを聞いてきます。以降、The extenstion 'InterSystems Language Server' wants to sign in using InterSystems Server Credentials.と表示されたら、Allowを押して使用するCredential(SupseUser on localなど)を選択してください。この辺りは、通常のサーバサイド編集時の操作と同じです。

肝心のサーチ機能ですが、Control+シフト+Fを押してファイルサーチ機能を開いてください。普通にVSCodeでファイルサーチを行う要領で、サーチワードを入力すると、ヒットした対象が列挙されます。大量にヒットした場合、(画像のように)Collapse Allアイコンで全体を折りたたんで、まずはヒット件数表示すると良いかもしれません。

files to includeにフォルダ指定するのと同じ要領で、フィルタ設定すると、サーチ対象もフィルタされます。

EnsLibパッケージを対象にする場合。

ワイルドカードを含む場合。

MACのみを対象にする場合。

名前が分かっている場合は、Quick Open機能を使用できます。フォルダツリーを使って、大量に存在するクラスやルーチンの中から、編集対象をピックアップするのが大変な時に役立ちます。

Comments

Seisuke Nakahashi · 10月 3, 2023

VSCodeのワークスペースを作成・保存
> この作業はUIで行っても良いのですが、
ここの UI 作業については、以下の記事でスクリーンショット付きで公開しています。少し古いですが、2023年10月現在でも同じ手順で登録できます。「鉛筆マーク」 クリックで登録されます。
https://jp.community.intersystems.com/node/493616
3. クラス定義やルーチンを編集する

0