TL;DR
ソースコードはこちら!
はじめに
こんにちは!YomamaBananaです。
今回は皆さんに面白いものを紹介したいと思います。
開発経験のある方よくご存知かと思いますが、PoCや開発をする際にいつも謎のエラーだったら、
動いていたソースコードがライブラリーの更新によって諦めていたりして、イラッとします。
ここで!そういったエラーを面白く表示したらどうでしょうか。
いわゆるCustom Errorということです。
詳しくはこの記事を参照。
手順
1- アスキーアートを作成し、テキストファイルとして保存します。
アスキーアートの生成
otsukare.txt
──────────────────────────────────────────────▓▓█───────────────────────────
────────────────────────────────────────────▒██▒▒█──────────────────────────
───────────────────────────────────────────█▓▓▓░▒▓▓─────────────────────────
─────────────────────────────────────────▒█▓▒█░▒▒▒█─────────────────────────
────────────────────────────────────────▒█▒▒▒█▒▒▒▒▓▒────────────────────────
─────────────────▓▓▒░──────────────────▓█▒▒▒▓██▓▒░▒█────────────────────────
─────────────────█▓▓██▓░──────────────▓█▒▒▒▒████▒▒▒█────────────────────────
─────────────────▓█▓▒▒▓██▓░──────────▒█▒▒▒▒▒██▓█▓░░▓▒───────────────────────
─────────────────▓▒▓▒▒▒▒▒▓█▓░──░▒▒▓▓██▒▒▒▒▒▒█████▒▒▒▓───────────────────────
─────────────────▓░█▒▒▒▒▒▒▒▓▓█▓█▓▓▓▓▒▒▒▒▒▒▒▒██▓██▒░▒█───────────────────────
─────────────────▓░▓█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓████▒▒▒█───────────────────────
─────────────────▓░▓██▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▓██░░░█───────────────────────
─────────────────▓░▓███▒▒▒▒▒▒▒▒▒▒▒▓█▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▒▓▓──────────────────────
─────────────────▒▒▒██▓▒▓█▓▒▒▒▒▒▒▒▓▒▒▒▒▒▒▓▓▓▒▒▒▒▒▒▒▓▒█──────────────────────
──────────────────▓▒█▓▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▓█▓▓▓▓█▓▒▒▒▒▒▒▒▓▒─────────────────────
──────────────────▓▒█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓──────▓█▓▒▒▒▒▒▓█─────────────────────
──────────────────▒▒▓▒▒▒▓▓▓▒▒▒▒▒▒▒▒▒▓▓───░▓▓───█▓▒▒▒▒▒█─────────────────────
───────────────────█▒▒▓▓▓▒▒▓▓▒▒▒▒▒▒▓▓───█████▓──█▓▒▒▒▒▓▒────────────────────
───────────────────▓▓█▒─────▒▓▒▒▒▒▒█───░██████──░█▒▒▒▒▓▓────────────────────
───────────────────▓█▒──▒███─▒▓▒▒▒▒█────██████───▓▒▒▒▒▒▓────────────────────
───────────────────██───█████─█▒▒▒▒█─────███▓────▓▓▒▒▒▒▓────────────────────
───────────────────█▓───█████─▒▓▒▒▒█─────────────█▓▓▓▒▒▓────────────────────
───────────────────█▓───░███──░▓▒▒▒▓█──────────░█▓▒▒▒▓▒▓────────────────────
───────────────────██─────────▒▓▒▒▒▒▓▓──────░▒▓█▓────░▓▓────────────────────
───────────────────▓█░────────█▓██▓▒▒▓█▓▓▓▓██▓▓▒▓▒░░▒▓▒▓────────────────────
───────────────────▒██░──────▓▒███▓▒▒▒▒▓▓▓▓▒▒▒▒▒▒▓▓▓▓▒▓─────────────────────
────────────────────█▓█▓▓▒▒▓█▓▒░██▒▒▓▓█▓▒▒▒▒▒▒▒▒▒▒▒▒▓▓█▒────────────────────
────────────────────▓─░▓▓▓▓▓▒▓▓▓▓▒▓▓▓▒▓▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓────────────────────
────────────────────▒▒▒▓▒▒▒▒▒▒▓█░─░░░─▓▓▒▒▒▒▒▒▒▒▒▒▒▓██▓▒────────────────────
─────────────────────█▓▒▒▒▒▒▒▒▒▓▓─░░░─▓▓▒▒▒▒▒▒▒▒▒▓▓▓▒▒▓▒────────────────────
──────────────────────██▓▓▒▒▒▒▒▒█▒░░░░█▒▒▒▒▒▒▒▒▓█▓▓▒▒▒▒▒────────────────────
─────────────────────░─▒██▓▓▒▒▒▒▒█▓▒▒▓▒▒▒▒▒▒▓███▓▒▒▒▒▒▓▓────────────────────
──────────────────────────░▒▓▓▓▓▒▒▓▓▓▓▓▓████▓▓█▒▒▒▒▒▓▓█░────────────────────
............................................................................
..#######..########..######..##.....##.##....##....###....########..########
.##.....##....##....##....##.##.....##.##...##....##.##...##.....##.##......
.##.....##....##....##.......##.....##.##..##....##...##..##.....##.##......
.##.....##....##.....######..##.....##.#####....##.....##.########..######..
.##.....##....##..........##.##.....##.##..##...#########.##...##...##......
.##.....##....##....##....##.##.....##.##...##..##.....##.##....##..##......
..#######.....##.....######...#######..##....##.##.....##.##.....##.########
癒しだ~~
2- テキストファイルを読み込み、普通にプリントする。
必要に応じてCUSTOMERRORに取り組む。
run.py
#################################
### ERROR
#################################
class EXPLOSION(Exception):
def __init__(self):
with open("messages/explosion.txt", "r", encoding="utf-8") as f:
explosion = f.read()
self.message = f"\n\n{explosion}"
super().__init__(self.message)
class ObamaError(Exception):
def __init__(self) -> None:
with open("messages/obama.txt", "r", encoding="utf-8") as f:
obama = f.read()
self.message = f"\n\n{obama}"
super().__init__(self.message)
if True:
raise EXPLOSION
#################################
### OTSUKARE
#################################
def otsukare():
with open("messages/otsukare.txt", "r", encoding="utf-8") as f:
otsukare = f.read()
print(otsukare)
otsukare()
#################################
### ANIMATED
#################################
import os
from time import sleep
def clearConsole():
command = 'clear'
if os.name in ('nt', 'dos'): # If Machine is running on Windows, use cls
command = 'cls'
os.system(command)
def kawaii_goodbye():
for txt in os.listdir("messages/kawaii"):
f = open(f"messages/kawaii/{txt}", "r", encoding="utf-8").read()
sleep(0.2)
clearConsole()
print(f)
kawaii_goodbye()
出力
オバマエラー
D:\Python\git\Random_Scripts\Custom_Error>python run.py
Traceback (most recent call last):
File "run.py", line 22, in <module>
raise ObamaError
__main__.ObamaError:
░░█▀░░░░░░░░░░░▀▀███████░░░░
░░█▌░░░░░░░░░░░░░░░▀██████░░░
░█▌░░░░░░░░░░░░░░░░███████▌░░
░█░░░░░░░░░░░░░░░░░████████░░
▐▌░░░░░░░░░░░░░░░░░▀██████▌░░
░▌▄███▌░░░░▀████▄░░░░▀████▌░░
▐▀▀▄█▄░▌░░░▄██▄▄▄▀░░░░████▄▄░
▐░▀░░═▐░░░░░░══░░▀░░░░▐▀░▄▀▌▌
▐░░░░░▌░░░░░░░░░░░░░░░▀░▀░░▌▌
▐░░░▄▀░░░▀░▌░░░░░░░░░░░░▌█░▌▌
░▌░░▀▀▄▄▀▀▄▌▌░░░░░░░░░░▐░▀▐▐░
░▌░░▌░▄▄▄▄░░░▌░░░░░░░░▐░░▀▐░░
░█░▐▄██████▄░▐░░░░░░░░█▀▄▄▀░░
░▐░▌▌░░░░░░▀▀▄▐░░░░░░█▌░░░░░░
░░█░░▄▀▀▀▀▄░▄═╝▄░░░▄▀░▌░░░░░░
░░░▌▐░░░░░░▌░▀▀░░▄▀░░▐░░░░░░░
░░░▀▄░░░░░░░░░▄▀▀░░░░█░░░░░░░
░░░▄█▄▄▄▄▄▄▄▀▀░░░░░░░▌▌░░░░░░
░░▄▀▌▀▌░░░░░░░░░░░░░▄▀▀▄░░░░░
▄▀░░▌░▀▄░░░░░░░░░░▄▀░░▌░▀▄░░░
░░░░▌█▄▄▀▄░░░░░░▄▀░░░░▌░░░▌▄▄
░░░▄▐██████▄▄░▄▀░░▄▄▄▄▌░░░░▄░
░░▄▌████████▄▄▄███████▌░░░░░▄
░▄▀░██████████████████▌▀▄░░░░
▀░░░█████▀▀░░░▀███████░░░▀▄░░
░░░░▐█▀░░░▐░░░░░▀████▌░░░░▀▄░
░░░░░░▌░░░▐░░░░▐░░▀▀█░░░░░░░▀
░░░░░░▐░░░░▌░░░▐░░░░░▌░░░░░░░
░╔╗║░╔═╗░═╦═░░░░░╔╗░░╔═╗░╦═╗░
░║║║░║░║░░║░░░░░░╠╩╗░╠═╣░║░║░
░║╚╝░╚═╝░░║░░░░░░╚═╝░║░║░╩═╝░
D:\Python\git\Random_Scripts\Custom_Error>
爆発
D:\Python\git\Random_Scripts\Custom_Error>python run.py
Traceback (most recent call last):
File "run.py", line 22, in <module>
raise EXPLOSION
__main__.EXPLOSION:
███████╗██╗░░██╗██████╗░██╗░░░░░░█████╗░██████╗░███████╗██████╗░██╗
██╔════╝╚██╗██╔╝██╔══██╗██║░░░░░██╔══██╗██╔══██╗██╔════╝██╔══██╗██║
█████╗░░░╚███╔╝░██████╔╝██║░░░░░██║░░██║██║░░██║█████╗░░██║░░██║██║
██╔══╝░░░██╔██╗░██╔═══╝░██║░░░░░██║░░██║██║░░██║██╔══╝░░██║░░██║╚═╝
███████╗██╔╝╚██╗██║░░░░░███████╗╚█████╔╝██████╔╝███████╗██████╔╝██╗
╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚══════╝░╚════╝░╚═════╝░╚══════╝╚═════╝░╚═╝
________________
____/ ( ( ) ) \___
/( ( ( ) _ )) ) )\\
(( ( )( ) ) ( ) )
((/ ( _( ) ( _) ) ( () ) )
( ( ( (_) (( ( ) .((_ ) . )_
( ( ) ( ( ) ) ) . ) ( )
( ( ( ( ) ( _ ( _) ). ) . ) ) ( )
( ( ( ) ( ) ( )) ) _)( ) ) )
( ( ( \ ) ( (_ ( ) ( ) ) ) ) )) ( )
( ( ( ( (_ ( ) ( _ ) ) ( ) ) )
( ( ( ( ( ) (_ ) ) ) _) ) _( ( )
(( ( )( ( _ ) _) _(_ ( (_ )
(_((__(_(__(( ( ( | ) ) ) )_))__))_)___)
((__) \\||lll|l||/// \_))
( /(/ ( ) ) )\ )
( ( ( ( | | ) ) )\ )
( /(| / ( )) ) ) )) )
( ( ((((_(|)_))))) )
( ||\(|(|)|/|| )
( |(||(||)|||| )
( //|/l|||)|\\ \ )
(/ / // /|//||||\\ \ \ \ _)
-------------------------------------------------------------------------------
D:\Python\git\Random_Scripts\Custom_Error>
癒し
D:\Python\git\Random_Scripts\Custom_Error>python run.py
──────────────────────────────────────────────▓▓█───────────────────────────
────────────────────────────────────────────▒██▒▒█──────────────────────────
───────────────────────────────────────────█▓▓▓░▒▓▓─────────────────────────
─────────────────────────────────────────▒█▓▒█░▒▒▒█─────────────────────────
────────────────────────────────────────▒█▒▒▒█▒▒▒▒▓▒────────────────────────
─────────────────▓▓▒░──────────────────▓█▒▒▒▓██▓▒░▒█────────────────────────
─────────────────█▓▓██▓░──────────────▓█▒▒▒▒████▒▒▒█────────────────────────
─────────────────▓█▓▒▒▓██▓░──────────▒█▒▒▒▒▒██▓█▓░░▓▒───────────────────────
─────────────────▓▒▓▒▒▒▒▒▓█▓░──░▒▒▓▓██▒▒▒▒▒▒█████▒▒▒▓───────────────────────
─────────────────▓░█▒▒▒▒▒▒▒▓▓█▓█▓▓▓▓▒▒▒▒▒▒▒▒██▓██▒░▒█───────────────────────
─────────────────▓░▓█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓████▒▒▒█───────────────────────
─────────────────▓░▓██▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▓██░░░█───────────────────────
─────────────────▓░▓███▒▒▒▒▒▒▒▒▒▒▒▓█▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▒▓▓──────────────────────
─────────────────▒▒▒██▓▒▓█▓▒▒▒▒▒▒▒▓▒▒▒▒▒▒▓▓▓▒▒▒▒▒▒▒▓▒█──────────────────────
──────────────────▓▒█▓▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▓█▓▓▓▓█▓▒▒▒▒▒▒▒▓▒─────────────────────
──────────────────▓▒█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓──────▓█▓▒▒▒▒▒▓█─────────────────────
──────────────────▒▒▓▒▒▒▓▓▓▒▒▒▒▒▒▒▒▒▓▓───░▓▓───█▓▒▒▒▒▒█─────────────────────
───────────────────█▒▒▓▓▓▒▒▓▓▒▒▒▒▒▒▓▓───█████▓──█▓▒▒▒▒▓▒────────────────────
───────────────────▓▓█▒─────▒▓▒▒▒▒▒█───░██████──░█▒▒▒▒▓▓────────────────────
───────────────────▓█▒──▒███─▒▓▒▒▒▒█────██████───▓▒▒▒▒▒▓────────────────────
───────────────────██───█████─█▒▒▒▒█─────███▓────▓▓▒▒▒▒▓────────────────────
───────────────────█▓───█████─▒▓▒▒▒█─────────────█▓▓▓▒▒▓────────────────────
───────────────────█▓───░███──░▓▒▒▒▓█──────────░█▓▒▒▒▓▒▓────────────────────
───────────────────██─────────▒▓▒▒▒▒▓▓──────░▒▓█▓────░▓▓────────────────────
───────────────────▓█░────────█▓██▓▒▒▓█▓▓▓▓██▓▓▒▓▒░░▒▓▒▓────────────────────
───────────────────▒██░──────▓▒███▓▒▒▒▒▓▓▓▓▒▒▒▒▒▒▓▓▓▓▒▓─────────────────────
────────────────────█▓█▓▓▒▒▓█▓▒░██▒▒▓▓█▓▒▒▒▒▒▒▒▒▒▒▒▒▓▓█▒────────────────────
────────────────────▓─░▓▓▓▓▓▒▓▓▓▓▒▓▓▓▒▓▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓────────────────────
────────────────────▒▒▒▓▒▒▒▒▒▒▓█░─░░░─▓▓▒▒▒▒▒▒▒▒▒▒▒▓██▓▒────────────────────
─────────────────────█▓▒▒▒▒▒▒▒▒▓▓─░░░─▓▓▒▒▒▒▒▒▒▒▒▓▓▓▒▒▓▒────────────────────
──────────────────────██▓▓▒▒▒▒▒▒█▒░░░░█▒▒▒▒▒▒▒▒▓█▓▓▒▒▒▒▒────────────────────
─────────────────────░─▒██▓▓▒▒▒▒▒█▓▒▒▓▒▒▒▒▒▒▓███▓▒▒▒▒▒▓▓────────────────────
──────────────────────────░▒▓▓▓▓▒▒▓▓▓▓▓▓████▓▓█▒▒▒▒▒▓▓█░────────────────────
............................................................................
..#######..########..######..##.....##.##....##....###....########..########
.##.....##....##....##....##.##.....##.##...##....##.##...##.....##.##......
.##.....##....##....##.......##.....##.##..##....##...##..##.....##.##......
.##.....##....##.....######..##.....##.#####....##.....##.########..######..
.##.....##....##..........##.##.....##.##..##...#########.##...##...##......
.##.....##....##....##....##.##.....##.##...##..##.....##.##....##..##......
..#######.....##.....######...#######..##....##.##.....##.##.....##.########
D:\Python\git\Random_Scripts\Custom_Error>
あとがき
今回は非常にシンプルなものを書いてみたが、すごくドキドキワクワクしました。
やっぱり開発者としてクリエイティブであるべく、小さいなことからでもいいと
思います。
ぜひこれを発展させ、「大阪おじいちゃんエラー」とか「メイドエラー」など、
面白そうなものを書いて、開発をもっと楽しみましょう!
最後に