1〜2週目で基礎カリキュラムを終え、3週目からは応用カリキュラムへと入りました。
そういえば新型コロナの影響であらゆるスポーツが自粛となっていますが、野球好きな自分としては今年はシーズンが開幕出来るかどうか微妙なところで、特に(どの部活もそうですが)高校野球なんかは3年生は可哀想ですよね。ちなみにホークスファンです。
【学習内容】
・検索力、読みやすいコード
・JavaScript、jQuery基礎
・Git、GitHub
・SQL
・データベース設計
・Sass、haml
まず応用カリキュラムに入るにあたって、メンターへの質問方法が変わります。
これまではわからないことがあればエラー内容をそのまま教えてもらったり、ミスしている部分を修正してもらえたのですが、これからは検索して調べ、そこから仮説を立てて実践、それでもわからなければメンターへその内容を踏まえ質問をする、という形式です。(個人的にはこれまでもそのように質問していましたが、社会人経験あれば上司や先輩に質問する時は実際そうしますよね。)
・検索力、読みやすいコード
エンジニアに必要な検索力を身につけよう、ということで検索の際のキーワード選びや目的の情報が載っているサイトの選び方、あとは期間指定で新しい記事を探す方法を学びました。この能力はどれだけ数をこなしていくか、ですね。今の時代は知識力より検索力だな、思いますし。
あとは読みやすいコード・良いコードを書く、という意識をつけることを学びました。
命名規則、レイアウト、コメント、リファクタリング。やはりアプリケーションは自分だけで作るわけでなく共同開発をするもので、さらに後で見返してもすぐに理解が出来るように、という観点からも大事な部分だと思いました。
・JavaScript、jQuery基礎
Webアプリケーションを作る上で必要不可欠な言語。基礎的な部分のみですが難しく感じました。また、これまでの学習内容よりもさらっと流れていく印象でした。これは実際に実装していく中で覚えていこうと思います。jQueryは極めたら楽しそうですね。画面が動くっていうのは、やっぱりこれやりたくてプログラミング学んでいる、みたいな部分ありますし。
・Git、GitHub
共同開発していく上で必要なツールで、これからは課題を作成しながらメンターへ都度GitHubを用いて確認してもらいます。データの動きがイメージ出来るようになるまでは扱いが難しい‥。そうです、ここから自分自身の鬼門となっていったツールです‥。
・SQL
基礎カリキュラムでもRailsでアプリを作る際はMySQLを使用していました。ではそのSQLとは?データベースとは?からその構造の操作を学習しました。多少Excelに近い印象はあったので、入りやすかったですね。
<課題:Chatspace>
これからはChatspace作成に入ります。カリキュラムはほぼヒントのみで、あとはかなりの自走力を必要とします。まずはデータベース設計です。
・データベース設計
エンティティ、リレーション、あとはNOT NULL制約などを学び、実際に必要なテーブルを設計していきます。まずは機能とその関係性を紙に書き出して、あとは制約やキーを考えつつ設計していきました。ただ、ここで難しいのは中間テーブルと呼ばれるもので、例えば、ブログであればユーザーとブログは’1対多’、しかしチャットでのユーザーとグループの関係だと’多対多’となってしまい、その際に中間テーブルが必要になってきます。
とりあえず設計したものをGitHubでプルリクエストし、メンターへ確認してもらいます。
「中間テーブルについて調べてください。」
具体的におかしい箇所の指摘ではなくこういう感じなんだな、と。カリキュラムだけでは理解出来なかったので検索してその表記方法を学び、手直し。そして再度確認してもらいます。
「マージされています。元に戻してください。」
初めてGitHubを使う自分としては「‥?」状態です。なんだかとんでもことをしてしまったような気がして、そこから試行錯誤、検索して元に戻す方法を考えて四苦八苦です。結局はメンターへ聞き元へ戻りました。(というかリセットした感じですね。)そして再度プルリクエスト。
「LGTM」
ようやくデータベース設計完了です。
・Sass、haml
ここからはフロント画面の実装です。これまではCSSとHTMLで見た目の部分を作成していましたが、ここからはSass、hamlで作成していきます。個人的にはcssよりわかりやすくて好きです。親要素・子要素が見えてるんで。これに慣れたら戻れないかもしれません。
ここでもカリキュラムだけでは解けない課題がどんどん出てきます。ここはもう検索と、Chatspaceのサンプルがあるのでそこで検証ツールを確認して作成していきました。特にアイコンと投稿フォーム作成に苦労しましたね。ここはなかなかうまくいきませんでした。
この段階であることを忘れていることにこの時は気付いていません‥。実は、フロント画面実装に必要なブランチを作成していませんでした。
作成に着手したのが木曜日の昼過ぎあたり。カリキュラム的には2日間とってあるので、目標は金曜日に完成。細かいタイプミスや、&__や.の使い方だったりで詰まる事も多く苦労しました。しかし結果的には金曜日の21時過ぎに完成。メンターの締め切りが22時。1発でOKでなかったら目標クリアは厳しいかな、と思いつつプルリクエスト‥。あれ?これで良いのか?そうです、ブランチ作成を怠ったことでまたもよくわからない事態に。とりあえずブランチを作成してプルリクエスト。
「差分がわからないのですがpushをお願いします。」
またも「‥?」です。この時点で21時半。変な汗が出ます。そこからまたも検索。
GitHubの中身を地道に日本語訳しながら四苦八苦。21時45分。
そして、今回はメンターに頼らず自分で解決!
おそらく大丈夫だろうとプルリクエスト!
「LGTM」
22時まであと少しでした。ギリギリセーフ!
冒頭の野球の話に戻りますが、個人的には1塁へのヘッドスライディングって好きではありません。高校野球では特によく見ますよね。物理学的には滑り込む角度やタイミングが完璧でないと走り抜ける方が早いですし、怪我をする可能性が非常に高いのです。
でもこの時の自分は思わずヘッドスライディングする選手の気持ちがわかりました(笑)
実際この目標は自分の設定したもので、カリキュラム的には来週の火曜日に完成すれば良いのです。別に間に合わなくても土曜日の朝一でもそんなに進捗に影響ないですし。
だけど最後はそんなこと考えずにヘッドスライディングしてしまいましたね。