ojichat의 Perl 버전을 만들어 보았습니다.

이쪽은 Perl Advent Calendar 2019 의 22일째의 기사가 됩니다. 어제는, Morichan씨에 의한, Perl만으로 웹사이트 만들기 였습니다.

소개



금년도 Perl Advent Calendar에 기세만으로 엔트리 해 버렸습니다만, 뭔가 CUI 재료적인 것을 쓰고 싶다고 생각해 재료를 생각해 보았지만, 전날까지 좋은 아이디어가 떠오르지 않고 곤란해 끝에 당황해서 이쪽 의 ojichat 재료로 시도했습니다.
재료의 성질적으로 만약 기분을 해치신 분 등 계시면 일단 어드벤트 캘린더로부터 엔트리를 나눕니다 🙇‍♂️

왜 지금 ojichat인가?



약 반년전에.
또 Perl의 이식판은 보니 아직 나오지 않았기 때문에 모처럼이므로 이 기회에 재료로 해 보려고 선택해 보았습니다.

이식 흐름



자신은 Go 언어에 대해서는 일로 사용하지 않고, 지금까지 제대로 읽은 적이 없었기 때문에 오리지날의 코드를 쫓으면서 처리의 흐름·클래스 구성등을 파악해 갔습니다.

우선 눈에 띄는 것이
Onara ... Ojisan NArikiri Randomized Algorithm: おじさんなりきり乱択アルゴリズム
라고 하는 것으로, 아저씨의 대화 패턴의 알고리즘이 있는 것을 알았습니다.

라고, 그 이후의 설명을 써 가려고 생각했습니다만 이 근처의 자세한 것은 동시에 참고로 해 주신, ojichat의 JS판,
트렌드가 된 ojichat
읽어 주시면 그 처리의 흐름이 잡힐까 생각합니다.

Perl화에 있어서



우선은 하나의 perl 스크립트로 잡히 써 가서 거기에서 무리하게 클래스 같은 느낌으로 로직을 이동시켜 갔습니다.
  • 원래의 himechat-cli
  • 표준 모듈 밖에 사용하지 않게 한다
  • …라고 생각했습니다만, 향후 확장할 수 있도록 Carton만은 넣어 두도록 변경.


  • Go로 구현 된 ojichat의 JS 버전, ojichat.js를 만들었습니다. Perl 구현이 없었기 때문에 방금 기사를 참고하여 무작위로 100 개를 빌렸습니다.
  • 구두점을 끼우는 처리입니다만, 형태소 해석을 사용할 때까지의 체력이 없었기 때문에, 아저씨의 뒤의 과제로 하겠습니다 😜😘😆(^_^;

  • …라는 느낌으로 오로지 사경하면서 써 갔습니다.

    진짜는 나름대로의 뭔가를 하고 싶었는데, 어드벤트 캘린더적으로 시간이 다 되었기 때문에, 일단 여기까지로 하겠습니다 💕😃✋😋

    아티팩트



    비참한 데모



    ojichat
    $ for x in $(seq 10) ;do ./ojichat.pl ; done;
    藤佳チャン、ヤッホー😘😆😊😃☀ 何してるのかい✋❓❓( ̄ー ̄?)⁉藤佳チャンも今日も2時までお仕事かな✋❓❓( ̄ー ̄?)⁉ゆっくり、身体休めてね😘😆😊😃☀ オヤスミナサイ😙😒🛌😎
    しえちゃん、オハヨウ〜💗😊(笑)😍今日はもう寝ちゃったのかな😪💤(^^;;✋月曜日、会社がお休みになったよ💗😊(笑)😍しえちゃんは都合どうかな( ̄ー ̄?)🤔❗❓😜⁉️ドライブ🚗どう💗😊(笑)😍なんてね💗😊(笑)😍
    透心ちゃん、そっちも台風🌀なのかな⁉( ̄ー ̄?)❗❓✋❓出張で沖縄に行ってきたよ😃☀ 😋(^з<)😃✋観光でも、行きたいなぁ😃☀ 😋(^з<)😃✋モチロン、透心ちゃんとね
    律楽チャンは、スタイルがいいね😘😃♥ (^_^)😆ホント可愛すぎだよ〜😘😃♥ (^_^)😆マッタクもう😘😃♥ (^_^)😆
    るあちゃん、髪の毛、切ったのかな🤔❗❓( ̄ー ̄?)✋❓似合いすぎだよ😍😃♥ 😚😃☀ こんなに可愛く😍😃♥ 😚😃☀ なっちゃったら天使みたいで小生困っちゃうよ😓^^;💦(-_-;)
    ゆっくり、身体休めてね(笑)😘(^o^)😁オヤスミナサイ🛌😙😌( ̄▽ ̄)俺は留亜チャン一筋だよ🛌😙😌( ̄▽ ̄)
    りなちゃん、愛しいなぁもう😂😚😍(^з<)可愛すぎてボクお仕事に集中できなくなっちゃいそうだよ(・_・;(◎ _◎;)😥(-_-;)どうしてくれるんだ😂😚😍(^з<)
    よしえちゃん、会社をサボるなんて、悪い子だなぁ😋(^з<)🎵😊今日は楽しい時間をありがとうね😋(^з<)🎵😊すごく、楽しかったよ😋(^з<)🎵😊
    ヤッホー(^з<)😚💗❗はやねチャン、元気かな✋❓😜⁉️🤔❓今日は楽しい時間をありがとうね(^з<)😚💗❗すごく、楽しかったよ(^з<)😚💗❗
    奈南チャンは、スタイルがいいね💕😄(^_^)(^o^)こんなに可愛く💕😄(^_^)(^o^)なっちゃったらお姫様みたいでおじさん困っちゃうよ(◎ _◎;)😰😖💔
    
    

    음, 이건 지옥이네요...👴

    감상



    Go 언어의 처리를 처음으로 제대로 읽어 보는 좋은 기회가 되었습니다. 문자열 조작이라든지의 연습으로서는 딱 좋은 소재이구나, 라고.
    자신은 평상시 Perl만 밖에 보고 있지 않습니다만, 역시 전혀 문화가 다르고 각각의 장점이 있구나, 라고. 하지만 개인적으로는 역시 Perl로 쓰고 싶네요.
    그런 다음 방금 전 기사의 gimei 씨의 의 코드도 참고로 해 주었고, TypeScript의 코드도 처음으로 읽고 분위기를 맛볼 수 있었습니다.

    그리고, 이 연말의 압박한 시기의 휴일에 혼자 고독하게 아저씨의 대화를 읽고, 여러가지 할 수 없는 기분이 되기도 했습니다. 휴식의 사이의 궁극 에빌 프리스트씨만이 마음의 지지가 되었습니다…
    하지만 뭐 이것도 또 좋은 경험이 되었습니다… 떡볶이 😍(^з<)😚

    내일은, mp0liiu씨에 의한, @kaibadash 입니다!

    좋은 웹페이지 즐겨찾기