Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
VUIでシェル芸を実行できるようにしてみた
amanoese
August 10, 2019
Technology
0
1.1k
VUIでシェル芸を実行できるようにしてみた
amanoese
August 10, 2019
Tweet
Share
More Decks by amanoese
See All by amanoese
シェル芸でなれる__v-untuber.pdf
amanoese
0
100
シェル芸のおかげでUnicodeに怯えず楽しめるようになった話.pdf
amanoese
0
58
AlexaにSSMLで音声記号(IPA) 使って喋らせたかった
amanoese
0
300
インタラクティブなシェル芸実行コマンド作った感想
amanoese
0
31
Other Decks in Technology
See All in Technology
Custom AppをIP制限ありのままで審査に通す方法
yusuga
0
680
Scrum Fest Osaka 2022 段階的スクラムマスターのススメ
orimomo
0
800
RDRA + JavaによるレジャーSaaSプロダクトの要件定義と実装のシームレスな接続
jjebejj
PRO
3
720
Custom GitHub Actions by Java
kazamori
0
290
220628 「Google AppSheet」タスク管理アプリをライブ作成 吉積情報伊藤さん
comucal
PRO
0
230
20220622_FinJAWS_あのときにAWSがあったらこうできた
taketakekaho
0
110
セキュリティ 開運研修2022 / security 2022
cybozuinsideout
PRO
3
3.8k
MRTK3 - DataBinding and Theming 入門
futo23
0
190
LINEのB2Bプラットフォームにおけるトラブルシューティング2選
line_developers
PRO
4
300
FoodTechにおける商流・金流・物流の進化/Evolution of Commercial, Financial, and Logistics in FoodTech
dskst
0
410
機械学習システムアーキテクチャ入門 #1
asei
3
1.2k
UWBを使ってみた
norioikedo
0
420
Featured
See All Featured
Embracing the Ebb and Flow
colly
73
3.4k
Six Lessons from altMBA
skipperchong
14
1.4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
15k
A Philosophy of Restraint
colly
192
15k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
315
19k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
181
15k
Creatively Recalculating Your Daily Design Routine
revolveconf
207
10k
Happy Clients
brianwarren
89
5.6k
Rails Girls Zürich Keynote
gr2m
86
12k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
100
5.9k
Why Our Code Smells
bkeepers
PRO
324
55k
The Art of Programming - Codeland 2020
erikaheidi
32
11k
Transcript
VUIでシェル芸を実行できるよう にしてみた
自己紹介 RustとElmに憧れてる自称うぇっぶけいふるすたっくえ んじにあ javascriptとシェル芸が好き 仕事では Java kotlin使い始めました taka@SIではたらくフレンズ @amanoese
VUIってなに? AlexaとかGoogle のスマートホームとか音声で操作するユーザーインターフェー スのこと 個人的にはAlexaが好き
VUIでシェル芸をしたい rm -rf / unko.shout
Alexaに実装してみた
シェル芸をどうやって音声で伝えるか
シェル芸 -> Base32 -> ひらがな Base64をひらがなにマップすると半濁音鼻濁音の発音難しいため シェル芸をBase32に変換後ひらがなにマップした発音をAlexaにする。 つまりこういうこと $ echo
'unko.shout 私が公式マスコット' | base32 -w0 | sed 'y@ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=@あいうえおかきく けこさし すせそたちつてとなにぬねのはひふへほまみむ@' そにねきぬふはそそせなきまほしなおえとひたあたえちききそしいせす へぬまけみのへえとふつのかそたえちさはまくあへえへそいのちうちむ
シェル芸 -> Base32 -> ひらがな しかし… さすがに脈絡の無い単語を発音するのは困難(やってみてわかった) なのでVUIを意識して変更してみる そにねきぬふはそそせなきまほしなおえとひたあたえちききそしいせす へぬまけみのへえとふつのかそたえちさはまくあへえへそいのちうちむ
シェル芸 -> dump echo -n 'unko.shout 私が公式マスコット' | od -tx1
-A n|tr '[:lower:]' '[:upper:]' 75 6E 6B 6F 2E 73 68 6F 75 74 20 E7 A7 81 E3 81 8C E5 85 AC E5 BC 8F E3 83 9E E3 82 B9 E3 82 B3 E3 83 83 E3 83 88
そして呪文(詠唱)を集めたJSONを用意 適当に集めてきた呪文(詠唱)をMecabで名詞と動詞に分けて、 0~FFまでの数字と対応付けたJSONファイルを作成します。 cat spell.txt | mecab | tr '\t'
,|awk -F, '$2~/名詞/||$1~/EOF/{print s;a=1;s=$1}a==2{a=0;s=""}a==1&&$2~/助詞/{a=0;if($3~/連体化 /){a=2}s=s$1}'|sed -n '/../p'|sort -u |grep -P '\p{Han}' paste - 255.txt | head -256 | sed -r 's/^(.*)\t/\"\1\":/;s/:(.*)/:"\1",/'| sed '1s/^/{/;256s/,/}/' > meisi.json {"安らぎ":"00","為す":"01","移る":"02","育み":"03","育む":"04","引き":"05","引き継 が":"06","引き裂く":"07","羽ばたき":"08","渦巻く":"09","汚し":"0A","汚れ":"0B","汚 れた":"0C", ... } https://gist.github.com/amanoese/92ee02989a1e3371981a96aa8dce36c1
シェル芸 -> dump -> 呪文 JSONを利用してシェル芸を呪文に変換 $ echo -n 'unko.shout
私が公式マスコット' | od -tx1 -A n|tr '[:lower:]' '[:upper:]' | xargs -n1 | sed -f <(cat meisi.json meisi.json meisi.json dousi.json |tr -d '{},'|sed -r 's#^$##;s#(.*):(.*)#s\2:\1#;s#:"##;s#"#/#g'|awk '$0'|awk '{print int((NR-1)/256 + 1)"~4"$0}') |sed '4~4s/$/。/'|tr -d \\n 客を希望を眼差しで示せ。永久に鬼を棺に示せ。客を義務を印を討つ。光に狭間の 雫よ囚われ。空を七色の極限の吹き飛べ。七色の砂の結晶渡れ。胸に言の雫よ終 わり。魂を雫よ狭霧清め。雫よ胸に胸に渡れ。胸に具現
かっこよく呪文を唱えて シェル芸を実行 客を希望を眼差しで示せ。永久に鬼を棺に示せ。客を義務を印を 討つ。光に狭間の雫よ囚われ。空を七色の極限の吹き飛べ。七 色の砂の結晶渡れ。胸に言の雫よ終わり。魂を雫よ狭霧清め。 雫よ胸に胸に渡れ。胸に具現
かっこよく呪文を唱えて シェル芸を実行 実際にデモ
感想とか今後とか がんばってリリース目指す(Alexaスキルアワード参加させてみたい) 生成した文言が呪文ぽくないので、良い感じになるように修正したい ツイートするだけでなく実際にシェルを実行するようにしたい
None