はじめに
本記事の概要
初学者の多くがデプロイに躓く原因とその対策
プログラミング初学者の多くが躓くであろうデプロイ作業。
私も先月個人アプリを開発し、初めてデプロイ作業というものを経験しました。
結果から言うと、あまり苦戦することなくスムーズにデプロイを完了させることができました。
と言いつつも、エラーが全く出なかったわけではありません。普通に設定漏れがありました。
ただ、その設定漏れ箇所もいち早く突き止めることができたため、全体として時間はあまりかかりませんでした。
初学者の多くがデプロイで躓く理由
あくまで個人的な見解ですが…
1. GUIでの設定で漏れがある(AWSなど)
2. CLIでコマンドの打ち忘れ、スペルミスがある
3. 設定漏れ箇所を特定するのに時間がかかる
4. エラーが発生した場合に、どこが原因かが分からず、とりあえず手探りに色々弄ってしまう(あーもうめちゃくちゃだよ)
5. そもそも各設定を何のために行っているかを理解していない
5.については、各作業の意味を理解するに越したことはないですが、初学者にとっては難しい部分が多く、正直仕方ないかと思っています。
それ以外の1〜4は、初学者でもある程度対策できるところかなと思っています。
1.GUIでの設定漏れの対策
AWSなど、ブラウザ上で設定を行っていく場合は、全設定画面のスクショをノートアプリに貼るようにしていました。
WindowsであればSnippingToolを、Macであれば⌘+shift+control+4を使って範囲指定のスクショを撮っています。(全画面スクショでもいいです。)
おそらくデプロイ作業をするときは、何らかの教材や参考記事を見ながら進めていくと思うのですが、スクショをノートに貼る度にその教材と見比べながら進めていくと、漏れはかなり減ると思います。
ただ、この方法は当然時間がかかります。
が、実務においても設定のエビデンスを残すことは多いそうですし、今のうちに慣れておいた方が良いかと思います。
設定のエビデンスは後述のエラーの原因を突き止めるのにも使えますし、何よりもトラブルがあった時に自分の身を守るためにも残した方が良いと思われます。
2.CLIでコマンドの打ち忘れ、スペルミスの対策
CLI(コンソール画面など)におけるコマンドの打ち忘れについては、GUIの時と同じくコマンドの実行時のスクショをノートアプリに貼りながら、漏れがないかを逐一確認することで対策していました。
スペルミスもかなりよくあるミスだと思うのですが、こちらの対策としてそもそもコマンドは直接手打ちで入力しないようにしていました。
コマンドは基本的に教材からコピペで入力するようにし、IPアドレスやユーザー名など個人環境に依存する部分も予めノートアプリに書いておいて、それをコピペして入力するようにしていました。
これはデプロイに限らず、基本的にコマンドは事前に用意&確認をしておいて、実際に設定する際にはそれをコピペするだけにしておくと、スペルミスなどのヒューマンエラーはかなり減るかと思われます。
あと、CLIに直接手打ちで入力していると、誤ってEnterキー二回押しちゃって中途半端なコマンドを実行してしまうこともあります…。
CLIへの入力は基本的にペーストだけするとかなり安定します。
3.設定漏れ箇所を特定するのに時間がかかることへの対策
一番理想なのはエラーメッセージからエラー箇所を特定できることなのですが、初学者にとっては少し難しいかもしれません…。
そうなってくると、おそらく設定を一つ一つ見直していく作業が生じるかと思います。
この時、GUIをいちいち操作しながら該当箇所の設定を見直すのと、作業ログを見直すのとでは後者の方が要する時間は少ないです。
私も作業ログを残しながら慎重に作業していたものの、悔しいことに設定漏れがありました。
ただ、作業ログを見直すだけで漏れはすぐに見つかったので、結果的にそこまで大事には至らなかったです。
4.手探りに色々弄ってしまうことについて
これは基本的にタブーだと思います。
ある程度エラー原因に心当たりがあるのであればいいのですが、何も考えずに片っ端から弄ってしまうと余計に泥沼にハマってしまう可能性が高いです。
実務であればまずは上司に報告、スクールであればまずメンターに相談するべきかと思います。
実際にエラー後に色々設定を弄ってしまった方からヘルプを求められたことがあるのですが、どうしてこうなる前に相談してくれなかったんだ!!!と思うばかりでした…。
とはいえ、トライ&エラーを行わないと原因を切り分けが進まない場合もあります。
私の中で「とりあえず設定を変更してみる」が許されるのは設定を元に戻せることが確認できている場合のみかなと思っています。
5.そもそも各設定を何のために行っているかを理解していないことについて
初学者にとってある程度は仕方ない部分かなと思っていますが、デプロイが完了した後でも良いので、各作業は何を設定しているのかくらいは調べた方が良いです。
教材がしっかりしていれば、基本的には教材に沿って進めれば何の問題もなくデプロイを完了させることができると思いますが、GUIなんかは画面レイアウトがコロコロ変わり、教材と差異が出てしまうイメージです。(教材に載ってる設定項目が実際の画面になかったり、別の画面で設定しないといけなかったり…)
デプロイ時の各作業の意味をそれなりに理解していると、多少画面レイアウトが教材と異なっていても、上手く設定できるかと思います。
やってよかったことまとめ
- 各設定画面、コマンドの実行ログのエビデンスを残す
- コマンドはなるべく手打ちで入力しない
- 各設定の意味を調べる