ひらめきノート



概要
	ひらめきノートは、知識ベースを基にしたWebアプリケーションであり、記事の登録、検索ができます。
	記事は、知識を表現しやすいように、Wiki文法、wema形式、マインドマップ、フロー、ドローピクチャ、タスクリスト、スライドショー、などで登録することができます。件名、内容などの属性が最初から用意されていますが、ユーザ任意の属性を追加することができます。例えば、出来事追跡システム(Issue Tracking System)として運用したいとして、記事に進行中/解決済み/終了といった状況を表す属性を追加することができます。コメントを登録することができます。添付ファイルを登録することができます。関連記事を登録することができます。関連記事は、サイト内外を問いません。記事の閲覧、変更に対して権限を設定することができます。権限は最初から用意されている権限のほか、任意の条件の権限を追加することができます。印刷することができます。
	記事を検索することができます。検索は、詳細検索と簡易検索があります。詳細検索は記事の属性を細かく指定する検索です。簡易検索は1つのテキストボックスを入力として、キーワード検索、または記事番号の直接検索を行うことができます。検索条件はひらめきノート独自の検索言語で表現することができます。これはSQLのWHERE句のようなイメージです。検索条件は保存し、その指定を省略することができます。
	ひらめきノート外の知識との関連を表現するために、ブログ、ソーシャル・ブックマーク、などのサイトと相互に連携する機能を持ちます。
	ひらめきノートの機能は、プラグインで強化することができます。
	ひらめきノートを利用するには、権限の設定によりますが、基本的にはアカウントを作成する必要があります。アカウントの作成は、ひらめきノートの管理者に依頼する方法と、サインインする方法があります。
	ひらめきノートは、全員で記事を共有するわけではなく、サイトという単位で記事は共有されます。もちろん、権限の設定によりサイトをひらめきノート全体に公開することもできます。
	ひらめきノートに登録した記事などは、エクスポートしたり、インポートすることができます。ひらめきノート独自のファイル形式だけではなく、他のサービスからのインポートや、他のサービスへのエクスポートもできます。これにより、サービスの乗換えを容易にします。
	ひらめきノートはWebサービスですが、パッケージをダウンロードしてローカルの環境で動作させることもできます。
	ひらめきノートはWebブラウザから利用するWebアプリケーションですが、専用クライアント、及びWeb APIで利用することができます。
	使用プランによって、課金、及び使用制限があります。
	(TODO) もうちょっとまとめる。



動作環境
	サーバ側
		PHP 5以上。
		PHP 5以上が動作するWebサーバ。
		SQL99準拠のDBサーバ。
		(オプション) SMTPサーバ。
		(TODO) 正常動作を確認できた環境を記述します。
	クライアント側
		XHTML 1.1を解釈できるWebブラウザ。
		(オプション) Javascriptが動作するWebブラウザ。
		(オプション) 専用クライアント。
		(TODO) 正常動作を確認できたブラウザを記述します。



機能
	記事
		登録
		更新
		削除
		コメント
			追加
			削除
			変更
		他ブログなどで表示
		印刷
	検索
		一覧
		詳細検索
		簡易検索
		ページング
		検索条件の保存
		並び替え
	ホームページ
		記事の配置を変更
	データ管理
		バージョン管理
		インポート
		エクスポート
	プラグイン
	アカウント
		サインイン
		登録
		更新
		削除
		ログイン
		権限確認
	サイト
		追加
		更新
		削除
	ソーシャル
		ブックマーク
		RSS
		メール周知
		twitter
	XML Webサービス
	ダウンロード版
	ログ
	マニュアル、ヘルプ
	セキュリティ・ポリシー
	開発者へのフィードバック
	デザイン
		ヘッダー
		フッター
		アイコン
		スタイル
	エラー処理



要素
	記事
		件名
		内容
			形式にかかわらず、XMLのような構造化文書で格納します。形式はその中で表現します。
		タグ
		登録日時
		登録者
		更新日時
		更新者
		添付ファイル
		関連記事
			関係性(親子、重複、破棄、関連、など)
			URL、または記事番号
		コメント
			内容
			登録日時
			登録者
			更新日時
			更新者
			更新内容
		カスタム属性
	検索
		検索名
		検索条件
		登録日時
		登録者
		更新日時
		更新者
	ホームページ
		ページ構成
	アカウント
		ID
			ただの連番。
		ユーザID
			任意の文字列、メールアドレス、OpenIDなど。
		メールアドレス
		パスワード
		権限グループ
		登録日時
		登録者
		更新日時
		更新者
	権限グループ
		グループ名
		権限
	サイト
		サイト名
		周知方法
		記事の既定の形式
	ログ



開発時の注意
	XHTML 1.1で表示します。
	可能な限り、様々なDBで動作するようにします。
	可能な限り、様々なWebブラウザで動作するようにします。
	軽微な開発、修正でも、テストし、動作することを確認してからソースコード・リポジトリへチェックインします。
	次のバージョンの開発前に、バグが残っていないことを確認します。バグがある場合、それらのバグを(特別な理由が無い限り)全て解消しなければなりません。
	次のバージョンの開発前に、HTML lintで2以上の警告が無いことを確認します。2以上の警告がある場合、それはバグとして考え、(特別な理由が無い限り)全て解消しなければなりません。
	次のバージョンの開発前に、次のバージョンで盛り込む機能を設定します。その機能は、ひらめきノートのバランスを崩さない程度に小さいことが好ましいです。つまり、頻繁にリリースするべきです。



開発の手順
	概要、機能、要素を見直します。
	
	機能を(GTDでいう)プロジェクトに変換し、タスク管理に追加します。
	このとき、プロジェクトに優先順位を設定します。
	
	プロジェクトの中から、今回のバージョンで実装する機能をタスクに変換します。
	タスクはあまり多くないほうが良いです。
	
	タスクをソースコードとして実装します。
	タスクを1つ実装するごとに、テストし、チェックインします。
	
	全てのタスクを実装したら、リリースします。
