TIM Labs

2011年12月アーカイブ

Pryは結構前からgithubのリポジトリを追いかけている人達には認知されていましたが、RailsCastsでも紹介されたことから、Ruby界で一気に広がりを見せています。 ちなみに発音はpra'i(ぷらい)です。英単語で「覗く」などを意味します。

今回はそんな便利なPryについて少し紹介したいと思います。

問題

Reactive Extensions で非同期処理を簡潔に記述する では「キー入力に応じて補完候補を表示する」「ただし補完候補はAjaxで非同期に取得する」という いまどきのWebアプリケーションにならあって当然の機能が、 Reactive Extensions (Rx) を使うことであたかも普通のリスト処理のように記述できることを示しました。

入力補完は例としては単純で分かり易いものの、 もう少し別の例も欲しいところです。 という訳で、 Rx を使うことで コナミコマンド を実装してみましょう。

問題

シェルはお友達です。 一見すると役に立たないように思えるコマンドでも、 組み合わせ次第で複雑な処理をこなすための道具になります。

例えば

  • head - ファイルの先頭10行を出力する。
  • cut - ファイルの各行のうち特定の部分を選んで出力する。
  • shasum - SHA-1 ハッシュ値を出力する。

という、一つ一つでは大して役に立ちそうにないコマンドも、

 head /dev/urandom | shasum | cut -f 1 -d ' '

このように組み合わせることで「ランダムなパスワードを自動生成する」という偉業を達成することができます。

シェルをある程度使っていると上記のようなワンライナーをしばしば入力することがあります。 覚え易いものや短いワンライナーなら即席で入力しても構わないのですが、 先ほどの例のようなものになると少々入力するのが面倒です。 そこで役に立つのがコマンドラインの入力履歴です。 入力履歴があれば、例えば 三か月前に試行錯誤の末に編み出した git filter-branch でリポジトリを消毒するワンライナー であっても、簡単に再実行することができます。

入力履歴は大変便利なのですが、 こと検索においては欠点があります。 コマンド一つ一つが汎用的で小粒なために、 いざ検索しようとすると適切なキーワードが閃きづらい ということです。 パスワード生成の例では shasum が比較的出現頻度の低いコマンドなので、 これをキーワードにして検索すればまだ見つけ易い方ではありますが、 shasum を含む応用例は他にもあるため、 一発で目的のワンライナーに辿り着けることは多くありません。 素早く目的のワンライナーを見つけ出すにはどうすればよいのでしょうか。

このアーカイブについて

このページには、2011年12月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2011年11月です。

次のアーカイブは2012年1月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。