Red Hat 認定スペシャリスト試験 - Containers - (EX188) 受験体験談

# はじめに
> この記事は、2024年7月バージョンのEX188の体験談です。

こんにちは。新社会人のyxuです。
入社したばかりということもあってか、やる気がかなりみなぎってます。

仕事に役立つだろうと思って、7月にRHCSAとEX188を受けました。幸運にも両方無事に合格しました。

受験準備をしていたとき、EX188に関する情報がWeb上にはあまりなかったので、同じ資格を持つ会社の先輩に質問攻めしちゃいました。
そこで今回は、EX188の学習方法や試験対策のTipsを書こうと思います。これからEX188を受ける方に少しでも参考になれば嬉しいです。

※受験の流れや試験のやり方は、他のRed Hat資格とほぼ同じなので今回は割愛します。他のQiita記事も参考になるので、ぜひ読んでみてください。

https://qiita.com/dingtianhongjie/items/4e863d764812c0567ba1

https://qiita.com/torippy1024/items/f7b292d25cfdcf5b923c

# EX188の概要
Red Hat Certified Specialist in Containers（EX188）は、Red Hat資格の中では初級レベルに位置しますが、決して簡単な試験ではありません。

Red Hat系の資格試験は実機でコマンドを打ったり、操作したりするので、**Linuxの基本的な理解**が必要です。
また、コンテナはアプリを動かすためのツールなので、コンテナだけでなく、**Webサーバー、フロントエンド、バックエンドやDBの知識**もある程度求められています。

### 必要な基礎知識と学習方法
まずは、Webアプリケーションに関する基礎知識を確認してみましょう。

以下はWebアプリケーションの構成例です。三つの要素はそれぞれ何でしょうか。また、このアプリに不具合が発生した場合、どのようにデバッグすれば良いか心当たりがありますか？

![Webアプリの一例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806284/10d59cdd-0906-a525-992a-2328ec6d1676.png)

**全く心当たりのない方：**
受験に必要な基礎知識として、**①Linuxのコマンドライン操作**、**②Webアプリの構成**があります。

- **①Linuxの知識**については、実機での操作に慣れることが大切です。さらに、LinuCやRHCSAを先に受験することで、理解が深まるでしょう
- **②Webアプリの理解**については、実際にWebアプリ開発に携わるのが最も効果的です。仕事でのプロジェクト経験でも良いですし、ハッカソンやブートキャンプ、Udemyなどの演習付きコースも良い選択肢です

これらを学ぶ順番としては、**①Linux → ②Webアプリケーション → コンテナ（EX188）の順**がおすすめです。時間はかかりますが、しっかりと基礎を築くことができます。

**心当たりのある方：**
すでにコンテナ技術に触れたことがある方や、実務でLinuxやアプリケーション開発を経験している方は、**EX188の学習に直接進んでも問題ありません**。新たに学ぶ内容はそれほど多くないため、自信を持って受験に臨みましょう！

# 出題範囲とおすすめの教材

https://www.redhat.com/ja/services/training/ex188-red-hat-certified-specialist-containers-exam

公式ページから、2024年9月19日時点の出題範囲を抜粋します。

