前回のあらすじ
前回は「ACR Viewer for VSCode」を VS Code Marketplace / Open VSX に公開するまでを書いた。今回はその続きで、v0.0.6 の話をする。
0.0.6 で一番大きかったのは、VS Code の中に、ACR の帳票開発環境を持ち込んだことだ。
0.0.6 で何が変わったか
0.0.5 までは、Markdown・テキスト・HTML・ソースコードを、実寸で印刷プレビューして PDF にする拡張だった。
0.0.6 では、ACR の帳票テンプレート(JSON)そのものを扱えるようになった。
- テンプレート定義のデザイン表示(Ctrl+Alt+8)
- データ JSON を結合したプレビュー(ページ送り付き、Ctrl+Alt+7)
- 表示結果の PNG / PDF 保存
- 表示言語の選択(English / 日本語 / Français)
印刷ツールから、帳票を開発するための道具に一歩進んだ、ということだ。
なぜこれが大きいのか
ACR の帳票定義は JSON だ。これまでは、AcrossReportDesignerで帳票を作り、確認していた。
帳票のデータを作る人や、JSON を直接扱う開発者にとっては、VS Code から離れずに結果を確認できたほうが早い。この機能は、VS Code でデータを作る人が、結果を確認できるようにするためのものだ。同時に、Designer を知ってもらう入口にもなる。AcrossReportDesigner には、一切手を入れていない。
使い方
- テンプレート JSON を VS Code で開く(例:
sample-shiire.json) - Ctrl+Alt+8 で、デザインを表示する
- Ctrl+Alt+7 で、データ結合の画面を開く
- 「Select file」でデータ JSON を選び、「Render」を押す
- ページ送りで確認し、「Save PNG」「Save PDF」で保存する
【画像: デザイン表示とデータ結合プレビューを並べた画面】
サンプルの sample-shiire.json は、仕入伝票一覧(明細単位)の帳票だ。ActiveReports の RPX から変換した JSON で、sample-shiire.data.json を結合すると 3 ページ分が描画される。PNG と PDF はどちらも 3 ページ分が保存された。PDF と PNG には、ウォーターマークが入る仕様にしている。
設計方針
方針1: ビジュアル編集は持たせない
ドラッグ&ドロップでの編集機能は、VS Code の拡張には入れないと決めた。AcrossReportDesigner との役割分担を保つためだ。VS Code では、標準の JSON エディタでテンプレートを編集し、結果をプレビューで確認する。見た目で作りたい人は、Designer を使ってもらう。
方針2: Designer を起動する案はやめた
最初は、既存の AcrossReportDesignerを、VS Code から別ウィンドウで起動する案を考えていた。Avalonia の WASM 版を、VS Code の webview に埋め込む案も検討した。どちらも採用しなかった。
最終的には、Designer 本体がなくても、拡張の中だけで完結する形にした。既存のネイティブモジュール(NAPI-RS で Rust の描画コアを呼ぶもの)に、テンプレートを描画する新しい入口(render_template)を足し、webview に PNG で表示する。新しい製品名は立てず、ACR Viewer for VSCode の機能拡張として実装した。
今後の方針
次の 2 つは、0.0.6 のリリースノートに載せた機能ではなく、今後の方針だ。
- SQLite ファイルと SQL を指定して、データを結合したプレビューを出す
- DataField の表示に、コードからラベルへの変換リスト(
value_list)と、値がないときのフォールバック(fallback_text)を足す
おまけ: 公開後の後始末(Open VSX の名前空間)
v0.0.6 は、3 プラットフォーム(win32-x64 / linux-x64 / darwin-arm64)の .vsix を、GitHub Releases・Open VSX・VS Code Marketplace の 3 か所に出した。
Open VSX のページには、公開後もオレンジの警告が出続ける。
このユーザーアカウントは、名前空間 "across-systems" の検証済みの公開者ではない
名前空間を、自分のものだと認めてもらう必要がある。
申請は GitHub 上の、人の手作業
Eclipse 財団の GitHub(EclipseFdn/open-vsx.org)に、「Claim namespace ownership」の issue を作る。担当者が内容を読んで、足りなければコメントで証拠を求め、納得したら所有者にしてくれる。人が読んで判断する手続きで、全部英語で進む。
フォームには、4 つのオプションがある。
| オプション | 対象 |
|---|---|
| Option 1 | Marketplace の publisher で、package.json に repo を書いた拡張を公開している |
| Option 2 | Marketplace の publisher だが、拡張がない、または repo がない |
| Option 3 | Marketplace の publisher ではない |
| Option 4 | 上のどれにも当てはまらない(一番時間がかかる) |
うちは Option 1 だ。Option 2 と 3 には「DNS に TXT レコードを登録する」方式があり、私は最初、DNS の登録が必要だと思い込んでいた。しかし、Option 1 には DNS の項目は出てこない。DNS には触らずに済んだ。
担当者の要求: Marketplace への書き込み権限
担当者から、「この GitHub ID が Marketplace の publisher アカウントに書き込み権限を持つことを確認したい」と返信が来た。テンプレートに書かれた方法に従って、次のように対応した。
- Marketplace の管理画面で、自分の publisher の Members を開く
- 「Add」を押し、テンプレートに書かれた Open VSX 管理者の User Id を、Reader(閲覧のみ)で追加する
- issue に、権限を付与したことをコメントする
Reader は、申請が閉じられたあとで外す。
自分でやらかした: 二重申請
9月13日に、同じ名前空間の申請を出していた。それを忘れて、9月21日に、もう一度申請を作ってしまった。「Duplicate」とコメントして閉じた。さらに、最初の申請に書いた package.json の repository の URL が、Marketplace に載っている実際の値と食い違っていた。コメントで訂正した。
- 申請の前に、既存の申請がないか探す。
- 証拠に書く URL は、Marketplace の掲載ページの値と照合する。
まとめ
- 0.0.6 で、ACR の帳票テンプレート(JSON)を、VS Code の中でデザイン表示し、データを結合して、PNG / PDF に保存できるようにした。
- ビジュアル編集は持たせず、Designer との役割分担を保つ。
- Open VSX の名前空間の申請は、GitHub 上の人の手作業で、返事を待つ。