Skip to main content

日本の公用文書(司法文書、行政文書)をMarkdown形式とMicrosoft Word形式との間で変換します

Project description

MAKDO(MS WordのファイルをMarkdownで編集するアプリ)

MAKDOのLOGO

〜〜 MS Wordがなくても、MS Word形式のファイルを読んだり編集できたりします 〜〜

〜〜 わずらわしいナンバリング(番号付け)やインデント(字下げ)から、あなたを解放します 〜〜

このアプリの概要

このアプリは、 Markdownという記法(ウェブページのHTMLを簡単にして使いやすくした記法)を使って、 MS Word形式(拡張子"docx")のファイルを読んだり編集したりしようという野心的なアプリです。

専用エディタが付属しており、 ① MS Word形式のファイルをMarkdown形式に変換して開いたり、 ② Markdown形式のファイルをそのまま開いたり、 ③ Markdown形式の原稿を編集したり、 ④ 編集した原稿をMS Word形式に変換して保存したり、 ⑤ 編集した原稿をそのままMarkdown形式のファイルに保存したり、 簡単にできます。

↓↓↓ MAKDOの実行の様子

MAKDOの実行の様子

↓↓↓ MAKDOで作成したファイルをMS Wordで開いた様子

MS Wordで開いた様子

このアプリのメリット

Markdown形式を使って、MS Word形式のファイルを読み書きします。 いわゆるワープロソフトの代わりになります。

** MS Wordや一太郎がなくても、このアプリは使えます。 **

このアプリには、次のようなメリットがあります。

  • 「第1、第2…」や「ア、イ…」などのナンバリングを自動でやってくれるようになります
  • インデント(字下げ)を自動でやってくれるようになり、手作業で設定する必要がなくなります
  • 草冠が「十十」の花などの異字体(人名漢字)を「花6;」などと書くことで簡単に使えます
  • 簡単なスクリプトが使えるので、金額などを自動で計算してくれるようになります(超便利!)
  • 簡単なスクリプトが使えるので、1か所を変更したら、他の所にも反映するようにできます
  • grepコマンドを使って、過去に作成した書面に検索をかけられるようになります
  • diffコマンドを使って、原稿間の違いを確認できるようになります
  • 原稿を比較する機能を使って、原稿間の違いを確認して、反映させることができます
  • 定型文書をコンピューターで自動で作成できるようになります
  • LinuxやFreeBSDでも、WindowsやmacOSと同じ仕事ができるようになります

このアプリと相性の良い書面

このアプリは、 Markdown記法を使って文章を論理構造を指示したものを整形し、 MS Word形式のファイルに変換するものです。

そのため、論理的な文章の作成、具体的には ①法律家の書面の起案、 ②官公庁の公文書の作成、 ③研究者の学術論文の作成 などに向いています。

逆に、 新聞の折込広告などのように、デザインを重視する書面の作成には向いていません。

このアプリの動作環境

Windows、macOS、Linux等で動作します。

このアプリの実行方法

Windowsの場合

一般の方でWindowsのパソコンをご使用の方は、 下記のリンクから実行ファイルのZIPファイルをダウンロードしてください。

実行ファイルのダウンロードページ

ZIPファイルをダウンロード後、適当なフォルダに展開して、 トップフォルダにあるmakdo_win.exeをダブルクリックして、起動してください。

環境の設定やアプリのインストールが不要で、そのまま使えます。

macOSの場合

macOSの開発環境がないため、macOS用の実行ファイルはありません。

現時点では、 Python3(Pythonのバージョン3)及び必要なモジュールをインストールして、 ソースファイルを実行する必要があります。

詳しくは、下記「ソースファイルについて」をご参照ください。

ソースファイルから起動する方法

githubのレポジトリのソースファイルは、開発者向けです。

一般の方は、上記「このアプリの実行方法」をお読みいただき、 実行ファイルを使って、アプリを起動してください。

ソースファイルからアプリを起動するためには、 Python3及び必要なmoduleをインストールする必要があります。

Python3のインストール

ソースファイルからアプリを起動するためには、 まず、Python3をインストールする必要があります。

なお、macOSにはPython2がインストールされていますが、 Python2では動作しませんので、Python3をインストールする必要があります。

下記の公式サイトのダウンロードページから、 インストーラーをダウンロードして実行し、インストールしてください。

Windows用のダウンロードページ

macOS用のダウンロードページ

インストーラ−は、 Windowsの場合はpython-(VERSION)-amd64.exe、 macOSの場合はpython-(VERSION)-macosx(macOSのVERSION).pkgです。

なお、 公式ストアーやパッケージ管理ソフトからも、Python3をインストールできるはずです。 そちらを使ってインストールした方が、管理が楽なのでおすすめです。

モジュールのインストール

