Piggydbマニュアル

Piggydbのインストール

スタンドアロン・パッケージ

PiggydbはWebアプリケーションですが、スタンドアロンアプリケーションのような感覚で利用できる「スタンドアロン・パッケージ」を提供しています。パッケージファイルをダウンロードして適当な場所に解凍し、実行ファイルをダブルクリックすればPiggydbサーバーが起動してタスクトレイに常駐します。
全ての環境でテストをしたわけではないので断言はできませんが (Windows XPとMac OS Xで動作確認済み)、JavaランタイムとGUIのシステムトレイがある環境であれば、このパッケージを利用できる思います。
以下に手順を示します。
1) Javaがインストールされていない場合はこちらでダウンロードしてインストールしておきます(スタンドアロン・パッケージを動作させるためには Java 6 (1.6) 以上が必要です)。
2) Piggydbダウンロードからスタンドアロン・パッケージをダウンロードします。
3) Zipファイルを適当な場所に解凍します。
4) piggydb.exeファイルをダブルクリックすると以下のようなスプラッシュスクリーンが表示されてサーバーの起動が始まります。
Windows以外のOSをご利用の場合は、piggydb-standalone.jar をダブルクリックするとサーバーの起動が始まります。起動しない場合は、コマンドラインから「java -jar piggydb-standalone.jar」を実行してみて下さい。
5) サーバーの準備が完了すると自動的にブラウザが起動されてログインページが表示されます(表示されない場合は、ブラウザを起動して http://localhost:8080/ にアクセスして下さい)。
6) Ownerアカウント owner/owner でログインします。
ログイン後は忘れずにパスワードを変更するようにして下さい(メニュー「システム/パスワード変更」から変更できます)。
Piggydbサーバーが起動しているとき、タスクトレイにPiggydbのアイコンが表示されます。
このアイコンを右クリックするとメニューが表示されるようになっています。
サーバーを終了させたい場合は、メニューから「終了」をクリックします。

All-in-Oneパッケージ

「All-in-Oneパッケージ」にはPiggydbプログラム本体の他にWebサーバーも同梱されていますので、ダウンロードしてすぐに使い始められます(GUI環境の場合はスタンドアロン・パッケージのご利用をオススメします)。
以下に手順を示します。
1) Javaがインストールされていない場合はこちらでダウンロードしてインストールしておきます(#6)。
2) Piggydbダウンロード からAll-in-Oneパッケージをダウンロードします。
3) Zipファイルを適当な場所に解凍します。
4) run.batファイルをダブルクリックするとPiggydbが起動します(Linux, Mac OS Xなどの場合は、run.shを実行)。
5) ブラウザを起動して http://localhost:8080/ にアクセスするとログイン画面が表示されます。
6) Ownerアカウント owner/owner でログインします。
ログイン後は忘れずにパスワードを変更するようにして下さい(メニュー「システム/パスワード変更」から変更できます)。
以上で完了です!
7) サーバーを停止する場合は、Ctrl+C(Ctrlを押しながらCキー)でDOSウィンドウを閉じます。
起動中に表示されるDOSウィンドウが邪魔に感じられる場合は、Windowsサービスとしてインストールする方法もあります → #14

PiggydbをWindowsサービスとしてインストールする → ...

複数のユーザーが共有できるようなサーバーを立ち上げる一つの方法として、PiggydbをWindowsサービスとしてインストールするという手段があります。
1) Piggydbのwarパッケージをダウンロードする
以下のサイトからwarパッケージ(拡張子が「*.war」となっているファイル: piggydb-<version>.war)の最新版をダウンロードします。
2) TomcatのWindows版をインストールする
以下のサイトにて、手順がとても分かりやすく紹介されています。
上記のサイトではTomcatを手動で起動・停止する方法が紹介されていますが、起動・停止を行う画面で「Startup type」を「Automatic」に設定すれば、以後Tomcatは自動的に(Windowsの起動・停止と共に)起動・停止されるようになります。
3) Piggydbをインストールする
まずTomcatが起動している場合は停止しておきます。そしてTomcatをインストールしたフォルダの中に webapps というフォルダがありますので、そこにwarファイル(piggydb-xxx.war)をコピーします。コピーが終わったらTomcatを起動してインストールは完了です。
4) Piggydbのトップページにアクセスする
トップページのURLはTomcatの設定やwarファイルの名前によって変化しますが、デフォルトの設定でwarファイルの名前が「piggydb-xxx.war」である場合、URLは以下のようになります。
 http://localhost:8080/piggydb-xxx/
"piggydb-xxx"というURLを変更したい場合は、warファイルの名前を変更します。

