「バージョンを教えてください、と言われて Version.json を開いたのに、それらしい番号がどこにも見当たらない」 「OS・データベース・アプリのバージョンを一式で出してほしいと頼まれたが、どこを見るのが正解か分からない」 「構築時のドキュメントに書いてある番号を、そのまま答えていいのか判断がつかない」
業務システムの環境情報は、聞かれてから探すとどこかで必ず外します。名前がそれらしいファイルが正解とは限らず、記録に残っている番号が現在の値とも限らないからです。
この記事では、Pleasanter の本体バージョンを確実に取る方法、OS・.NET・データベースまで含めた環境情報一式の取り方、そして「記録を答えにしてはいけない項目」の見分け方を整理します。
-
App_Data/Parameters/Version.json はバージョン番号ではなく画面の表示設定。名前から期待して開くと外す - 本体バージョンは配置ディレクトリの
Implem.Pleasanter.deps.json に出る。内訳ごと取れるのでそのまま回答に使える - OS は
/etc/os-release、.NET は dotnet --list-runtimes、データベースは SELECT version() かクラウド側の API - データベースのバージョンは構築時の記録を答えにしない。自動マイナーバージョンアップで上がっている
- 実機に入るまで時間がかかるなら、記録で分かる分を先に表で返し、実機が要る項目だけ列挙して待ってもらう
目次を開く
Version.json にバージョン番号は書かれていない
Pleasanter の設定ファイルは App_Data/Parameters/ にまとまっています。この中に Version.json があるため、バージョンを聞かれたらまずここを開きたくなります。
ところが、このファイルの中身は画面の表示に関する設定です。
{
"ShowDeadline": true,
"ShowLicensee": true
} ShowDeadline(期限の表示)や ShowLicensee(ライセンシー名の表示)といった真偽値が並ぶだけで、バージョン番号は1つも入っていません。ファイル名から期待して開くと、ここで数分溶かします。
本体のバージョンは Implem.Pleasanter.deps.json に出る
確実なのは、配置ディレクトリ(実行ファイルが置かれている場所)にある Implem.Pleasanter.deps.json を見ることです。これは .NET がビルド時に解決した依存関係を版つきで記録するファイルなので、本体のアセンブリ名で絞れば番号が取れます。
cd /path/to/pleasanter/Implem.Pleasanter
grep -o '"Implem\.[A-Za-z]*/[0-9.]*"' Implem.Pleasanter.deps.json | sort -u "Implem.DefinitionAccessor/1.5.4"
"Implem.Libraries/1.5.4"
"Implem.Pleasanter/1.5.4.0" jq が入っているなら、こちらのほうが読みやすい出力になります。
jq -r '.libraries | keys[] | select(startswith("Implem."))' Implem.Pleasanter.deps.json 本体・定義アクセサ・共通ライブラリの内訳まで一度に取れるので、そのまま回答に貼れます。
環境情報一式は「記録で足りるか」で分ける
環境情報をまとめて聞かれたときは、項目ごとに取り方と、構築時の記録で代用してよいかを分けて考えます。
| 項目 | 取り方 | 記録で代用できるか |
|---|---|---|
| OS のバージョン | cat /etc/os-release | ○ 入れ替えない限り変わらない |
| .NET / ASP.NET Core | dotnet --list-runtimes | △ パッチ版はパッケージ更新で上がる |
| Pleasanter 本体 | Implem.Pleasanter.deps.json | △ 更新作業の記録が漏れることがある |
| データベース(自前構築) | SELECT version(); | △ 手動更新の記録漏れがある |
| データベース(マネージド) | クラウド側の API | ✕ 自動更新で勝手に上がる |
OS と .NET はログインできれば2コマンドで終わります。
cat /etc/os-release
dotnet --list-runtimes /etc/os-release は VERSION_ID にポイントリリースまで入るので、「Ubuntu 22.04.4」のような粒度で答えられます。dotnet --list-runtimes は Microsoft.AspNetCore.App と Microsoft.NETCore.App の両方が並ぶので、どちらのパッチ版かを取り違えないようにしてください。
マネージドなデータベースを使っている場合は、実機に入らずクラウド側の API で取れます。
aws rds describe-db-instances \
--query 'DBInstances[].{id:DBInstanceIdentifier,engine:Engine,version:EngineVersion,autoMinor:AutoMinorVersionUpgrade}' \
--output table 構築時の記録を答えにしてはいけない項目
上の表で「✕」を付けたのがマネージドなデータベースです。自動マイナーバージョンアップが有効だと、構築時に記録した番号から運用中に勝手に上がっています。上のコマンドで autoMinor が true なら、記録は当てになりません。
環境情報の照会でいちばん事故になりやすいのがここです。データベースのバージョンだけは、記録ではなく実機または API の値を出してください。
実機に入れるまで相手を待たせない返し方
多要素認証のコード待ちや踏み台サーバーの申請で、実機に入るまで時間がかかることがあります。全項目が揃うまで黙っていると、相手も止まります。
先に、構成管理のコード(Terraform など)や構築時ドキュメントで分かる分を表にして返し、実機が要る項目だけを列挙して待つ。これだけで相手はその間に動けます。
本番と開発は「一致」と「差分」を分けて書く
環境情報を返すときは、本番と開発で一致している項目と、差分になっている項目を分けて書きます。差分のほうが後で効いてくるからです。
| 観点 | 起きがちな差 | 影響 |
|---|---|---|
| データベースの配置 | 本番は別ホストで暗号化接続が必須/開発は同一ホストに同居 | 接続文字列と証明書の扱いが変わる |
| .NET のパッチ版 | 本番だけ更新が遅れている | 本番でしか再現しない不具合の温床 |
| メモリ量 | 開発機のほうが小さい | 負荷時の挙動を開発側で確かめられない |
追加する機能がデータベース直結だったり、サーバーへのファイル配置を伴ったりする場合、この差分がそのまま検証時の落とし穴になります。配置を伴うなら、配布物にもその差分を含める必要が出てきます。
まとめ
-
Version.jsonは表示設定のファイルで、バージョン番号は入っていない - 本体バージョンは
Implem.Pleasanter.deps.jsonをgrepかjqで見る - OS は
/etc/os-release、.NET はdotnet --list-runtimes - データベースのバージョンだけは記録を信用せず、実機か API の値を出す
- 返答は「記録で分かる分を先に」「一致と差分を分けて」の2点を守る
よくある質問(FAQ)
Version.json は何のためのファイルですか?
画面に何を表示するかを切り替えるための設定ファイルです。期限やライセンシー名の表示可否といった真偽値が入っています。バージョン番号とは無関係なので、環境情報の照会では開く必要がありません。
Implem.Pleasanter.deps.json が見つかりません
実行ファイルの配置ディレクトリではなく、ソースツリーやインストーラの展開先を見ている可能性があります。稼働中のプロセスがどこのディレクトリを使っているかを確認してから探してください。ビルド構成によってはファイル名が異なることもあるので、Implem.Pleasanter を含む .deps.json を配置ディレクトリ配下で探すのが確実です。
管理画面からバージョンを確認できますか?
版によって表示の有無や場所が変わります。手元の環境の管理画面を確認したうえで、見当たらなければ本記事の deps.json の方法を使ってください。ファイルから取る方法はどの版でも同じ手順で通ります。
開発環境と本番でバージョンが違っていたら?
まず差分そのものを報告し、揃えるかどうかは検証内容で判断します。追加する機能がデータベースに直接触る、あるいはサーバーへファイルを配置するものであれば、バージョン差はそのまま検証の抜けになるので先に揃えてください。画面まわりの変更だけなら、差分を記録に残したうえで進める判断もあります。
