Skip to content

Latest commit

 

History

History
266 lines (197 loc) · 14 KB

README.ja.md

File metadata and controls

266 lines (197 loc) · 14 KB

tuna-mayonnaise

license CodeQL Codacy Badge GitHub go.mod Go version (subdirectory of monorepo) go deps scan nodejs deps scan

他の言語で読む:English日本語

TUNA-Mayonnaise(ツナマヨ)は、ノードベースエディタ上でJSONやHTMLを作成し、APIとして提供するコマンドラインツールです。

目次

CLICK

これなに

世の中には多くのWEBフレームワークがあり、貴方はそのどれか一つ、またはいくつかを使ってWEB開発をしているはずです。
そのいずれのフレームワークであっても、貴方は多くの記述パターンを発見し、同じ処理を書くことに飽き飽きしていることでしょう。

そこで、パターンは全て設定ファイルに書いてしまいたい!と思った貴方は、極めて優秀なエンジニアです。
ただYAMLにせよJSONにせよ、昨今のWEB開発の記述パターンを表現するには少し力不足です。

であれば、ビジュアルプログラミングのUI上で、各設定を線と線で結び表現してはどうでしょうか。 そんな試みから生まれたのが、このおにぎりの具として最も有名なTUNA-Mayonnaise(ツナマヨ)です。

始め方

インストール方法

MacOSの場合 (Homebrew)

# インストール
brew install solaoi/tap/tuna
# アップデート
brew upgrade tuna

その他OSの場合 (実行ファイルを直接ダウンロード)

こちらから 各OSごとの実行ファイルをダウンロードできます。

# wget または curl でインストール
## releasesタブの最新のバージョンを指定してください。
VERSION=v0.0.19
## 利用OSを指定してください。
OS=linux_amd64
## wget経由の場合
wget https://github.com/solaoi/tuna-mayonnaise/releases/download/$VERSION/tuna_${OS}.tar.gz
## curl経由の場合
curl -LO  https://github.com/solaoi/tuna-mayonnaise/releases/download/$VERSION/tuna_${OS}.tar.gz
## 解凍
tar xvf ./tuna_${OS}_amd64.tar.gz
## /usr/local/binなどのPATHの通った場所に移動してください。
mv ./tuna /usr/local/bin/

# アップデート
tuna update

使い方

1. ツールをブラウザで開く

tuna tool コマンドを実行すると、下記のようにブラウザが起動します。

このUI上で、 Save メニューから設定ファイル( tuna-mayonnaise.json )を作成できます。

tuna-demo

UI サンプル

※ このサンプルは Save メニューをサポートしてませんが、 Download メニューから編集した設定を取得できます。

2. 作成したJSONや、HTMLをAPIとして提供する

tuna api コマンドを実行すると、 http://localhost:8080 でJSONや、HTMLをAPIとして提供します。

このコマンドは、実行ディレクトリ内の設定ファイル( tuna-mayonnaise.json )を参照します。

ツールの機能

テンプレートエンジン

HTMLを作成する際に、テンプレートエンジンとして下記を利用できます。

  • Pug
  • Handlebars

API

WEB APIにリクエストし、そのレスポンスを利用できます。

データベース

このツールは下記データベースをサポートしてます。

  • MySQL
  • PostgreSQL
  • SQLite3

データは、JSON形式で利用できます。

例)

仮に下記テーブルがあった場合、

id name
1 foo
2 bar

次のようなレスポンスを取得できます。

[
  {"id":1, "name":"foo"},
  {"id":2, "name":"bar"}
]

接続オプション

TLS / SSL

APIの機能

監視

  1. TUNA-Mayonnaise(ツナマヨ)は、Prometheusのメトリクスを /metrics で提供します。
    メトリクスは、2つの統計情報を含みます。
  • Echoライブラリ標準のPrometheusのメトリクス
  • TUNA-Mayonnaise(ツナマヨ)で提供されるAPIコンポーネントのステータスコード、メソッド、URL
  1. TUNA-Mayonnaise(ツナマヨ)は、ヘルスチェックを /health で提供します。
  2. TUNA-Mayonnaise(ツナマヨ)は、Labeled Tab-separated Values ( LTSV ) フォーマット形式でログ出力します。

活用例

1. 静的なJSONを返すサーバー作成

詳しくはこちら

2. 静的なHTMLを返すサーバー作成

詳しくはこちら

3. 外部APIからのレスポンスを元に、動的なJSONを返すサーバー作成

詳しくはこちら

4. 外部APIからのレスポンスを元に、動的なHTMLを返すサーバー作成

詳しくはこちら

依存関係

TUNA-Mayonnaise(ツナマヨ)は、多くのOSSによって成り立ってます。

バックエンドの依存関係

ライブラリ ライセンス
github.com/aymerick/raymond MIT License
github.com/blang/semver MIT License
github.com/christopherhein/go-version Apache License 2.0
github.com/common-nighthawk/go-figure MIT License
github.com/eknkc/pug MIT License
github.com/fatih/color MIT License
github.com/go-sql-driver/mysql MPL-2.0 License
github.com/kpango/gache MIT License
github.com/labstack/echo MIT License
github.com/labstack/echo-contrib MIT License
github.com/lib/pq MIT License
github.com/mattn/go-sqlite3 MIT License
github.com/mohae/deepcopy MIT License
github.com/prometheus/client_golang Apache License 2.0
github.com/rhysd/go-github-selfupdate MIT License
github.com/rodaine/table MIT License
github.com/spf13/cobra Apache License 2.0

フロントエンドの依存関係

ライブラリ ライセンス
file-saver MIT License
handlebars MIT License
js-sql-parser MIT License
jsonlint-mod MIT License
prismjs MIT License
pug MIT License
react MIT License
react-dom MIT License
react-modal MIT License
react-simple-code-editor MIT License
react-toastify MIT License
regenerator-runtime MIT License
rete MIT License
rete-area-plugin ISC
rete-auto-arrange-plugin MIT License
rete-connection-path-plugin MIT License
rete-connection-plugin MIT License
rete-connection-reroute-plugin MIT License
rete-context-menu-plugin MIT License
rete-history-plugin MIT License
rete-minimap-plugin MIT License
rete-react-render-plugin ISC
use-interval MIT License

フロントエンド(開発用)の依存関係

ライブラリ ライセンス
@vitejs/plugin-react MIT License
eslint MIT License
eslint-config-airbnb MIT License
eslint-config-prettier MIT License
eslint-plugin-import MIT License
eslint-plugin-jsx-a11y MIT License
eslint-plugin-react MIT License
eslint-plugin-react-hooks MIT License
husky MIT License
lint-staged MIT License
prettier MIT License
rollup-plugin-visualizer MIT License
stylelint MIT License
stylelint-config-prettier MIT License
stylelint-config-recommended MIT License
stylelint-order MIT License
stylelint-prettier MIT License
vite MIT License
vite-plugin-externals MIT License