Piggydbのアップグレード

既存のPiggydbを新しいバージョンにアップグレードするのはとても簡単です。以下にパッケージごとの手順を示します。
(※) 基本的にデータベースはプログラムファイルとは別の場所に保存されていますので(#167)、新しいバージョンに入れ替えてもデータはそのまま引き継がれますが、念のため作業前にデータをエクスポート(#48)しておくことをお勧めします。

スタンドアロン・パッケージ / All-in-Oneパッケージのアップグレード方法

基本の設定を変更していない場合、特別な作業は必要ありません。古いバージョンのサーバーを停止してから、新しいバージョンのサーバーを起動するだけです。既存のデータはそのまま引き継がれます。
  1. 旧バージョンのPiggydbが起動している場合は停止する
  2. 新バージョンのパッケージを好きな場所に解凍する
  3. データベースの場所を変更している場合は新バージョンの設定を変更する
  4. 新バージョンのPiggydbを起動
  • 通常、データはプログラムフォルダと別の場所に保存されていますので、アップグレード後に、古いプログラムフォルダは削除してかまいません
  • アップグレードする際に新しいアプリケーションを古いアプリケーションに上書きする形でインストールするのはトラブルの元になりますのでお勧めできません。他の場所に配置するか、古いアプリケーションを削除してから配置するようにして下さい。

warファイルのアップグレード方法

Tomcatを利用している場合、webappsフォルダの下に古いバージョンのwarファイルと、そのwarファイルが展開されてできたフォルダ(piggydb.warの場合、piggydbというフォルダ)があると思いますが、その両方を削除してから、新しいwarファイルを配置します。warファイルを入れ替えるだけです。minakajiさんのご指摘を受けて修正しました)。
  1. Piggydbが配置されているWebサーバー(Tomcatなど)を停止する
  2. warファイルを入れ替える
  3. Webサーバーを起動する

データベースファイルの配置場所

データベースファイルは標準の設定で以下の場所に配置されます。
上記の場所に、いくつかのデータベースファイルが生成されますが、それらのファイル名の元となるのがデータベース名です。
All-in-Oneパッケージを利用している場合、デフォルトのデータベース名は「piggydb」になります。設定を変えていなければ、上記の場所に以下のようなファイルが生成されているのを確認できると思います。
 piggydb.2.log.db
 piggydb.data.db
 piggydb.index.db
 piggydb.trace.db
warファイルを利用している場合、標準の設定において、データベース名はwarファイルの名前から決定されます。例えば、myknowledge.war という名前のwarファイルを配置すれば、データベースの名前は「myknowledge」となります(ROOT.warの場合は例外で、データベースの名前は、All-in-Oneパッケージと同じく、「piggydb」になります)。
この仕組みの導入によって、一つのWebサーバーに複数のPiggydbを配置できるようになりました。
ただしこの仕組みは、Java Servletのバージョンが 2.5 以上 (Tomcat 6.x) である場合にのみ機能します。2.5 以上を利用できない場合は、自動的に全てのデータベース名のデフォルト値は「piggydb」となります。

データベースファイルの配置場所を変更する → ...

