🙆

「3時間で始めるLinuxチュートリアル」を書くために考えたこと

2022/02/27に公開

「3時間で学ぶLinuxチュートリアル」を書くために考えたこと

アルバイト先の研修資料を兼ねて、「3時間で学ぶLinuxチュートリアル」を書きました。

作成の背景や、作成するにあたって考えたことをつらつらと書き記します。


https://talent.supporterz.jp/events/4e931a51-1744-4a61-aa88-9e4aa5932875/

背景

私はとある大学のとある部署でインフラ・バックエンドエンジニアのお仕事をしています。大学内なので、働いているのはみんな学生で、プログラミングの経験も殆ど無い(コマンドプロンプトやbashを開いたことがない)まま入ってくる人もいます。
そんな環境で私は新人研修をする立場にいるので、短時間でLinuxの操作やサーバの管理を教えてゆく必要があります。

ところで私自身はというと、インフラ・バックエンドの知識を人から体系立てて教わったことが全くありません。
上記の勤務先に入った当初は「SSH接続とは??」みたいな状態でしたが、そこから自分で調べて、色々どうにかしてきました。
そんな私なので、Linuxを教えると言っても何を教えれば良いのかわかりませんでした。

そこでLinuxの入門書を読み漁り、「3時間で学ぶLinuxチュートリアル」を書くことにしました。
職場の都合上、研修をすると言っても1回あたり3時間が限度です。
また、せっかくインフラ・バックエンドが触りたいと言って入ってきた人たちに、いつまでも研修ばかりしているのは心が痛みますし、私の時間的にも困難です。

なのでこの研修では私は自分に次の到達目標を課すことにしました。

研修を受けた人たちが業務をこなす上でLinuxについて、

  • Linuxの基本的な単語に聞き覚えがある
  • 分からないことは同僚に質問できる
  • 適切そうな検索ワードで調べて、解決を目指すことができる

ようになること。

私はどのようにLinuxを学んだか

「3時間で学ぶLinuxチュートリアル」を書くに当たって、自分がどのようにLinuxを学んできたか振り返ってみました。

とは言っても、与えられた業務に関する単語が全て分からず、片っ端から調べていたような気がします。

例えば、勤務を始めた当初に「サーバの証明書切れるから更新しておいて」と言われたことがありますが、その時は次のようなことがわかりませんでした。

  • 今言われた「サーバ」がWebサーバの話であること
  • そもそもWebサーバもわからない
  • 証明書って何?
  • 証明書が切れるってどういうこと?
  • 証明書を更新するって具体的に何をどうするの?

まあ、何も分かりませんでしたね。

幸い私はGoogle検索が比較的得意な人間だったので、このときは検索にかけてみて出てきた単語のうち分からないものを調べる、という行為を繰り返すことでなんとかしました。

とは言え、先に述べたような新人さんに同じことをやれというのも酷な話です。

私は高校1年生の時に有機化学を何も分からない状態から大学学部レベルまでほぼ独学で学ぶというおかしな経験を積んでいたので、めげずになんとか出来ましたが普通の人はめげます。多分コンピュータ・サイエンス全般が嫌になってしまう人もいるでしょう。

私も今でもLinuxについて分からないことは沢山ありますし、毎日知らない単語を目にして調べている気がします。
それでも私は業務や趣味でLinuxを触る上で困ったことは殆どありません。
ですが、新人さんは困ると思います。

この違いは分からないことは調べる、というある種エンジニアの間では常識とされていることを、常識なのだと伝える必要があることに気が付きました。

分からない人は何が分からないのか

私は何事においても人に教えるときは「分からなければ聞いてください」と言っていますが、大概の人は分からなくて手が止まっても聞いてくれません。

世の中には、自己解決も出来ない、質問も出来ないなんてヤツは放っておけ、という風潮がいくらかある(特にエンジニアは顕著)な気がしていますが、これは教える側の怠慢です。

コンピュータを触っている状況において、分からないけれど質問できない人は、次のような状態にあると考えられます。

  • 画面の表示が正常なのか異常なのか分からない(トラブルが起きていることに気づけない)
  • 何かトラブルが起きていることはわかるが、状況が言語化出来ない
  • 操作方法(コマンドの打ち方など)が分からず、やりたいことが出来ない

プログラミングなどに慣れている人からすれば、上記のようなことは動作検証したりエラー分まるごと検索窓に投げ込んでみたり、ヘルプを読んだりすることで解決できる些細な問題です。
しかしそれは、これまでその方法で解決できたという経験則あっての判断であり、初心者に求める行動ではないと私は思います。

そのため研修の中に上記のような体験を混ぜ込む必要があると考えました。

具体的な項目

Linuxの研修をするのでLinuxの話をします。と言っても項目が多すぎて到底3時間ではまとまりません。

まずは参考にLinux入門を目的とする技術書の目次を調べてみました。
私が読んだことのあるLinux入門書の目次が載っているサイトを以下に書きます。

https://www.kinokuniya.co.jp/f/dsg-01-9784797397642

https://i.loveruby.net/stdlinux2/

https://honto.jp/ebook/pd-contents_0626682446.html

おおまかには次の項目がありました。

  1. Linux(Unix)の歴史
  2. Unixコマンド
  3. ユーザと権限
  4. ファイルシステム
  5. ディスク
  6. ネットワーク
  7. シェルスクリプト
  8. Linux環境の入手方法

どれも重要な内容だということは私にもよく分かりますが、これを3時間で説明して、ある程度新人さんの記憶に残してもらうのは無理です。

そこで上記内容の説明は殆どを概要に留めてみました。
では、何を話すかと言うと次のとおりです。

  1. Linux(Unix)の歴史
  2. コマンドの使い方の調べ方
  3. vimの使い方
  4. エラーの対処方法
  5. 最低限のファイルシステム
  6. ネットワーク(TCP/IP)の基礎知識
  7. その他Linuxに関する重要項目の概要

この構成にしたのはちゃんと理由があります(Vimを入れたのは半分私の趣味であることは否定しません)。
「それと関連する事項に初めて出くわした時に、該当する分野や関連する用語を探しにくいもの」を説明しようと思いました。

  • 例えばVimはgitを使っていてコンフリクトを起こすと調整のために突然出くわしますが、いきなりあの画面を見せられても何をすればよいのか分かりません。
  • 例えばサーバがインターネットに繋がらなかったとして、IPアドレスという単語すら知らなければ何が起きているのか分かりません

「その他Linuxに関する重要項目」については各個人が後に自分で少し調べてみることを想定しています。

それ以外の工夫として、私が作成した「3時間で学ぶLinuxチュートリアル」は50分×3回の構成にしており、適宜休憩を挟めるようにしました。3時間もぶっ通しなんてやっていられません。聞く方も話す方も疲れます。

成果物

上記のようなことを考えながら作った記事がこれです。

Discussion