Skip to content

IndexCreator の導入と接続設定 ​

第4版作成 最終更新 (日本時間)
確認バージョン1.5.8.1

IndexCreator は、プリザンターのサイト設定と既存索引を読み、追加索引を計画・作成・更新するコンソールアプリです。サイト一覧と選択肢マスタの SQL View も別の操作で生成できます。本ページは IndexCreator v0.3.0(最新版)を対象にします。版ごとの差は 概要 の対応表と 変更履歴 を参照してください。

ソースと配布物は GitHub で公開されています。ライセンスは AGPL-3.0-or-later です。本体のソースコードを変更する必要はありません。

必要な環境 ​

項目内容
OSWindows x86 / x64、Linux x64、Linux arm64(v0.3.0 以降は共通 ZIP 1 つ)
Runtime.NET Runtime 10。配布物の実行に SDK は不要
DBMSSQL Server、PostgreSQL、MySQL
接続権限対象 DB のサイト設定・索引定義の読み取りと、追加索引の作成・変更に必要な owner 相当の権限
本体設定本体の Parameters を読み取れる配置と、索引適用時の DisableIndexChangeDetection=true

SQL View を適用する場合は、対象スキーマでの View 作成・変更権限も必要です。MySQL の本体 owner に標準で付く権限には CREATE VIEW・SHOW VIEW が含まれないため、DB 管理者が必要な権限を追加するか、別の接続を用意します。

配布 ZIP を取得する ​

v0.3.0 の Release の Assets から、VehicleVision.PleasanterTools.IndexCreator-0.3.0-portable.zip と同名の .sha256 を取得します。Source code の ZIP は、実行用の配布物ではありません。

この ZIP は OS・アーキテクチャ共通のフレームワーク依存版で、Windows x86 / x64、Linux x64 / arm64 のどれでも使えます。Windows 版 Azure Kudu のように dotnet ホストが x86 の環境でも同じ ZIP です。

配置前に dotnet --info の Host Architecture を確認し、そのホストと同じアーキテクチャの .NET 10 ランタイムが入っていることを確認します。

旧版(v0.3.0 より前)の ZIP の選び方

v0.2.0 以前は、OS と dotnet ホストのアーキテクチャごとに別の ZIP でした。Windows x86 版は v0.1.1 で追加されました。

OSZIP
Windows x86(Windows 版 Azure Kudu 向け)IndexCreator-win-x86.zip
Windows x64IndexCreator-win-x64.zip
Linux x64IndexCreator-linux-x64.zip
Linux arm64IndexCreator-linux-arm64.zip

Windows 版 Azure Kudu の dotnet ホストが x86 のとき、win-x64 の DLL を実行すると The assembly architecture is not compatible with the current process architecture と表示されて起動できません。そのため v0.1.1〜v0.2.0 では x86 版を使います。v0.3.0 以降は共通 ZIP に統合されたため、この選択は不要です。

旧版から更新するとき v0.3.0 以降

v0.3.0 で、実行する DLL の名前が IndexCreator.dll から VehicleVision.PleasanterTools.IndexCreator.dll に変わりました。旧版の IndexCreator フォルダーへ上書き展開すると旧 DLL が残るため、フォルダーを入れ替えます。dotnet IndexCreator.dll ... を呼ぶスクリプト・ジョブと、ZIP 名を指定するダウンロード処理も直してください。

Windows でのハッシュ確認例です。ファイルを保存したフォルダーで実行します。

powershell
$zip = 'VehicleVision.PleasanterTools.IndexCreator-0.3.0-portable.zip'
$expected = ((Get-Content "$zip.sha256" -Raw).Trim() -split '\s+')[0]
$actual = (Get-FileHash -LiteralPath $zip -Algorithm SHA256).Hash
if ($actual -ne $expected) { throw 'SHA256 mismatch' }
Expand-Archive -LiteralPath $zip -DestinationPath .\index-creator-release

本体・CodeDefiner の隣へ配置する ​

展開した IndexCreator フォルダーを、Implem.Pleasanter と Implem.CodeDefiner の兄弟として配置します。

text
pleasanter/
├── Implem.Pleasanter/
│   └── App_Data/Parameters/
├── Implem.CodeDefiner/
└── IndexCreator/
    └── VehicleVision.PleasanterTools.IndexCreator.dll

IndexCreator を作業フォルダーにして起動します。

powershell
Set-Location C:\web\pleasanter\IndexCreator
dotnet VehicleVision.PleasanterTools.IndexCreator.dll help

