エルデンリングから学んだ、プログラミング学習に必要な７つのこと

## 導きのはじまり

おぉ、貴方は…褪せ人ですね。
そして、エルデンリングを求め、この狭間の地にやってきた。

**この先、プログラミング学習の攻略に繋がる貴重なアイテム** が、**7つ**あるぞ

すごいなにかだと思うだろう？

以下の記事を、ご照覧あれい！

## 1. 強い敵はスルーして先に進む

![fantasy_dullahan.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/c3724571-a7b2-0097-b1b4-6c799c37513d.png)

- プログラミングを勉強していると、**序盤にツリーガードのような強敵が現れる**ことがありますが、 **スルーして先に進む**ことが大事です。
  - 序盤から強敵と戦うと、ボコボコにされて**心が折れます**
  - `#include <stdio.h>`は、こういうもんだと「おまじない」として**スルーする。**
  - `var body: some View`や、`fn longest<'a>`など、 見慣れない表記を見ても、いったん気にしない。**前に進む。**
- 強敵は、力を付けて**レベルが上ってから再戦**しましょう。
- 目の前に現れたすべての敵と戦う必要はありません。
  - ボスまでのルートを開通するために、モブ敵は相手にしないで馬で駆け抜けたりすることも有効です。
- マルギットのような **「正規ルートに立ちふさがる強敵」**(C言語のポインタやSwiftのプロトコル、Rustの所有権等)の場合、**いったん戻って周辺を探索**しながら、自分のレベルを上げて、力を蓄えましょう。
- 初見プレイ時は、未開の土地を進むことに不安に感じるとともに、**目標に一歩近づいてる感覚を楽しんで**みて下さい。
- 周回プレイ時は、序盤からツリーガードに挑んでみる等、自分でプレイを縛って難易度を調整してみてください。

## 2. 自分のビルドタイプを決める

![figure_rpg_characters.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/38d80cae-35e0-cb33-658b-003bbe058881.png)

- 早いうちに、**自分が目指しているエンジニアのタイプは何なのか**、決めましょう
  - 近接でブンブン大剣を振り回す **脳筋(フロントエンド)** なのか
  - 後方から強力な魔法で敵を蹂躙する **純魔(バックエンド)** なのか
  - 魔力で武器をエンチャントさせる **魔法剣士(インフラ)** を目指すのか
  - 信仰心が試される **アンバサ(モバイル)** なのか
  - **すべてのパラメータに均一にふる(フルスタック)** は、器用貧乏になりがちです。
- 決まったら自分のビルドタイプに合った分野周辺を攻めましょう
  - その分野を**攻略したら得られるものと自分の特性が合っている**ことが望ましいです。
  - 純魔なのに大剣を手に入れても宝の持ち腐れになってしまいます。(コレクションが目的なら、それはそれで良いです)
- 途中でビルドタイプを変えることは可能ですが、ステ振り直しはできないようです。
  - ステ振り直しができないので、ゲームが進めば進むほど、ビルドタイプ変更はやりにくくなります。
  - 精神的な意味での生まれ直しは、雫の幼生が手に入れば(執着を捨てれば)できるかもしれません。

## 3. まずはマップを手に入れることを優先する

![map_takara_chizu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/e7a705e8-c1ae-438a-f487-e4a34232490d.png)

- **プログラミング学習は、オープンワールドです。**
  - ゲームが始まると、だだっ広い荒野に放り出されます。
  - 「何してええか、わからんくてやめた」という声も多く聞こえてきます。
  - クエストマーカーが表示されないので、今、自分のメインクエスト/サブクエストは何なのかということをアタマで整理することが必要です。
    - 例)メインクエスト：仕事でReactを使うことになったから、使えるようになりたい。
    - 例)サブクエスト：JavaScript/CSS/HTMLの基礎知識も必要。
  - 自分の好奇心や目的にしたがって、探索したい場所を決めましょう。
  - どこに進んでもよいですし、自分には合わないと感じたのであれば、別の道を選択してもよいです。
- 学びたい目的地が決まったら、**まずは公式ドキュメントや入門書を手に入れて**、ざっと目を通し、その地方の**周辺の全体像を把握**しましょう
- 祝福の導き(ドキュメントや本の目次)に従って、**とりあえず正規ルートを進んでみる**のがよいです。
- 敵が強いなと感じたら、少し戻って周辺を探索したり、まったく別の分野の探索に出かけたりすると、思わぬお宝を発見できることもあるかもしれません。

## 4. 1対1の状況を作る

![figure_fight_war_1vs1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/cbb9f3db-635b-9a41-d2c4-4ed2e64c11d0.png)

