こんにちは。
おかげさまで先日めでたく駆け出しエンジニアとしてのスタートを切りました。
就職するまでの経緯については
【実体験をもとに】30歳未経験から独学4ヶ月でバックエンドエンジニアとしてWeb系自社開発企業へ転職するまでのロードマップ
こちらに記載してます。
さてさてそんな私が出勤初日から「勉強しておいてよかった〜」と思ったスキルがありまして、それがDockerです。
内容をYouTube動画でも投稿してるので是非見ください
これから駆け出しプログラマーとしての転職を目指す方々は是非学んでおいたほうが良いと感じたので、私自身の振り返りも含め紹介します。
併せて、「これちゃんと勉強しておけばよかった…」と後悔している技術も紹介します。
#なぜDcokerを勉強しておいて良かったか
###スタートで躓かなかった
入社初日の挨拶等が終わり、帰宅したあと会社からGitHubの招待がきました。
会社にジョインして最初にやることは(挨拶とか説明を抜きにすると)開発環境の構築というのはきっとどの企業でも同じでしょう。
昨今のモダンなWeb企業ではDockerでの環境構築が主流なので、例に漏れず招待されたGitHubのREAD ME
にもDockerでの構築を行う旨が記載されていました。
入社して最初に打ったコマンドがGit clone
、
そして次がdocker-compose build
です
ここでもし私がDockerについて学んでなければ、開発環境の構築をするための勉強からスタートすることになったでしょう。
「仕事をスタートすることができない」という状況は評価者からのイメージも良くないですし、自分自身のメンタルにもかなりのダメージだと思います(汗)
###どんな勉強をしておけばいいのか
Dockerはただ構築に使うだけなら簡単なものです。
コマンドを打つだけですからね。
しかしDockerの概念や構造をそれなりに学んでおかないと後々に困ることがあります。
いざエラーが発生した時にlogの確認ができなかったり。
DBの中身を確認したくてもどのコンテナにどう入れば良いか分からなかったり。
仕事をする上で必ず触れるポイントなので、入社前に学習しましょう。
とりあえず入社前は以下のような内容を学んでおけ良いのではないでしょうか?
- コンテナの概念
- Dockerfileの内容
- docker-compose.ymlの内容
- docker-composeコマンドの使い方
(build.up.down.runをとりあえず) - dockerコンテナへの入り方(
docker exec -i -t コンテナID bash
)
ハードルが高く感じがちですが、ネット上に情報がたくさん落ちてますので参考にすれば初学者でもちゃんと扱えるようになります。
というか、Dockerfileやdocker-compose.ymlはテンプレがたくさん落ちてるのでとにかく構築してポートフォリオに導入してみるのが早道でしょう。
###コンテナの概念については文章で見るより説明を受けたほうが早い。
ネット上には図を使って説明している記事など多くあり情報ソースに事欠かないDockerですが、なかでもYoutubeで解説動画を出しているベテランエンジニアさんがいます。
私がヘビーローテションしていたオススメのYouTuberさんを紹介します。
くろかわこうへい さんの「目指せコンテナマスター!」シリーズ
[今から追いつくDocker講座!AWS ECSとFargateで目指せコンテナマスター!〜シリーズ1回目〜]
(https://www.youtube.com/watch?v=DS5HBTMG1RI&list=PLtpYHR4V8Mg-jbuk4yoXhXwJtreodnvzg)
とても丁寧に説明してくださっているので、わざわざ他で調べる必要がないくらいです(๑❛౪❛๑)
まずは前半のコンテナについての概要をサックリと理解すると良いのではないでしょうか。
他にもAWSについての解説を出していらっしゃるので必見です。
個人的にはくろかわさんの喋り方がクセになるんですよね〜w
##SQL
ついでにSQLも勉強しておいてよかったな〜と思ったので紹介します。
入社してたった数日間ですが、一日中DBを触ってた日もありました。
難しいことができる必要は無いですが、基本的な動作は行えるようにしておいて良かったと思います。
基本的な動作って何?って言うと、以下のサイトに書いてある内容くらいは把握していれば良いのではないでしょうか。
https://yukun.info/category/sql/
SQLクエリを打って検索や追加を行えるって感じですね。
※ちなみに私はmigrationエラーするので、入社時もschema_migrationsを見に行ったりダブってるmigrationファイルをinsertしたりしてました。
#勉強しておけば良かったと後悔したこと
##rails consoleの使い方
未経験エンジニアがポートフォリオを作る過程で**デバッグ作業をしっかり行なう。**ということは少ないのではないでしょうか?
既存の商材にもバグは必ず発生しますし、その際には他人が作ったコードが実際にどう動作しているのか知らなければ直せません。
私はポートフォリオ作成においてrails console
をしっかりと使用していなかったので、メソッドの動作確認がスムーズにできませんでした。
##リファクタリング
環境構築が終わったら、既存のソースコードの内容を把握する作業が必要だと思います。
恥ずかしながら僕はまともにリファクタリングの勉強をしていなかったので、まさにちんぷんかんぷんでした…
scopeで式をメソッドとして定義したりviewを2ファイルに分割するなど、ちゃんと勉強や活用をしておかないとコードの把握に時間がかかりメンタルが・・・。
##mailer
「開発をしていれば100%mailerを使う機会がある。」ってなんで思いつかなかったんだろう…。
と後悔する限りです。
未経験者のポートフォリオにはユーザー登録時にメールが届くくらいの機能は付けておくべきでしょう!
#終わり
入社して1週間になりますが、正直「何もできなかった・・・」というのが感想です。
転職前は転職を有利にするスキルを身につけることに頭がいっぱいでしたが、実践に役立つスキルに対しアンテナを張って学ぶことも未経験エンジニアには大切なことだなと思いました。