このページはCalíope 1.7を紹介しています。私がいま作っているバージョンです。1.6は、Mac、iPad、iPhone、Apple Watch、Apple TV、Apple Vision Pro向けにApp Storeで公開中です。それぞれの機能がどのバージョンで入ったかは変更履歴に書いてあります。

すべてのトピックに「Calíopeで開く」ボタンを追加します。アプリがインストールされている場合にのみ機能します。

SQLiteエディタ

SQLiteエディタ

サーバなしで、ローカルのSQLiteファイルを開いて編集します。

場所: ワークスペース › ツール › SQLiteエディタ

「SQLiteエディタ」は、ローカルの.sqlite/.dbファイルを扱う単独のツールで、DB Browser for SQLiteに似ています。「構造」「データ」「SQLを実行」「プラグマ」の4つのセクションがあり、サーバに接続していなくても動作します。

Calíopeが開けるのは暗号化されていないSQLiteデータベースです(SQLCipherには対応していません)。

キーワード: SQLite、DB、ローカル、データベース、ブラウザ、ファイル

データベースを開く・作成する

既存のSQLiteファイルを開くか、新しく作成します。

場所: ワークスペース › ツール › SQLiteエディタ

既存の.sqlite/.dbファイルを選ぶには「開く…」を、空のデータベースを作成するには「新規データベース…」を使います。最近使ったファイルは開始画面に表示されます。ファイルを変更できない場合は「読み出し専用」のバッジが表示されます。

Calíopeの外から開くこともできます。Macでは、Finderの「このアプリケーションで開く」›「Calíope」から開くか、その種類のファイルのデフォルトのAppがCalíopeならダブルクリックで開きます。iPadとiPhoneでは、「ファイル」Appから共有してCalíopeを選びます。目の前のセッションがこのツールを提供していない場合、ファイルは「オフラインで開く」で開きます。

キーワード: 開く、作成、新規、最近使った項目、ファイル

構造を調べて設計する

テーブル、ビュー、インデックス、トリガーを閲覧し、作成します。

「構造」セクションには、スキーマツリーと、各オブジェクトの列とDDLが表示されます。テーブル、インデックス、ビューを作成するには「新規」を、選択したテーブルでは「列を追加」や「テーブル名を変更」を、オブジェクトを削除するには「削除」を使います。

キーワード: 構造、テーブル、インデックス、ビュー、トリガー、作成、DDL、スキーマ

データを閲覧して編集する

行を表示し、絞り込み、並べ替え、編集します。

「データ」セクションには、テーブルの行がページごとに表示され、ツールバーの右側に件数と矢印があります。1ページに何行読み込むかは、「設定」›「テキストエディタ」›「結果」›「ページあたりの行数」(iPadでは「設定」)で決められます。これは「SQLを実行」のグリッドとSQLエディタのグリッドでも使われる同じ設定です。列の見出しを押すと並べ替えられ(もう一度押すと逆順になります)、「フィルタ」で列ごとに絞り込むか、検索欄に入力してすべての列を一度に探せます。どちらの場合も、フィルタはReturnを押すと適用されます。「テーブル」セレクタにはファイルのテーブルが並びますが、すべてを編集できるわけではありません。WITHOUT ROWIDテーブルでは、またファイルを読み出し専用で開いた場合はどのテーブルでも、ツールバーにはボタンの代わりに、そのオブジェクトは編集できないと表示されます。

セルを編集する

macOS:ダブルクリックします。iPad:1回タップします。

値はグリッドの中で直接入力します。Returnで確定し、セルを離れても(別のセルを押すか、欄からフォーカスが外れると)確定します。Escはキャンセルして元の値を残します(iPadではキーボードを接続している場合)。

高度なエディタ

