世界を動かす技術を、日本語で。

Show HN: Doxx – Glowに触発されたターミナル用.docxビューワー

概要

doxx は、Microsoft Wordの .docxファイル をターミナルで直接閲覧できる高速かつ高機能なツール。 Rust製 でパフォーマンスと信頼性に優れ、表やリストも美しく表示。 検索・エクスポート・コピー など多彩な機能を搭載。 クロスプラットフォーム 対応で、Windows/Mac/Linuxで利用可能。 サーバー作業や自動化、開発者のCLIワークフローに最適。

doxx:Wordドキュメントをターミナルで美しく閲覧

  • Microsoft Word (.docx)ファイル をターミナルで直接閲覧可能なドキュメントビューア
  • Rust製 で高速・高信頼性
  • 美しいレンダリング :書式や強調表示、階層付きリストに対応
  • 表のスマート表示 :ヘッダー自動判別、データ型認識、整列、Unicode罫線
  • 全文検索 :強調表示・前後コンテキスト付き
  • ドキュメントアウトライン 表示で大規模文書も快適ナビゲーション
  • 複数の表示モード (ドキュメント/アウトライン/検索/ヘルプ)切替
  • コピー機能 :表示中の内容をクリップボードへコピー
  • コンテキスト別コピー :ドキュメント全体、アウトライン、検索結果ごとに内容を変えてコピー
  • クロスプラットフォーム :Windows、macOS、Linux(X11/Wayland)対応
  • エクスポート機能 :Markdown、CSV、テキスト、JSON形式で出力
  • CLIフレンドリー :スクリプトや自動化にも最適
  • 直感的な操作性 :キーボードショートカットとマウスサポート
  • インタラクティブUI :リアルタイムで文書を操作・閲覧

基本的な使い方とインストール

  • インストール
    • Rustが必要
    • git clone https://github.com/bgreenwell/doxx.git
    • cd doxx && cargo install --path .
  • コマンド例
    • ドキュメント閲覧:doxx quarterly-report.docx
    • アウトライン表示:doxx document.docx --outline
    • 検索:doxx contract.docx --search "payment terms"
    • エクスポート:
      • CSV出力:doxx spreadsheet.docx --export csv > data.csv
      • Markdown出力:doxx report.docx --export markdown > report.md
      • JSON出力:doxx document.docx --export json > structure.json
    • ヘルプ表示:doxx --help

主な特徴・機能詳細

  • 美しいターミナルレンダリング
    • シンタックスハイライト・書式維持
    • プロフェッショナルな表表示(Unicode罫線、整列)
    • ネストリストの正しいインデント
  • スマート表サポート
    • 自動ヘッダー認識
    • 数値・テキスト・ブール値の自動整列
    • 通貨・パーセント・日付などの型判定
    • 表内検索(ヘッダー・セル内容)
  • クリップボード連携
    • 表示内容をそのままコピー
    • ビューごとに内容を変えてコピー(例:アウトラインのみ、検索結果のみ)
  • 多彩なエクスポート
    • Markdown形式で表も美しく出力
    • CSV抽出でデータ分析にも活用
    • テキスト出力で他ツールとパイプ連携
    • JSONで文書構造を完全出力
  • CLI・自動化対応
    • スクリプト・パイプラインに組み込みやすい設計
  • 直感的な操作性
    • キーボード:↑/k/↓/j/ページ移動/o(アウトライン)/s(検索)/c(コピー)/F2(検索結果コピー)/n,p(検索移動)/h,F1(ヘルプ)/q(終了)
    • マウスホイール対応
  • エラーハンドリング・ステータス表示
    • 処理状況やエラーを明確にフィードバック

他ツールとの比較・doxxの優位性

  • 既存ツールの課題
    • docx2txt:書式消失・表が崩れる・インタラクティブ性なし
    • antiword:.docのみ対応・書式消失
    • pandoc:変換チェーン必要・表や書式の再現度低い
    • glow/bat:Markdownやコード用・Wordファイル非対応
    • Microsoft Word:起動遅い・ライセンスコスト・GUI必須
  • doxxの強み
    • .docxの書式・構造をターミナルで忠実に再現
    • 表の整列・罫線・型認識が秀逸
    • インタラクティブなTUI(ターミナルUI)で快適操作
    • SSH経由でも利用可能
    • Markdown/CSV/JSONへの多彩なエクスポート
    • 起動50ms、メモリ消費15MB、ライセンスフリー
    • スクリプト・自動化にも最適

開発・アーキテクチャ

  • Rust 製で高パフォーマンス・堅牢性
  • docx-rs :Wordファイル解析
  • ratatui :美麗なTUI構築
  • unicode-segmentation :Unicode対応テキスト処理
  • regex :強力な検索機能
  • プロジェクト構成
    • main.rs:CLI引数・エントリポイント
    • document.rs:ドキュメント解析・表構造
    • ui.rs:TUI描画・操作
    • export.rs:各種エクスポート
    • ai.rs:AI連携(今後追加予定)

今後のロードマップ・計画

  • AI連携 :要約・Q&A・スマートデータ抽出
  • ハイパーリンク サポート
  • 画像説明(AI生成altテキスト)
  • テーマ・カスタマイズ
  • Webインターフェース
  • ローカルAIモデルによるプライバシー重視設計

コントリビューション・ライセンス

  • MITライセンス で自由に利用・改変可能
  • PR・Issue歓迎 :新機能提案やバグ報告も積極受付中
  • Rustコミュニティ・Glow等のCLIツールにインスパイア

