====== 目論見 ======
===== モジュールメモ =====
* summernoteでリッチテキスト
* comments-xtdでコメント
* django-ajaxで通信
* django-hashids
* django-allauth
* django-bootstrap5
* crispy-form
* widget-tweaksでテンプレート上で要素クラス指定
* ViewFlowで状態管理する? https://github.com/viewflow/viewflow
* haystackで検索する
*
===== 画面メモ(コンパネ) =====
* フォームビュー
* 占いたいテーマを書く
* デッキ、スプレッド方法など色々きめる
* スプレッドする
* リーディング内容を作成する(一時保存する。確定する)
===== 設計方針 =====
;;#
ܐܶܓܰܪܬܳܟ
;;#
* 文字画像はFastAPIで小サービスをたてる
* エンジン側では小サービスを参照するが、ディスクキャッシュによりAPI利用を減らす
* django-ajaxで画面内での処理をサーバサイドサイドに依頼する
* 編集中の状態はクライアントサイドJSを介してsessionStorageを使って管理する(暫定)
* クライアントJSから直接APIを叩かない(django-ajaxを介してpythonから仲介してAPIを叩く)
* Gravatar or Boring は小サービスでプロキシする
* Boringはセルフホストする
* 一時保存結果はメールでURLを送信できるようにする(再編集パスワード:オプショナル)
* localStorageで「いいね」を実装するのはアリかも
* (使えない場合はいいね無効) localStorage の機能検出 https://developer.mozilla.org/ja/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API
post contents
{
"deck_name":"RWS";@selected
"spread_name":"three_cards",@selected
"selected_cards":["the_fool","death","the_wheel_of_fortune"], @generated
"reversal_array":[0,0,1], @generated
"reversal_on":true, @selected
"background":"bg_purple", @selected
"lang":"ja"@selected
}
===== テンプレート =====
* Bootstrap設置ガイド https://bootstrap-guide.com/
* Bootstrapコンテナに背景をいれよう https://sakuweb.liruu.com/bootstrap/bootstrap-c10/
===== フレームデザイン =====
* スペシメン1 https://archive.org/details/specimensofprint00mackrich/page/n349/mode/1up
* スペシメン2 https://archive.org/details/specimensofpoint00step/page/339/mode/1up
* スペシメン3 https://archive.org/details/printingtypespec00millrich/page/411/mode/thumb
===== 参考リンク =====
* はてなブックマークなどのブランドロゴiconをアイコンフォントにしよう https://webru.info/tools/icon-make-font/
* OpenSpreadページ参考(内容、概観) https://www.7tarot.fr/carte/arcanes-majeurs.htm
* 占い師さん https://nekochacha.com/
==== type1,2のデッキについて ====
記事
https://tarot-heritage.com/2023/10/28/celebrating-the-tarot-de-marseille-type-i/
書籍ミラノ版デッキの類似品(元書籍:https://archive.org/details/propheticaleduca00vanr/)
* 大英博物館所蔵:https://www.britishmuseum.org/collection/object/P_1904-0511-38-1-78
* 大英博物館所蔵:https://www.britishmuseum.org/collection/object/P_1964-1211-1
* https://deviantmooninc.com/products/edoardo-dotti-tarot-de-marseille-milan-italy-c-1865
* https://milk-house.jp/a-la-carte/2017/09/02/tarocchi-piemontesi-midy/
* https://milk-house.jp/a-la-carte/2017/11/23/tarocco-tradizionale-italiano-di-78-carte/
【kabalah】
* https://en.wikipedia.org/wiki/Jean_Dubuis
* https://archive.org/details/QabalLivre1/Qabal_livre1/
カウンセリングの言葉としてのタロット
* カウンセリングの言葉としてのタロット https://www.hermetica.info/Tarot.htm
* 西洋占星術のシンボル-入門書 https://www.hermetica.info/Astrology.html
* 同著者によるスタディリンク https://www.hermetica.info/TongLink.htm#L
==== 生成AI ====
* 【Stable Diffusion WebUI】Forge版をGoogle Colabにインストールする方法 https://soroban.highreso.jp/article/article-088
* 【Stable Diffusion Web UI】Stable Diffusion XL(SDXL)の使い方 https://soroban.highreso.jp/article/article-042#651d4816a6d63105f25c3c7e-f40374d1043bdc6a1d4ebd3b
==== 作画 ====
* ブラシパターン作成:Create a Set of Art Brushes to Make a Linocut-Style Illustration ( https://design.tutsplus.com/tutorials/create-a-set-of-art-brushes-you-can-use-to-make-a-linocut-style-illustration--cms-21964)
* The history of fashion in France https://archive.org/details/historyoffashion00chal/page/11/mode/thumb
* Costumes anciens et moderne https://archive.org/details/costumesanciense01veceuoft/costumesanciense01veceuoft/page/n118/mode/thumb
* A history of costume https://archive.org/details/historyofcostume00khle/page/293/mode/thumb
* Bibliothecae Alexandrinae icones symbolicae https://archive.org/details/bibliothecaealex00giar/page/n180/mode/thumb
* コイン絵のモットー https://archive.org/details/emblemataanniver01univ/page/133/mode/thumb
* L'art de dessiner de Maistre Jean Cousin https://archive.org/details/gri_33125010543896/page/n22/mode/1up
* Iconologie par figures https://archive.org/details/iconologieparfig08grav/page/n12/mode/thumb
* Media in category "Symbolographia, De arte symbolica (1702)" https://commons.wikimedia.org/wiki/Category:Symbolographia,_De_arte_symbolica_(1702)
* Category:Silenus Alcibiades ... (1618) https://commons.wikimedia.org/wiki/Category:Silenus_Alcibiades_..._(1618)
* Category:La doctrine des moeurs (1646) https://commons.wikimedia.org/wiki/Category:La_doctrine_des_moeurs_(1646)
* Noua iconologia di Cesare Ripa Perugino (1618) (https://commons.wikimedia.org/wiki/Category:Noua_iconologia_di_Cesare_Ripa_Perugino_(1618))
* "Proteus, ofte, Minne-beelden verandert in sinne-beelden (1627)" https://commons.wikimedia.org/wiki/Category:Proteus,_ofte,_Minne-beelden_verandert_in_sinne-beelden_(1627)
* Collection of Emblemes, Ancient and Moderne https://commons.wikimedia.org/wiki/Category:Collection_of_Emblemes,_Ancient_and_Moderne
* Kunstbüchlin https://commons.wikimedia.org/wiki/Category:Kunstb%C3%BCchlin
* Christian woodcuts by Albrecht Altdorfer https://commons.wikimedia.org/wiki/Category:Christian_woodcuts_by_Albrecht_Altdorfer
* Simpson's drawing book of principles from the best masters https://archive.org/details/b30410010/
* Kunstbüchlin https://archive.org/details/kunstbuchlindari00amma/
*
* 1. 明度・彩度を上げる(自動)
* 2. 超解像で大きくする(自動)
* 3. 遠近法で定サイズ矩形に切り抜く(手動:ここは仕方ない)
* 4. バックグラウンドに貼り込む(自動)
* 4.5 文字入れ(手動)
* 5. 扱いやすいサイズにリサイズ(自動)(横700程度)
* 6. GIMPで霧効果をかけて古びさせる(手動)or Script-Fu
* 7 メタ情報を付加してデッキパッケージにする(手動)
* Gimpスクリプト http://www.idea2ic.com/Second_Templates/GIMP_SCRIPT_TEMPLATES/GIMP_SCRIPT_TEMPLATES.html
* Fredericka the Great 中抜きフォント https://fonts.google.com/specimen/Fredericka+the+Great
* 金色効果 https://www.gimp.org/tutorials/Golden_Text/
==== 画像処理手順 ====
* 【色-色相・彩度】
* 青-20
* 赤+10
* 黄色-4
* 【彩度】
* 彩度80
* 【色を透明度に】
* サイズ1800*3600
* 文字けし
* pngで保存
* (いったんここまで)
* 紙に貼って
* [文字入れ]
* 霧茶色 深さ4.0 不透明度30
* 統合して
* 明るさ+20
* コントラスト+20
====== 仕様 ======
エクスポート機能が漏れていたので、フェーズ6に**エクスポートと共有機能**を統合して追加しました。以下が修正済みの最終バージョンです。
---
## **段階的な開発フェーズの詳細 (統合・修正版)**
---
### **フェーズ1: 基礎アプリの構築** (MVP: Minimum Viable Product)
**目標**:
- ローカルのプレーンテキストファイルを開き、表示する。
- テキスト選択範囲に簡単なアノテーションを付与できる。
- アノテーションはメモリ内で保持し、SQLiteはまだ使わない。
- **デフォルトフォントでテキストを表示**。
**機能詳細**:
- ファイル選択ダイアログでローカルのプレーンテキストファイルを開く。
- テキストをElectronウィンドウ内に表示。
- 選択したテキスト範囲にコメントやタグを付与できるようにする。
- アノテーションはJSONファイルとしてローカルに保存。
- **デフォルトフォントでのプレーンテキスト表示**。
- 選択範囲をハイライトし、簡易的な可視化を行う。
**技術要素**:
- Electronの`dialog.showOpenDialog()`でファイル選択ダイアログを作成。
- `fs.readFileSync`でテキストファイルを読み込む。
- Reactの`useState`を使い、選択範囲の取得と状態管理。
- `window.getSelection()`で選択されたテキストを取得。
- `fs.writeFileSync`でJSONファイルへの保存処理。
- Electronの基本ウィンドウ構築 (`BrowserWindow`)。
---
### **フェーズ2: アノテーションデータの永続化 (SQLite導入)**
**目標**:
- アノテーションデータをSQLiteに保存し、再起動後も復元できる。
- テキストの表示サイズを変更可能にする。
**機能詳細**:
- SQLiteデータベースを初期化し、アノテーションデータを格納するテーブルを作成。
- アノテーションデータには、選択範囲の`start`と`end`の位置、選択テキスト、タグ、コメントを保存。
- アプリ起動時にSQLiteからデータを読み込み、該当範囲をハイライト。
- テキストの表示サイズをスライダーやセレクトボックスで変更できるようにする。
**技術要素**:
- `better-sqlite3`または`sqlite3`モジュールを導入。
- SQLiteデータベースの初期化とテーブル作成(`CREATE TABLE IF NOT EXISTS`)。
- Reactの状態管理で表示サイズを調整(`useState`でサイズをリアルタイム変更)。
- CSSで`font-size`を動的に変更。
- ElectronのIPC通信を使い、React側からElectronプロセスへDB操作リクエストを送る。
---
### **フェーズ3: アノテーション管理UIの追加**
**目標**:
- 付与したアノテーションを一覧表示し、編集・削除が可能な管理UIを作成。
- **表示フォントを選択可能にする**。
**機能詳細**:
- アノテーションリストを表示するサイドパネルを作成。
- リスト内のアノテーションをクリックすると該当部分にスクロールしてハイライト。
- アノテーションの編集・削除が可能。
- フォント選択用のセレクトボックスを追加し、ユーザーが任意のフォントでテキストを表示できるようにする。
- フォント変更が即座に反映される。
**技術要素**:
- Reactでサイドパネルコンポーネントを作成。
- SQLiteからアノテーションデータを取得し、リスト表示。
- フォント選択用の`