1行に収まらないものは、別のシートで書きます。シートを開くには、セルの⋯ボタンを使うか(macOS:ポインタをセルに重ねたとき。iPad:選択した行のセルで。行は番号をタップして選択します)、コンテキストメニュー(macOSでは右クリック、iPadでは長押し)の「高度なエディタ…」を使います。そこでは同じ値を、テキストとして、JSONとして(整形するボタンがあり、無効なJSONは適用しません)、16進数で書くことができ、バイト列が画像であれば画像として見ることもできます(その画像は、ピンチ、ホイール、下部のボタンで100 %から800 %まで拡大できます)。さらに、そのバイト列をファイルから読み込み、別のファイルに書き出すこともできます。すでにバイナリデータが入っているセルは、グリッドの欄を通らずに直接このシートが開きます。

セルをNULLにする

セルのコンテキストメニューの「NULLに設定」で、ほかには何も開かずに設定できます。高度なエディタの中にもスイッチとして用意されています。値のないセルは斜体のNULLで表示されます。注意:グリッドで内容を消して確定すると、書き込まれるのは空文字列で、NULLとは別物です。

行を追加・削除する

「行を追加」を押すと、列ごとに1行のフォームが開き、型と必須かどうかが表示されます。テーブルが自分で埋められる列(デフォルト値を宣言している列と、INTEGERの主キー)は、エンジンが書き込むようにあらかじめチェックが入っています。自分で値を入力したい場合はチェックを外します。空のままの欄はNULLとして保存され、必須の列に値がない間は「挿入」は押せません(横の注記がどの列かを示します)。確定すると、値のある列だけを指定した1つのINSERT文が発行されます。削除するには、行を番号で選択して「行を削除」を使うか、その行のいずれかのセルのコンテキストメニューを使います。

これらはどれも、「変更を保存」を押すまでファイルには触れません。編集した内容は保留中のトランザクションに残り、「変更を元に戻す」ですべて取り消せます。

Apple Vision Pro:iPadと同じく、⋯ボタンは選択した行のセルに表示され(行は番号で選択します)、コンテキストメニューはセルを見てピンチしたまま保持すると開きます。

キーワード: データ、行、編集、フィルタ、並べ替え、検索、セル、BLOB、NULL、挿入、新しい行、削除、JSON、16進数、画像

SQLを書いて実行する

シンタックスハイライト、自動補完、行数の上限付きの結果グリッド。

「SQLを実行」セクションは、サーバのSQLエディタと同じテキスト欄と同じ結果グリッドを使いますが、対象は開いているファイルで、接続は介在しません。

書いて実行する

テキストはハイライトされます。キーワード、文字列、数値、コメントがそれぞれの色で表示されます。「実行」を押すか、テキストの中で⌘↩を押すと、スクリプト全体が実行されます。下に表示されるのは行を返した最後の文の結果で、どの文も行を返さなかった場合は、影響を受けた行数が表示されます。エラーが起きるとスクリプトはその文で止まり、エンジンのメッセージがそのまま表示されます。

ファイルに書き込むもの(INSERT、UPDATE、CREATE TABLE)は、「データ」での編集と同じく保留のままになります。「変更を保存」を押すまでファイルには触れず、「変更を元に戻す」ですべて取り消せます。

自動補完

候補パネルには、SQLのキーワードと、開いているファイルのテーブルとその列(「構造」で選択したテーブルだけでなく、すべて)が表示され、スキーマを変更するたびに追従します。

パネルは手動で開き、入力中に勝手に表示されることはありません。macOSでは、少なくとも単語の先頭を入力してから⌥Escを押します。リストはその接頭辞から作られ、キーワードが先に、ファイルの名前があとに並び、名前はそのまま挿入されます。iPadでは、セクションの見出しにある「自動補完」ボタンを使います。いつでもパネルを開けて、キーボードは要りません。iPadでテーブルや列を確定すると、名前はバッククォートで囲んで書き込まれます(`my_table`)。SQLiteはこれを二重引用符と同じように受け付けます。

候補に出るキーワードと関数はSQLiteのもので、julianday()やprintf()のようなSQLite独自のものも含まれます。

結果グリッド