作者からのメッセージ

  • Wordファイルを開くたびに8秒待つのが煩わしくて開発
  • CLIでWord文書を即座に閲覧・検索・コピー・エクスポート
  • SSH越しやサーバー作業時に最適
  • glowやbat等CLIツールとの併用におすすめ
  • インストール例
    • cargo install --git https://github.com/bgreenwell/doxx
    • doxx quarterly-report.docx
  • フィードバック歓迎 :使い心地や要望をぜひ

doxx は、CLI作業が多い開発者・運用者・データ分析者にとって、Word文書閲覧の新しい標準ツール。 書式・表・リストも美しく再現 し、 検索・エクスポート・コピー も自在。 サーバー・ローカル問わず、ターミナルからWordの情報を最大限引き出す ための最適解。

Hackerたちの意見

すごいプロジェクトだね!法律事務所で使うのが楽しみだよ。ただ、名前が誤解を招くし、同音異義語の「doxxing」のせいでネガティブなイメージがあるのが残念。

同じこと考えてた。プロジェクトの名前を変えることを検討する価値があるかもね。メンテナンスする人やユーザーのために、そういう状況を避けられるし。

これが法律事務所にとってどういう解決策になるのか、ちょっと気になるな。弁護士がサーバーにSSHで入ることってどれくらいあるの?それとも、俺が無知なだけ?

名前は「docc」にした方がいいかもね。「thicc」みたいに。

これは100%意図的な言葉遊びだよ!「Doxxing」は、内容をMicrosoft Wordに閉じ込めるんじゃなくて、ターミナルで公開することで「文書を解放する」って意味だから。プロジェクト全体が「Officeからの解放」についてだから、このダジャレはぴったりだと思った。正直、あんまりクリエイティブじゃないから、Google Geminiで「面白い」名前を考えてたんだ。

すごくいいね!これは確実に俺のツールボックスに入るよ。別のチャットボットじゃないものを見るのは新鮮だね。

これ、pandocで似たようなことやったことあるよ:pandoc -s -t man "$1" | groff -T utf8 -man | ${PAGER:-less} フォーマットがたくさん保持されるんだ。ターミナルでREADMEファイルを読むのが一番好きな方法だよ。

これ、Track Changesとやり取りできるのかな?レビューやコメントは?多分、複雑な問題だろうけど、たまに興味があるかもしれない。他に明らかじゃなかったことなんだけど、ドキュメントのメタデータや隠れたテキスト要素を抽出できる?

これ、めっちゃいいね!早くWindows用のリリースが出るといいな。新しいマシンにMS Officeをインストールするのが本当に面倒で、最近はそれをやめてOffice 365の無料版でドキュメントを見たり編集したりしてるんだけど、効率やプライバシーの面では最悪だよ。でも、少なくともマシンには入ってないからね。Wordの簡易版があって、docxファイルを見たり基本的な編集やコメントができるように、wingetでサクッとインストールできるといいのに。私は全部Markdownでやってるけど、企業環境ではMarkdownを送るとみんなWordに変換して返してくるんだよね… それにしても、Wordの起動に8秒?どんなコンピュータ使ってるの?Wordはパフォーマンスの怪物じゃないけど、そんなに遅くもないよ。

LibreOfficeはシンプルなWord管理がしたいならいい選択肢だよ。ただ、インストールは結構大きいけどね。

これがDockerイメージに入ってたらめっちゃいいな。go installしなくて済むし。

素晴らしいプロジェクトだね!スピードとレスポンスが大好き。でも一つお願いがあるんだけど、計画している「AI統合」は完全にオプションにして、組み込まないようにしてほしいな。さらに良いのは、姉妹プロジェクト(「aidoxx」?)にすること。Wordドキュメントの内容を外部サービスに送る機能があると、いろんな環境でこのツールの採用が難しくなるからね。

私は普段AIに対して抵抗はないけど、CLIツールにオンライン機能があったら、セキュリティチームがそのツールを禁止するのも分かるよ。

これ、ほんとにすごい!ドキュメント関連の開発をしてる私たちには超役立つよ。もしまだ使ってなかったら、他にも開発に使えるプロジェクトをいくつか紹介するね:- https://github.com/mikeebowen/OOXML-Validator (編集する予定があるなら、他のWordユーザーがレンダリングできるように確認してね) - https://marketplace.visualstudio.com/items?itemName=yuenm18.... (OOXMLファイルのデバッグに素晴らしいVSコード拡張) それと、意外と多くのユーザーが驚くのは、古いスタイルのWord(.doc)ファイルがまだまだ一般的だってこと。だから、ライセンスに慣れたらAntiword(https://github.com/grobian/antiword)を統合することを考えてもいいかも。スタイルが番号付けに重要な役割を果たすから、番号レベルを計算する前にスタイルを適用するのを忘れないでね。全体的にすごくクールだよ!DocxとRustについて情報交換したいときは連絡してね。メールはプロフィールに書いてあるから。頑張って!

ちょっと脱線するけど、Google Docsでドキュメントを見てるときに、同僚が見てるのが分かるとプレッシャー感じる人いる?カーソルが見えるし…。

これの一番好きなバージョンは、誰かが他の人がテキストの範囲を選択したときにそれが見えるっていうアイデアを紹介されたときだね。ビデオ会議でプレゼンされているドキュメントにその選択が表示されるのを見ると、みんなの反応が面白いんだよね。

Rustとratatuiで作られた素敵なプロジェクトがたくさんあるのに気づいたよ。クリエイターやメンテナーに感謝!