【LPIC101合格体験記】対策と反省点について

# この記事について
今年の4月にLPIC101を受験して合格しましたので、学習方法や反省点を書きます。この記事が、これから受験する方の役に立てれば幸いです。
（LPIC102についての記事は後日受験して投稿します。また、LPIC101で学んだ内容についても別の記事で投稿します。）

# 私の経歴
私は去年の3月にITエンジニアになり歴は1年2ヶ月になります。仕事内容はバックエンドやデータエンジニアリングで、Linuxは殆ど触っておらず簡単なコマンド（cd, lsなど）を知っている程度でした。ネットワーク系やDockerなどの仮想化は本で少し勉強したことがある程度で、実務で直接関わるということはあまりありませんでした。また、ファイル管理システムについては全く知らない状態でした。

# 目次
1. [この記事について](#この記事について)
1. [私の経歴](#私の経歴)
1. [LPI認定試験レベル1と101試験について](#lpi認定試験レベル1と101試験について)
1. [受験結果](#受験結果)
1. [試験対策について](#試験対策について)
    1. [学習で使用したもの](#学習で使用したもの)
    1. [どのように試験対策をしたか](#どのように試験対策をしたか)
1. [受験を振り返っての反省点](#受験を振り返っての反省点)

# LPI認定試験レベル1と101試験について
LPI認定試験レベル1（LPICレベル1）試験は、101試験と102試験で構成されており、私が今回受験したのは101試験になります。両方合格してLPI認定試験レベル1取得となります。2つの試験は同日に受験する必要は無く、私は勉強時間を確保したいので102試験は別日に受けることにしました。

**101試験の概要**
『Linux教科書 LPICレベル1 Version5.0対応』より引用（合格に必要な正答率は著者の推定値です）
- 出題数： 約60問
- 制限時間： 90分
- 合格に必要な正答率： 65%前後
- 試験トピック
    - システムアーキテクチャ
    - Linuxのインストールおよびパッケージ管理
    - GNUコマンドおよびUnixコマンド
    - デバイス、Linuxファイルシステム、ファイルシステム、階層標準

# 受験結果
受験結果は下記の通りで合格でしたが、ちょいギリギリでした...（苦笑）

> あなたスコア： 570
> 合格ライン： 500
> 結果： pass

セクション名|正解率
---|---
システムアーキテクチャ|75％
Linuxのインストールおよびパッケージ管理|75％
GNUコマンドおよびUnixコマンド|76％
デバイス、Linuxファイルシステム、ファイルシステム、階層標準|64％

# 試験対策について
対策期間は3週間ほど。問題集を解くことを中心に行いました。

## 学習で使用したもの
**参考書**
- [Linux教科書 LPICレベル1 Version5.0対応（通称小豆本）](https://www.amazon.co.jp/dp/4798160490)

**講座**
- [Udemy - 『もう絶対に忘れない Linux コマンド【Linux 100本ノック+名前の由来+丁寧な解説で、長期記憶に焼き付けろ！】』](https://www.udemy.com/course/linux100test/)
- [Youtube - 『LPICレベル1対策講座 101試験編』](https://www.youtube.com/playlist?list=PLg4BOtr1xQ5E2pOU-Pc-H5F6u4oUbVBzU)

**問題集**
- [Ping-t > 最強WEB問題集LPIC Lv1-101 (Ver5.0)](https://ping-t.com/)
- [Linux教科書 LPICレベル1 スピードマスター問題集 Version5.0対応（通称白本）](https://www.amazon.co.jp/dp/4798160857)

## どのように試験対策をしたか
初日は、LPICレベル1試験のイメージを掴むために下記の対策方法について書かれた記事と合格体験記を参考にしました。
- [10日間でLPIC101に合格するための対策法](https://eng-entrance.com/lpic101)
- [【LPIC 合格体験記】Linux初学者が1ヶ月でLPIC Level1に合格した際の戦略
](https://qiita.com/kasataku777/items/e373aeb86723b213e41e)

次に、「いつまでに受験します」と会社のSlackで宣言しました。LPIC試験はピアソンVueで申し込みできますが、試験の前日までなら日程の変更が何回でもできてしまいます。なので延期してしまわないように退路を断つという意味で皆に周知しました。（[受験を振り返っての反省点](#受験を振り返っての反省点)にて後述しますが、日程延期を繰り返してしまい、はじめに受験をしようと思ってから受験に至るまで約8ヶ月ほどかかってしまいました。。。（反省））

2日目以降から対策に入っていきます。
Linux自体あまり触る機会がなかったので、Linuxの雰囲気を掴むために先述の[Udemyの講座](https://www.udemy.com/course/linux100test/)を視聴しました。これでLinuxコマンドとそのオプションなどの仕組みを"フワっと"理解しました。（これは試験範囲の「GNUとUnixコマンド」に該当します）

次に、**参考書『Linux教科書 LPICレベル1 Version5.0対応』で覚えた内容を、「Ping-t最強Web問題集」でテストする**、ということをひたすら行いました。（今振り返ると、対策としてこれが一番有効だったと思います。）
具体的には、参考書で1つの単元（例えば、「システムアーキテクチャ > ハードウェア設定の決定と設定」※下記の図を参照）を学習して、Ping-tでその単元を選択して10問問題を解く、また次の単元を覚えて10問問題を解く、その章の最後の単元まで終えたらその章全ての単元を選択して10問問題を解くといった流れで進めていきました。
※Ping-t最強Web問題集の画面は下記のとおりになっていて、出題する問題を単元ごとに選択することができます。参考書に上げた書籍と単元の区切りがほとんど同じで組み合わせとしては相性が良かったと思います。
![Ping-t 最強Web問題集.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552943/64a626a2-1fbe-b94f-49f0-8d326af5c094.png)

**各章の学習で注意したことなど**
「Linuxのインストールとパッケージ管理」では、パッケージ管理システムにDebian系とRPM系の2種類が登場します。そしてDebian系ではdpkg, aptの2種類のコマンドが、RPM系ではrpm, yum, dnf, zipperの4種類のコマンドが存在します。
これらはパッケージ管理を行うためのコマンドで、共通している部分が多々あります。「似ているものの違いを問われる」、というのは試験でよくあることだと思うので、これらのコマンドの違いを言えるように意識しながら学習しました。
またそれぞれのコマンドの全てのオプションは覚えないで、基本的に「インストール」、「アップデート」、「削除」のオプションを覚えておいて、他のオプションは頻出するものだけ覚えるようにしました。

「GNUとLinuxコマンド」では、コマンドおよびオプションの文字の意味をできる限り調べて理解するようにしました。
例えば、`ls -l`というコマンドでは、lsはlistの略で「一覧 → ファイルやディレクトリの一覧を表示する」と理解できます。-lオプションはlongの略で「長い → 詳細」と理解できます。大抵のコマンドの略称や意味は、manコマンドで調べることができます。

```bash
$ man ls
LS(1)                     BSD General Commands Manual                    LS(1)

NAME
     ls -- list directory contents

SYNOPSIS
     ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1%] [file ...]

... （中略） ...

     -l      (The lowercase letter ``ell''.)  List in long format.  (See below.)  A total sum for all the file sizes is output on a line
             before the long listing.
```

またテキスト処理系のコマンド（grep, cut, trなど）では、VSCodeを開いてテキストファイルからこういうテキストを出力する、という問題を自分で作って上記のコマンドをパイプで組み合わせながら解きました。
（ちなみにテキスト処理系のコマンドにはawk（オーク）コマンドというものもありますが、これはLPIC1試験範囲外です。awkはプログラミング言語の1つでいろいろなテキスト処理ができるため興味があれば覚えておいて損はなさそうです。私は実務ではtsvファイルからディクショナリ（Pythonのデータ型、PHPなどでは連想配列のようなもの）を生成したり、複数のEnum（列挙型）ファイルを生成するために使いました。これについてはまた別の記事で書きたいと思います。）

「デバイス、Linuxファイルシステム、ファイルシステム、階層標準」と「システムアーキテクチャ」では、VirtualBox上でLinuxを動かして、実際にユーザーを複数作成してパーミッションの挙動を確認したり、ファイル階層を調べたりしました。またハードリンクとシンボリックリンクの違いも言えるようにしました。ハードリンクとシンボリックリンクの違いについてはこちらの記事[Qiita - シンボリックリンクとハードリンクの違い](https://qiita.com/katsuo5/items/fc57eaa9330d318ee342)がわかりやすかったです。
またこれらの章全体を通して、先述の[Youtubeの講座](https://www.youtube.com/playlist?list=PLg4BOtr1xQ5E2pOU-Pc-H5F6u4oUbVBzU)も参考になりました。

**仕上げ**
Ping-tでの試験がある程度高い正解率になったら、[Linux教科書 LPICレベル1 スピードマスター問題集 Version5.0対応](www.amazon.co.jp/dp/4798160857)で、仕上げを行いました。

# 受験を振り返っての反省点
はじめに「受験するぞ」と思い立ったのは去年の8月の頃でした。しかし、試験対策をしようとすると全然気乗りせず、良くないことに試験日が近づく度に延期を繰り返してしまいました。これではだめだと思い、先述の通り公の場で受験宣言をすることで逃げ道をなくすようにしました。
また、始めから全部ちゃんと覚えようとしたのも気乗りしない原因だったかと思います。気負うこと無く「初めてなんだから3割くらいの出来で良いや」くらいの気持ちで良いと思います。

# 最後に
この記事を読んで私のような失敗を事前に回避できれば幸いです。
それは皆さんの健闘をお祈り致します。頑張ってください！

# 参考
- [【LPIC 合格体験記】Linux初学者が1ヶ月でLPIC Level1に合格した際の戦略
](https://qiita.com/kasataku777/items/e373aeb86723b213e41e)
- [エンジニアの入り口](https://eng-entrance.com/category/lpic)