ソースファイルからアプリを起動するためには、 次のpython3のモジュールをインストールする必要があります。

  • python-docx / MS Word形式のファイルを作成するために必要です。
  • chardet / 入力ファイルの文字コードを判別するために必要です。
  • tkinterdnd2 / GUIのために必要です。
  • pywin32 / MS Wordやブラウザを起動するために必要です。
  • openpyxl / MS Excel形式の表を文書に取り込むために必要です。
  • openai / OpenAIの生成AIを使うために必要です。
  • Levenshtein / 2つの原稿を比較するために必要です。

コマンドプロンプト(Windowsの場合)又はターミナル(macOSの場合)で、 次のコマンドを実行してインストールしてください(python-docxの場合)。

python3 -m pip install python-docx

python3は、パソコンによってはpythonpyになっている場合があります。 python3で実行できない場合は、pythonpyに変えて実行してみてください。

また、 SSL認証のエラーが出る場合は、--trusted-hostを付けて、 下記のコマンドを実行してください。

python3 -m pip install python-docx --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org

うまく実行できない場合には、python3の実行ファイルをフルパスで指定するか、 環境変数PATHの設定をお願いします。

起動方法

makdo.pyをダブルクリックするか、 MS Word形式のファイル(拡張子docx)又はMarkdown形式のファイル(拡張子md)を ドラッグ&ドロップするかして、起動してください。

pipを使ってインストールして起動する方法

この方法は、Pythonに慣れている方向けです。

一般の方は、上記「このアプリの実行方法」をお読みいただき、 実行ファイルを使って、アプリを起動してください。

Python3のインストール

上記「ソースファイルから起動する方法」の「Python3のインストール」に従って、 Python3をインストールしてください。

モジュールのインストール

上記「ソースファイルから起動する方法」の「モジュールのインストール」に従って、 各モジュールをインストールしてください。

さらに、下記のコマンドで、このアプリのモジュールもインストールしてください。

python3 -m pip install makdo

実行ファイルmakdo.pyの作成

makdo.pyという名前で、次の内容のファイルを作成します。

#!/usr/local/bin/python3
from makdo import Makdo
Makdo()

起動方法

makdo.pyをダブルクリックするか、 MS Word形式のファイル(拡張子docx)又はMarkdown形式のファイル(拡張子md)を ドラッグ&ドロップするかして、起動してください。

MS Word形式とMarkdown形式について

MS Word形式とは

MS Word形式とは、 マイクロソフト社が開発し販売するワープロソフトWordが使用するファイル形式で、 次のような書式のファイルです。

                  訴状

                              令和元年2月3日
広島地方裁判所 御中
                  原告訴訟代理人弁護士 秦 誠一郎

第1 請求の趣旨
 1 被告は原告に対し1万円支払え。
 2 訴訟費用は被告の負担とする。
 との判決及び仮執行宣言を求める。

第2 請求の原因
 …

                 添付書類
1 訴状副本  1通
2 資格証明書 1通

サンプル画像を用意しましたので、 "image"フォルダの中の"sojo-msword.png"をご覧ください。

↓↓↓ 公用文書書式のMS Word形式のファイルのサンプル画像

MS Word形式のファイルのサンプル画像

"sample"フォルダの中にサンプルファイルを用意しておりますので、 そちらもご覧ください。

Markdown形式とは

Markdown形式とは、 テキスト形式のファイルで(メモ帳で開くことができます。)、 次のような書式のファイルです。

# 訴状(←タイトル)

令和元年2月3日 :(←右寄せ)

: 広島地方裁判所 御中(←左寄せ)

<=4(全体を左に4文字ずらす)
原告訴訟代理人弁護士 秦 誠一郎 :(←右寄せ)

v=1(←1行下げる)
## 請求の趣旨(←第1、第2…)

### 被告は原告に対し1万円支払え。(←1、2…)

### 訴訟費用は被告の負担とする。(←1、2…)

<<=1 <=1(←1行目の字下げをなくす、全体を左に1文字ずらす)
との判決及び仮執行宣言を求める。

v=1(←1行下げる)
## 請求の原因(←第1、第2…)

…

v=1(←1行下げる)
: 添付書類 :(←中央寄せ)

1. 訴状副本  1通(←箇条書)
1. 資格証明書 1通(←箇条書)

サンプル画像を用意しましたので、 "image"フォルダの中の"sojo-makdo.png"をご覧ください。

↓↓↓ Markdown形式のファイルのサンプル画像

Markdown形式のファイルのサンプル画像

"sample"フォルダの中にサンプルファイルを用意しておりますので、 そちらもご覧ください。

なお、このREADME自体も、Markdown形式で書かれています。

実装できていない機能

MS Wordの機能のうち、 日常使用する機能のかなりの部分は実装できていますが、 実装できていない機能もたくさんあります。

段落内の改行幅を広げたときの段落の前後のスペース

python-docxでは、段落内の改行幅を広げた場合、 自動的に段落の前後のスペースが広がってしまいます。

