プログラミング
Rustで書かれたMicrosoft Wordのオープンソース・クリーンルーム再実装
An open-source, clean-room reimplementation of Microsoft Word in pure Rust (github.com)
要約
WordCraftは、Microsoft Wordの機能を持つオープンソースのワードプロセッサで、純粋なRustでゼロから再実装されています。macOS、Windows、Linux、BSD、およびWebAssembly上でネイティブに動作し、.docx形式の読み書きに対応しています。リボンインターフェース、スタイル、変更履歴、差し込み印刷などの機能を備え、AIエージェントによる操作も可能です。
全文翻訳
WordCraft
ライティングとドキュメントデザイン。
Microsoft Wordのオープンソース・クリーンルーム再実装、純粋なRustで再構築。
Wordのワークフローでおなじみの、高速でオープンソースのワードプロセッサ:リボン、スタイル、テーブル、変更履歴、参照、差し込み印刷。
.docxを読み書きし、macOS、Windows、Linux、BSDでネイティブに動作し、WebAssembly経由でブラウザでも動作します。
ArtCraftチームによる。
WordCraft on getartcraft.com
ArtCraft
All Crafting Apps
The Open Studio Handbook、WordCraftの組み込みサンプル:リボン、ライブスタイルギャラリー、ルーラー、ナビゲーションペイン。
Note
ArtCraftは、あらゆる分野のアーティストのコミュニティです。
画家、写真家、映画製作者、イラストレーター、デザイナー、アニメーター、ホビイスト、そして先週初めて鉛筆を手に取った人々。
あなたが何かを作る人なら、あなたは私たちの一員です。
Discordで挨拶してください。
ツアー
WordCraftの理由
今日の機能
クイックスタート
エージェント向け
アーキテクチャ
ロードマップ
ダウンロード
Crafting Apps
ライセンスとクレジット
ツアー
以下のすべてのスクリーンショットはWordCraft自体であり、独自のUIテストハーネス(cargo run -p wordcraft-ui-egui --example ui_shot)によってオフスクリーンでレンダリングされています。
レビュー。
変更履歴、余白のコメントバルーン、承認と却下、入力中のスペルと文法。
参照。
目次、脚注、APA、MLA、Chicago、IEEE形式の引用、索引、キャプション。
デザイン。
テーマ、スタイルセット、段落間隔、透かし、ページの色と境界線。
フォーマットマーク付きのダークモード、および挿入タブ:テーブル、画像、図形、リンク、ヘッダー、フッター、フィールド、記号。
レイアウト。
ドロップキャップ、画像や図形の周りのテキストの折り返し、自動ハイフネーション、行番号、ページ罫線。
ファイル。
テンプレートから開始、最近使ったドキュメントを開く、プロパティの編集、PDFおよびその他の形式へのエクスポート。
WordCraftの理由
使い慣れている。
Wordのリボンタブ、グループ、ショートカット、動作:Enterでリストを継続、Tabでインデント、Ctrl/⌘+Bでカーソル下の単語を太字に、スタイルギャラリーでスタイルをライブプレビュー、F4で繰り返し、F7でスペルチェック、F8で選択範囲の拡張。
あなたのファイル。
.docx(OOXML)を開いて保存します。また、.odt、.rtf、.html、.md、.tex(LaTeX)、.txtも扱います。Word 97-2003 .docを開きます。PDFを実際の選択可能なテキスト、リンク、ブックマーク付きでエクスポートします。
高速。
段落レイアウトはキャッシュされるため、188ページのドキュメントでのタイピングは、約1.4ミリ秒で再レイアウトされます。ページはオンデマンドでレンダリングされます。
どこでも。
macOS、Windows、Linux、BSD、およびWeb用の単一のRustコードベース。
Electronなし、Tauriなし:GPU上のネイティブegui。
エージェント向けに構築。
すべての操作はIDを持つコマンドです。同じ422のコマンドが、リボン、キーボードショートカット、コマンド検索、コマンドラインツール、JSON制御チャネル、MCPサーバーを駆動します。
プライベート。
スペル、文法、その他すべてがオフラインで動作します。
オープン。
MITまたはApache-2.0。
クリーンルーム:公開仕様と観察に基づいて構築され、すべての資産はオリジナルまたはオープンライセンスです。
今日の機能
エリアハイライト
ライティング
IME、スマートクォート、自動修正、リスト自動フォーマット(*、1.)、ダッシュ;単語、文、段落の選択;ドラッグ選択;フォーマット付きクリップボード;元に戻す/やり直し;正規表現での検索と置換。
フォーマット
フォント、サイズ、太字/斜体/下線スタイル、取り消し線、上付き/下付き、大文字、ハイライト、色、文字間隔、フォーマットペインター、大文字/小文字の変更、フォーマットのクリア。
段落
配置、インデント(ルーラーでドラッグ可能)、間隔、行間隔、リーダー付きタブ、罫線、網かけ、次ページへ維持、寡婦/孤立行制御。
スタイル
組み込みスタイルセット、ライブギャラリー、スタイルペイン、スタイルの作成/変更/更新、スタイルセット、テーマ。
リスト
箇条書き、番号付き、マルチレベル、再開、値の設定、カスタムフォーマット。
テーブル
グリッドによる挿入、結合/分割、縞模様の行付きスタイル、罫線、網かけ、ページをまたいで繰り返されるヘッダー行、ページをまたいで分割される行、ソート、数式、テキスト↔テーブル。
ページ
余白、向き、サイズ、段数、ページ/列/セクション区切り、ヘッダーとフッター(最初のページ、奇数/偶数)、ページ番号、透かし、ページ罫線、行番号、垂直配置、ドロップキャップ、自動ハイフネーション。
オブジェクト
画像(サイズ変更、トリミング、色変更、明るさ/コントラスト、透明度、背景除去、画像スタイル、回転)、図形、テキストボックス、テキストの折り返し付きフローティング配置(四角、上下、テキストの後ろまたは前)。
参照
目次、脚注と相互参照、引用と参考文献(APA、MLA、Chicago、IEEE)、キャプション、図表目次、相互参照、索引、権威リスト。
レビュー
提案付きスペルおよび文法チェック、類語辞典、単語数、余白バルーンまたはペインでのコメント、変更履歴、承認/却下、ドキュメントの比較、編集の制限、アクセシビリティチェッカー、ドキュメントインスペクター。
メーリング
CSVからの差し込み印刷、差し込みフィールド、住所ブロック、挨拶文、ルール、プレビュー、ドキュメントへの終了;封筒とラベル。
表示
印刷レイアウト、Webレイアウト、下書き、読み取りモード、フォーカス、ズーム、1ページ/複数ページ、ページ幅、ナビゲーションペイン、ルーラー、グリッド線、ダークモード;インターフェースは英語、简体中文、繁體中文、日本語、Português (Brasil)、Español、Українська、Српски / Srpski、Eesti、Türkçe、またはРусский(デフォルトでシステム言語に従う)。
ファイル
.docx読み書き(Wordで開く)、Word 97-2003 .docインポート、PDFエクスポート、.odt、.rtf、.html、.md、.tex、.txtインポート/エクスポート、ページ画像。
正直な絵、エリアごとの詳細はROADMAP.mdにあります。パリティ評価と生成された機能チェックリスト。
クイックスタート
git clone https://github.com/storytold/wordcraft
cd wordcraft
cargo run --release -p wordcraft -- --sample # サンプルドキュメント付きデスクトップアプリ
cargo run --release -p wordcraft -- report.docx # ドキュメントを開く
コマンドライン:
wordcraft-cli convert report.docx report.pdf # docx, pdf, odt, rtf, html, md, tex, txt, png
wordcraft-cli text report.docx # プレーンテキスト
wordcraft-cli inspect report.docx # JSONとしての構造
wordcraft-cli run --template sample \ --cmd 'select.text={"text":"Membership"}' --cmd format.bold --save out.docx
Web:
cd apps/wordcraft-web && trunk serve、その後 http://127.0.0.1:8771/?sample を開く。
エージェント向け:CLIおよびMCP
WordCraftは、人間とAIエージェントによって操作されるように設計されています。
claude mcp add wordcraft -- wordcraft-cli mcp # ヘッドレスドキュメント
wordcraft --control 7981 &
# または実行中のアプリを操作...
claude mcp add wordcraft-app -- wordcraft-cli mcp --connect 127.0.0.1:7981
ツールには、list_commands、execute、batch、type_text、select_text、inspect_document、render_page、save_document、および実行中のアプリではscreenshot、click、keyが含まれます。
エージェントは、スクリーンショットなしでinspect_documentを通じて作業を確認できます。docs/mcp.mdおよび制御プロトコルを参照してください。
マクロはコマンドの任意のシーケンスを記録し、再生します(tools.recordMacro、tools.macros)。
ログ
デスクトップアプリは、標準エラー出力と、設定の隣にあるlogs/wordcraft.logにログレコードを書き込みます。Linuxでは$XDG_CONFIG_HOME/wordcraft/logs/(デフォルトでは~/.config/wordcraft/logs/)、macOSでは~/Library/Application Support/WordCraft/logs/、Windowsでは%APPDATA%\WordCraft\logs\です。
デスクトップメニューまたはDockからの起動にはターミナルがないため、このファイルはバグレポートに添付するものです。docxの読めない部分、PDFエクスポートで省略せざるを得なかった画像やフォント、コマンドガードが回復したパニックなどです。
各起動時に、前のログはwordcraft.1.logに移動し(さらにwordcraft.2.logに移動)、クラッシュした実行のログは次の起動でも残ります。ログは16 MiBで成長を停止します。
--versionはファイルを書き込まず、WORDCRAFT_NO_PREFS(エージェントのテスト実行)で実行され、標準エラー出力のみにログを記録します。
ドキュメントテキストは決してログに記録されません。パニックメッセージは、引用したテキストを省略します。
デフォルトでは、WordCraft自身のクレートはinfoレベルでログを記録し、その他すべてはwarnレベルでログを記録します。
RUST_LOGは、env_loggerスタイルのディレクティブでこれを置き換えます。例:RUST_LOG=debug、RUST_LOG=warn,wordcraft_docx=trace、またはRUST_LOG=info,wgpu_core=warn。
ディレクティブの末尾の*は、それに続くすべてのターゲットに一致します(wordcraft*=debug)。
ロガーはapps/wordcraft/src/logging.rsにあります。
アーキテクチャ
レイヤー
クレート
ジョブ
L0
wordcraft-geom
単位と測定
L1
wordcraft-doc, wordcraft-fonts, wordcraft-proof
ドキュメントモデルと編集;フォントとシェーピング;