SkillCred への 道　〜 Linux Foundation SkillCred (Vim, Bash, Git編）〜

こんにちわ。
以前、「[LFCS への道](https://qiita.com/maabou512/items/740a1a2bd3d35c38ddab)」で Linux システム管理者の認定について取り上げました。

OSSのジャーニーとして実践的なパフォーマンスベースで「スキルを証明する」ことができるようになり、その選択肢も増えてきました。クラウドネイティブや AI 周りといった新しめの領域も気になるところです、はい。
でも、ワタシはコツコツ型なところもあり、「急がばまわれ」で高度な話は一旦置いておいて（横目でチラ見はしちゃいますけど）、少し新しめの技量認定「**SkillCred**」にトライしてみました。その備忘録的な内容になります。

※試験の内容については触れてませんのでご了承ください。

![Screenshot from 2024-01-29 07-47-22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3085729/aa5ff033-2b1e-92b5-dbe7-6aa896ce0284.png)

# SkillCred って
Linux Foundationの公式サイト
日本語：https://training.linuxfoundation.org/ja/skillcred/
英語はこちら：https://training.linuxfoundation.org/skillcred/

簡単に言ってしまえば、「<font color=red>『枯れた』技術のトピック特化型ぷち資格</font> 」って感じでしょうか。加えて「<font color=red>思い立ったその日に受けられる試験で永久不滅の資格</font>」でもあります。

### 試験対象のトピック（2024年1月時点）
2024 年 1 月時点で、7 つになってますね。少しずつ増えてるようです（太字は今回取得した分）。
- **Text Editing with Vim (SC100)**
- Open Data Formats: YAML (SC101)
- **Source Control Management with Git (SC102)**
- **Shell Scripting Using Bash (SC103)**
- Developing Helm Charts (SC104)
- Open Data Formats: JSON (SC105)
- Pipelines with Tekton (SC106)
- Pattern Matching with Regular Expressions (SC107)　<font color=red>※2024年2月に正規表現スキル版が新たにできたようです。</font>

### トピック固有の 「 マイクロクレデンシャル 」
「マイクロクレデンシャル（*Micro Credentials*）」という新しい領域。[FAQ のサイト](https://docs.linuxfoundation.org/tc-docs/certification/SkillCreds-FAQ)にはこうあります。
> These skill-based credentials allow you to demonstrate your knowledge and experience in very specific technical areas (i.e. Vim, Bash, Git, etc.).

LFCS のような **Certification** よりも特定領域、「トピック固有」なところが **Credential** たらしめるところのようです。（Kubernetes などをホストしている Cloud Native Computing Foundation の [2022 CNCF アニュアルレポート](https://www.cncf.io/reports/cncf-annual-report-2022-jp/)などでも紹介されていますね。リンクは日本語翻訳版です。）



### 短時間
LFCS などの Certification と比べるとタスク数が少ないようで、時間も1hかからない感じの内容になっています。

### コスト
高くはないですが、いろいろな状況から安くもありません。ただ割引キャンペーンが頻繁にあります。

Certification にくらべて受験費用は安めとはあるのですが （ 2024 年 1 月時点で）79US$ でして、必ずしもそんなに安くない感じです。<font color=red> 今の円安</font> の影響も出ちゃいますね（人によっては試験場所のお金も追加でかかる場合がありますね）。ただ、LFからは定期的に割引キャンペーンありますのでそちらを活用することができます。（毎月のペースであるようです。20%〜30% 割引って感じですが、12 月には年に一度の Cyber Monday で大盤振る舞いがあり 50% オフになります。 割引クーポンについては The Linux Foundation、日本語なら The Linux Foundation Japan の各種メディアソースからご確認くださいませ。 ）

### 有効期限がない
LFCS などの Certification と違い、**SkillCredには有効期限がありません**。vim とか　bash とか、ある意味 Linux ベースのシステムで定番となり、言ってみれば「枯れた」（成熟した）インフラ的技術ということが背景にありそうです。

### Retake（再受験）が1回できる
受験チケット一枚で、一回 Retake（再受験）ができます。一発合格は結構難しいのでRetakeを上手く使って作戦を立てていくのもよいでしょう。


### 実務を意識したパフォーマンスベースの試験
基本的には LFCS などと同じく実機を使ったのパフォーマンスベースの試験です。前述の FAQ には「選択式」についても言及されていますが、今のところ経験してません。実務で遭遇するケースを意識した「タスク」が試験項目の単位となります。タスクの中に複数のサブタスクがあるケースもよくあります。

システムは Certification で使う PSI ではなく、[Proctrorio](https://proctorio.com/) というシステムを使っています。UI/UX は PSI との違いを感じずに受験できます。Proctorio Extentionというブラウザ拡張機能（ MS Edge、Chrome などをサポート。FireFox は未サポート）を使うので OS の違いは気にしなくてよさそうです。私は Ubuntu Linux のマシンで Chrome から受験しました。※マシンはカメラ、マイク必須です。

### 試験コンテンツは英語
試験自体は英語です（ LFCS では言語選択があったような気がしますが SkillCred ではなかったような）。読解問題ではないので文章は簡潔明快なもので、それほど身構える必要はないかなと。

### 試験監督官（ Proctor ）がいない
LFCS などの Certficication と違い、受験ごとに Proctor がつきません。ID、試験環境といった事前、受験最中のチェックはすべて録画ベースで行われます。

### 予約不要で、いつでもどこでも受験できる（部屋はきれいに）
"Anytime anywhere" も特徴です。 LFCS などの Certification と違い、予約なしで受けたいときにすぐ受けられます。試験場所については不正を疑われないように「クリーンに」しておいた方がよいでしょう。

### 合格ラインは70点、でも配点はわからない
合格ラインは、vim, git, bashについては 100 点満点中 70 点（以上）でしたが、試験によって変わるかもしれません。配点がわからないのが実は結構悩ましいです（どこが間違ったかがわからないので）。

### 合格するとデジタルバッジと認定証がもらえる
受験後24時間以内に合否がメールで送られてきます。合格（ PASSED ）の場合は、デジタルバッジと認定証がLFから送られてきます。

### トラブルがあったら問い合わせる（Jira チケット）
なにかトラブルがあったら LF Training & Certification ( T&C )へと問い合わせます（ LF T&C の試験開始時のサイトの下にリンクがあります）。多少時間がかかることもありますが確実に対応してくれるので、こういうのもトラブルシュートのスキルを上げるのだと思って諦めずに問い合わせることをおすすめします。


# 受験体験記
### モチベ−ション

#### その1: 自分を助ける
昨今の DX だ、データドリブンだ、AI だ、社会実装だと言ってる世相のなかで PoC（実証実験） をやることが避けて通れなくなってきたと感じます（<font color=gray>**だってデータ取ってないのにプロダクトやサービス作ったって説得力ないもんね**</font>）。私はエンジニアではなく、企画職なのですが仕事の中でも職種の境界線が溶けてきてるところもあり、そもそも新しいことは自分でやらなきゃ進まないよね（**あとお金も出ないし**）みたいなところもあって、エンジニアたちの力を借りながらも自分でやる、というスタイルがどうしても必要になってきました。これはもう仕方ない。

で、実際に PoC とかをたくさんやるわけですが、まちなかにエッジを置かせてもらったりするときに、vim とか bash とかのスキルってとても大事で（ GUI なんてつかわないですから！:weary:）、たかがエディタ、コマンドだと言うなかれ、こういうのは上達すればするほど仕事が速くなり、品質も上がってくるわけです。

あと私はプライベートで翻訳をやっていて、コミュニティのサイトやドキュメントの翻訳をやるときってどうしてもgitの知識が必要になってくるんですよね。これから git のスキルってのはほんとに基本の「き」なんだなぁと痛感させられます。こういうのはちゃんと身につけておきたいところです。

ここまでの大きなモチベーションの一つは「自分を助ける」ってところでしょうか。

#### その2:ぷち自慢ネタになるかも
もひとつは「ネタになる」ことでしょうか。人生コミュニケ−ション大事だよね、ってところで雑談力みたいな話があります。会話の中で実は「ぷち自慢」って結構いいツールでして、会話の合間にぶっこむと意外と盛り上がることがあります。（マウントとるような「どやさ」な自慢ではなくて、相手もノってこれるようなカジュアルな自慢ですね。）

vim しかり、bash しかり、git しかり、エンジニアの皆さんが日常的に触っているツールで軽くタッチポイントを作る、みたいなことができるんぢゃないかな、と思っています。なんなら名刺にデジタルバッヂを貼り付ける作戦もありな気がします。果たして本当に機能するのかはわからないので実証を続けてみたいと思っています:grinning:。

### Vim: Text Editing with Vim（SC100）
- 日本語：https://training.linuxfoundation.org/ja/skillcred/skillcred-vim/ (英語は[こちら](https://training.linuxfoundation.org/skillcred/skillcred-vim/))
- 最終スコア： **71**（Retakeあり。ぎりぎりでした :sweat_smile:）

言わずとしれたテキストエディタですね。まぁ VSCode とかがマジョリティだとは思うのですが、Linux 環境では一定数のユーザーがいそうです（ Windows 版もあります）。たとえばここでは 2021 年時点での（おそらく日本での）統計ですが、3位に入っているようです（思ってた以上のシェアでした）。

https://note.jp/n/na350250966dc

私の場合は、（リモートにあるエッジなどに）SSHなどでログインしているときのように GUI が使えないときや、現場作業でマウスが使えない状況などで重宝しています。

emacsを使っている人からは「なんで emacs が SkillCred でないの？」みたいな疑問はあるかもしれませんが、そこは今後に期待、ということで。

#### 試験対策、学び方など
LFCS と違い、<font color=red>SkillCredには対応するトレーニングコースがありません。</font>なので、基本自分で創意工夫して受験して、ダメならまた頑張る、みたいな感じです。

といっても、OSS のよいところというか、インターネット上には情報がたくさんあって、英語など、日本語サイト以外までレンジを広げていけばより情報を得ることができますし、語学の勉強にもなります。とはいえ vim については日本語サイトも充実していて結構マニアックというか深い情報を得られることがあります（ありがたいことであります:pray: 。）

やはりこちらの書籍はバイブルといっていいでしょう。<font color=gray>（トイレとか）</font>ちょとした時間を使って少しずつ何度も繰り返し読みました。歴史なども学べるのもよいですね。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3085729/9b33d5b0-576a-031a-e981-5a9c641786cc.jpeg" width=20%>

こういうリソースを通じて「へー」って感じのテクニックがたくさん得られ、学習体験としても楽しいです。

たとえば、
```bash
line1
line2
line3
```
を、
```bash
1. line1
2. line2
3. line3
```
サクッとやれたりすると、ちょっとした快感だったりします。
ただ vim については、「日本語に弱い」という話があって、日本語入力については確かに使いづらさがなかなか解消できてません…

ちなみに有料（サブスク）ですが、ゲーム感覚で vim を遊べるサイト「[Vim Adventures](https://vim-adventures.com/)」というのがあるようですので貼り付けておきますね(攻略法を載せてる方がいらっしゃったのでご参考までに）。無料トライアルがあるみたいです。


https://qiita.com/mailstop/items/284f2a1300369b693f45



### Bash :Shell Scripting Using Bash (SC103)
- 日本語：https://training.linuxfoundation.org/ja/skillcred/bash/ (英語は[こちら](https://training.linuxfoundation.org/skillcred/bash/))
- 最終スコア： **88**（Retakeあり）

Linux 環境では bash がデフォルトのシェルになっていることが多く（Ubuntuとか）、マジョリティとなっているようです。また、ちょっとした自動化やテキスト処理やデータ加工は、Python とかで書かなくても bash のスクリプトで済ませられることも多く、こちらも身に着けておいて損はありません。より早く、より正確に。

#### 試験対策、学び方など
こちらも書籍でまとまってるものが幾つかあり、活用できそうです。私はこちらを手にとりました。もちろんインターネットサイトでは沢山の先人たちから情報が得られます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3085729/177a559a-372b-425b-8760-240ff25a45c4.png" width=20%>

vim のときと同じように、知識とテクニックのレンジが広がる感覚が楽しいですね。

また、「あれ、こんな簡単にできたんだ」、みたいな話もあります。
たとえば、「テキスト "abcde" を全部大文字にする」、みたいなタスクってどうやりますか？
実は sed とかつかってたんですが、

```
$echo "abcde" |sed -E "s/(.*)/\U\1/"
ABCDE
```
実はシェル変数でシンプルにできるんですね。しらんかった。
```bash
$TEST=abcde;echo ${TEST^^}
ABCDE
```
あと、こういう情報が入ってくると「シェル」の概念理解が進み解像度が上がってくるのもいいですね。シェルコマンドや変数周りの扱いとかもそうですしシェルごとに機能が違ってくることとか（zsh と bash での履歴管理が違うとか）。

### Source Control Management with Git (SC102)

- 日本語：https://training.linuxfoundation.org/ja/skillcred/bash/ (英語は[こちら](https://training.linuxfoundation.org/skillcred/git/))
- 最終スコア： **82**（Retakeなし）

OSS のカルチャーの源泉とも言える Linux のクリエーターである **Linus Torvalds**　が作ったもう一つの偉業とも言える git （メンテナが濱野さんという日本の方） もまた、バージョン管理のマジョリティとなっていそうです（少し古いですが以下の議論）。

https://softwareengineering.stackexchange.com/questions/136079/are-there-any-statistics-that-show-the-popularity-of-git-versus-svn

git が何なのか、という話は沢山情報があるので割愛するとして、要するにファイルの変更をすべて残せる (  "*Immutable*" ）なところが本質的かなと思います。その実装方式がまずスゴいところで、正直「よくこんなこと考えんなー」って思います。

「ソースコード」の管理、というのが中核的なユースケースですが、広く取れば「ドキュメント」もその対象になります。当然翻訳などでも重宝されてきます（私のモチベはむしろこちら）。

個人的にはこういう git のスキルって、業種や職種の境界がなくなってきているこれからの時代、すべての人に必要になってくるのかな、とか思っています（んなわきゃない、って話もあるでしょうけど）。

#### 試験対策、学び方など
**git は学び方が難しい**、と思います。gitはツールではあるのですが、使うには仕組みとその概念理解がとっても必要で、そのカベが非常に高く感じられます（少なくとも私にはそうでした）。

まずは Git オブジェクトの理解から始めるのがよいかもしれません。リソースはいろいろあるのですが、私は本家サイト [Gitの内側-Gitオブジェクト](https://git-scm.com/book/ja/v2/Gitの内側-Gitオブジェクト)で一気に理解が深まったと思います。

書籍はこちらを活用させていただきました。


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3085729/6e1a0333-01cc-aacb-4f94-2dc699306444.png" width=20%>

そして実機でのトレーニングですが、まずゲーム感覚のものがあります。入門的にはよいかもしれません（MITライセンスのOSS）。

https://ohmygit.org/

ただ、後半の設問で少し実際の git の動作と違うところがあるっぽいです。

で、より実践的なものとして、とてもよかったのがこちらです（同じくMITライセンスのOSS)。

https://gitexercises.fracz.com/ 

こちらは、実務的なタスク（2024 年 1 月時点で 23 個）をクリアしていくことになります。英語というのもあり最初苦労しますが達成感があります。ある意味これだけで十分かも知れません（楽しいですし）。

各タスクでは このサイト( gitexercises.fracz.com )の git レポジトリ と通信しながら PASSED/FAILED の判定します。世界中でこれを使っている人達がどのタスクを PASS/FAIL したかがリアルタイムで表示されます（メールアドレスやユーザ名などはダミーにできます。セキュリティ面で気になるときは FAQ などをチェックするとよいかと思います）。

ちなみに git そのものについては、基本ローカルレポジトリでの作業スキルだと思いますので、GitHub などのスキル（最近GitHubの認定資格もできたようですし）と併せて、よりホリスティックな形で身につけるとより実践的なスキルとしてアピールできるかも知れませんね。

### 試験の難易度
これは個人の感想で、試験問題にもよるとは思いますが、
```git（SC102) << vim (SC100) < bash(SC103)```
って感じでしょうか。

とにかく**bash(SC103)は結構難しい**と思います。それはなぜかというと、「<font color=red>どこで間違ったかわからない</font>」からです。結構落とし穴というかひっかけチックなところがあって、しかも英語なので私はかなりハマりました。ただ、その分とにかくふりかえって調べて試してなので、すばらしい学習効果があったと思います。


# 受験してみて
Vim/Bash/Git...ベーシックなスキル、と言ってしまえばそうなんですが、とってよかったと思います。ちょっとしたスキルではありますが自信が付きましたし、なにより Learning Experience というか 今流行りの言葉でいえば "Journey" として楽しいものでした。

SkillCred は「教材がない！」というところから始まるわけですが、やってみるとこういう学び方はとても「アリ」だと感じますね。結局はトライ アンド エラーを通じて学ぶというのが一番いいのかなと。（あと受験前後でトラブルに出くわすこともありますがそういうことも含めて課題解決のトレーニングだと割り切ってしまいましょう。）

LFCS と同じで、試験自体は「まず落ちる」と思ってRetakeを想定しておくとよいと思います。本質は実践的スキルを身につけることであり、振り返って間違ったところを思い出し、出題の意図に思いを巡らし、対策案を作り、それをRetakeでぶつける。仕事のやり方と同じですよね:wink: 。

# その他受験にあたっての留意事項
### 試験そのもの
受験でつかう実機環境（仮想マシン）については以下の点は注意しておいた方がよいでしょう。また試験内容によってはタスクに条件がついてることがありますのでよく読むことも必要かなと。
- インターネットは使えない。manとかで調べるしか無い（もち英語）
- vimrc とか bashrc など普段使っている自分用カスタマイズ設定は持ち込めない
- bash については「シェルの機能だけ」という条件がつくことがあります。つまり外部コマンドで解決してはならないということ
- 試験システムのコピペ機能が使いづらいので丁寧に

### 受験前での注意
- <font color=red>試験の開始タイミングは、試験場所の撮影から始まるので要注意</font>です。試験画面の説明を読んでいると試験時間を失うことになるので素早く、的確に！
- 環境チェックを早めにしておきましょう。受験開始ボタンのあるサイトで環境チェックが事前にできます
- 身分証明書を忘れずに（パスポート、マイナカード）
- 各試験サイトの下にある受験リソースをよく読んでおきましょう（最初は特に）
「 Candidate Handbook 」
https://docs.linuxfoundation.org/tc-docs/certification/lf-handbook1
「 SkillCreds Important Instruction 」
https://docs.linuxfoundation.org/tc-docs/certification/SkillCreds-Important-Instructions
「 SkillCred Frequently Asked Questions 」
https://docs.linuxfoundation.org/tc-docs/certification/SkillCreds-FAQ