TauriとMilkdownで構築された、マルチウィンドウ対応のMarkdownメモ帳アプリです。各ノートを独立したウィンドウ(付箋のような感覚)として開くことができ、メインウィンドウで一元管理できます。
- マルチウィンドウ: 複数のノートを同時に独立したウィンドウとして開くことができます。
- WYSIWYG編集: Milkdown (Crepe) を採用し、Typoraライクな直感的なMarkdown編集が可能です。
- ソースモード: WYSIWYGと生のMarkdown表示をワンクリックで切り替えられます。
- 自動保存: 内容は自動的に保存され、ウィンドウの位置やサイズも記憶されます。
- ダッシュボード: 作成したノートを一覧表示し、管理(作成・削除・検索)できます。
- カスタマイズ: 行間の調整などが可能です。
- ファイル連携:
.mdファイルをアプリに関連付けて開くことができます。
| 領域 | 技術 |
|---|---|
| フロントエンド | Vanilla JavaScript, HTML, CSS |
| エディタコア | Milkdown (Crepe) |
| バックエンド | Rust (Tauri) |
| ビルドツール | Vite |
src/
├── index.html # メインウィンドウ(ノート一覧/ダッシュボード)
├── main.js # メインウィンドウのロジック
├── note.html # ノート編集ウィンドウ
├── note.js # エディタのロジック(Milkdown初期化、自動保存など)
├── style.css # グローバルスタイル
└── src-tauri/ # Rustバックエンド(ファイル操作、ウィンドウ管理、コマンド)
開発環境をセットアップするには以下の手順を実行してください。 本アプリのデスクトップ版(Tauri)のビルドには Windowsネイティブ環境 が推奨されます(WSL2内では正常にウィンドウが立ち上がらない場合があります)。
- Node.js と pnpm (未インストールの場合は
corepack enable pnpmを実行) - Rust ツールチェーン (Windows用
rustup-init.exeからインストール) - Microsoft Visual Studio C++ Build Tools (C++によるデスクトップ開発 + Windows 10/11 SDK付き)
コードの品質を維持するため、ESLint, Prettier, Clippy, Rustfmt を導入しています。
pnpm lint: ESLint による静的解析を実行pnpm lint:fix: ESLint による自動修正を実行pnpm format: Prettier による自動フォーマットを実行pnpm format:check: フォーマットが正しいか確認
cd src-tauri && cargo clippy -- -D warnings: Clippy による静的解析を実行cd src-tauri && cargo fmt --check: フォーマットが正しいか確認
これらのチェックは CI でも自動的に実行されます。修正を行う際は、コミット前にこれらのコマンドを実行して確認することを推奨します。
# リポジトリのクローン後、依存関係のインストール
pnpm install
# 開発サーバーの起動(デスクトップアプリとして起動)
pnpm tauri devPlaywright を使用してフロントエンドのE2Eテストを実行します。
cross-env を利用しているため、Windows/Mac/Linux問わず同じコマンドで実行可能です。
pnpm run test:e2eVitest を使用してTypeScript/JavaScriptロジックの単体テストを実行します。
pnpm testsrc-tauri ディレクトリ内のRustコードのテストを実行します。
cd src-tauri
cargo test配布用のインストーラを作成するには:
pnpm tauri build本アプリは PWA 化されており、GitHub Pages にデプロイすることでスマホ(Android/iOS)からも利用可能です。
- Secrets の設定:
Settings > Secrets and variables > Actionsに以下を追加してください。VITE_GOOGLE_CLIENT_ID_WEB: Google Cloud のウェブクライアントIDVITE_GOOGLE_API_KEY: Google APIキー
- Pages の設定:
Settings > PagesのBuild and deployment > Sourceを "GitHub Actions" に変更してください。 - デプロイ:
mainブランチにプッシュすると、GitHub Actions により自動的にデプロイされます。
GitHub Pages のドメインを許可リストに追加する必要があります。
- 承認済みのリダイレクト URI:
https://<ユーザー名>.github.io/Markdown-Notes/ - 承認済みの JavaScript 生成元:
https://<ユーザー名>.github.io
- デプロイされたプロジェクトの URL(例:
https://kuroino721.github.io/Markdown-Notes/)にブラウザでアクセスします。 - ブラウザのメニュー(三点リーダーなど)から 「ホーム画面に追加」 または 「アプリをインストール」 を選択します。
- ホーム画面からアプリを起動し、Google ログインを行えば PC との同期が開始されます。
- レスポンシブ UI: スマホに最適化された1カラムレイアウト。
- オフラインサポート: PWA により、インターネット未接続時でもノートの閲覧・編集が可能です。
- 直接ナビゲーション: モバイル環境では操作性を考慮し、サイドパネルではなく画面遷移による編集を採用しています。
- 入力と同時にプレビュー更新
- 対応Markdown: 見出し、太字、斜体、リスト、コードブロック、リンク
| キー | 機能 |
|---|---|
Ctrl+/ |
表示モード切替 |
Ctrl+B |
太字挿入 |
Ctrl+I |
斜体挿入 |
Ctrl+K |
リンク挿入 |
Ctrl+S |
保存 |
Ctrl+O |
ファイルを開く |
Ctrl+1~6 |
見出しレベル |
- 開く/保存/名前を付けて保存
- .md, .txt ファイル対応
- 変更検知(タイトルに * 表示)
- 選択範囲へのフォーマット適用 - 現在はテキスト末尾に追加するのみ、カーソル位置に挿入すべき
- シンタックスハイライト - エディタ側のMarkdown構文ハイライト
- テーマ切り替え - ダーク/ライトモード
- 画像挿入 - ドラッグ&ドロップ対応
- アンドゥ/リドゥ - 操作履歴管理
- 検索・置換 -
Ctrl+F,Ctrl+H
MarkdownApp構造体がアプリ状態を保持ViewModeenum で表示モード(Split/Editor/Preview)を管理eframe::Apptrait のupdate()で毎フレームUIを描画
pulldown_cmark::ParserでMarkdownをパース- イベント駆動でタグを処理し、
egui::RichTextで描画 - 見出しはサイズ変更、コードブロックは背景色付き
ctx.input()でキー入力を検知- Modifiers(Ctrl)との組み合わせで処理を分岐