>  **Podman を使用したイメージの実装**
>
> - FROM (ベースイメージの概念) 命令の理解と使用
> - RUN 命令の理解と使用
> - ADD 命令の理解と使用
> - COPY 命令の理解と使用
> - ADD 命令と COPY 命令の違いについての理解
> - WORKDIR 命令と USER 命令の理解と使用
> - セキュリティ関連のトピックについての理解
> - CMD 命令と ENTRYPOINT 命令の違いと適用可能性についての理解
> - パラメーター付き ENTRYPOINT 命令についての理解
> - Containerfile からポートを公開するタイミングと方法の理解
> - イメージ内部の環境変数についての理解と使用
> - ENV 命令の理解
> - コンテナボリュームについての理解
> - ホストディレクトリをデータボリュームとしてマウント
> - このアプローチに関連するセキュリティと権限の要件についての理解
> - ~~このアプローチでのライフサイクルとクリーンアップ要件についての理解~~
>
> **イメージの管理**
>
> - プライベート・レジストリ・セキュリティについての理解
> - さまざまなレジストリの操作
> - イメージタグについての理解と使用
> - イメージのレジストリからの取得 (プル) およびレジストリへの格納 (プッシュ)
> - ~~イメージをそのレイヤーおよびメタデータと共にバックアップすることと、コンテナ状態をバックアップすることの比較~~
>
> **Podman を使用したローカルでのコンテナの実行**
>
> - Podman を使用してコンテナをローカルで実行する
> - コンテナログの取得
> - コンテナホスト上でのコンテナイベントの待機
> - Podman インスペクトの使用
> - 環境パラメーターの指定
> - パブリック・アプリケーションの公開
> - アプリケーションログの取得
> - 実行中のアプリケーションの調査
>
> **Podman を使用したマルチコンテナ・アプリケーションの実行**
>
> - アプリケーションスタックの作成
> - コンテナの依存関係の理解
> - 環境変数の操作
> - ~~シークレットの操作~~
> - ボリュームの操作
> - ~~設定の操作~~
>
> **コンテナ化アプリケーションのトラブルシューティング**
>
> - アプリケーションリソースの記述の理解
> - アプリケーションログの取得
> - 実行中のアプリケーションの調査
> - 実行中のコンテナへの接続

試験問題のカバレッジが広くて、**基本的には全部出題される**と考えておいてOKです。

僕のときは上記で取り消し線を引いた部分は出題されませんでしたが、範囲内なので試験によっては出る可能性があります。

このリストはかなり詳細なので、試験前にこれを使って知識の把握状況をチェックするのも良いと思います。

学習教材は公式の**DO188**がおすすめです。最も理解が難しいChapter 7、8のPodman ComposeとOpenShiftは出題範囲には含まれていませんので、軽く目を通す程度で問題ありません。それ以外の内容については、しっかりと理解しておくことが重要です。

# 受験のTips
問題の詳細については守秘義務があるので言えないですが、受験のTipsを共有したいと思います。
### どこまで勉強したらいいのかわからなく、不安を感じる方へ
**DO188の演習を理解した上で解ける程度**であれば、問題なく合格できると思います。
まずはDO188の演習問題で練習しましょう。

本場の試験問題は流れ的にDO188の演習と似てる感じですが、使用するpodmanコマンドとオプションはもっと簡単（少ない）で、シナリオはもう少し複雑です。
`man`コマンドか、`--help`オプションを活用すると良いでしょう。

また、コマンドやコマンドオプションは覚えてなくても問題ありません。`Tab`補完や`--help`が助けてくれます。

### トラブルシューティングの技術を身につけることが大事
マルチコンテナ・アプリケーションのデバッグは、最初は右も左もわからない状態になりがちです。
`podman logs`はもちろん、`podman exec -it [コンテナ名] bash`でコンテナのbashを活用しましょう。

エラーが出たときは焦らずに、ログやコンテナ内での状態確認を丁寧に行うことが大切です。
特に**環境変数**など、細かい設定ミスがトラブルの原因になりやすいです。

# 受験結果
私の場合、受験終了後1時間ほどでメールで結果が届きました。
> Passing score:          210
> Your score:             265
> Result: PASS
>
> Performance on exam objectives:
> 	OBJECTIVE: SCORE
> 	Implement images using Podman: 88%
> 	Manage images: 88%
> 	Run containers locally using Podman: 89%
> 	Run multi-container applications with Podman: 80%
> 	Troubleshoot containerized applications: 86%

全ての問題を解けたつもりでしたが、各セクションで10%前後の点数を失っていました。

その原因を考えたところ、公式ページに以下の情報がありました：
> Red Hat のすべての実技試験と同様に、再起動後も自動で設定が維持されるようにする必要があります。

https://www.redhat.com/ja/services/training/ex188-red-hat-certified-specialist-containers-exam

本当の原因は分かりませんが、自動起動などの設定を何もしていなかったことが原因かもしれません。

# 終わりに
今回はEX188の受験経験を共有しました。
機会があれば、次回はRHCSAの受験経験も共有したいと思います。

https://www.redhat.com/ja/services/certification/rhcsa

最後までお読みただき、ありがとうございました！