ブロック(.lnb)

ブロックバンドルは、名前が .lnb で終わるフォルダーで、ツリーでは 1 つの項目として扱われます(ダブルクリックで開く)。各ブロックはディスク上の実ファイルで、 順序はバンドルのルートにある blocks.json に保存されます。コードやテキストの セルを積み重ねた、ノートブックのように動作します。 Jupyter のノートブックはここから入ります。ツリーの .ipynb を右クリックしてブロックとして取り込む (.lnb)を選びます。セルの一つ一つが本物のファイルになり —— バージョン管理も検索もできます ——、.ipynb は元の場所に残ります。取り込みは変換ではないからです。ノートブックに保存された出力は来ません。ここでセルを実行すれば、時刻とコマンドつきの本物の結果ができます。blocks.json が読み取れない場合(Git の競合や書き込みの中断)、ノートブックは警告を出し、このファイルを書き直しません。修正するまで、順序・接続・セッションは保存されません。

セル、ノートブックバー、ショートカット

各セルには名前、種類ボタン(markdown、python、javascript、sql、shell、powershell、bat、r、julia、http、ia、mermaid、latex とテキスト系)、そしてコピー、挿入(クリック: 下に。矢印: 上にと複製)、削除、上下への移動、実行(矢印はここまで実行を提供)のボタンがあります。新しいセルは隣のセルの種類を引き継ぎます。右端のボタンはセルを折りたたみ、ヘッダーに最初の行だけを残します。カウンター [n] は、このセッションでセルが実行された順番を示します。ノートブックはツリー(新規)またはファイル → 新規から作成します。

上部のノートブックバーはノートブック全体に作用します。すべて実行はコードセルを順に実行し、停止は実行中のセルを中断してキューを空にします(その実行は終了コード -1 で履歴に残ります)。出力をクリアは何も削除せずにパネルを閉じ、その他メニューはノートブックの書き出しと履歴の削除を行います。blocks.json のキー timeoutSec はセルごとの制限時間です(既定の 0 は無制限)。

セルにフォーカスがあるときのショートカット: Ctrl+Enter は実行してその場に留まり、Shift+Enter は実行して次のセルへ移動し(最後のセルでは新しいセルを作成)、Alt+Enter は実行して真下にセルを挿入します。テキストセルでは、実行はレンダリングを意味します。内容があればレンダリング済みの状態で開き、ダブルクリック(またはその上で Enter)で編集に戻ります。

保存される結果、添付、履歴

結果は保存されます(実験ノートのように)。実行が終わると、各実行はバンドル内の saida/<セル>/ にある .md ファイルになります —— 実行時刻、 終了コード、所要時間、コマンド、そして出力そのものを含みます。Markdown なので、 どのエディターでも読め、ノートブックと一緒に Git でバージョン管理でき、 ノート検索で見つけられます。バンドルを開き直すと、パネルの上に 最後の実行のバーが戻ってきます。クリックすれば、実行し直さずに結果を見られます。

添付: 各実行は .md の隣に専用のフォルダーを持ち、そのパスは環境変数 LN_RUN_DIR でプログラムに渡されます。セルがそこに書いたもの —— matplotlib のグラフ、CSV —— は出力の下に表示され(画像は描画、それ以外はフォルダーへのリンク)、履歴ファイルに一覧されます。すでに Markdown である出力(SELECT の表、AI の回答、図)はレンダリング済みで開きます。バーのテキスト/レンダリングボタンで切り替えます。

履歴: そのバーの横の履歴ボタンは、そのセルの過去の実行(時刻と終了コード)を 一覧します —— 同じセルが時間とともに何を返したかを比べるのに便利です。セルごとに 最新の 10 件を保持します。変えるには、バンドルの blocks.json の キー historyLimit を編集してください(0 で保存を無効化。添付も一緒に無効になります)。 大きすぎる出力は切り詰められます(ファイルに truncated: true と記されます)。 セルの名前変更や種類の変更は履歴を一緒に運び、セルの削除は履歴をごみ箱へ送ります。

持続セッション

既定では各セルは新しいプロセスです。あるセルが定義したものを次のセルは見られません。持続セッションをオンにすると(バーのセッションボタン。blocks.json のキー session)、Python、JavaScript、shell、PowerShell のセルは実行の間も生き続けるプロセスで動きます —— あるセルの変数、関数、インポートが Jupyter のように次のセルでも有効です。Python では、セル終了時に開いている matplotlib の図が添付フォルダーに自動保存されます。セッションを再起動はすべてを忘れ、停止も同じです。中断とはプロセスを終了することだからです。JavaScript では var で宣言してください(または宣言なしで)。トップレベルの let、const、class は再宣言できません —— 同じセルをもう一度実行しても同じです。

SQL セル

接続を指定していなければ、sql セルはノートブック自身の DuckDB で実行されます(メモリ上)。あるセルで作った表は次のセルでも有効で、read_csv('data/sales.csv') はノートブックのフォルダー内のファイルを読みます —— データはサブフォルダーに置いてください。ノートブックのフォルダーに直接置いたファイルはすべてセルになるからです。本物のデータベースを使うには、接続バー(ワークスペースの接続を一覧します)からノートブックを .lnc 接続に向けます。セルはデータベース上で、接続パネルと同じ接続で実行されます —— 記憶されたパスワード、SSH トンネル、.lnc の再読み込み、そして書き込み前の本番確認です。SELECT の結果は出力ファイルの表になり、INSERT/UPDATE などは変更された行数を報告し、エラーはスクリプトを中断して失敗した文を記録します。1 クエリにつき最大 100 行を取得します(blocks.json の sqlMaxRows。それ以上あればファイルが知らせます)。

@set name = value はノートブックスコープの変数を定義し、:name(または ?)は SQL エディターと同じく実行時に尋ねられるパラメーターです。最後の SELECT は添付フォルダーに resultado.csv も書き(表と同じ行、sqlMaxRows まで)、後続のセルはそのパスを LN_LAST_SQL で受け取ります —— Python では pd.read_csv(os.environ["LN_LAST_SQL"])。接続は blocks.json に相対パスで保存されます。バンドル内に置いた .lnc は設定として扱われ、セルにはなりません。

HTTP、AI、Mermaid、LaTeX

4 つの種類はインタープリターなしで LightNote 自身が実行します。http セルは API テスターと同じ実行器で走る .lnh テストです(レポートは履歴へ。環境は blocks.json のキー httpEnv で指定したもので、リクエストが送るファイルはワークスペース内になければなりません)。ai セルはノートブックのコンテキスト —— 前のセルのソースとそれぞれの最後の出力。ただし資格情報を含みうる http セルは除きます —— とともにプロンプトを既定のアシスタントに送り、回答はレンダリング済みで届きます。mermaid セルと latex セルは図や数式を描画して添付の画像にします。停止は前の 2 つを取り消します。

ノートブックの書き出し

バーのその他メニューはノートブック全体を書き出します。Markdown として(テキストセルはそのまま、コードは言語付きのフェンスで、最後の出力はすぐ下に、画像はリンクで)、または Jupyter ノートブックとして(.ipynb。各セルの最後の出力と埋め込み画像つき。別の言語のセルには VS Code が読む印が付きます)。これは共有用のコピーです —— ノートブック本体はフォルダーのままです。

目次

編集

ツール

自動化(AI / スクリプト)

リファレンス