段落内の改行幅を狭めた場合も、自動的に段落の前後のスペースの幅が狭まりますが、 こちらは手動で段落の前後のスペースを広げることにより、調整しています。

しかし、段落の前後のスペースは負の値を持つことができませんので、 段落内の改行幅を広げた場合、手動で段落の前後のスペースを狭めることができません。

その結果、段落内の改行幅を広げた場合、段落の前後のスペースが広がってしまいます。 しかも、前後で広がり方が均一でないため、見た目が悪くなってしまいます。

これは、python-docxの仕様(もしかしたらMS Wordの仕様?)ですので、 現時点では対応不可能です。

表の上下の空白

MS Wordには、表の上下の空白を調整する機能がありません。

そのため、MS Wordでは、 表の上の空白を調整する代わりに、表の前の段落の下の空白を調整したり、 表の下の空白を調整する代わりに、表の次の段落の上の空白を調整したりすることで、 代用しています。

本アプリでも同様の処理をしてすることで、代用しています。

水平線の読み取り

MS Wordは、水平線は一般の段落の書式と扱われています。

これに対し、 Markdownでは、水平線は独立の段落として扱われます。

この違いにより、 MS Word形式のファイルをMarkdown形式のファイルに変換した際、 うまく変換できない場合があります。

均等割付け

均等割付けとは、「秦  誠 一 郎」のように、 文字列を一定の幅で均等に広げることです。 日本では、人名などで見た目を整えるために、昔から広く多用されてきました。

均等割付けは、XMLのタグを直接埋め込むことにより、理論上、実装可能です。

ただし、MS Wordの仕様のために、美しい実装は不可能です。

そもそも、均等割付けは、見た目だけの問題にすぎないうえ、 AIが書面を読んだ際に意味の理解の妨げになる可能性がありますので、 原則として使うべきではないと考えております。

そのため、均等割付けは実装しておりません。

どうしても均等割付けが必要な場合には、 <N>Nは数字で、小数も可)で任意の空白を入れられるようにしておりますので、 こちらを使って割り付けてください。

例えば「秦  誠 一 郎」は、「秦<2.0>誠<0.5>一<0.5>郎」となります。

行番号の文字の大きさ

技術上の問題で、実用上は問題ありませんが、 行番号の文字の大きさを、行番号用のスタイルで変更できていません。

仕方なく、Normalスタイルの文字を小さくし、別にスタイルを作成して、 本文はそのスタイルを適用してごまかしています。

この方法はスマートではないので、今後、なんとかしたいと考えています。

見出し機能

見出し機能は、あえて使っていません。

これは、 見出し機能などの特別な機能を使わなくても論理的な文章は書ける一方で、 ほとんどの方が見出し機能を使っておらず使いこなせないためです。

pandocなどの優れたソフトを使わずに、あえて自作した理由もその点にあります。

テキストボックス

テキストボックスは、実装していません。

しかし、 テキストボックスは、原稿の論理性と整合しませんので、 論理的な文章を書く場合には、使うべきではないと考えています。

著作権

Copyright © 2022-2024 Seiichiro HATA

ライセンス

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

自己紹介

名前

秦 誠一郎(はた せいいちろう)

本業

広島弁護士会所属の弁護士です。

国政法律事務所(広島市中区上八丁堀5番27号アーバンビュー上八丁堀701号)に勤務しています。

経歴

広島県立安古市高校

大阪大学理学部物理学科(高エネルギー物理学)

京都大学大学院理学研究科(数理解析研究所)

連絡先

弁護士 秦 誠一郎の公式ページ

弁護士 秦 誠一郎の連絡先

ウェブページ

ソースコードのページ(github)

ライブラリのページ(PyPI)

簡易実行ファイルのページ

名前の由来

"MAKDO"は、"MAKe DOcx"と"MArKDOwn"を兼ねています。

"魔苦怒"は、 「このアプリの"魔"法で、 ナンバリング(番号付け)やインデント(字下げ)の"苦"しみや"怒"りから、 皆様を解放したい」 という思いで、名付けました。

ヒストリー

2022.07.21 v01 Hiroshima リリース

最初のリリースです。

2022.08.24 v02 Shin-Hakushima リリース

修正を加えたリリースです。

2022.12.25 v03 Yokogawa リリース

修正を加えたリリースです。

2023.01.07 v04 Mitaki リリース

日本語対応を強化しました。

2023.03.16 v05 Aki-Nagatsuka リリース

修正を加えたリリースです。

2023.06.07 v06 Shimo-Gion リリース

大幅な修正を加えたリリースです。

2024.04.02 v07 Furuichibashi リリース

大幅な修正を加えたリリースです。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

makdo-7.10.tar.gz (227.6 kB view hashes)

Uploaded Source

Built Distribution

makdo-7.10-py3-none-any.whl (225.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page