ken_nogi/ClaudePleasanter/新・稟議申請システム
Kenichiro NOGI 67cc3da6c8 up
2026-07-13 19:02:04 +09:00
..
.claude Pleasanterサイト仕様書パイプラインを再構築 2026-07-11 08:49:24 +09:00
.vscode up 2026-07-10 18:13:30 +09:00
docs Pleasanterサイト仕様書パイプラインを再構築 2026-07-11 08:49:24 +09:00
docs_old up 2026-07-13 19:02:04 +09:00
.gitignore Pleasanterサイト仕様書パイプラインを再構築 2026-07-11 08:49:24 +09:00
apply-site-config.js Pleasanterサイト仕様書パイプラインを再構築 2026-07-11 08:49:24 +09:00
build-desired-config.js up 2026-07-10 18:13:30 +09:00
config.example.json up 2026-07-10 18:13:30 +09:00
extract-site-config.js Pleasanterサイト仕様書パイプラインを再構築 2026-07-11 08:49:24 +09:00
generate-site-documentation-output.txt up 2026-07-10 18:13:30 +09:00
generate-site-documentation.js Update generate-site-documentation.js 2026-07-10 18:23:57 +09:00
get-site-config.js Pleasanterサイト仕様書パイプラインを再構築 2026-07-11 08:49:24 +09:00
md-to-pdf.js up 2026-07-10 18:13:30 +09:00
README.md Pleasanterサイト仕様書パイプラインを再構築 2026-07-11 08:49:24 +09:00

プリザンター サイト構成 取得・レビュー・反映ツール

全体の流れ

① node get-site-config.js
   → siteSettingJsons/site-{SiteId}_latest.json に構成生JSONを保存
   → 続けて自動的に extract-site-config.js が実行され、
     Scripts / Styles / ServerScripts / Processes / ガイドHTML が
     configs/site-{SiteId}_{サイト名}/ 配下に個別ファイルとして分割保存される
   → config.json の SiteId をカンマ区切りにすると、複数サイトをまとめて①の処理でループ取得する

② Claudeに「仕様書を作って」と依頼
   → siteSettingJsons/site-{SiteId}_latest.json と configs/site-{SiteId}_{サイト名}/ を
     Claudeが読み解き、docs/site-{SiteId}_{サイト名}_spec.md として仕様書化
     機械的なテンプレート処理ではなく、Claudeが構成内容をレビューしながら執筆する

③ configs/site-{SiteId}_{サイト名}/ 配下のファイルを直接編集、
   またはClaudeに「このスクリプトを◯◯に直して」等と修正を指示

④ node build-desired-config.js site-{SiteId}
   → 分割ファイルを再構成し、desired_config.json を生成(送信は行わない)

⑤ node apply-site-config.js
   → 実際には送信せず、差分・送信予定Body・curlコマンドのみ表示常にドライラン

⑥ 内容を確認し、問題なければ表示されたcurlコマンドを手動実行

--- (任意:非エンジニア向けドキュメントが必要な場合) ---

⑦ Claudeに「概要書を作って」と依頼
   → 技術仕様書とは別に、ColumnName等の内部コードを含まない業務向け概要書を
     docs/site-{SiteId}_{サイト名}_overview.md として生成siteSettingJsons/・configs/とは異なりGit管理対象

⑧ 複数サイトが連携する場合、Claudeに「全体の関連図を作って」と依頼
   → docs/site-relations_overview.md として、サイトツリー・明示的連携Links・
     暗黙的連携ServerScriptsのハードコード参照を1枚にまとめたドキュメントを生成

