テキストを壱百満天原サロメお嬢様文体に変換するコマンドを書いた
2022/6/19 #go #cli #joke #自作 ojosama
壱百満天原サロメお嬢様の配信を見ていたら、普通のテキストを壱百満天原サロメお嬢様の文体にプログラムで変換できるのでは?とか思ったので作ってみた
その名も ojosama コマンド
https://gyazo.com/6d8fcab04eb65c73b9761a34e3ddd8f5
リポジトリ
https://github.com/jiro4989/ojosama
ツールのインストールをせずとも使えたほうが良いだろう、ということでWeb版もこしらえてみた
https://github.com/jiro4989/ojosama-web
https://gyazo.com/5b8109a61d803636fccde14533cdfb04
以前からHerokuを使ってみたかったので、せっかくなのでHerokuで動かしてみた
Herokuのデプロイ方法を把握するのも含めて大体4時間くらいでWeb版作れた気がする
まぁDBとか認証とか何もないのでこんなもん
スマホでの見え方とか全く考えてないし、クロスブラウザとかも何も考えてない。Chromeでしか動作確認していない
テキスト入力して、変換ができる、ってこと以上の機能を提供する予定はない
メインは ojosama の変換機能の方。WebUIは二の次
とはいえ色合いくらいは壱百満天原サロメお嬢様のイメージカラーに合わせたかったので合わせた
無料枠で動かしてるのでお金はかかっていない
サーバ保守も発生していないので、運用コストはほぼ0。だいぶ楽に運用できてる
webshもこれくらい楽に運用したい
2022/9/20 追記
Herokuの無料プランが無くなるらしいのでojosamaのインフラをAWSへ移行するを実施したため、アプリケーションの実行基盤はAWSになりました
ドメイン料金以外は無料枠に収まってるのでほぼ0円
今回はライブラリとしても使えるようなパッケージ構成にしてみた
リポジトリ直下は ojosama パッケージ
mainパッケージは cmd/ojosama 配下
textimgとかはコマンド以外の用途を想定してなかったので、リポジトリ直下にmainパッケージを配置してたが
実装まわり
実装としては形態素解析ライブラリのkagomeをお借りして、品詞と読みと、前後の単語を泥臭く判定して変換している
日本語は英語と比べるとやっぱり変換が難しくて、ちょいちょい変な変換をしてしまっている。地道に直していく
形態素解析ライブラリを使うのはこれが初めてではない
だいぶ昔にちょっとだけJava製の形態素解析ライブラリのkuromojiを使ってプログラムを書いたことがあった
品詞や読みを指定して文字列を置換するコマンドを作った - Qiita
その時もめちゃくちゃ苦戦したような気がする
sedとかでの単純置換をすると上手くいかないケースがあるので、今回は形態素解析を取り入れることにした
例えば「する」を「いたします」に単純置換すると、以下のケースでおかしな文になってしまう
再現するアルゴリズム→再現いたしますアルゴリズム
お嬢様的な言い回しだと「再現いたしますわ。」といった文の終わりのタイミングでだけ「いたします」を使うほうが日本語的に自然
つまり、前後の品詞の有無も合わせて変換しないと、違和感のある文になってしまう
後は壱百満天原サロメお嬢様固有の変換ルールも設けている
壱百満天原サロメお嬢様の配信を聞いていると、よく「〇〇ですわ~~!!!」という発言をする
あといろんなものに「お」を付ける
例:おハーブですわ~~!!!
このあたりの特徴的な言い回しも変換に取り入れるようにしてる
「まさしくお嬢様」という感じよりは「壱百満天原サロメお嬢様」な文体になるのを追求してる
余談
二次創作による創作元への配慮
コマンド名を salome にするか ojosama にするかは公開する直前まで悩んでた
ただ本人と関係ない人が二次創作で作ったツールを salome として公開すると、Googleの検索に載ってしまって検索妨害になってしまう懸念があった
ということで、いきなりは壱百満天原サロメお嬢様と結びつかないように ojosama にした
普段作ってるツールはだいたい好き勝手に思いついたものを0から作ってるから、このあたり気にしないけれど、今回は二次創作なので、創作元の方の迷惑にならないように最大限配慮しないといけないと思って、こういう形にした
ANYCOLOR二次創作ガイドラインにも従うようにしている。じっくり読んだ
当然、変換ルールも壱百満天原サロメお嬢様をなるべく再現するものに留めるのと同時に、壱百満天原サロメお嬢様のイメージを損なうような逸脱したものを絶対に定義しない
ガイドラインに従うから、ってのもあるけれど、それ以上に僕も壱百満天原サロメお嬢様のサロメイト(ファン)の一人なので、壱百満天原サロメお嬢様が嫌がるような創作物にしたくない
窓の杜
なぜか若干バズった関係でか窓の杜で取り上げられてた
これはおハーブ生えますわ!! テキストを「壱百満天原サロメ」調のお嬢様言葉に変えてしまうプログラム - 窓の杜
こういうのって事前に連絡とか来ないもんなんだな
実行可能ファイル、Web画面、APIと3つの実行環境を提供した関係でか、何故か派生プロジェクトが生まれた
プロジェクト
DiscordBot https://github.com/wgdp/ojosama-discord-bot
Gitのコミットメッセージをお嬢様にするCLI https://github.com/Sigumaa/ojosama-commit
任意のテキストや、開いてるバッファ上のテキストをお嬢様にするVimプラグイン https://github.com/heavenshell/vim-ojosama
FF14のMod https://www.nexusmods.com/finalfantasy7remake/mods/1043
何があるか分からんもんだなぁ
2つはAPI経由で操作してるっぽいので、CLIを公開したあとすぐにAPIも公開したのが良かったのかもしれない
APIがあれば実装に必要な言語を問わないしね
ただHerokuって可用性がどれくらいあるのか分かって無くて、もしかしたらユーザが増えるとダウンするかもしれない