Markdownで振り仮名が使える「Markdown Furigana」

# はじめに
普段､VScodeでMarkdownを使っていると､たまに振り仮名を使いたくなる時がある｡振り仮名をふるにはHTMLの`<ruby>`でマークアップするのだが､せっかくMarkdownを使っているのだから簡単に使いたい｡

そこで調べたところ､`furigana-markdown-it`というnpmパッケージと､それを利用して作ったVScode拡張機能の`Markdown Furigana`を見つけたので紹介する｡

# Markdown Furigana

## インストール
VScode拡張機能の欄で「**furigana**」と入力すれば､「Markdown Furigana」が表示されるのでインストールする｡


拡張機能:[Markdown Furigana - Visual Studio Marketplace](https://l.pg1x.com/UCMi)


## 使い方
`[]`で漢字を囲い､`{}`で振り仮名を囲う

```md:foo.md
[猫]{ねこ}
```
この状態でMarkdownのプレビューを見れば､
<p><ruby>猫<rp>(</rp><rt>ねこ</rt><rp>)</rp></ruby></p>

と表示される｡

## より詳しい使い方
|インプット|リザルト|説明|
|:---:|:---:|:---:|
|[漢字]{かんじ}|<p><ruby>漢字<rp>(</rp><rt>かんじ</rt><rp>)</rp></ruby></p>|基本の形｡<br>文字全体に均等に振り仮名をふる｡|
|[漢字]{かん・じ}|<p><ruby>漢<rp>(</rp><rt>かん</rt><rp>)</rp>字<rp>(</rp><rt>じ</rt><rp>)</rp></ruby></p>|中黒で分けることで､それぞれの文字に振り仮名をふることができる｡|
|[取り返す]{とりかえす}|<p><ruby>取<rp>(</rp><rt>と</rt><rp>)</rp>り<rt></rt>返<rp>(</rp><rt>かえ</rt><rp>)</rp>す<rt></rt></ruby></p>|漢字だけに振ろうとしなくとも､送り仮名と重複される振り仮名は無視されて均等に振られる｡|
|[可愛い犬]{かわいいいぬ}|<p><ruby>可愛<rp>(</rp><rt>かわいい</rt><rp>)</rp>い<rt></rt>犬<rp>(</rp><rt>ぬ</rt><rp>)</rp></ruby></p>|しかし､上記のシステムが災いして､予期せぬ振りかたになることもある｡|
|[可愛い犬]{か・わい・いいぬ}|<p><ruby>可<rp>(</rp><rt>か</rt><rp>)</rp>愛<rp>(</rp><rt>わい</rt><rp>)</rp>い<rt></rt>犬<rp>(</rp><rt>いぬ</rt><rp>)</rp></ruby></p>|そういうときは､ちゃんと中黒を使うこと｡|
|[可愛い犬]{か＋わい・いいぬ}|<p><ruby>可愛<rp>(</rp><rt>かわい</rt><rp>)</rp>い<rt></rt>犬<rp>(</rp><rt>いぬ</rt><rp>)</rp></ruby></p>|中黒と+を組み合わせることもできる｡|
|[食べる]{たべる}|<p><ruby>食<rp>(</rp><rt>た</rt><rp>)</rp>べる<rt></rt></ruby></p>|上のシステム通り重複する振り仮名は無視される｡|
|[食べる]{=たべる}|<p><ruby>食べる<rp>(</rp><rt>たべる</rt><rp>)</rp></ruby></p>|もし､送り仮名も振り仮名に含めたいなら「=」を使う|
|[アクセラレータ]{accelerator}|<p><ruby>アクセラレータ<rp>(</rp><rt>accelerator</rt><rp>)</rp></ruby></p>|英語を振る事も当然できる|
|[accelerator]{アクセラレータ}|<p><ruby>accelerator<rp>(</rp><rt>アクセラレータ</rt><rp>)</rp></ruby></p>|逆に英語に振ることもできる|
|[あいうえお]{*}|<p><ruby>あ<rt>●</rt>い<rt>●</rt>う<rt>●</rt>え<rt>●</rt>お<rt>●</rt></ruby></p>|「*」を使うと､黒点を均等に振り仮名として振って強調できる｡|
|[あいうえお]{*❤}|<p><ruby>あ<rt>❤</rt>い<rt>❤</rt>う<rt>❤</rt>え<rt>❤</rt>お<rt>❤</rt></ruby></p>|任意の文字を振ることもできる｡|

## できないこと
|インプット|リザルト|説明|
|:---:|:---:|:---:|
|`[**漢字**]{かんじ}`|<p><ruby>**<rt></rt>漢字<rp>(</rp><rt>かんじ</rt><rp>)</rp>**<rt></rt></ruby>|太字にした文字に振り仮名をふることはできない｡|
|`**[漢字]{かんじ}**`|<strong><ruby>漢字<rp>(</rp><rt>かんじ</rt><rp>)</rp></ruby></strong>|振り仮名ごと「*」で囲むとうまくいく｡|
|[バカな奴]{ばかなやつ}|<ruby>バカな奴<rp>(</rp><rt>ばかなやつ</rt><rp>)</rp></ruby>|「バカ」と「ばか」は別の文字として認識される|
|[「はい」と言った]{「はい」といった}|<ruby>「はい」と言った<rp>(</rp><rt>「はい」といった</rt><rp>)</rp></ruby></p>|同じ記号でも､記号は別の文字として認識される|

# furigana-markdown-it
以上で､VScodeで振り仮名を簡単に振れるようになる｡
ただ､人によっては自作のMarkdownエディタにこの機能を取り込みたい人もいると思うので､npmパッケージについても説明する｡

Git:[iltrof/furigana-markdown-it: Furigana plugin for markdown-it](https://l.pg1x.com/RzEF)


## インストール
```bash:npmでインストール
npm install furigana-markdown-it
```

## JavaScriptファイルへの導入

```js:index.js
const md = require("markdown-it")(),
  furigana = require("furigana-markdown-it")();

md.use(furigana);
```

## オプション

furigana-markdown-itにはオプションが存在し､`require`する際に指定できる｡
オプションは三つ｡
```js:index.js
const furigana = require("furigana-markdown-it")({
  fallbackParens: "()",
  extraSeparators: "-",
  extraCombinators: "'"
});
```

### fallbackParens
`<ruby>`が使用できない環境で使用されるフォールバックのカッコを変えることができる｡
デフォルトは`【】`｡
たとえば､`[漢字]{かんじ}`と入力しても反映されないときは､自動で`漢字【かんじ】`となる｡この`【】`を任意の記号に変えられる｡

上記の設定では`漢字(かんじ)`となる｡

### extraSeparators
振り仮名を振り分けることができる記号を指定できる｡
デフォルトは`.．。・|｜/／`｡

上記の設定では`[漢字]{かん-じ}`と書ける｡

### extraCombinators
特定の箇所の振り仮名を均等に振り分けるための記号を指定できる｡
デフォルトは`+`｡

上記の設定では､`[可愛い犬]{か'わい・いいぬ}`と書ける｡

# 参考サイト
- [Markdown Furigana - Visual Studio Marketplace](https://l.pg1x.com/UCMi)
- [iltrof/furigana-markdown-it: Furigana plugin for markdown-it](https://l.pg1x.com/RzEF)