Sakiのプログラミング学習ブログ

プログラミングについて学んだことや、学習の振返りを書いています。

「新しいLinuxの教科書」を読む会 オンライン #1 参加レポート

はじめに

こんにちは。紗希と申します。 プログラマーを目指して、フィヨルドブートキャンプというプログラミングスクールで学習をしています。 先週23日(土)に、著者である三宅さんと大角さんによる「新しいLinuxの教科書」のオンライン読書会に参加させていただきました。 その中でとくに印象に残ったお話をまとめました。

「新しいLinuxの教科書」を読む会 オンライン #1 - connpass

✅ fishシェルを使ってみよう

読書会では、著者のお二人が3回LTをしてくださりました。 その中で三宅さんが「fishシェルを使ってみよう」という題で、fishシェルのメリットとデメリットを分かりやすくまとめてくださり、bashシェルしか使ったことのなかった私もぜひ使いたい!と感じました。 紹介してくださったメリット・デメリットは以下です。

メリット

1. シンタックスハイライト機能がきれい。

きれいというだけでなく、実用性もある。 存在しないコマンドを入力すると実行前に赤色で警告してくれる。 (私のターミナルではオレンジ色でした) f:id:Saki-Htr:20200527182720p:plain

クオートの閉じ忘れが赤色で強調される。 1行目はクオートをきちんと閉じて実行した場合、2行目は閉じ忘れをした場合。 f:id:Saki-Htr:20200527182751p:plain

2. プロンプトに色々な情報が表示される。

gitのブランチ名も表示される。

3. タブを入力するだけでオプションなどを補完してくれる&そのままそのコマンドを矢印キーで選んで実行できる。

f:id:Saki-Htr:20200527182824p:plain

4. オートサジェスチョン=「自動提案してくれる機能」 が便利。

現在のディレクトリ、過去に入力したコマンド、ディレクトリ内にあるファイル等を考慮して提案してくれる。 例えば、vimと入力すると、「このファイルを編集したいの?」と提案してくれたり、cdと入力すると行きたいディレクトリを提案してくれる。

f:id:Saki-Htr:20200527182841p:plain 提案を受け入れる時はcontrol + eまたはcontrol + fを入力する。

5. fishのドキュメントは全てmanで読める。

説明がわかりやすく、例も充実している。

6. 上記のメリット1~5は使うために難しい設定は必要なく、初期設定で使える。

デメリット

1. 名前が検索しづらい。fishと検索しても、まず先頭には出てこない。

2. 構文がbashと異なる。

ブログ記事などはbashの構文で書かれているため、コピペすると動かないことがある。 ➡構文の違いが、fishのWikipediaのページのバッシュ/フィッシュ変換テーブルに記載されている。 friendly interactive shell - Wikipedia

構文を変えている理由

  • シェル伝統の悪い構文を採用せずに、改善している(という思想のため)。
  • 文法や構文もわかりやすさを目指している
  • 『新しいLinuxの教科書』の読者なら使いこなせるとのこと。

fishシェルのインストール方法

このLTを聞いて、早速自分のMacのターミナルにインストールして使ってみたくなったので、以下に方法をまとめました。 参考にさせていただいた記事:fish shell のインストールと初期設定 - Qiita

#Macにインストール
$ brew install fish   
#バージョンの確認
$ fish -v

#今のシェルを確認
$ echo $SHELL 
/bin/bash   #bashを使っている

#デフォルトのshellをfishに変更
$ sudo vim /etc/shells # ファイル末尾に/usr/local/bin/fishを追加
$ chsh -s /usr/local/bin/fish # デフォルトシェルをfishに変更

少し使ってみての感想

コマンドを入力して候補のファイルやディレクトリを出してくれたり、存在しないコマンドを打つと赤く警告の色になるのはとっても便利でした! もっと便利に使いこなしたいので、引き続きfishを使いたいと思います。

✅ シェルは複数使うべきである理由

三宅さんは上記のLTで、シェルは複数使ってみるべきだと仰っていました。 その理由は、シェルに限らずプログラムを複数を使うと比較ができ、各シェルの良い点・悪い点が分かり、自分で考えられるようになるからだそうです。 このお話を聞いて共感しましたので、複数のプログラムを使って、その時に応じて適したプログラムを使いこなせるようになりたいと思いました。 また、現在通っているプログラミングスクールでは、言語はRubyを教わっているのですが、将来は他の言語も使えるようになって、開発にあたってどの言語が適しているかを比較できるようになりたいと思いました。

✅ 一緒に開発している人の立場になってプログラミングする

大角さんは、チームで開発を行う時、clearコマンドは使わないようにしていらっしゃるそうです。 例えばペアプロ(開発の手法の一つで、2人のプログラマが1台のマシンを操作してプログラミングを行う方法)を行う時、表示内容を全消去するclearコマンドを使うと、相手は何が起こったか分からず混乱してしまう=無駄に余計に考えさせてしまうからだそうです。

スクールでも、「slackでやり取りをしたり質問したりする時は、相手にエスパーをさせないように、状況を分かりやすく説明するように」と教わったことがあるので、相手の立場に立って考えて行動することの大切さを改めて感じました。当たり前のことかもしれないですが、実行できていないことが多いと思うので、自分の目線から離れて相手の目線で考えることを心がけようと思いました。

Linuxのオススメ学習法

参加者の方から、「仕事でLinuxを使う機会がなく、学習時に使うだけではすぐに忘れてしまう。オススメの学習法はないか。」と質問がありました。 これに対して、お二人とも、普段家で使うPCのOSをLinuxにすると答えてくださいました。 昔はお二人ともご自分のPCでLinuxを使っていらっしゃったそうで、メールの送受信やちょっとしたメモ書きなど何でもLinuxで使うと習得が早いと仰っていました。

これはたしかに、「アウトプットするためのインプット」ができて良い方法だと思いました。普段使うPCに入れれば、何か作業をするため(アウトプットするため)に使い方を調べることになります(インプット)。 これまでプログラミングの学習を行ってきた中で、目的なきインプットだけを丁寧に行うよりも、実現したい目的のために調べて手を動かした方が身につくと考えるようになったためです。

✅ ベテランのプログラマーほどコマンドは覚えずタブを使いまくる

「ベテランのプログラマーほどコマンドを完璧に覚えている」という考えは、おそらく初心者が考えるベテラン像でありがちだろうとのことですが、ベテランほどコマンドは覚えずタブを使いまくるそうです。

たしかに、良くないプログラミング学習法の一つとして、「コードを全部覚えようとすること」が挙げられているのをブログやYoutubeでよく見かけます。

私も学習当初は学習したことを全部スクールの日報に書いて暗記しようとしていましたが、今は丸写しではなく、忘れて見返した時に、すぐに理解できることを目標に日報を書いています。

さいごに

主催者お二人の仲の良さが画面越しでも伝わってきて、とてもなごやかな会でした☺️ 質問は、必ず今読んでいる章の部分だけをしなくてはならないというわけではなく、「おすすめの学習法は?」「サンプルファイルがDLできない」等の質問も気さくに丁寧に答えてくださり、とても質問しやすい雰囲気でした。 輪読ではなく、その章の中で著者が気になる点、初心者がつまずきそうな点の深堀りをしてくださいました。

お話全てを理解することはできませんでしたが、コマンドの豆知識や、仕事で使う時に気をつけていることなどが聞けて、実務で使う際のイメージを具体的にすることができました。

また開催されましたら、ぜひ参加したいです。 三宅さん、大角さん、貴重な機会をくださり、誠にありがとうございました!