本体フォルダーは実行ファイルの配置から解決します。明示する場合は /p で Implem.Pleasanter のフォルダーを指定します。Parameters フォルダーを指定するオプションではありません。

powershell
dotnet VehicleVision.PleasanterTools.IndexCreator.dll plan /p "C:\web\pleasanter\Implem.Pleasanter"

Linux の絶対パスも使えます。

bash
dotnet VehicleVision.PleasanterTools.IndexCreator.dll plan /p /opt/pleasanter/Implem.Pleasanter

相対パスは作業フォルダー基準です。Git Bash は /p などをパスに変換することがあるため、Windows では PowerShell または cmd.exe を使います。-- や -p の書式は受け付けません。

本体の接続設定を読む ​

通常は App_Data/Parameters/Rds.json の Dbms と OwnerConnectionString、Service.json の Name を使います。接続文字列の #ServiceName# はサービス名に置換します。Env.json に ParametersPath がある場合は、そのフォルダーから読みます。

接続文字列は、次の順で最初の空でない値を使います。SaConnectionString は使いません。

  1. 環境変数 INDEXCREATOR_CONNECTION_STRING
  2. Rds.json の OwnerConnectionString
  3. 環境変数 <Service.EnvironmentName>_OwnerConnectionString
  4. 環境変数 <Service.Name>_Rds_<Dbms>_OwnerConnectionString
  5. 環境変数 <Service.Name>_Rds_<Dbms>_ConnectionString
  6. 環境変数 <Service.Name>_Rds_OwnerConnectionString
  7. 環境変数 <Service.Name>_Rds_ConnectionString
設定優先順位
DBMS/dbms → INDEXCREATOR_DBMS → Rds.json
スキーマ/schema → INDEXCREATOR_SCHEMA → DBMS ごとの既定値
SQL コマンドのタイムアウトRds.json の SqlCommandTimeOut。0 は無期限

スキーマの既定値は SQL Server が dbo、PostgreSQL・MySQL が Service.Name です。DBMS の指定値は SQLServer・PostgreSQL・MySQL です。

資格情報は保護された設定ファイルや環境変数で渡し、コマンドライン・掲載用 JSON に書きません。接続できないときは、設定フォルダー、接続先、権限、TLS 証明書の名前と信頼を確認します。ツールは証明書検証を自動で無効化せず、接続文字列や DB 例外の詳細をログに出しません。

索引適用前の設定 ​

Rds.json の DisableIndexChangeDetection を true にします。既存の設定をバックアップし、他の項目を残して、この項目を追加・変更してください。

json
"DisableIndexChangeDetection": true

上のコードは変更する1項目だけです。ファイル全体を置き換える JSON ではありません。ツール自身は本体の設定ファイルを変更しません。

この設定は CodeDefiner の索引変更検出に関係します。IndexCreator の plan は未設定でも警告を出して計画できますが、_rds / apply は未設定または false なら停止します。SQL View のコマンドには、この追加索引用のチェックは適用されません。

初回の確認 ​

DB と本体設定のバックアップ・復旧手順を用意し、代表的な一覧の応答時間と実行計画を記録します。計画だけ実行し、候補と診断を確認します。

powershell
dotnet VehicleVision.PleasanterTools.IndexCreator.dll plan /output indexes-plan.sql

既定の索引対象は1万件以上のサイトです。候補がないときも、まず件数・保存ビューの条件・診断を確認します。列の存在はツールが確認しますが、値の長さ、選択度、実行計画の最適性を保証するものではありません。適用前に登録・更新の影響も検証してください。

ログと作業フォルダー ​

起動時の作業フォルダーに logs/VehicleVision.PleasanterTools.IndexCreator_yyyyMMdd_HHmmss.log を作ります。コンソールとログは英語、ファイルは UTF-8 です。同じ秒に起動した処理は同じファイルに追記します。ログを作れない場合は DB 操作を開始しません。自動削除はしないため、保持期間を決めて運用します。

関連ページ ​

変更履歴

第4版ツールのマニュアルをツール別の独立した構成にし、変更履歴とバージョン別の機能差を追加した
第3版IndexCreator v0.2.0のリンク選択肢と項目連携の制約を説明
第2版IndexCreator v0.1.1 と Azure Kudu 向け x86 版の導入手順を更新
第1版IndexCreator の操作手順と MCP OAuth v0.2.0 の接続方法を更新する