VSCode を使ってみよう!
皆さんこんにちは!Virtual Summit ご覧いただけていますでしょうか。
Virtual Summit で VSCode の ObjectScript 用エクステンションバージョン1.0 のリリースが👏正式発表👏されましたので、さっそく利用方法を投稿してみました。
来週の技術セッションではさらに詳しい説明があると思いますので、ご登録がまだの方は、ぜひご登録ください!
(ご登録いただくとオンデマンド配信でいつでもセッションのビデオを視聴できます。機械翻訳ではありますがビデオには日本語字幕が付いています。)
この記事では、以下の操作方法をご紹介します。
操作前の準備
VSCodeのインストール を行います。
インストール後、VSCode で作成するクラス定義(*.cls)やルーチン(*.mac や *.inc)用ファイルを配置するためのワークスペース(作業環境)用フォルダを作成します。作成が終わったら VSCode を開き、[File > Open Folder...] から作成したフォルダを選択します。
1、ObjectScript用エクステンションのインストール
エクステンションのアイコン をクリックし「InterSystems」で検索し
と
をインストールします。
インストールが完了すると のアイコンが左端に表示されます。
2、サーバへ接続する
メニューから File > Preferences > Settings (macOS では Code > Preferences > Settings) を選択して、VS Code Settings Editor を開きます。
検索欄に、objectscript を記入し(下図 赤〇)設定を絞り込み、検索欄すぐ下にある [Workspace] を選択します。
[Objectscript:conn] の下にある [Edit in settings.json] (上図 青〇)をクリックします。
開いたワークスペースのフォルダ以下に [.vscode] フォルダが用意され、settings.json が作成されます。
この settings.json は開いているワークスペースに対するサーバ接続情報の設定ファイルになります。
”objectscript.conn”: {} の中に接続したいサーバ情報を記入すると、接続が行えます。設定するパラメータは入力候補が出ます。
図例のイメージで、接続したい IRIS のホスト名(host)、Webサーバポート番号(port)、ネームスペース(ns)、ユーザ名(username)、パスワード(password)を設定し、"active" : true を設定し保存します(Ctrl + s で保存できます)。
記述例は以下の通りです(コピーしてご利用ください)。
"objectscript.conn": {
"active": true,
"host":"localhost",
"port": 52773,
"ns":"USER",
"username": "_system",
"password": "SYS"
}
}
接続できると、VSCode左下にある接続状態が、Connected になります。
最新情報を確認する場合は、上図赤枠をクリックしすると、VSCode画面上部中央に以下メニューが表示されます。
メニューの [Refresh Connection] をクリックして最新情報をご確認ください。
この他にも、複数インスタンスへ接続切り替えが簡単に行える、InterSystems Server Manager の機能を利用した記述方法もあります。
前述の方法と異なる点は、settings.json にパスワードを記入しません。
また、”intersystems.servers" に接続するサーバ情報を定義し、"objectscript.conn" の "server" に”intersystems.servers"
で定義したサーバ名を指定します。
初回接続時、パスワードを指定するように入力欄(下図赤枠)が表示されます。パスワードを入力すると接続できます。
複数のインスタンスに対して接続情報を登録する場合の settings.json の記述例は以下の通りです。
"objectscript.conn": {
"server": "test",
"active": true,
"ns": "USER"
},
"intersystems.servers": {
"test": {
"webServer": {
"scheme": "http",
"host": "localhost",
"port": 52773
},
"username": "_SYSTEM"
},
"hs":{
"webServer": {
"scheme": "http",
"host": "localhost",
"port":52776
},
"username": "_SYSTEM"
}
}
}
サーバ側でパスワードを変更した場合など、VSCode上に登録されたパスワードをクリアするためには、コマンドパレットを利用してクリアできます。
VSCodeのメニューバーから [View > Command Palette...] を選択し、[InterSystems Server Manager: Clear key chain] を選択します。どの接続情報のパスワードをクリアするか表示されるので、接続名を選択してクリアします。
接続完了後、 をクリックすると、サーバ内のクラス/ルーチン/インクルードファイルなどの情報を確認できます。
サーバ情報は読み取り専用の為、VSCode 上で編集したい場合は、ソースコードを右クリックし「Export」を選択します。
Export選択後、ワークスペース > src 以下にソースコードがコピーされます。
※システムコードは上書きしないようにご注意ください。
3、クラス定義を作ってみる
早速、クラス定義を作成し、HelloWorld! の文字列を出力するメソッドを作ります。
をクリックし、ワークスペースに戻ります。
開いたワークスペースに、パッケージ名と同名のフォルダを用意します。例では、Test としています。
定義例)
{
ClassMethod Hello()
{
write "Hello world! こんにちは!"
}
}
[Ctrl + スペース] を押すと以下のような入力候補が出ます。
コードの作成が完了したら、Ctrl + s で保存+コンパイルを行います。(Outputウィンドウを表示しておくとコンパイル結果が確認できます。)
ターミナルを起動し、クラスメソッドの実行を試します。
Hello world! こんにちは!
USER>
メモ:コンテナやLinux上のIRISに対しては、iris session インスタンス名 でIRISにログインできます。
例)
ノード: 0c6e3bc48ff6 インスタンス: IRIS
USER>
4、ルーチンを作ってみる
ルーチンの作成についての注意事項は、橋本さんに投稿いただいたこちらの記事がとても参考になります。ぜひご参照ください。
ワークスペース以下にルーチン用ファイルを作成します。拡張子は mac とします。
ルーチンでも [Ctrl + スペース] を押すと入力候補が表示されます。
ルーチン実行例は以下の通りです。
こんにちは、ルーチンです
USER>
5、デバッグの実行
クラス定義の場合、以下のようにメソッドの前に [Debug this method] と表示されます。
ObjectScript のコードをデバッグするためには、launch.json ファイルを作成し、デバッグ内容を定義しておく必要があります。
クラス定義の場合、メソッド名の上に [Debug this method] と表示されるので、ここをクリックすると以下の指示が出てきます。
(ルーチン作成の場合は、ワークスペース内に launch.json を作成すれば大丈夫です)
デバッグ用エクステンションのアイコン をクリックしてワークスペースからデバッグ用ウィンドウに切り替えます。
[create a launch.json file.] をクリックすると、以下のように環境選択が表示されるので [ObjectScript Debug] を選択します(以下赤枠)。
launch.json の雛形ファイルが開きます。
name は デバッグ名で、下図の赤枠のように表示されます。
デバッグ対象のコードを program に設定します。
(ルーチンをデバッグする場合は、ワークスペースにある .vscode フォルダの下に launch.json を作成し、program に実行したいルーチンを指定します。)
設定内容例は以下の通りです(コピーしてご利用ください)。
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "objectscript",
"request": "launch",
"name": "Debugテスト",
"program": "##class(Test.Class1).Hello()"
}
]
}
設定が完了したら launch.json を保存し、デバッグを開始します。