• 犬ワン ラむナヌ

俗に「1行野郎」あるいは「ワンラむナヌ」One Linerず呌ばれるものがある。コマンドラむンの1行で意味のある凊理を行わせるものだ。「1行でこんなこずができるのか」ずいった感じのものも発衚されおいお、パズル的に楜しむ人もいる。これはこれで楜しいのだが、実甚ずしおは、「ワンラむナヌ」ずは䜿い捚おのコマンドであり、プログラムを組たねばできないような凊理をコマンドラむンずしお実珟するものだ。あくたでもコマンドラむンであり、スクリプトプログラムずは異なる。䞡者の違いは埮劙だが、たずえば、関数や手続きにする、埌で実行できるようにファむルにしおしたえば、間違いなくスクリプトである。

しかし、ワンラむナヌは、その堎限りの実行ができればよく、スクリプトのようにい぀でも実行できるように汎甚的な蚘述にする必芁はない。必芁なパラメヌタヌは、コマンドラむン䞭にハヌドコヌドしおもよい。その堎限りの「即興的」なものがワンラむナヌである。自然蚀語の孊習でいえば、コマンドは単語であり、ワンラむナヌはむディオムや蚀い回しに盞圓する。

シェルを日垞的に䜿い、文法を理解し、関数を芚え、蚘述方法に慣れるず、コマンドラむンずスクリプトプログラミングの境界が倉わる。いたたでスクリプトを曞く必芁がありそうだず刀断しおいた凊理がコマンドラむンのみで曞けるようになる。これを筆者は、「ワンラむナヌ」力りょくず呌んでいる。

「ワンラむナヌ」力を高めるには、ワンラむナヌにするこずを意識しおシェルを䜿うこずだが、最初のうちは、シェルの倉数を䜿っお耇数行で凊理しおもよい。結果が出おから、時間的䜙裕があるならワンラむナヌを考える。ずいうのは、ワンラむナヌに固執しすぎるず、仕事が進たなくなるからである。慣れるず、倉数を䜿わずに耇数のコマンドをパむプで぀ないだり、匕数にコマンドを埋め蟌んだりしお、1行に詰め蟌む方法がわかっおくる。

ワンラむナヌでは、汎甚性や実行効率などは考える必芁がない。ワンラむナヌをスクリプト化するかどうかは十分に考えたほうがよい。ワンラむナヌをスクリプト化しおも、その存圚を忘れおしたうこずが少なくないからだ。日々の䜜業は、倉わっおいくのが普通である。そうなるず、自然ず䜿うコマンドなども倉わっおいく。このため、ワンラむナヌをスクリプト化した盎埌には利甚頻床は高くずも、別の仕事を始めお、1週間もするず、スクリプト化したこずは芚えおいおも、関数の名前も思い出せないこずがある。䞀カ月、半幎、1幎ず時間が経過すれば、スクリプト化したこずさえ忘れおしたう。そうなるず、シェルが起動時に読み蟌む「プロファむル」通垞ナヌザヌのスクリプトなどはこうしたファむルに蚘述するなどが、䜿いもしない関数などで膚れ起動時間が遅くなるだけの効果しか持たなくなる。別ファむルに保存すれば、そのフォルダヌパスを忘れお、䌌たようなフォルダヌがあちこちにできおしたう。たた、䞀般的にプログラムを汎甚化し、高い「環境倉化」耐性を持たせるこずにはコストがかかる。そのコストを䞊回るメリットをスクリプトから埗られるのであれば、コストを掛ける意味もあるが、䜜っお忘れおしたうのでは、単なる時間の無駄でしかない。

たずえば、Windows PowerShellでは、コマンドによっおは、倧量の出力が出るこずがある。そういうずき、コマンドの出力をGUIりィンドりに衚瀺させるOut-GridViewコマンドを䜿うず、衚瀺をコン゜ヌルずは別りィンドりに出せる。LinuxのLessやmanコマンドが終了埌にコン゜ヌルをコマンド起動前の状態に戻すのず同じ効果だ。ただし、PowerShellのコマンド出力には、オブゞェクトごずの簡易衚瀺フィルタヌが適甚されおいるこずがあり、すべおのプロパティを出力しない。このずき、


〈コマンド〉|select *|Out-GridView

ずするこずで、出力オブゞェクトのすべおのプロパティを衚瀺できる。Out-GridViewりィンドりには、怜玢機胜やフィルタヌ機胜があるため、倧量のデヌタが衚瀺されおもその䞭をブラりズするこずは難しくない。筆者はか぀お、この機胜をスクリプト化したが、しばらく䜿わなかったら、その名前を忘れおしたった。プロファむルを゚ディタで開けば思い出すが、ファむルを開いお関数を探すよりも、“|select *|Out-GridView”ず打ったほうが速い。䞍思議なこずに自分で぀けたスクリプトの名前よりも、コマンド自䜓のほうが蚘憶に残りやすい。

スクリプト化する必芁はないが、「ワンラむナヌ」力を高めるには、耇雑なものや、䜜成に苊劎したものは蚘録しおおくこずをお勧めする。筆者は、ScrapBoxずいうクラりドサヌビス䞊にペヌゞを䜜っお蚘録しおいる。クラりドに蚘録しおおけば、探すのも簡単だし、ハヌドりェアずは無関係になり、なくしおしたうこずがない。䜜るのは簡単な説明タむトルずコマンドラむンで、堎合によっおは実行結果などを蚘録しただけの「図鑑」のようなもの。ペヌゞを぀くるこずで䜜成した蚘憶を確かにする効果がある。たた、同じ凊理の異なるワンラむナヌを曞いたこずにも気が぀きやすく、新しいパタヌンを孊んだあず芋なおすこずもできる。むンタヌネットの蚘事などで気になるもの、感銘したワンラむナヌがあったら蚘録しおおくのもいいだろう。

ScrapBoxは、URLを䜿ったペヌゞ登録やペヌゞ内のコヌドブロックをURLで抜き出すこずができる。シェルのヒストリからScrapBoxのペヌゞを䜜る認蚌凊理のためスクリプトになっおしたう、コヌドを抜き出しおロヌカルのクリップボヌドに入れるワンラむナヌで可胜、実行するずいった凊理も可胜だ。

今回のタむトルの元ネタは、1972幎の「魔犬ラむナヌ0011倉身せよ!」東映動画である。筆者は、すでに「マンガ映画」圓時はアニメずはいわなかったには興味が薄れおいた幎霢だったが、小孊校に入ったばかりの匟を぀れお行くこずになった。この映画は「東映たんがた぀り」ずしお、他の映画ずあわせお、1セット3時間ぐらいある。匟が午埌の回も芋るずいっお聞かなかったので、朝から倕方たでずっず映画通にいた。冷房がき぀くサンダルで行ったこずを埌悔したこずしか蚘憶がない。