Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ojichatを移植してたら試験監督に遅刻した話
Search
boiling_water_S
February 23, 2020
Programming
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ojichatを移植してたら試験監督に遅刻した話
boiling_water_S
February 23, 2020
Other Decks in Programming
See All in Programming
이 함수, 실패하면 어떻게 되나요? null부터 Rich Errors까지, Kotlin 에러 처리 15년
haeti2
0
110
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
280
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
190
Dockerfile CMD for Node.js
grazie1999
0
160
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
260
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
540
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
730
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
260
高専キャリア LT 発表内容
crysta1221
6
5.4k
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
180
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
51
32k
Featured
See All Featured
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Statistics for Hackers
jakevdp
799
230k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
230
Code Review Best Practice
trishagee
74
20k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
800
Rails Girls Zürich Keynote
gr2m
96
14k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
460
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
320
The Language of Interfaces
destraynor
162
27k
Transcript
ojichatを移植してたら 試験監督に遅刻した話 2020-02-23 14:30~ mintech revival #3 @boiling_water_S
本日のお品書き 1.自己紹介 2.移植の経緯 3.ojichatについて 4.移植 5.まとめ
自己紹介 (いつもの) 名前:Boiling_Water Twitter ID:@boiling_water_S 出身:うつくしまの左上 所属:KIT 情報 (卒業できそう) 情報処理技術研究会
どうしてこうなった\(^o^)/ - 2/11(火)夜 某研究室にて -
移植に至るまでの経緯-1 処理研語録BOTが Discordのアップデートにより停止 修正ついでに、何か機能追加するか じゃあ ojichatだな() 図.処理研語録BOT (DiscordBot)
移植に至るまでの経緯-2 Java用のojichatないかな? (Discord4Jを利用しているため) ない じゃあ 移植するか!(脊髄反射) 図.処理研語録BOT (DiscordBot) 決断:22時頃 試験監督まで、あと12時間
処理研語録BOT 研民たちの何気ない 名 迷言 を “語録”として記録・振り返る Discord Bot • 紙なんすか!?、ザッコ
• 蚊取り線香3点バースト • ブレーカーは2度死ぬ • 焼きそばペヤング超超超大盛GIGAMAX激辛END • ξ.rar • 泣きそうなくらい良い曲ですね。あっCDはいらないです • こっちが泣きそうだわ 以上 語録一覧より抜粋 運用開始(2019/06/26) ~ 128 語 登録済! メッセージ投稿復旧:2時頃 試験監督まで、あと8時間
ojichatって?
ojichatってそもそも何? 図. ojichatのロゴ (githubより抜粋) https://github.com/greymd/ojichat 名称 • Ojisan Nanchatte Generator
説明 • おじさんがLINEやメールで送って きそうな文を生成するコマンド • ジョークツール 言語・環境 • Golang-cli (Dockerコンテナ版も) 開発 • greymd(Yasuhiro Yamada)氏
例 -1 ランダムな女性の名前で文を生成 引数で指定された名前で文を生成 $ ojichat ヤッホーれいこちゃん、元気かな⁉⁉オレは、近所に新しく できたラーメン屋さん に行ってきたよ。味はまぁまぁだったかナ $
ojichat 山田 山田ちゃん、オハヨウ〜(^з<)(笑)山田ちゃんも今日も2時までお仕事かナ❓寒いけど、頑張 ってね(# ̄З ̄)
例 -2 -p(max3)で句読点の量を指定可能 -e で絵文字の量を指定可能 $ ojichat -p 3 オレとオマエと大五郎
オレと、オマエと、大五郎チャン、オッハー❗(^_^)オレと、オマエと 、大五郎チャンにとって、素 敵な、1日に、なります、ようニ $ ojichat -e 10 おはよー、!チュッ☀ ❗(^з<) $ ojichat -e 0 ヤッホー。はなみちゃん、元気かな。はなみちゃんにとって素敵な1日になりますようニ。
移植するぞー
移植の条件として設定したもの 1. 極力オリジナルと同じ挙動をすること (名前・絵文字数・句読点数を指定できる) 2. 外部ライブラリとして利用できるように Jarにパッケージングする 3. 標準ライブラリと同様に利用できること (Mathクラスみたいな感じ)
ojichatの処理フロー-1 1. ONARA(Ojisan NArikiri Randomized Algorithm : おじさんなりきり乱択アルゴリズム)からパターンを選択 今回はGR(Greeding/Reporting)パターンを選択
ojichatの処理フロー-2 2.パターンに沿って 文を生成する {TARGET_NAME}、オハヨー{EMOJI_POS} そういえば、昨日は例の{RESTAURANT}に行って きたよ。結構いい雰囲気だったから、オススメだよ {EMOJI_POS} タグ • {TARGET_NAME}
• {FIRST_PERSON} • {DAY_OF_WEEK} • {RESTAURANT} • {NANCHATTE} など…
ojichatの処理フロー-3 3.{タグ}を置換する(絵文字は指定数繰り返し) 〇〇チャン、オハヨー♥(^o^) そういえば、昨日は例のイタリアンに行ってきた よ。結構いい雰囲気だったから、オススメだよ ✋ 完了
移植中に困ったところ 1.初見Go言語 → 仕方ない 2.同じライブラリが無い → 他で代用 3.形態素解析してるってまじ? 4.カタカナ活用
形態素解析してるってまじ? 生成された文へパラメータをもとに句読点の追加を行う 図.ふと我に返ったときのつぶやき 句読点挿入 終了:4時半頃 試験監督まで、5時間半 図.おじさん文がTokenizeされる様子 (オリジナルより) さらに、助詞(+助動詞)のあとに読点を追加 より“おじさん”らしくなる...らしい
カタカナ活用-1 語尾を最大2文字までカタカナにする “おじさんカタカナ活用” を適用(挨拶の感情以外) より“おじさん”らしくなる...らしい(天丼) 図.“おじさんカタカナ活用” が適応される様子 (オリジナルより)
カタカナ活用-2 オリジナルは正規表現を用いて検出・置換 カタカナ活用完了:6時半頃 試験監督まで、3時間半 正規表現 なにそれおいしいの? 脳筋置換じゃい 正規表現 頑張って勉強します…
なんやかんやあって…
できらぁ!!(歓喜) 図.Intellij IDEA上でのテスト時のSC 移植(仮)完了:7時頃 試験監督まで、3時間
地獄と化したDiscord鯖 遊ぶ処理研民たち (Discordより抜粋) BOTに実装(終):8時頃 試験監督まで、2時間 図らずもORA (Ojichat Reflection Attack) に成功した処理研民
満足だろうな!ガトー! だが・・・ 阿鼻叫喚のDiscord鯖 ぼく「満足じゃ」 その後の起床:11時半頃 試験監督まで、-1時間半(遅刻) そのまま意識が遠くへ…… zzz
まとめ 大事な予定の前は、 アホなことしてないで、ちゃんと寝よう!
None
まとめ 1.一応遊べるレベルまで移植することができた 2.形態素解析 →句読点挿入が不自然(同じIPADicのはずなのだが...) 3.カタカナ活用が一部機能していない → 文末から遡る文字数設定のミス(12:30頃修正) 後々不具合修正&Githubで公開(許されれば)
謝辞 ojichat開発者 greymd様 資料中の例文・GolangのSCはすべて Github上(https://github.com/greymd/ojichat) から勝手にお借りしました。申し訳ありません。 本当にありがとうございましたm(_ _)m