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:Roman_to_Fraktur_conv.py
# クリップボードの処理とローマンアルファベットをフラクトゥーア文字に変換するクラス
class RomanToFrakturConverter:
    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 = {
            'A': '\U0001D504', 'B': '\U0001D505', 'C': '\u212D', 'D': '\U0001D507', 'E': '\U0001D508', 'F': '\U0001D509', 'G': '\U0001D50A',
            'H': '\U0001D50B', 'I': '\u2111', 'J': '\U0001D50D', 'K': '\U0001D50E', 'L': '\U0001D50F', 'M': '\U0001D510', 'N': '\U0001D511',
            'O': '\U0001D512', 'P': '\U0001D513', 'Q': '\U0001D514', 'R': '\U0001D515', 'S': '\U0001D516', 'T': '\U0001D517', 'U': '\U0001D518',
            'V': '\U0001D519', 'W': '\U0001D51A', 'X': '\U0001D51B', 'Y': '\U0001D51C', 'Z': '\u2128',
            'a': '\U0001D51E', 'b': '\U0001D51F', 'c': '\U0001D520', 'd': '\U0001D521', 'e': '\U0001D522', 'f': '\U0001D523', 'g': '\U0001D524',
            'h': '\U0001D525', 'i': '\U0001D526', 'j': '\U0001D527', 'k': '\U0001D528', 'l': '\U0001D529', 'm': '\U0001D52A', 'n': '\U0001D52B',
            'o': '\U0001D52C', 'p': '\U0001D52D', 'q': '\U0001D52E', 'r': '\U0001D52F', 's': '\U0001D530', 't': '\U0001D531', 'u': '\U0001D532',
            'v': '\U0001D533', 'w': '\U0001D534', 'x': '\U0001D535', 'y': '\U0001D536', 'z': '\U0001D537'
        }

    # ローマンアルファベットをフラクトゥーア文字に変換するメソッド
    def roman_to_fraktur(self, text):
        result = []
        for char in text:
            if char in self.conversion_dict:
                result.append(self.conversion_dict[char])
            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.roman_to_fraktur(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 = RomanToFrakturConverter()
    converter.convert_clipboard()
```
以上です。

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