2008年3月25日火曜日

CUIでCLIなコマンドラインのファイラ「morito」

D言語で自作のプロンプトを作成したのだが、全く反響がないです。まぁ何の宣伝もしてないから当然といえば当然なのですが、せっかく作ったから多くの人に見てもらいたいというのが本当のトコロ。

何人かこのBlogを覗いてくれる人も、自作プロンプトにはほとんど興味がないようです。興味があるものといえば、パスの相対→絶対変換とか、バッチファイルの条件分岐とか。そもそもプロンプトのツールってのがニッチな分野なのに加えて、一般の人にとっては全くといって需要のないツールだよなぁ。

いろいろ考えたのですが、もっとたくさんの人に興味を持ってもらえるように、このツールのジャンルを「コマンドラインファイラ」と言い張ることにしました(^^;
プロンプトと言っても、bashみたいにいろいろできるようなものでもないから、実際に使うのはファイルの実行・コピー・削除・移動が主。だったらファイラって言っても差し支えないかな?

あと名前も改名。「morito」と名乗ることにします。
命名の由来は、アイコンのファイル名から。やっぱり普通の人にアピールするには見た目も重要。コマンドプロンプトなんて見た目が地味以外の何者でもないから、せめてアイコンだけでもカワイイものにしてライトユーザーにもアピール!アイコンはここから借りてきました。(Icon Archive
ちなみに羊にしたのは、なんとなく気に入ったから。関係はまったくありません。。。


以下は morito の開発コンセプトです。

CUIがGUIに勝っている点といえば、
  • マウスを持ちかえる手間がない。っていうかマウスが使えない。キーボードのホームポジションから手を離さずに全ての操作が行える。
  • 深い階層のフォルダも一発で指定可。例えば、c:\windows\system32\drivers\etc なんてフォルダもタイピングだけで瞬間移動が可。GUIだとフォルダを4回クリックする上に、system32フォルダなんてファイルが一杯だから表示に「カラカラ」時間がかかっちゃう。
とかあります。
でも、その代わりに、CUIだとイチイチ全ての文字を入力しないとダメなのが厄介なところ。
入力を省略するために、プロンプトだとTABキーでファイル名の補完もできます。が、日本語とかだと入力が面倒だし、いまいち痒いところに手が届かない。
だったら、もっと便利なファイル補完機能を持たせて入力の手間を軽減されられれば、 GUI に負けない使い心地の CUI ツールが実現するんじゃない!?

と、考えて「morito」を作成してます。
ということで、「morito」にはいろんなファイル補完機能を持たせてあります。
  1. コマンド入力中は入力文字列に併せて動的にファイル名を補完
  2. migemo.dll により、日本語のファイルはローマ字での補完が可能。
  3. 一度開いたフォルダはファイル構成を保存し、次回からは、どこにいてもファイル名を検索するだけで一発で開いたり、移動が可能。
  4. ファイル名補完候補はポップアップで選択(CUIだけど、無理してポップアップを表示してるのが個人的にはお気に入りの機能♪)

自分で言うのもなんなのですが、結構使い易いのですよ。これが。いやホントに。

細かいバグはまだまだあるみたいですが、自分の考えている機能は大体形になってきたので、もうすぐ公開しようと思います。まだ公開しないのは、readme が整わないから。

たくさんの人に使ってもらえるといいなぁぁぁぁ。。。

2008年3月11日火曜日

「名詞→動詞」の順序でコマンド入力すること

 コマンドプロンプトで入力するときにも、GUIの操作みたいに、「ファイルを選択→コマンド入力」の方が自然なんじゃない?って思って、自作プロンプト(d prompt)に組み込んでみたのですが、考え方としてはそんなに間違ってないみたい。

 こんなところを見つけました。
(インタラクションデザインパターン(3)モーダル/モードレスなインタラクション )

 「モードレスインタラクション」とかいうらしい。
 この記事の内容だと、GUIに関する操作の説明として例が挙げられてるんですが、そういうことが言いたかったんですよ。「名詞→動詞」の順序で入力した方が、イメージとして自然な感じがするんですよ。
 自分で実際に操作してみても、最初は自分でも戸惑ったけど後から大部自然に入力できるようになってきた。

 この考え方をもちっと大事にしていこ。

2008年3月3日月曜日

d prompt ver 1.02 公開


ちょっとだけ修正しました。
修正点としては、
  • alias機能の追加。iniファイルに記述する。
  • iniファイルに AbbrevEnvPath 項目を追加。環境変数PATH内の exe名を補完するかどうか。
  • パス入力時、 / で入力されたパス区切りを自動で \ に変換する。
  • コマンドの遅延入力機能 ( Ctrl+L ) を追加。(後述)
  • その他、細かいバグ修正。
今回、試験的に「コマンドの遅延入力機能」をつけてみました。機能名の是非はさておき、その内容としてはコマンド入力時に、「ファイル名→コマンド」の順番で入力できるというものです。
試しに実装してはみたものの、使いやすいかはどうかは、はなはだ疑問。。。

何でこんなことを考えたかというと、

(以下、添付readme.txt の抜粋)

エクスプローラとかGUIのファイラの場合、
  1. [ファイルをクリック](このファイルを操作しよう。)
  2. (コピーしようかな。)
  3. [ドラッグ&ドロップ]
操作は(ファイル選択→操作)の順番になります。

CUI のコマンド入力の場合、
(入力「copy AAAA BBBB」の場合)
  1. [copy を入力](コピーしようかな。)
  2. [AAAA BBBB を入力](このファイルをコピーしよう)
  3. [copy AAAA BBBB 実行]
(操作入力→ファイル選択)
という逆の流れになります。

CUI の入力の場合も、「ファイル選択→コマンドの入力」の方が、思考的に自然な操作方法なんじゃない?っていうのがそもそもの発端です。

操作方法としては、
  1. ファイル名を入力して ctrl+L
  2. '(lazy) ! ' に続けて コマンドを入力。
  3. その他のパラメータがあれば続けて入力。
  4. 空白入力でコマンドが実行される。
  5. 入力をキャンセルする場合は再び ctrl+L
ex1. del AAAA を入力する場合
[D:\]
> AAAA
(lazy) ! del
(lazy) >

Input Command is ...
' del AAAA '
ex2. copy AAAA BBBB を入力する場合
[D:\]
> AAAA
(lazy) ! copy
(lazy) > BBBB
(lazy) >

Input Command is ...
' copy AAAA BBBB '

d_prompt_1.02.lzh