⑨ node md-to-pdf.js ./docs/*.md
   → docs/ 配下の全Markdownspec.md / overview.md / site-relations_overview.mdを
     同名の .pdf に一括変換

extract-site-config.jsnode get-site-config.js の中から自動実行されるため、通常は個別に実行する必要はありません (取得済みの latest.json から抽出をやり直したい場合のみ、単独で node extract-site-config.js を実行してください)。

仕様書・概要書②⑦⑧はClaudeが対話的に読み解いて執筆するものです。過去に generate-site-documentation.js という 機械的なテンプレート処理での一括自動生成を試みましたが、サイト間の暗黙的な関連や業務的な類推までは反映できず 品質面の問題があったため、現在のワークフローでは使用していません(ファイル自体は後方互換のため削除せず残置)。

初回セットアップ

  1. config.example.jsonconfig.json にコピー
  2. BaseUrl / SiteId / ApiKey を実環境の値に書き換え
    • SiteId は単一サイトなら数値(例: 12345)、複数サイトをまとめて取得したい場合は カンマ区切りの文字列(例: "12345,23456,34567")で指定できます
    • APIキーの発行方法: https://pleasanter.org/manual/api-key
    • APIキー発行にはテナント管理者権限が必要ですサイト設定の更新系APIを使う場合
  3. Node.js 18以降がインストールされていることを確認組み込みfetchを使用、追加パッケージ不要

ファイル構成

ファイル 役割
config.json 接続情報BaseUrl/SiteId/ApiKey※Git管理・共有厳禁
config.example.json 上記のテンプレート
get-site-config.js サイト構成取得(getsitesiteSettingJsons/site-{SiteId}_latest.json に保存し、続けて extract-site-config.js を自動実行。SiteId をカンマ区切りにすると全サイトを1回の実行で順次取得
extract-site-config.js latest.json から Scripts/Styles/ServerScripts/Processes/ガイドHTML を configs/site-{SiteId}_{サイト名}/ に個別ファイル分割(get-site-config.js から自動呼び出し、または単独実行も可)
build-desired-config.js 分割ファイルを再構成し desired_config.json を生成(送信は行わない
apply-site-config.js 希望構成JSONとの差分表示・送信内容確認送信は行わない
generate-site-documentation.js 未使用(レガシー)。仕様書・概要書を機械的なテンプレート処理で一括自動生成する旧スクリプト。品質面の問題から現在のワークフローでは使用しない。後方互換のため削除はしていない
md-to-pdf.js Markdownファイルを同名の.pdfに変換追加npmパッケージ非依存、OS標準のEdge/Chromeヘッドレス印刷を利用
desired_config.json Claude、または build-desired-config.js が生成する「希望構成」
siteSettingJsons/site-{SiteId}_latest.json 直近取得した現状構成の生JSONClaudeへのアップロード対象。.gitignore対象)
configs/site-{SiteId}_{サイト名}/manifest.json 分割ファイルの一覧Id/Title/ファイル名の対応表)
configs/site-{SiteId}_{サイト名}/scripts/*.js クライアントスクリプト本体1ファイル=1スクリプト
configs/site-{SiteId}_{サイト名}/styles/*.css スタイル本体
configs/site-{SiteId}_{サイト名}/serverscripts/*.js サーバースクリプト本体
configs/site-{SiteId}_{サイト名}/html/*.html ガイドHTMLGridGuide等。値が空でないもののみ
configs/site-{SiteId}_{サイト名}/processes.json プロセス設定(SiteSettings.Processes の定義ファイル)
docs/site-{SiteId}_{サイト名}_spec.md SiteSettingsを読み解いたMarkdown技術仕様書Claudeが執筆。Git管理対象
docs/site-{SiteId}_{サイト名}_overview.md 業務担当者向けの概要書ColumnName等の内部コードを含まない機能説明。Git管理対象
docs/site-relations_overview.md 複数サイトの全体関連図(サイトツリー・明示的/暗黙的連携をまとめたもの。Git管理対象
docs/*.pdf 上記各Markdownに対応するPDF版

Scripts/Styles/ServerScripts/Processes の反映について

  • build-desired-config.js が生成する desired_config.jsonMode:"partial"updatesitesettings)です。 Scripts / Styles / ServerScripts / Processes の4項目のみを対象とし、それ以外のサイト設定GridColumns等には触れません。
  • ガイドHTMLhtml/*.htmlはSiteSettingsではなくサイトデータ直下の項目のため、updatesitesettings では反映できません。 反映したい場合は Mode:"full"updatesite)用の別の desired_config.json を用意し、Title/ReferenceType 等の必須項目とあわせて指定してください。
  • 抽出(extract-site-config.js)はその時点のスナップショットです。抽出後に元サイトが他の人・画面から変更されている可能性がある場合は、 反映前に node get-site-config.jsnode extract-site-config.js を再実行し、最新状態を取り直してから編集してください。

参照した公式API仕様

安全設計について

  • apply-site-config.js常にドライラン です。デフォルトでは実際のAPI呼び出しコード自体に到達しないようガードENABLE_ACTUAL_SEND = false 固定)しています。
  • 反映する際は、表示されたcurlコマンドをご自身で実行するか、内容を確認の上でスクリプトを改修してくださいClaudeが安全策なしに自動実行することはありません
  • APIキーは config.json にのみ保持し、Claudeにアップロードする latest.json には含まれませんget時のレスポンスにAPIキーは含まれないため。念のためアップロード前に目視確認することをおすすめします。
  • siteSettingJsons/configs/ はいずれもScripts/ServerScripts本文に秘密情報がハードコードされている場合があるため .gitignore 対象です。docs/ 配下の仕様書・概要書・PDFのみがGit管理対象です。

注意事項

  • プリザンターのバージョンにより get レスポンスの構造(Response.Site.SiteSettings の位置など)が異なる場合があります。初回実行時にコンソールへ出力されるキー構造を確認してください。
  • サイト設定の更新系APIは テナント管理者権限のAPIキー が必要です一般ユーザーのAPIキーでは403等になります