フラクトゥーア（フラクトゥール，亀甲文字，ブラックレター）を26アルファベットに変換するPythonコード（Pythonista 3対応）

# はじめの前のおねがい
できれば「いいね♡」をお願いします。励みになります。

# はじめに
このコードは**Python 3**と**Pythonista 3**に対応しています。本コードはクリップボード内にある通常のアルファベット（ä, ö, üなどには未対応）をUnicodeに用意されているフラクトゥア（亀甲文字，ブラックレター）に変換するコードです。

# 本コードを実行するとどうなるか
本コードは
1. クリップボード内のある通常のアルファベットを検知
1. Unicodeに用意されているフラクトゥア（亀甲文字，ブラックレター）に変換
1. クリップボードに再コピー

を行います。

# 例
実行前のクリップボード：
𝔚𝔢𝔩𝔠𝔬𝔪𝔢 𝔱𝔬 𝔱𝔥𝔢 𝔈𝔫𝔤𝔩𝔦𝔰𝔥-𝔩𝔞𝔫𝔤𝔲𝔞𝔤𝔢 𝔚𝔦𝔨𝔱𝔦𝔬𝔫𝔞𝔯𝔶, 𝔞 𝔠𝔬𝔩𝔩𝔞𝔟𝔬𝔯𝔞𝔱𝔦𝔳𝔢 𝔭𝔯𝔬𝔧𝔢𝔠𝔱 𝔱𝔬 𝔭𝔯𝔬𝔡𝔲𝔠𝔢 𝔞 𝔣𝔯𝔢𝔢-𝔠𝔬𝔫𝔱𝔢𝔫𝔱 𝔪𝔲𝔩𝔱𝔦𝔩𝔦𝔫𝔤𝔲𝔞𝔩 𝔡𝔦𝔠𝔱𝔦𝔬𝔫𝔞𝔯𝔶. ℑ𝔱 𝔞𝔦𝔪𝔰 𝔱𝔬 𝔡𝔢𝔰𝔠𝔯𝔦𝔟𝔢 𝔞𝔩𝔩 𝔴𝔬𝔯𝔡𝔰 𝔬𝔣 𝔞𝔩𝔩 𝔩𝔞𝔫𝔤𝔲𝔞𝔤𝔢𝔰 𝔲𝔰𝔦𝔫𝔤 𝔡𝔢𝔣𝔦𝔫𝔦𝔱𝔦𝔬𝔫𝔰 𝔞𝔫𝔡 𝔡𝔢𝔰𝔠𝔯𝔦𝔭𝔱𝔦𝔬𝔫𝔰 𝔦𝔫 𝔈𝔫𝔤𝔩𝔦𝔰𝔥.

実行後のクリップボード：
Welcome to the English-language Wiktionary, a collaborative project to produce a free-content multilingual dictionary. It aims to describe all words of all languages using definitions and descriptions in English.

※ 文章出典：英語版Wiktionaryのメインページ

# 必要なモジュール（Python 3の場合）
```zsh:クリップボードモジュール（Python 3の場合）
pip install pyperclip
```

# ソースコード
```python:Fraktur_to_Roman_conv.py
# クリップボードの処理とフラクトゥーア文字変換を行うクラス
class FrakturConverter:
    def __init__(self):
        # クリップボードモジュールのインポート処理
        try:
            import clipboard  # Pythonista用
            self.clipboard_available = True
            self.clipboard = clipboard
        except ImportError:
            try:
                import pyperclip  # Pythonistaでclipboardが使えない場合
                self.clipboard_available = False
                self.clipboard = pyperclip
            except ImportError:
                print("どちらのクリップボードモジュールも使用できません。")
                self.clipboard_available = None

        # フラクトゥーアからローマンアルファベットへの変換辞書(Unicodeコードポイント)
        self.conversion_dict = {
            0x1D504: 'A', 0x1D505: 'B', 0x212D: 'C', 0x1D507: 'D', 0x1D508: 'E', 0x1D509: 'F', 0x1D50A: 'G',
            0x1D50B: 'H', 0x2111: 'I', 0x1D50D: 'J', 0x1D50E: 'K', 0x1D50F: 'L', 0x1D510: 'M', 0x1D511: 'N',
            0x1D512: 'O', 0x1D513: 'P', 0x1D514: 'Q', 0x1D515: 'R', 0x1D516: 'S', 0x1D517: 'T', 0x1D518: 'U',
            0x1D519: 'V', 0x1D51A: 'W', 0x1D51B: 'X', 0x1D51C: 'Y', 0x2128: 'Z',
            0x1D51E: 'a', 0x1D51F: 'b', 0x1D520: 'c', 0x1D521: 'd', 0x1D522: 'e', 0x1D523: 'f', 0x1D524: 'g',
            0x1D525: 'h', 0x1D526: 'i', 0x1D527: 'j', 0x1D528: 'k', 0x1D529: 'l', 0x1D52A: 'm', 0x1D52B: 'n',
            0x1D52C: 'o', 0x1D52D: 'p', 0x1D52E: 'q', 0x1D52F: 'r', 0x1D530: 's', 0x1D531: 't', 0x1D532: 'u',
            0x1D533: 'v', 0x1D534: 'w', 0x1D535: 'x', 0x1D536: 'y', 0x1D537: 'z'
        }

    # フラクトゥーア文字をローマンアルファベットに変換するメソッド
    def fraktur_to_roman(self, text):
        result = []
        for char in text:
            # 文字のUnicodeコードポイントを取得
            char_code = ord(char)
            if char_code in self.conversion_dict:
                result.append(self.conversion_dict[char_code])
            else:
                result.append(char)  # 辞書にない文字はそのまま
        return ''.join(result)

    # クリップボードのテキストを変換して再設定するメソッド
    def convert_clipboard(self):
        if self.clipboard_available is not None:
            # クリップボードからテキストを取得
            if self.clipboard_available:
                clipboard_text = self.clipboard.get()  # Pythonista用
            else:
                clipboard_text = self.clipboard.paste()  # pyperclip用

            # クリップボードの内容を変換
            converted_text = self.fraktur_to_roman(clipboard_text)

            # 変換後のテキストをクリップボードに再設定
            if self.clipboard_available:
                self.clipboard.set(converted_text)  # Pythonista用
            else:
                self.clipboard.copy(converted_text)  # pyperclip用

            print("クリップボードの内容が変換されました。")
            print(converted_text)
        else:
            print("クリップボードモジュールが使用できないため、変換を実行できませんでした。")

# スクリプトが直接実行された場合のみ、クリップボード変換を実行
if __name__ == "__main__":
    converter = FrakturConverter()
    converter.convert_clipboard()
```
以上です。

# おわりに
別途、[26アルファベットをフラクトゥーア（フラクトゥール，亀甲文字，ブラックレター）に変換するPythonコード（Pythonista 3対応）](https://qiita.com/ekemtt/items/f7b829266dfae8e38613)も用意してあります。