2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

猫語翻訳コマンドを作ってみた

Posted at

はじめに

OS: Mac

みなさん、"sl"というコマンドはご存知でしょうか?ターミナル上で機関車を走らせられる素晴らしいコマンドです。気になる方は、"brew install sl"で入れられるのでぜひ。
さて、私はこの特に益のない、むしろ邪魔になるコマンドを知って1つの思いが湧き上がってきました。

僕も自分のコマンド作ってみたい!!

別に益のあるコマンドじゃなくていいんです。使えるコマンドなんて世の中に調べれば出てきますし。だから、作るのは自分が楽しんで作れるもの。猫にしました。

作りたいもの

入力テキストを猫語に翻訳する(猫の語尾にする)コマンドを作ります。要件は以下の通りです。

  1. 「。」の前に「にゃ」をつける
    ただし、直前が「な」か「ナ」の場合はつけない。
  2. 「な」を「にゃ」に書き換える
  3. 「ナ」を「ニャ」に書き換える

例はこんな感じです。

例はこんにゃ感じですにゃ。

可愛い。すごく作りたくなってきました。

コーディング

~/command/nekogo
#!/bin/sh

#パイプラインからも渡せるように
if [ -p /dev/stdin ] || [ -f /dev/stdin ]; then
    src=`cat -`
else
    src=$1
fi

src=${src// /_}
flag=true
for s in ${src}; do
    out=""
    for ((i=0; i<${#s}; i++)); do
        x=${s:$i:1}
        if [ ${x} = "_" ]; then
            out+=" "
        elif [ ${x} = "な" ]; then
            out+="にゃ"
            flag=false
        elif [ ${x} = "ナ" ]; then
            out+="ニャ"
            flag=false
        elif [ ${x} = "。" ]; then
            if "${flag}"; then
                out+="にゃ。"
            else
                out+="。"
                flag=true
            fi
        else
            out+=${x}
            flag=true
        fi
    done
    echo "${out}"
done

こんな感じで書けました。

ホームディレクトリにcommandというディレクトリを作ってそのなかに作成しました。
ファイル名は、作りたいコマンド名(今回は"nekogo")で、拡張子は付けません。ただし、最初の行に#!/bin/shと書く必要があります。
最初のifのところは、標準入力だけじゃなくて、パイプラインによる引き渡しとファイル入力に対応するためのものです。

あんまりShell Script書いたことないので、変なところあったら指摘お願いします。

テスト

とりあえずちゃんと動くかテスト。この時点ではまだコマンドになっていないので、普通のbashファイルと同様に実行して試します。

$ bash nekogo 例はこんな感じです。
例はこんにゃ感じですにゃ。

ちゃんと動いてくれました。
それではこれをコマンドにしていきましょう。

コマンド化

まず、このファイルに権限を与えます。
chmodを実行しましょう。

$chmod 777 nekogo

これで、$nekogo 入力テキストで実行できるようになりました。

次に、パスを通して、どこからでも実行できるようにします。
~/.bashrcに以下を追記しましょう。

~/.bashrc
export PATH=$HOME/command:$PATH

これで、どこからでもこのコマンドを使えるようになりました。

実行

コマンドが作れたので、早速使ってみましょう。せっかくなので、ファイルを受け取って翻訳することにします。
使うファイルはこれです。「吾輩は猫である」の最初のところです。

test.txt
吾輩は猫である。名前はまだない。
どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。

実行します。

$nekogo < test.txt
吾輩は猫であるにゃ。名前はまだにゃいにゃ。
どこで生れたかとんと見当がつかぬにゃ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶しているにゃ。

上手くいきましたにゃ。

nekogo < まとめ

猫語翻訳コマンドを作ってみましたにゃ。
翻訳といっても簡素にゃものですが、すごく楽しかったですにゃ。やっぱりやりたいことをやるのが一番にゃ。

参考文献

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?