1. nutsinshell

    Posted

    nutsinshell
Changes in title
+初心者がShellを知りFish〜Fishermanを導入するまで
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,176 @@
+初心者向けです。
+
+最近Shellについていろいろ勉強をしています。
+
+掲題のとおり、Shellって何?からはじまり、Fish Shellについて
+それからプラグインマネージャ初挑戦、Fishermanについての考察をメモ。
+
+***
+
+## Shellって何?
+
+さて、私の場合はまずここからでした。
+
+OSの中にはカーネルと呼ばれる中心機能があるわけですが、「核」なので私たちが直接対話することはできません。
+
+そこでカーネルさんとお話しするためのツールとしてShellがあります。私たちにインタフェースを提供してくれるソフトウェアです。
+
+てことはターミナルのことかー、って思ったけどまたちょっと違ったみたい。
+ターミナルはあくまで外側の端末、黒い画面のアレを指します。
+私たちがターミナルで打ち込むものに、Bash、Zsh、Fish等のバリエーションがあるわけです。
+
+## Fishってどう?
+
+私のPCにはBashが入っています。
+
+これは右も左もわからない時に色々教えてくれた先輩がBashユーザーだったのでそのまま‥という理由なのですが、自分でいろいろするようになったら、Fishくんが気になってきちゃいました :flushed:
+
+<p align="center">
+ <img src="https://qiita-image-store.s3.amazonaws.com/0/86088/49a7a0c5-57c4-ea52-53ab-91ec222dc061.png">
+</p>
+
+なぜかというと、こんな魅力的なやつなんです。
+
+ * インストールが簡単!
+ * ほとんど設定しなくても充分使える。
+ * 補完機能(候補をあげたり、予測変換的な機能)の性能が高い。
+ * コマンドでの色つけ機能(エラーは赤とか)がわかりやすい!
+
+ユーザーフレンドリーというだけあって、イイ :smiley: !このへんのポイント、初心者には嬉しいですよね。
+
+## Fish Shellを使おう
+
+Fish Shellの導入は、すでにたくさんの素敵な記事があるのでここで細かくは触れませんが
+macからはhomebrewで簡単にインストールできますし、英語ですが[公式ドキュメント](http://fishshell.com/)も充実しており[チュートリアル](http://fishshell.com/docs/current/tutorial.html)もありました。
+
+@futoase さんの[いいからfish shellつかってみろ](http://qiita.com/futoase/items/32d31cc60a49302eb168)<br> @mtwtk_man さんの[fish-shellを使ってみませんか](http://qiita.com/mtwtk_man/items/dde92d0a6024bc61fa58)
+
+こちらの記事がわかりやすくてとても参考になりました :star2: !
+
+個人的に嬉しいと思ったのは
+
+> **親切なヘルプメッセージ**
+fishに於けるエラーメッセージは、何が間違っていたのか、どうすればいいのかを実際にユーザへ伝えるように設計されている。<br>
+
+> `foo=bar`
+fish: foo=bar というコマンドはありません。もしかしたら“set 変数 値”という意味ですか? 変数値を設定する情報を見るためには、“help set”と入力
+し、ヘルプセクションを見て下さい。
+
+> `echo ${foo}bar`
+fish: {$変数名}という意味ですか?文字*$*は変数の初めに用います。*$*に続くブラケットは変数名の一部としては許可されておらず、変数名が0文字になっ
+しまいます。fishに於ける変数展開についての情報は“help expand-variable”を入力して下さい。
+
+> `echo $(pwd)`
+fish: (コマンド)という意味ですか? fishに於いて文字$は変数値を利用する
+ときのみ利用します。fishに於けるコマンド代用に関する情報は、“help expand-command-substitution”を見て下さい。
+
+(以上[wikipedia-fish(friendly interactive shell)](https://ja.wikipedia.org/wiki/Friendly_interactive_shell)より抜粋)
+というように、説明、ヘルプ、補完に重点を置いているところです。
+
+
+## 機能を追加しよう
+
+初心者としてはこのへんで既に結構やった感があったりするのですが
+更に一歩進んでカスタマイズできるともっと便利になります。
+機能を追加したり、ちょっとかっこいいグラフィックを使えるとうれしいですし。
+
+
+で、よほど限定的に機能を絞りたくない限りは
+一括管理できる**フレームワーク** or **プラグインマネージャ**([後述](#ref-1))を使ったほうがいいです。
+これらは、便利な機能を使えるようになるだけでなく、そのインストールや更新を一括で行ってくれるものです。
+
+逆に言えば、便利なプラグインを見つけても、手動で更新したり、‥zip形式やtgz形式で配布されているものを個別に取り込んだり、GitHubからクローンして自分でローカルのディレクトリに‥ :mask: :speech_balloon:
+
+そうですね。入れましょう。
+
+
+## Fisherman
+
+さて、Fishではoh-my-fishというフレームワークがあるのですが
+著作権問題があったらしく、一時停止していました :open_mouth:(2016.2月現在)。
+そこで最近台頭してきたプラグインマネージャ[Fisherman](http://fisherman.sh/)を覗いてみたところ
+GitHubに日本語に対応した[クイックスタートガイド](https://github.com/fisherman/fisherman/wiki/クイックスタートガイド)がありました。よし、これにしよう。
+ちなみに上記クイックスタートガイドの一番下に「[Installing Fish Shell](https://github.com/fisherman/fisherman/wiki/Installing-Fish)」のリンクもありました。
+
+
+## Fishermanで何ができるの?
+
+具体的に、導入したら何が良いの?というところですが
+Fishermanの場合は下記のような特徴があります。
+
+### **プラグインのインストールと削除が簡単**
+すべてのプラグインとテーマを
+
+```
+fisher install プラグイン名
+```
+
+と入れるだけで、ダウンロード、インストールできます。
+
+![qs-install](https://cloud.githubusercontent.com/assets/8317250/12331695/fecb63ca-bb2d-11e5-960b-90198bc2bbf6.gif)
+([クイックスタートガイド](https://github.com/fisherman/fisherman/wiki/クイックスタートガイド)より)
+
+削除したくなったら、これだけで終わり。
+
+```
+fisher uninstall プラグイン名
+```
+シンプル〜
+
+### **他のフレームワークのプラグインも使うことができる**
+一般的にoh-my-fishなど、フレームワークのプラグインは、そのフレームワークの中でのみ有効なのに対し、Fishermanは自身のプラグインだけでなく、他フレームワークのプラグインも使うことができます。
+
+
+
+### **全てにドキュメンテーションがある!**
+[Fisherman/wiki](https://github.com/fisherman/fisherman/wiki)から一覧が見られます。
+installation、commands、guides..etc 圧倒的なドキュメンテーションの量。今のところ全てにあるようです。
+
+
+
+### **Fish Plugin Market** ([Fishery](https://github.com/fishery))
+
+これ面白いなと思いました。
+
+「Fish Plugin Market」の名前の通り、更に追加したいプラグインがあったらここからインストールするというもの。
+ほんとにマーケットみたいでわくわくします。
+
+ハイレベルな機能のものから、黒い画面がちょっと楽しくなるものまで色々あります。
+
+- [Fishtape](https://github.com/fishery/fishtape):unit-testフレームワークになっているプラグイン。Fishermanもそこのプラグインのテストも全文Fishtapeを使っているみたいです。
+<br>
+
+- [Spin](https://github.com/fishery/spin) : インストール中の微妙な数秒を楽しませてくれるやつ。左下でくるくる回ってます、かわいい。
+![spin.gif](https://qiita-image-store.s3.amazonaws.com/0/86088/68553033-8659-82ec-059c-76a0ad0c057e.gif)
+<br>
+
+- [Shark](https://github.com/fishery/shark) : すみません、これはよくわからなかったんですが、かっこよくて貼っちゃいました。おそらく、データをグラフで表示しているようです。
+![Shark](https://cloud.githubusercontent.com/assets/8317250/12835057/122909f4-cbf0-11e5-86b3-9fd9956ebbb2.gif)
+<br>
+
+初心者なので目を惹くグラフィックに心奪われがちですが
+このへんはわかるようになればなるほど便利なのでしょうね。
+因みにこれらはFisherman以外でのシステムにも対応しているとの事。
+
+
+
+以上、かなり簡易的に書きましたので、更に知りたい方はFishermanの[公式](http://fisherman.sh/)もしくは[README](https://github.com/fisherman/fisherman)へ。
+
+
+## 最後に
+
+今回Shellって何?から始めてみて、初心者でも実際今すぐ使えるかどうかではなく、こういうものをどんどん入れたほうがいいなと感じました。
+
+今は手が届かないスキルだからこそ、知っていたほうが自分の大きな励みになりますね。
+
+次回、実際の使い方等もっと詳しく書いてみたいと思います。
+
+今回は自分のためのメモも兼ねて書きましたので、理解不足な事も多々あると思います。
+
+もしなにかありましたら、コメント等くださると嬉しいです。
+
+
+***
+
+<a name="ref-1"></a>
+<sup><b>1</b></sup> 本文にあるように、Fishermanは他フレームワークのプラグインも使えるという自由度の高さから、他と一線を画すということで、フレームワークではなくプラグインマネージャと呼称しているようです。<a href="#機能を追加しよう">:arrow_heading_up:</a>