2022年2月2日水曜日

ジョークコマンド・ミームコマンド : please

ものすごいジョークコマンド(ミームコマンド)を思いついてしまった。

それは、SQLクエリに「please」を使えるようにする、というものである。

(例)
please select * from table1;
please insert into table1 values (...);
please update table1 set ...;
please delete from table1 where ...;
と思ったら、
2021年4月に日本MySQLユーザ会の副代表である坂井 恵さん
に先を越されていた!残念!

1年遅かったか!そしてまさか実装までされているとは!

せっかくなので、転んでもただでは起きずに
・シェルコマンド  →P.S. 2023.1.2 作りました!
・DOSコマンド
・PowerShellコマンド
・…
などのCUIコマンド辺りにも広めるアイデアを書いておこう。。
※GUI版もあり得るといえばあり得るので、ついでに書いておく。

シェルはディストリビューションがたくさんあるので既にあるかどうか分からないが、少なくとも macOS Monterey にはないことを確認。
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin21)
 
DOS/PowerShellはWindows 10にはないことを確認。


なお、SQLのplease句は文頭でも文末でも使えるようだ。これはデータベースエンジンという閉じた世界で文法解釈するためよいが、シェルとなると関連するところが一気に広がるため大変そうである。
(例)
please ls
ls |please
echo `please date`
please please please please please ...
コマンドの機能としては、何もしない、またはコマンド全体には何の作用もしないが、何かしら気の利いたことをしてくれる機能😅

例えば、後続コマンドが「--please」オプションを実装している場合は、「--please」オプションをつけて実行してくれる、など。
「--please」オプションの実装は各コマンド次第ということ。
既に「--please」オプションが別の意味・機能で実装済みの場合は注意が必要。

ヌルコマンド「:」に似ているが、ヌルコマンドはそれ自体が終了コード0を返す1つのコマンドである。つまり
: ls
を実行すると、lsの結果は出力されず、コメントのように使用されるが、pleaseコマンドの場合は、lsの結果の出力及びlsの終了コードを返す。
つまり結果には介在しない。うーん、いかにも危険なコマンドである。

※「気の利いたこと」として、例えば出力に「You are welcome.」を返したり、「fortune」コマンドのようにランダムな気の利いた言葉を返す機能を想定するならば、「結果出力には介在するが、終了コードのは介在しない」機能となる。
※なお、「fortune」コマンドについては、昔、どこの何の環境では覚えていないが、シェル起動時に「その日の言葉」を出してくれていたので覚えているだけで、それが果たして「fortune」コマンドだったのか、それとも別のコマンドだったのかは今では分からない。
その環境のデフォルトrcスクリプトであったのだろう。
please fortune

※よって、pleaseのオプションとして「気の利いたこと」をしてくれる連携コマンドを指定できそう。
please -p fortune
please --partner fortune

ただし、「please」コマンドがSQLのように「自然言語」に寄り添う思想の言語には親和性があるのに対し、シェルコマンドだと自然言語側に寄せれない問題が発生し、人々はそれに直面し困惑することになる。
please -p fortune ls
please --partner fortune ls
ls |please -p fortune
ls |please --partner fortune
echo `please -p fortune date`
echo `please --partner fortune date`
please please -p fortune please please please ...
please please --partner fortune please please please ...
「please」効果が大激減である。そればかりか反対の感情にさえなりかねない状況に陥る。

よってpleaseコマンドにはオプションを持たせないのがとりあえずの対処。
(fortuneと連携したい場合は設定ファイルか何かで連携するしかない。)
please [command ... ]
command : コマンド全般。ただし自然言語系コマンド※だとより親和性がある。
※自然言語系コマンド:please を含め、シェルで自然言語に近いコマンドを構成する/できる言語体系。文脈を構成する場合は、コマンドの前後など文脈としての整合性も求められる。
という、シェルコマンドに自然言語を乗せるという壮大な話になってくるため、話はここら辺までにしておこう。

(please の他にも do/force で、後続コマンドに --force を付与や、can/could you ... などなど。住む世界が違いすぎる。しかしこれまで培われてきたように、異なる世界でもお互いに解釈できる言語技術やプロット技術、変換技術によって繋ぎ合わせることができるのである。変な扉を開かなければ良いが。。。)


。。。
いずれにせよ、混乱とバグとセキュリティ上の脆弱性をもたらしそうである。。

ーーーーー
P.S. 2023.1.2 
というわけで、せっかくなのでshell版(UNIX版)のpleaseコマンドを作成しました^^✌️
shell版と言ってもシェルスクリプトではなくてC言語で作ったバイナリです。(多分シェルスクリプトでもできるかもしれないが。。)


0 件のコメント:

コメントを投稿