4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】Markdownを読み込みtreeを生成する方法

Last updated at Posted at 2023-03-24

[1.2.0] - 2025-09-21にバージョン更新

Added

  • -e 文字コード オプションでエンコードを指定可能に
  • -p オプションで見出しをそのまま出力することが可能に

Changed

  • 内部コードをリファクタリング(ユーザー影響なし)

Fixed

  • UnicodeDecodeError が発生するケースを改善

1. はじめに

Markdownは、見出しの大きさを「#」の数で指定し、文章を簡単に構造化できる記法です。また、一定のルールに基づいてHTMLにレンダリングされるため、多くのブログで採用されています(例: Qiita)。

Markdownを使用して情報をまとめる際、全体の構造を一目で把握したくなることがあります。その際に便利なのが、Markdownファイルの階層構造をUNIXコマンドのtreeのように出力することができるmarktreeコマンドです。

Linux向けからの変更

以前はLinux向けにaptでインストールできるようにPPAリポジトリを使用していましたが、Windowsに戻ったためスクリプトを書き直し、パッケージ名も「markdown-tree」から「marktree」に変更しました。インストールはPyPIを使用します。

詳しい開発経緯は以下の記事をご覧ください。

2. セットアップ(Setup)

pipを使用してインストールします。

pip install marktree

Windowsで「警告」が出た時の対処方法

Windowsでpip installを実行すると、PATHに通っていない旨の警告("WARNING: The script clipcount.exe is installed in 'ファイルパス' which is not on PATH.")が表示されることがあります。この場合、C:\Users\user\Documents\PowerShell\Profile.ps1に以下のようにPATHを追加してください。

C:\Users\user\Documents\PowerShell\Profile.ps1
$env:path += ";C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\Scripts"

Powershellのバージョンが「5」なら、Profile.ps1の保存先フォルダは「Powershell」から「WindowsPowerShell」に変えてください。
上記の設定は、Powershellのバージョン「7」を想定しています。

詳しくは以下の記事を御覧ください。

また、WARNING: Failed to write executable - trying to use .deleteme logic といった警告が出てインストールそのものが出来ないこともあります。この問題の解決については、以下の記事をご参照ください。

3. 簡単な使い方(Quick usage)

marktree [オプション] [hoge.md]
オプション 説明
marktree -h ヘルプ画面を表示します。
marktree --help-jp ヘルプ画面を日本語で表示します。
marktree -L 3 -Lオプションはツリーが表示される階層を決定します。(デフォルト: 6)
marktree -C -Cオプションは、クリップボードにコピーされたMarkdownテキストをツリー形式で直接出力します。
marktree -P -Pオプションを指定すると、ツリー化せずに見出しをそのまま出力します。
marktree -E 文字コード -Eオプションでファイルの文字コードを指定できます(例: utf-8, cp932, shift_jis)。「Decode Failed」というエラーが出たら使用してください(デフォルト: utf-8 )

次のようなMarkdownファイルhoge.mdを用意してください。

# h1
ここではセクション全体の概要を紹介します。読者がこの章で何を学べるかを簡単に説明します。

## h2
最初のトピックについて詳しく説明します。背景や前提条件もここで示します。

### h3
この小節では、上で紹介したトピックに関する具体的な詳細を述べます。

#### h4
さらに理解を深めるための補足情報や注意点をここに記載します。

#### h4
追加の例やポイントを挙げて、前の小節の内容を補強します。

## h2
このセクションでは、二つ目の主要なポイントを紹介し、関連情報を提供します。

## h2
別の重要なトピックについて説明し、例や考察を加えます。

### h3
二つ目のトピックに関する詳細を掘り下げ、重要な概念を解説します。

#### h4
具体的な使用例やケーススタディを示し、理解を助けます。

##### h5
補足的なポイントや注意事項を挙げ、主要な議論をサポートします。

###### h6
参考情報や注釈、追加のヒントなど、詳細情報を提供します。

### h3
この小節の結論として、重要なポイントをまとめます。

# h1
最後のセクションでは全体のまとめを行い、読者への締めくくりを提供します。

  • 通常の出力(デフォルトの階層は6):
$ marktree hoge.md
├── h1 
│  ├── h2 
│  │  └── h3 
│  │     ├── h4 
│  │     └── h4 
│  ├── h2 
│  └── h2
│     ├── h3 
│     │  └── h4 
│     │     └── h5 
│     │        └── h6 
│     └── h3
└── h1 
  • -L 3を使用して階層を決める:
$ marktree -L 3 hoge.md
├── h1 
│  ├── h2 
│  │  └── h3 
│  ├── h2 
│  └── h2
│     ├── h3 
│     └── h3
└── h1 
  • -Cを使用すると、クリップボードにコピーされたMarkdownテキストをツリー形式で直接出力します。さらに、-Lを組み合わせて使うこともできます:
$ marktree -C -L 3 
├── h1 
│  ├── h2 
│  │  └── h3 
│  ├── h2 
│  └── h2
│     ├── h3 
│     └── h3
└── h1 
  • -Pを使用すると、見出しをそのまま出力します。文章の見出しだけ取得したい場合に、ご使用ください:
$ marktree -C -P 
# h1
## h2
### h3
#### h4
#### h4
## h2
## h2
### h3
#### h4
##### h5
###### h6
### h3
# h1

4. 使い方(Usage)

marktree コマンドは、Markdown ファイルの # に基づいてファイルをツリー階層として出力します。

  • -L オプションは、元の tree コマンドと同様に出力の深さを指定します。深さは 1 から 6 まで可能で、それ以上を指定するとエラーが発生しますので注意してください。(デフォルト: 6)
  • -C オプションは、クリップボードにコピーされた Markdown テキストをツリー形式で直接出力します。これにより、Markdown テキストを別ファイルにコピーする必要がなくなります
  • -P オプションを指定すると、ツリー化せずに見出しをそのまま出力します。ツリー構造ではなく平文で見出しだけ確認したい場合に便利です
  • -E オプションでは、ファイルを開く際の文字コードを指定できます(例: utf-8cp932shift_jis)。文字化けを防ぐため、ファイルの実際の文字コードに合わせて指定してください。(デフォルト: utf-8

オプションの順序は、渡す Markdown ファイルを含めて特に決まっていません。
また、複数のファイルを渡した場合(例: markdown hoge.md foo.md)、最後に指定したファイルのみが変換されて出力されます。

5. まとめ

marktreeはMarkdownファイルを読み込み、「#」の数だけ階層が深くなるtreeを生成するコマンドです。目次代わりにも使えるので、ぜひ試してみてください。

6. GitHubとPyPI

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?