プログラミング初心者の壁 (First 31 Days)
どうも、こちらはAmetaです!
先月(2020/11/09)にプログラミング学習を開始してからちょうど31日目。
今日まで一進一退を繰り返して、徐々にプログラミングというものが分かってきました。
そこで今回の記事ではこれまでの学習内容を振り返ると同時に、この一ヶ月から得た学びを記しておきたいと思います。
学習内容
直近の一ヶ月を使って以下の順番で学習を進めました。
- Terminal
- HTML & CSS
- Ruby (on Rails)
- MVC (概念)
- Javascript
- AWS
Terminal
プログラミング学習をスタートさせるに合わせて、Macbook Proの13inchを購入しました!
ターミナルを使っての環境構築にほぼ丸一日かかったことがまず最初の衝撃でした。
ただ環境構築が終わった後は、
- ディレクトリに関するコマンド(
cd
,pwd
,ls
) - アプリケーションに関するコマンド(
rails g
,rails db
,rails s
)
のように使用するコマンドが固まってきたので、だいぶ自然に使えるようになりました。
HTML & CSS
HTMLとCSSの学習は”拡張子とは何か?”という質問から始まったことを覚えています。
HTMLとCSSの文法や構造、それぞれで使用することのできる基礎的なプロパティなどを学習しました。
- Flexbox
- Positionプロパティ
学習した知識を使って、2つほどページの実装。
Ruby (on Rails)
HTML&CSSにある程度慣れてきた頃、Rubyの基礎文法の学習に入りました。
ここで始めて、元々イメージしていたプログラミングというモノに触れた気がしました。
その後、Ruby on Railsを導入し、アプリケーションの作成に入ります。
MVC (概念)
MVC(Model-View-Controller)はWebアプリケーションが動く仕組みを説明するためのコンセプトの事です。この考え方を理解する事で、普段利用されているWebサービスがどのように作動しているのか大まかなイメージがつきました。
しかし、このコンセプトを自分でアプリケーションを実装する際に意識することが難しかったので初めの方は教材で手順の用意されたアプリケーションをいくつか作っていく中で理解が深まりました。
(エラー処理をするときにもこのコンセプトの理解が大切。)
Javascript
非同期通信を実現するための言語でフロントエンドで本領発揮だ!というのが第一印象。
ただ、Node.jsを用いればサーバーサイドでも動かすことができるし処理も早いということがわかってきました。これまではクライアントサイドの実装でしか使用したことのない言語なので、近いうちにNode.jsの学習に挑みたいと思います。
AWS
AWSのS3(Simple Storage Service)とEC2(Elastic Compute Cloud)を学習し、実際に使ってみました。この分野で始めて仮想サーバーをラウンチしてみて、Amazonってこんなこともやってたのか!と感心してしまいました。
その他
そのほかにも、
- オブジェクト指向やコンポーネント指向。
- HTTPメソッドやIPアドレス。
- 環境変数やBASIC認証。etc.
なんか聞いたことあるけど意味は知らないフレーズを覚えて行った一ヶ月でした。
Ruby on Railsでつかうメソッドやgemも大雑把に網羅することができたはず。。
成果物(偽)
現在使用している教材にしたがって学習を進めてきた結果、
この一ヶ月間で18個ほどのアプリケーションを作成していました。
- 画像投稿アプリ
- 非同期通信で投稿したメモを即表示するアプリ
- 自分の作品を共有するアプリ
- フリマアプリ etc.
ほとんどが、ある特定の機能を実装するためのプロセスを確認するために作成したアプリケーションでした。それでも、実際にコードを書いて正常に動かすのは簡単ではありませんでした。
頭がプログラミングに慣れてくれない
カリキュラムにそって学習を進めている間はまだ脳の疲労は感じなかったのですが、
実際にコードを書いてみて動作がうまくいかない時には
"頭のメモリが不足しています"というエラーメッセージが脳裏に浮かびました。
この時の脳のフリーズ感は過去一番でした。
ただこのメモリ不足を体感していたのは1週間ほどで、それ以降は同レベルの負担を頭に感じなくなりました。
スゴいね 人体
気づき
英語だ英語
プログラミング学習には英語を使いますね。特にエラーの解決法を探すときは英語のページにいく確率が高いと思いました。
技術的な専門の単語はともかく、どう説明しているのかがわかる程度のボキャブラリーと文法は必要。
プログラミングの面白さ
自分が書いたコードで思い描いた動作を再現できた時の喜びを知りました。
人間とジェスチャーゲームをしている感覚に似た楽しさ。
相手にお題が伝わりやすいように体で表現するんですけどなかなかわかってもらえないんですよね。ジェスチャーゲームと違う点は回答する側が100%正義だということ。こちら側がわかってもらえるように向こうに合わせるしかない。
ただそのジェスチャーがスッと回答者に伝わったときはめちゃ嬉しい。
インプット << アウトプット
これが一番大切なTIPだと思いました。
最初の内は、どうしても知識をまず頭に入れることにフォーカスしてしまいましたが、覚えたことは実際に使ってみる。その時はよくわからなくても実際に何度かアウトプットを繰り返すことで理解が深まることもあるし記憶に残りやすい。
とにかく手を動かします。
Summary Of The Month (SOTM)
こんな感じで、プログラマーとしての最初の一ヶ月が終わりました。
現在使っている教材は一通り見ることができたので、次の一ヶ月は自作でアプリケーションを開発していきたいと思います!!