- **複数の敵(わからないこと)に囲まれると、まず勝てません。**
- ロックオン機能を使って、一つの敵に集中しましょう。
- 複数の敵(わからないこと)は一匹ずつ誘い出して、ひとつひとつちゃんと理解し、**個別撃破**を目指しましょう。
- 近接で勝てないなら離れた場所から遠距離攻撃を試すなど、敵の動きのパターンをよく見て試行錯誤しましょう。
- 先人たちが残したメッセージや動画を参考に、やり方の真似をして、攻略の糸口を掴みましょう。
- 個別撃破が難しい場合は、遺灰や白サインを使って、**誰かに助けを求めましょう。** 

## 5. 実戦で、死にながら身体で覚える

![kids_gokko_asobi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/18991428-ccc3-47f7-4707-9d92878dceb9.png)

- とにかく手を動かして、コードを書いてプログラムを動かしてみましょう。
- **プログラミング学習は、初見殺しが満載**です。
- 逆に言えば、 **過去にそのパターンに出会ったことがあるかどうかで勝敗が決する**場合もあります。
- エラーに遭遇すると、敵の攻撃パターンが強烈に記憶に刻み込まれます。**だから次は大丈夫。** この先、右に注意しろ。
- **何度もコードを書いて、敵の攻撃(エラー)パターンを身体に染み込ませましょう。**
- コードを書いてエラーが発生したら儲けものです。**そのエラーがあなたを強くしてくれます。**

## 6. 装備品の強化をしたほうが効果的

![fantasy_ryuukishi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/647bec84-f564-59dc-aea8-f6df69320954.png)

- **自分の能力値を上げるよりも、武器やタリスマン、遺灰、戦灰などの装備品を強化するほうが、火力を上げるのに効果的**な場合があります。
  - PCのスペックをあげたり、
  - 広い机やモニタ、座り心地のよい椅子、打ちやすいキーボードを用意したり、
  - エディタや環境設定を見直してみたり
  - 最新のフレームワークやライブラリやツールを導入したり、
  - AWSの強力なインスタンスを札束で殴ったり、
  - 専門書を買って知識を仕入れたり
  - 勉強会やコミュニティに参加して、最新の技術トレンドや人脈を広げたり、
  - 英会話スクールに通ったり、資格を取得したり、
  - イケてる会社に転職して、大ルーンの能力値ブーストを手に入れたり、
- 装備品を強化することで、**戦闘が一気に楽になる** こともあります。
- ただし、武器性能に頼りすぎも禁物。その武器が **アップデートで弱体化** した場合、苦しみを生むでしょう。

## 7. ルーンのロストを恐れるな

![yuusya_game.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/0115fbf9-024e-17a0-3929-bc968f2031c7.png)

- **現実では、本当に死なない限り、経験値はロストしません。**
- 恐れずに戦いまくったほうが得です。
- ただし、戦いで負け続けているのなら、 **脳死で経験値を積んでも永遠に足止めされてしまいます。**
  - 「どうしてエラーが起きたのか？」
  - 「どのコードが良くないか？」
  - 「装備やビルド特性が合っていないのではないか？」
  - 「メンタルが良くない。気持ちで負けてなかったか？」
    - などを考えて、 **失敗を次に生かす**  ことが大事です。
- 戦いに負けて無様な姿をさらしても、いいじゃないですか。
  - **コードを書くということは、失敗することの連続です。**
  - いちいち失敗するのを恐れていては、何も書けなくなります。
  - コードを書く上で大切なのは「正解」を見つけることではありません。（絶対的な正解などないのだから）
  - 試行錯誤を繰り返し、**失敗経験から素早く学べる柔軟性と粘り強さ**を鍛えることが大事です。
  - 良いコードとは、課題を解決したり目的を達成するコードであることを忘れないで下さい。
  - ぼくはチャレンジしている方を尊敬します。

## エルデの王となれ

最後までお読みいただき、おそらく感謝。

きっと、導きは指し示すと思いますよ。

だが、褪せ人は、エルデンリングに勤しむ時間だ。

この先、エルデの世界に、ジャンプが有効だ。

エルデリングに見えよ。エルデの王になるがよい!

フロム万歳！

### 【おまけ】 春雨Cast(ポッドキャスト)について

当記事「エルデンリングから学んだ、プログラミング学習に必要な７つのこと」
について、春雨Cast(ポッドキャスト)で話しました。
英語学習など他の分野の勉強にも当てはまる、何かを学ぶのに大事なことについて説明しています。
よろしければ合わせて、お聴きください。

https://harusamecast.com/episode/13