>突然の死<ジェネレーター - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog

2013-12-25(Wed) [sh][shell] [更新履歴]

拡張 POSIX シェルスクリプト Advent Calendar 2013、25日目の記事です。 最終日です。ネタが尽きました。

本当にネタがないので、 最後は私の集大成…でもないですがそこそこ頑張って作ったシェルスクリプト、 「>突然の死<ジェネレーター」を紹介して締めたいと思います。 Twitter で私をフォローされている方はもうご存知ですね。 既に 2013年5月ごろにツイートした作品です。新ネタでなくすみません。

>突然の死<ジェネレーターとは?

あなたの端末に>突然の死<を提供するイカしたスクリプトです。 名前は echo-sd と言います。 「echo」は echo コマンドのそれです。「sd」は「sudden death」です。 そのまんまですね。

…何のことやらさっぱりですか? そうですね。実際にお見せしましょう。

$ echo-sd
_人人人人人人_
> 突然の死 <
 ̄Y^Y^Y^Y^Y^Y ̄

どうです? 便利でしょう? ツイート機能も付いてますよ!! CGI でも動きますよ!!!! ほかにも色々!!!!!!!!!

要件

インストール

適当にダウンロードして適当なディレクトリにインストールしてください。

$ wget -nv https://raw.githubusercontent.com/fumiyas/home-commands/master/echo-sd
$ sudo install -m 0755 echo-sd /usr/local/bin/echo-sd
$ rm echo-sd

Homebrew には tap、fumiyas/echo-sd を用意してあります。

$ brew tap fumiyas/echo-sd
$ brew install echo-sd

セットアップ

ツイートしたい場合は事前にセットアップが必要です。 必要なければ飛ばしてください。

echo-sd --tweet (または echo-sd -t) を実行すると、次のようなメッセージが表示されます。 適当な英語で何やら書かれていますが、要は「Twitter にアクセスするための OAuth トークンが設定されていません。WWW ブラウザーを起動するので Twitter にログインして PIN コードを取得してください。」ということです。

$ echo-sd --tweet
No OAuth access token and/or secret for Twitter access configured.

I'll open Twitter site by a WWW browser to get OAuth access token
and secret. Please authorize this application and get a PIN code
on Twitter site.

Press Enter key to open Twitter site...

Enter キーを押すと WWW ブラウザーが起動し、Twitter のページが開きます。 echo-sd があなたの Twitter アカウントの利用を求めており、 それを許可すべきかを問う画面です。 内容をよく読み、よければ Twitter アカウントのユーザー名とパスワードを入力し、 「連携アプリを認証」ボタンを押してください。

echo-sd へのアクセス許可画面

「連携アプリを認証」ボタンを押すと PIN コード (数字の列) が表示されます。 これを控えてください。

echo-sd が OAuth トークンを得るための PIN コード表示画面

echo-sd --tweet を実行した画面に戻ります。 Enter PIN code: (PIN コードを入力してください) と表示されていると思います。 ここに先ほどの PIN コードを入力して Enter キーを押します。

…
Press Enter key to open Twitter site...

Enter PIN code: PIN コードを入力して Enter キーを押す

Saving OAuth consumer key and secret into /home/fumiyas/.echo-sd.conf...
Saving OAuth access token and secret into /home/fumiyas/.echo-sd.conf...

これでセットアップは完了です。

ホームディレクトリ下の .echo-sd.conf ファイルに秘密の情報が保存されます。 これが漏れるとあなたのアカウントでツイートしたり TL を覗けてしまうので、 取り扱いに注意してください。

$ cat ~/.echo-sd.conf
oauth_consumer_key='XXXXXXXXXXXX'
oauth_consumer_secret='XXXXXXXXXXXXXXXXXXXXXXXXXX'
oauth_access_token='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
oauth_access_token_secret='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

使い方

$ echo-sd [オプション]... [台詞]...

適当に台詞(せりふ)を与えるとそれを表示します。これだけ。簡単ですね!

オプション

使用例

気軽に実行しましょう!

$ echo-sd --help
...
$ echo-sd
_人人人人人人_
> 突然の死 <
 ̄Y^Y^Y^Y^Y^Y ̄
$ echo-sd -t
(表示はされません。あなたの Twitter アカウントでツイートされます!)
$ echo-sd ぬるぽっ!!
_人人人人人人人_
> ぬるぽっ!! <
 ̄Y^Y^Y^Y^Y^Y^Y ̄
$ echo-sd -v ガッ!
_人人_
> ガ <
> ッ <
> ! <
 ̄Y^Y ̄
$ echo-sd -p1 ズキュウウゥン!!
  _人人人人人人人人人人_
 >           <
>  ズキュウウゥン!!  <
 >           <
   ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
$ echo-sd -vp1 ゴゴゴゴゴゴゴゴ 「世界」ッ! 時よ止まれ!
  _人人人人人_
 >      <
> 時  ┐ ゴ <
> よ 世 ゴ <
> 止 界 ゴ <
> ま └  ゴ <
> れ ッ ゴ <
> ! ! ゴ <
>     ゴ <
>     ゴ <
 >      <
   ̄Y^Y^Y^Y^Y ̄

ストレスモード!

$ echo-sd --stress 仕事のストレス echo-sdを改造 ストレス解消 仕事のストレス echo-sdを改造
仕事のストレス
    ↘
   echo-sdを改造
    ↙
ストレス解消
    ↘
   仕事のストレス
    ↙
_人人人人人人人人_
> echo-sdを改造 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄

勝訴!(手元のブラウザーで見ると表示ずれているが気にしない…)

$ echo-sd -v --square '勝 訴'
┌──┐
│ 勝 │
│   │
│ 訴 │
└──┘

短冊で星に願いを!(手元のブラウザーで見ると表示ずれているが気にしない…)

$ echo-sd --tanzaku '死にたい(訳:生きたい)'
┏-┷-┓
┃ 死 ┃
┃ に ┃
┃ た ┃
┃ い ┃
┃ ⏜  ┃
┃ 訳 ┃
┃ ‥ ┃
┃ 生 ┃
┃ き ┃
┃ た ┃
┃ い ┃
┃ ⏝  ┃
┗━━┛

一時間ごとに進捗確認!

$ while :; do sleep 3600; notify-send "`echo-sd 進捗どうですか?`"; done &

シェルスクリプトでエラーを目立たせる! banner(1) の代替!!

#!/bin/sh

error() {
  echo-sd "ERROR: $*" 1>&2
}

# …

おしまい!

謝辞

最初の数日は書いているだけで楽しかったです。 久しぶりの執筆活動。 腹に溜め込んだまま誰にも疲労^H^H披露することなかったものを掃き出すだけでも喜びでした。 しかし、元来から書くのが遅いしアクセス数も少ないしネタも足りなそうだし、 だんだんと辛くなり、当初思っていたより大変な作業でした。 来年はやりません、たぶん、きっと、恐らく…。

そんな中、支えになってくれたのが読者と応援を下さった皆さんです。 もともと自己満足のために始めたとはいえ、 「毎日楽しみにしてます!」とか 「頑張って!」とか 「知らなかった」とか 「気が狂ってる」とか 「これはいいアイデア!」とか、 やっぱり人の反応が得られるのが楽しくて嬉しくて書いた甲斐があるってものですね。

スペシャルサンクス!

拡張 POSIX シェルスクリプト Advent Calendar 2013 はこれにておしまいです。 本当にありがとうございました。


追伸: 40歳になりました。

追伸2: もう一個何か来そうな気がするんですがががが。数が減っているような気がする。