以下の内容はhttps://kamatimaru.hatenablog.com/entry/2025/01/28/233135より取得しました。


ChatGPTにindex.htmlペラ1のSQL整形ツール(WASM x Python)を作ってもらった

概要

ChatGPTに自分用のSQL整形ツールを作ってもらった。

GitHub Pagesで公開している。 delhi09.github.io

コード

github.com

背景

  • いまだにいいSQL整形ツールを見つけられていない
  • ※ 自分が求めるいいSQL整形ツール
    • どんな環境でも実行できる
    • 設定なしでよしなにある程度整った見栄えに整形してくれる
    • お手軽に実行できる(=エディタのプラグインSQLクライアントの機能ではない)
    • 機密情報も安心して入力できる(=外部ツールはNG、サーバーサイド機能を持たない)
  • → textareaに入力したSQLを整形してくれるindex.html x JSをホストすればよさそうだなと思った
  • → JS製の信頼できそうなSQL整形ライブラリが見つからなかった
    • ※ 私はJSのエコシステムに疎いので、探せばあるのかもしれない
  • PythonであればsqlparseというDjangoでも使われている信頼できるライブラリがあるので、これをWASMで実行すればいいのでは?と考えた

やったこと

WASMに関して、「ブラウザ上でJS以外のプログラミング言語を実行できる何か」程度の知識しかないので、ChatGPTにできるか聞いてみたら、「はい」という返事とともにコードまで生成してくれた。

ただ、このコードにはSQLが改行を含む場合にエラーになる不具合があった。

1行のSQLの場合は成功する

改行するSQLの場合にエラーになる

上記の事象をChatGPTに伝えたところ、以下のJSON.stringifyを2回かけてサニタイズするコードを提案してくれた。

これで改行ありのSQLでも整形されるようになった。

まだなぜJSON.stringifyを2回かけるとエラーが解消されたのか理解しきれていないが、コードを読むといわゆるevalっぽいことをやっている → JSで埋め込んだテキストの改行がサニタイズされてなくてPythonがインデントと解釈してしまったんだなーというのは何となく分かった。

ほしかったツールが作れたのでよしとする。




以上の内容はhttps://kamatimaru.hatenablog.com/entry/2025/01/28/233135より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14