行はページごとに表示され、1ページに何行収めるかは「設定」›「テキストエディタ」›「結果」›「ページあたりの行数」(iPadでは「設定」)で決められます。「データ」セクションとSQLエディタで使われる同じ設定です。

macOSでは、列の見出しを押して並べ替え(順序はクライアント側のもので、目の前のページだけでなく、取得したすべての行に及びます)、列の端をドラッグして幅を変え、見出しから列を非表示にしたり並べ替えたりできます。⇧または⌘で複数の行を選び、⌘Cでコピーすると、列名を先頭にしたTSVになります。iPadでは、下部のボタンでページをめくり、列の幅は自動で決まります。

どの環境でも、行をAppの外にドラッグすると、表として別のAppに持っていけます。セルのコンテキストメニュー(macOSでは右クリック、iPadでは長押し)では、値をコピーし、値全体を表示し、行をCSVに書き出せます。

ここに表示されたものは編集できません。値を変更するには「データ」セクションを使います。

行数の上限

大きなSELECTは全体を取得しません。「設定」›「テキストエディタ」›「結果」›「行数の上限」で切られます。SQLエディタが使うのと同じ上限です。切られた場合、グリッドの行の下にそのことが表示され、「すべて取得」が出ます。これはクエリーを上限なしでもう一度実行します。上限を0にすると、何も切られません。

関数の項目

macOSでは関数の上にポインタを重ねると、iPadでは関数にテキストカーソルを置くと、その関数のSQLiteの項目が表示されます。構文、戻り値の型、パラメータ、例です。詳しくは「SQL関数のコンテキストヘルプ」のトピックを参照してください。

Apple Vision Pro:iPadと同じで、関数のカードはウインドウの下、見出しの上に浮かびます。

キーワード: 実行、SQL、ハイライト、構文、自動補完、候補、グリッド、結果、並べ替え、コピー、ドラッグ、上限、行、ページ

変更を保存する・元に戻す

変更は保存するまで保留のままです。

編集内容は保留中のトランザクションにまとめられます。未保存の変更があることは琥珀色の点で示されます。コミットするには「変更を保存」を、破棄するには「変更を元に戻す」を使います。保留中の変更がある状態でファイルを閉じたり、別のファイルを開いたり作成したりすると、先に保存するか破棄するかを確認します。

キーワード: 保存、元に戻す、COMMIT、ROLLBACK、トランザクション、変更

読み込みと書き出し

CSVを読み込み、CSV、JSON、SQLに書き出します。

「読み込み/書き出し」から、CSVファイルを読み込んだり(ファイル名を付けたテーブルになり、列はテキストです。そのテーブルがすでにある場合は行が追加されます)、「データ」で開いているテーブルをCSVまたはJSONに書き出したり、データベース全体をSQLダンプ(スキーマとデータ)に書き出したりできます。読み込みは、ほかの編集と同じく、「変更を保存」を押すまで保留のままです。

キーワード: 読み込み、書き出し、CSV、JSON、SQL、ダンプ、バックアップ

プラグマとメンテナンス

ファイルのプラグマを変更し、チェックし、圧縮します。

「プラグマ」セクションには、ファイルの設定が表示されます。「編集可能」の下にあるもの(「外部キー」「自動VACUUM」など)はその場で変わり、数値のものは「適用」で変わります。これらは保留中のトランザクションの外ですぐに作用するため、未保存の変更がある間は使えません。先に保存するか元に戻してください。自動VACUUMのように、VACUUMのあとでなければ有効にならないものもあります。

「メンテナンス」では、ファイルをチェックしたり(「整合性チェック」「外部キーのチェック」)、整理したり(「VACUUM」「ANALYZE」「REINDEX」)でき、エンジンの応答はボタンの下に表示されます。そのほかのプラグマは「読み出し専用」の下に現在の値とともに並びます。

キーワード: プラグマ、PRAGMA、メンテナンス、整合性、VACUUM、ANALYZE、REINDEX、外部キー