17
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

FishのDesign Documentを読んでみた

Last updated at Posted at 2016-02-27

前回、初心者が Shell を知り Fish と Fisher を導入するまで にて、Shell について学び、プラグインマネージャを入れてみるまでの流れを、ざっくりではありますが書いてみました。

今回は初心者ながらにいろいろチャレンジしてみたいと思います。

ところで Fish、やっぱり良い

前回、Fish の魅力として補完機能の高性能さを挙げましたが、実際使ってみるとすごくイイ!
具体的に、こんな感じです。

このまっさらなコマンド

fと一文字打つと

前回の履歴を出してくれる。

これで OK なら ▸ キーを押せば

ほらよっつって!

この例のように search 等で末尾だけ変えたい時は、普通に書き換えればよし。

これ、実際使ってみると想像してたよりずっと便利です。gcc -o filename filename.cとか何回も打って泣きそうになることありませんでしたか。

もうあんな思いはしない。

ちなみに ▸ キーではなく Tab キーを押すと

その文字で始まるものを提案してくれます。

Fish の設計図を読んでみた

ご存知のとおり、Fish は非常にユーザーフレンドリーです。

どんな風に作ってあるのかな。Fish の Design Documentを見てみました。本当に重要視して設計されているようです。

意訳してみました。ざっとですのでご了承ください。
難しい文章だったので、要点をわかりやすく伝えるために口語調にしました。:speech_balloon:

Fish の設計書

Overview

Fish は設計において、3つのハイレベルなゴールを掲げている。

  1. 他のシェル言語で出来る全てのことは、Fish でも可能であるべきだ。
  2. Fish はユーザーフレンドリー、かつ、そのことと機能性を引き換えにしたりしない。その問題は、慎重に設計することで回避できる。
  3. Fish は可能な限りこのゴールを壊さず、POSIX の構文をフォローする。
    Posixとは UNIX のツールで、プログラムの設計ツール。Bash 等はこれを 100%フォローしている。)

このゴールのための独自の信念は、以下の通り。

❶ The Law of Orthogonality

Shell 言語において、いろいろな特徴はミニマムの方がいい。

(例えば JS とか他の言語みたいに、)沢山バリエーションを作ってもいいけど、複雑になってしまう。

だから用途がかぶるものは1つに絞って、できるだけ少なくしよう。
汎用性の高いものを最小限に抑えて使うことで、シンプルで迷わない設計ができる!
ソースコードが膨らむと、プログラムのメンテナンスが大変になるしね。

❷ The Law of Responsiveness

Fish はいつでもレスポンシブル。

Shell はいつでもユーザーにとってレスポンシブであり続けるべきだ。
何かに対処している時も、ファイルシステムが反応しない場合にも、インターフェイスは通常通り動き、ユーザーの作業を遮らない。
例えば、何かのアップデート中でも、画面をブロックしたりしないよ。
悪いパフォーマンスは、ユーザーにフラストレーションを与え、スピードも落としてしまう。

❸ Configurability is the Root of All Evil

設定は災いのもと

プログラムにおいて設定オプションは、ユーザーが本当に欲しいものをわかってない。
プログラムもプログラマーも、失敗しがちだし、メンテナンスも悪夢だ。
だからもっともノーマルでベストな設定を最初から使えるように用意しておくぜ。

❹ The Law of User Focus

首尾一貫

プログラムのデザインにおいて一番に考えるべき事は、どのように直感的でパワフルにするか。
だからどんなシチュエーションでも、ユーザーから見えるインターフェイスは可能な限り、統一したほうがいいよね。
難易度が増してきたり、プロセスが重なることで表現が変わってくるようなことは良くない。
プロセスを効率的に簡略化し、すべての言語を統一することでそれを解決するよ。

❺ The Law of Discoverability

見つけやすさ

なにか探すときには、見つけやすい、予測しやすいほうがいい。できるだけ直感的で、予想通りで、簡単なインターフェイスや言葉を使おう。
特に新しいユーザーがよく使うメニューは、すぐわかるように設計する。全てのコマンドは tab-completable。
エラーは赤く表示するし、エラーメッセージもわかりやすい言葉で伝える。

あとドキュメンテーションも、文章だけじゃなくサンプルをつけてわかりやすくしておくね。

以上です。

かなり根本的なところから、ユーザーフレンドリーを貫いていますね。新しいユーザーへも配慮したりしてくれていますし、どうりで初心者にも使いやすいわけです。

感想

Fish、今後使っていくうちにいろんな気づきがありそうで楽しみです。

プラグインは活用はともかく、導入は比較的スムーズにできました入れてみると、使いこなしたい!と思うようになりますね。:muscle:

色々試してみたいなぁと考えているのでオススメのプラグインや、初心者でも活用できる方法などあったら是非教えて頂けたら嬉しいです。
また、記事についてもなにかご指摘などあればコメント頂けたらと思います。

17
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?