padtools_ts はPAD図を活用することを目的として作成された、PAD作成ツールです。 思考を止めず記述できることを目指しています。
このプロジェクトは、padtools (https://github.com/knaou/padtools) をTypeScriptで書き直したものです。
インストール不要で、ブラウザからすぐにPAD図の作成を試すことができます。
プロジェクトの開発に必要な依存関係をローカルにインストールするには、以下のコマンドを実行します。
npm installプロジェクトのテストを実行するには、以下のコマンドを実行します。
npm testテストカバレッジレポートを生成するには、以下のコマンドを実行します。
npm run test:covpadtools_ts は、SPDファイルをSVGに変換するCLIツールを提供します。
npx padtools_ts -i sample_input.spd -o sample_output.svgまた、開発時には tsx を使って直接ソースコードを実行することも可能です。
npm run start -- -i sample_input.spd -o sample_output.svg上記の npm run start は、package.json のスクリプト定義に基づいて tsx src/cli/cli.ts を実行します。
Webブラウザ上で動作するエディタを起動するには、以下のコマンドを実行します。
npm run start:webこのコマンドを実行すると開発用サーバーが立ち上がり、通常、http://localhost:1234 でツールにアクセスできるようになります。
padtools_ts は以下のオプションをサポートしています。
-V, --version: バージョン番号を出力します。-i, --input <inputFilePath>: 入力SPDテキストファイルへのパスを指定します。-o, --output <outputFilePath>: 出力SVGファイルへのパスを指定します。-p, --prettyprint: 出力SVGを整形して出力します(svgoを使用)。--font-size <fontSize>: SVGのフォントサイズを指定します。--font-family <fontFamily>: SVGのフォントファミリーを指定します。--stroke-width <strokeWidth>: SVGの線の太さを指定します。--stroke-color <strokeColor>: SVGの線の色を指定します。--background-color <backgroundColor>: SVGの背景色を指定します。--base-background-color <baseBackgroundColor>: SVGのベース背景色を指定します。--text-color <textColor>: SVGのテキスト色を指定します。--line-height <lineHeight>: SVGの行の高さを指定します。--list-render-type <listRenderType>: SVGのリスト描画タイプを指定します (OriginalまたはTerminalOffset)。-h, --help: コマンドのヘルプ情報を表示します。
padtools_ts は、SPDファイルをSVGに変換するREST APIを提供します。Swagger UIを使用してAPIをテストできます。
APIサーバーを起動するには、以下のコマンドを実行します。
npm run start:apiこれにより、通常、ローカルアドレス (例: http://localhost:3000) でサーバーが起動します。
APIのドキュメントとテストは、Swagger UIで確認できます。
- URL:
http://localhost:3000/api-docs
APIサーバーの稼働状況を確認します。
レスポンス:
{
"status": "ok"
}SPDテキストをSVGに変換します。
リクエストボディ:
{
"spd": ":terminal Start\nprocess\n:terminal End",
"options": {
"fontSize": 14,
"fontFamily": "monospace",
"strokeWidth": 1,
"strokeColor": "#000000",
"backgroundColor": "#ffffff",
"baseBackgroundColor": "none",
"textColor": "#000000",
"lineHeight": 1.2,
"listRenderType": "TerminalOffset",
"prettyprint": true
}
}レスポンス:
{
"svg": "<svg>...</svg>"
}SPDテキストをSVGに変換し、ファイルとしてダウンロードします。
リクエストボディ:
POST /convert と同じです。
レスポンス:
SVGファイル (image/svg+xml) が返されます。
fontSize: フォントサイズ (数値)fontFamily: フォントファミリー (文字列)strokeWidth: 線の太さ (数値)strokeColor: 線の色 (文字列)backgroundColor: 背景色 (文字列)baseBackgroundColor: ベース背景色 (文字列)textColor: テキスト色 (文字列)lineHeight: 行の高さ (数値)listRenderType: リスト描画タイプ (OriginalまたはTerminalOffset)prettyprint: SVGを整形して出力 (真偽値)
このプロジェクトには、Webベースのツールも含まれています。
開発モードでWebツールを起動するには、以下を実行します。
npm run start:webこれにより、通常、ローカルアドレス (例: http://localhost:1234) でブラウザにツールが開きます。
本番用にWebツールをビルドするには、以下を実行します。
npm run build:webこれにより、dist-web ディレクトリに静的ファイルが生成されます。
Webツールをビルドし、GitHub Pages にデプロイするための準備を行うには、以下を実行します。
npm run build:web:gh-pagesこのコマンドは gh-pages ディレクトリに静的ファイルを生成し、GitHub Pages で Jekyll プロセスが実行されないように .nojekyll ファイルを作成します。このコマンドの実行後、GitHub Actions のワークフローが自動的にこれらのファイルを GitHub Pages にデプロイします。
このプロジェクトはMITライセンスです。詳細については、LICENSEファイルをご覧ください。
このプロジェクトでは、以下の主要なオープンソースライブラリを使用しています。
- commander: CLIコマンドの解析に使用。MIT License
- xml-formatter: SVG出力の整形 (
--prettyprintオプション) に使用。MIT License - svgo: SVGの最適化(
--prettyprintオプションが有効な場合)に使用。MIT License - eastasianwidth: 文字の幅計算に使用。MIT License
- hono: REST APIサーバーの実装に使用。MIT License
- @hono/node-server: Node.jsでHonoを実行するために使用。MIT License
- @hono/zod-openapi: OpenAPI仕様の生成に使用。MIT License
- @hono/swagger-ui: APIドキュメントのSwagger UI表示に使用。MIT License
- zod: スキーマバリデーションに使用。MIT License
各ライブラリのライセンス詳細については、それぞれのリンク先をご確認ください。