以下のPiggydbシステム設定(#16)を変更することでデータベースの場所を変更できます。
  • piggydb.database.prefix
    • データベースファイルを配置するフォルダ(ディレクトリ)
  • piggydb.database.name
    • データベース名(データベースのファイル名に利用されます)
  • デフォルト値
    • piggydb.database.prefix: ~/piggydb
    • piggydb.database.name: piggydb
  • Windowsの例
    • データベースフォルダを C:\data データベースの名前を "piggydb" とした場合
      • piggydb.database.prefix: file:C:/data
      • piggydb.database.name: piggydb
    • フォルダへのパスの書き方は、file: で始まるURL形式にする必要があります。通常のWindowsのものとは異なることに注意して下さい。
  • Unixの例
    • データベースファイルの作成場所を /data データベースの名前を "piggydb" とした場合
      • piggydb.database.prefix: file:/data
      • piggydb.database.name: piggydb
    • ディレクトリへのパスの書き方は、file: で始まるURL形式にする必要があります。

コンフィグレーション(システム設定)

Piggydbにはシステムの動作をカスタマイズするためのコンフィグレーション機能が提供されています。パッケージごとに設定方法が若干異なります(いずれの場合も設定項目の名前は共通です)。

データベースファイルの配置場所を変更する → ...

以下のPiggydbシステム設定(#16)を変更することでデータベースの場所を変更できます。
  • piggydb.database.prefix
    • データベースファイルを配置するフォルダ(ディレクトリ)
  • piggydb.database.name
    • データベース名(データベースのファイル名に利用されます)
  • デフォルト値
    • piggydb.database.prefix: ~/piggydb
    • piggydb.database.name: piggydb
  • Windowsの例
    • データベースフォルダを C:\data データベースの名前を "piggydb" とした場合
      • piggydb.database.prefix: file:C:/data
      • piggydb.database.name: piggydb
    • フォルダへのパスの書き方は、file: で始まるURL形式にする必要があります。通常のWindowsのものとは異なることに注意して下さい。
  • Unixの例
    • データベースファイルの作成場所を /data データベースの名前を "piggydb" とした場合
      • piggydb.database.prefix: file:/data
      • piggydb.database.name: piggydb
    • ディレクトリへのパスの書き方は、file: で始まるURL形式にする必要があります。

匿名アクセス機能の設定方法 → ...

以下のPiggydbシステム設定(#16)を変更することでデータベースの場所を変更できます。
  • 設定項目: piggydb.enableAnonymous (true: 有効, false: 無効)

Piggydbの機能一覧

情報の単位「フラグメント」 → ...

Piggydbでは情報をフラグメントという単位で管理します。フラグメントは「(知識の)断片」という意味で、ブログのエントリ(一つの記事)や書籍の一節、あるいはより細かい文書に相当します。
以下のようにフラグメントはブログに記事を追加していく要領で作成できます。

フラグメント同士を結びつける → ...

たくさんフラグメント登録しても、そのままではお互いに関連を持たないバラバラの情報です。Piggydbではフラグメント同士に「つながり」をつくることができます。これによって、バラバラの情報をより価値の高い「知識」へと成長させることができます。

フラグメントをタグで分類する → ...

Piggydbでは、フラグメントに対して、その内容を表現するタグ(ラベル)を貼り付けることができます。タグは検索のための目印となる情報です。あなたが今見ているこのフラグメントにもいくつかのタグが貼り付けられています。
作成されたタグの一覧は「タグ」メニュー(#44)から見ることができます。その中から一つのタグを選んでクリックすれば、そのタグが貼り付けられているフラグメントの一覧を見ることができます。

タグをタグで分類する(階層タグ) → ...

タギングの問題点は、タグの数が多くなった場合に収拾がつかなくなってしまうことです。また、本来分類には上下関係がありますが、従来のタグシステムでそれを表現するのは非常に手間がかかります。
Piggydbではタグに上下関係をつけることでこの問題を解決します。フラグメントだけではなく、タグ自身もタグで整理することができるのです。
例えば、「言語」→「英語」のような関係をつけておけば、「英語」というタグをつけるだけでその情報は同時に「言語」という意味も持つようになります。「言語」というタグで情報を検索すれば、「言語」の意味を持つ全ての情報(例えば、「英語」だけでなく、「日本語」とか「中国語」なども)を見ることができます。これが「タグの意味が継承される階層タグ」機能です。そして、たとえタグが大量に登録されても、階層によって整理することができますので収拾がつかなくなるという事態は避けることができます。

出来上がった知識を眺める「ドキュメント・ビュー」 → ...

ドキュメント・ビューは、選択されたフラグメントを起点として作成された、シンプルなXHTML文書を表示する機能です。この文書は登録した情報をまとめて見る場合に便利ですし、印刷にも適しています。表示する範囲はつながりを辿って2つ先のフラグメント(孫)までが対象となります。
ドキュメント・ビューを表示するためには、フラグメント・ツールボタン(#120)を利用します。試しにこのフラグメントの「ドキュメント・ビューを開く」ボタンをクリックしてみて下さい。

マルチユーザーでコラボレーション! → ...

初期状態のPiggydbに用意されているユーザーはownerユーザーのみですが、複数人でデータベースを共有したい場合は、簡単にユーザーを追加することができます。
ユーザーを作成するためには、特殊タグ#user)を利用します(#81)。

全文検索 → ...

ページ上部、メニューバーの右側に、キーワード検索のためのフォームが配置されています。キーワードを入力して検索ボタンをクリックすると、データベース内のフラグメントタグを検索して、その結果を表示します。
キーワードは、スペースで区切ることにより複数指定することができます。複数のキーワードが指定された場合、それら全てのキーワードを含むフラグメントを検索します(AND検索)。

フラグメント一括処理機能 → ...

Piggydbでは、複数のフラグメントを選択して、それらのフラグメントに様々な処理を行うための仕組みが提供されています。ショッピングサイトのカートのような感覚で、色々なページを移動しながらフラグメントを選択して、後でまとめて処理することができます。

エクスポート/データベース復元(リストア)

Piggydbには、データベースの内容をファイルとしてエクスポートしたり、エクスポートしたファイルからデータベースを復元する機能が備わっています。
  • エクスポート
    • システム」メニューの「エクスポート」から。
    • エクスポートされるデータには、ownerユーザーのパスワードや、登録ユーザーの情報なども含まれます。
  • データベース復元
    • システム」メニューの「データベース復元」から。
    • データベースの内容をエクスポートしておいたファイルの内容から復元します。
    • 注意) データベースの復元を実施した場合、現在のデータベースの内容は全て削除されて、アップロードされたファイルの中身に置き換わります。実施する際は、大事なデータを間違って上書きしてしまわないように十分注意して下さい。

システム情報

メインメニュー「システム/システム情報」からアクセスできます。
  • データベースのタイトル
    • データベースのタイトルを設定できます。
    • このタイトルは、ページ(HTML)のタイトルとして利用されます。
  • データベース統計
    • データベースの中身についての色々な統計情報を表示します。

特殊タグ

通常、タグフラグメントを分類するために利用しますが、Piggydbならではのユニークな機能として「特殊タグ」があります。特殊タグフラグメントに付けることで、フラグメントに様々な機能を持たせることができるようになります。
特殊タグは、他のタグと区別するために、文字 '#' から始まる名前を採用しています。
特殊タグも通常のタグと同様、タグによって分類したり、また特殊タグの機能を継承する子供のタグを作ることができます。

特殊タグ: #user → ...

新しいユーザーを作成するためには、「ユーザー名をタイトルとするフラグメントを作って、"#user"というタグを付ける」だけです。これをユーザーフラグメントと呼びます。ユーザーを作成できるのは、ownerユーザーのみです。
作成されたユーザーのパスワードは、デフォルトの状態でユーザー名と同じになります。例えば、"marubinotto"というタイトルのフラグメント#userタグを付けた場合は、ユーザー名は 「marubinotto」、パスワードは「marubinotto」でログインできるようになります。ログインしたらすぐにパスワードを変更するようにして下さい (メニュー「システム/パスワード変更」)。

特殊タグ: #trash → ...

フラグメントを削除したい場合は、そのフラグメントゴミ箱タグ#trashを貼り付けます。
実際には、ゴミ箱タグを貼り付けても、そのフラグメントがデータベースから完全に削除されるわけではありません。一部のページから見えなくなるだけです。ゴミ箱タグのページに移動して、フラグメントからゴミ箱タグを取り除けば、そのフラグメントを復活させることができます。
ゴミ箱タグの追加は、フラグメント・ツールボタン(#120)からも行えます。

特殊タグ: #bookmark

#bookmarkタグを付加されたフラグメントは、サイドバーの「ブックマーク」一覧に追加されます。頻繁にアクセスするフラグメントや重要なフラグメント#bookmarkタグをつけておくと、いわゆるショートカットのように機能します。
ブックマークへの追加は、フラグメント・ツールボタン(#120)からも行えます。

特殊タグ: #home

#homeタグを付加されたフラグメントは、ホームフラグメントとしてホームページに表示されるようになります。ホームフラグメントはいくつでも設定することができます。
このサイトでは、フラグメント #1 がホームフラグメントになっています。
Piggydbを複数人のユーザーで利用している場合は、ホームフラグメントをユーザーみんなの共有情報として利用できます。
ホームフラグメントへの設定は、フラグメント・ツールボタン(#120)からも行えます。

特殊タグ: #public → ...

#publicタグ、あるいはこのタグの下位に所属するタグが付いているフラグメントは外部に公開されます。つまりログインしていなくてもその内容を見ることができるようになります。ただし、公開されるのはフラグメントのドキュメント・ビューのみです。通常の編集画面は公開されません。
公開されたフラグメントへアクセスするためのURLは、通常のドキュメント・ビューのものと同様になります。以下のようなURLです。
 http://<host-name>:<port>/<war-name>/document-view.htm?id=6
公開されるのはあくまで#publicタグが付いたフラグメントだけです。関連するフラグメントや埋め込まれたフラグメントに#publicタグが付いていなければ、それらを外部から見ることはできません。

特殊タグ: #pre → ...

一つのフラグメントの中で整形済みのテキストを書く場合には、対応するWiki記法(#43)がサポートされています(行頭をスペースで始める)。しかし、フラグメント全体を整形済みテキストとして扱いたい場合は、#preタグが便利です。
#preタグを付加されたフラグメントの内容は、スペースや改行などを含めて、そのまま表示されるようになります(Wiki記法は全て無視されます)。

特殊タグ: #code → ...

#preタグに加えて、#codeタグを付加されたフラグメントは、その内容がプログラムコードだと認識されて、プログラムを読みやすくするためのハイライト表示が適用されます。

PiggydbをCMS(Content Management System)として使う

Piggydbには構築したデータベースを公開する機能が備わっています。実際にこのサイト(piggydb.jp)も、この公開機能を利用して運営しています。

作成したドキュメントを部分公開機能で発表する → ...

Piggydbには、作成したデータベースの一部をドキュメント・ビュー(#32)として公開する機能があります。匿名アクセス機能(#37)を利用すれば、データベース全てを公開することができるわけですが、公開する部分と非公開の部分を分けて運用したい場合などは、こちらの部分公開機能が便利です。
公開を行う方法は至って簡単です。公開したいフラグメントに「#public」というタグを付けるだけです。

匿名アクセス機能で情報を公開 → ...

基本的にPiggydbは、個人であれグループであれ、ログインユーザーのみに閉じて利用するプライベートなツールですが、この機能を有効にすると、ログインしていない匿名のユーザーにもデータベースの内容が公開されるようになります。
ただし匿名ユーザーはデータの編集を行うことはできません。あくまで閲覧のみです。データベースの中身を変更する場合は、匿名アクセス機能の有無に関わらず、ログインしていることが前提となります。
このサイト(piggydb.jp)自体が、匿名アクセス機能を利用しています。このように、作ったデータベースを完全に公開したい場合は、この機能を使うことで実現できます。
匿名アクセス機能は、部分公開機能(#35)とは異なり、全ての情報を公開することになります。

突然の電源断などでデータベースが壊れた場合

停電などが原因で突然の電源断が発生した後、以下のようなエラーが出て、Piggydbを利用できなくなることがあります。
 a) java.lang.RuntimeException: Unexpected code path
 b) java.lang.RuntimeException: double allocation in file
上記のようなエラーが出る場合、データベースファイルが壊れている可能性があります。
このような問題が発生した場合、単純にデータベースディレクトリの中のindexファイル (<データベース名>.index.db) を削除して再起動すると解決することがあります(特に a) のケース)。この方法で解決しない場合は、リカバリツールを使います。
データベースディレクトリについては、こちらを参照。
1) まずはPiggydbサーバーを停止しておきます。
2) Piggydbのパッケージの中から h2-<バージョン番号>.jar のような名前のファイルを探して(スタンドアロンパッケージの場合は、webapp/WEB-INF/lib の中にあります)、データベースディレクトリの中にコピーします。
3) そして、そのディレクトリの中で以下のコマンドを実行します。データベースの内容が、<データベース名>.data.sql というファイルに出力されます。
 java -cp h2*.jar org.h2.tools.Recover
java.io.EOFException というエラーが出ることがありますが、<データベース名>.data.sqlというファイルが出来ていれば、とりあえず無視しても問題ないようです。
4) 出力されたファイル(<データベース名>.data.sql)を使って、データベースの復元を行いますが、そのまま実行するとエラーになってしまう箇所があるのでそれらを削除する必要があります。テキストエディタなどを利用し、キーワード「CJKFullText」で検索して、ヒットした行を全て削除します。
5) データベースをゼロから作り直すので、既存のデータベースファイル(*.dbファイル)を全て削除(あるいは他の場所に移動)しておきます。このとき、ファイルフラグメントファイルが保存されている <データベース名>-files ディレクトリはそのままにしておきます。
6) 以下のコマンドでデータベースを作り直します(以下のコマンドはいずれも一行です)。エラーが無ければ、データベースが復元されているはずです。
 java -cp h2*.jar org.h2.tools.RunScript 
  -url jdbc:h2:<データベースディレクトリ>/<データベース名> 
  -user sa2 -script <データベース名>.data.sql -showResults
 デフォルト設定の場合) 
 java -cp h2*.jar org.h2.tools.RunScript 
  -url jdbc:h2:~/piggydb/piggydb 
  -user sa2 -script piggydb.data.sql -showResults
エラーが発生した場合は、その箇所を、<データベース名>.data.sql から削除して、もう一度 5), 6) の手順をやり直してみて下さい。
7) Piggydbを起動して、問題なく利用できるか確認します。
8) さらに万全を期すために、このデータベースをPiggydbのメニューからエクスポートして、再度データベースを作り直します。エクスポート後、サーバーを停止して、データベースファイルをデータベースディレクトリごと全て削除し、サーバーを再起動します。つまり、データベースを初期状態にします。その後、エクスポートしたファイルを使って、データベースを復元します。
Piggydbでは、データを保存するために「H2 Database Engine」というデータベースエンジンを利用しています。以上の手順は、H2のサイトを参考にしました。