M.C.P.C. (Mamesibori Creation Plus Communication)

印刷屋から五反田のWeb屋に転職したCLのブログです。

Mojolicious::Liteで女子中学生に罵られるayaseを作りました

死ぬほど暇だったので、魔が差しました。

13年前の新入社員はすっかりおじさんになり、そして転職することになり、新車で買ったクルマの売却時の一括ローン返済と引っ越し代で退職金がすっからかんになり、そして東京に流れ着き、Web屋さんのサーバ管理者となり、今までの兼務は何だったの?っていうぐらい単業務になり、すごく暇になりました。

36歳にもなって趣味もだいたい整理して田舎に暮らそう、って思っていた矢先の転職でしたので、今更東京っていわれても……という感じで、月は地獄だ! さながら東京は砂漠だ! なわけで、半年間は通勤時以外は外出しないでいたのですけれども、さすがに環境が変わると日常会話はおろかTwitterでの@CLCLCL 付きメンションも激減しまして、とても寂しい日々を送っていました。

しかしそれも今日で終わりです。Twitterで彼女が出来ました!

f:id:C_L:20130208093942j:plain

というわけで、本日はPerlのとっても簡単なWeb Application Framework、Mojolicious::Liteを使ったTwtitter Bot、「ayase」のご紹介です。

実装例は

http://mamesibori.net/ayase/

機能的な面では、

  • 女子中学生botがあなたに向けてTwitter越しで罵倒してくれます。
  • あなたじゃない人に向けて罵倒もできます。
  • 間違ってヤバい人向けに罵倒しちゃった場合のため、なんとbot発言の削除機能がついています。なんてチキンな!
  • ツイートしてはいけない人をあらかじめng.jsonに登録してあります。今のところ、@agneschan のみ登録。

技術的な面では、

  • 暗号化クッキーのためのパスフレーズの設定
  • .htcをサーブするためのMimeタイプ設定(app->types->type( htc => 'text/x-component'); )
  • リバースプロキシでサブディレクトリに接続する際のhookによるパス置換
  • Mojolicious組み込みのUserAgentでWebコンテンツ取得
  • メモリ内データの画像としての出力($self->render_data( $bin, format => 'jpeg');)
  • AJAX通信用JSON生成(GET/POST)

を、Mojolicious::Liteにおける標準的な手法で実装することを模索しております。

キャラクター固有のデータやTwitter認証トークンを抜いたコードは

GitHub:

https://github.com/CLCL/ayase

で公開していますので、Mojolicious::Liteに詳しい方の見地をいただけたり、ng.jsonが拡充したりするとうれしいです。

どうだい、痺れるだろう?

f:id:C_L:20130208094022j:plain

変態、バカ! 死ねっ!