JavaScript Primer - 迷わないための入門書を読んだ感想

この記事はプログラミング学習者が「JavaScript Primer - 迷わないための入門書」を読了した際の感想を綴った記事となります。

 

・良かったところ

 JavaScriptの基礎的な文法から始まりフロントエンドに関わる知識について数多く触れることができました。また、DOMの操作といったフロントエンド特有の技術にも触れられてバックエンドとは違った側面を感じることができました。後半のアプリ制作ではコーディングを通してそれまでに学んだ知識の復習ができ、知識をより深く定着させることができたと感じています。これまでユーザーの操作を起因とした操作についてもRuby on Railsでしかコードを書くことができませんでしたが、今後はJavaScriptを通してフロントエンド側としての操作ができるようになっていくのはとても楽しみです。

 

・改善して欲しいところ

 後半にユースケースとして実際にシンプルなアプリを使って学習する章がありますが、それまでの学習で学んでいないことも含まれており、それらについて説明が無いことがあると少し残念に感じました。また、先に記述したコードに対して変更を加える場合、変わった箇所が一瞥して違いが分かるほどには明示的に変更点を示されていなかったので、コードをIDEに打ち込んでもエラーが発生したりすることがありました。色付けや吹き出し、その他の記号を使うなどして表記してもらえるともっと見やすい書籍になるのではないかと感じました。

 

・学んだこと

DOMという概念について、これまでは気になってはいたもののあまり知識がありませんでしたが、この書籍を読むことで少しずつ解像度が上がり、HTML文字列との違いやDOM操作によるHTMLの操作といったフロントエンドへ少しずつ踏み込んでいくことができました。

 先に学んでいたRubyと似た文法があり、Rubyの復習にもなって忘れかけていた知識を改めて定着させることができたのは嬉しい収穫でした。

 

・難しかったところ

 書籍内の最後の方でtodoアプリを作る所ではこれまでの知識プラスαを使って制作する内容になっています。思いつく所でPrivateクラスフィールド、HTMLとDOMの違い、タグ付きテンプレート関数、登録済みのリスナー関数呼び出しの必要性などは何度も読み返したり、生成AIに質問して理解に努めましたが、まだまだ理解度が低くて今後もアプリを作りながら自分の中に落とし込んでいきたいと思っています。また、プラスαの知識が多く、調べては理解が止まっての繰り返しでしたが、繰り返し調べることで完全ではありませんが少しずつ理解できるようになっていきました。

Everyday Rails - RSpecによるRailsテスト入門を読んだ感想

  • 良かったところ

 単体テスト(モデル、コントローラー)から始まり統合テスト(システムスペック、リクエストスペック)まで網羅されているので、小さい単体テストから始めて少しずつ慣れていくことができます。いきなり大きいコードのテストから入るわけではないので、初心者にとっても着手しやすいと感じました。

 テキストの後半で簡単な機能1つをTDD(テスト駆動開発)で実装するシーンがありました。文字通り、テストコードの実装が先行となってそれに合わせてアプリケーションコードを実装していくことになります。この時、最初に書いたテストコードを実行、失敗(当然)してエラーを表示させることになるのですが、このエラーをヒントにアプリケーションコードを実装していきます。コードを書き加える度にテストを実行、エラーを表示させるというサイクルを回していくことで少しずつアプリケーションが形作られていきます。普段、アプリケーションコードから実装する時もエラーを解決しながら進めていきますが、TDDの場合はエラーがよりアプリケーション実装のヒントになっていると見受けられてとても新鮮であり、こんな実装を自分も出来るようになりたいと強く感じました。理想としてはTDD一辺倒ではなく、数ある実装方法の一つとしてTDDも習得しておきたい、という感じですね。

 書籍内容が2024年に改訂、Updateされており、より現状に近いバージョンで学ぶことができました。また、2013年に初版発行された書籍ですが、電子書籍を購入すれば半永久的に更新内容を受け取ることがでます。

  • ちょっと残念だったところ

Leanpubという海外初の書籍発行・販売サービスを使っているからなのか、偶に妙な改行があったりしたので、次回以降の改訂で修正されているとより読み易くなると感じました。

  • 学んだこと

 テスト内のコードを実行していてエラーが発生したので、誤植なのかな?と思って翻訳者の方が設置されているGithubリポジトリ内でissueとして挙げさせて頂きました。

結論としては私のタイポが原因で発生したエラーを誤った方法で解決していたことが分かりました。タイポ部分を修正してテストを実行したら該当のテストは問題無くパスできていました。とてもお恥ずかしい結果となってしまいました。次回、同じように誤植等に関する報告をする場合はより入念に確認してから投稿するように気を付けます。ですが、こういったやりとりを経験したことで一般書籍よりも製作側との距離を近く感じることができました。

  • 難しかったこと

 リクエストスペックを使ってAPIのテストコードを書く場面がありました。まだこれまでにAPI自体の実装経験が無いので、内容を掴みにくいと感じました。また、Capybaraを使ったユーザーインターフェース絡みのテストが不要とのことでシステムスペックとも区別したテストの位置付けになっていたのでイマイチ飲み込めてないという感覚があります。このあたりについてはAPIについて学習してから再度取り組みたいと考えています。

Happiness Chainへ入校して約1年半の現状

この記事はHappiness Chain Advent Calender 2024 23日目の記事です。

https://adventar.org/calendars/10341

 

前回の記事

https://tohru-f.hatenablog.com/entry/2023/12/22/202945

 

1、入校してから1年半でどう変わったか?

前回の振り返りから1年が経過しています。1年前はRubyのチェリー本を読み進めていました。その後の学習内容ではRuby on Railsを使ったアウトプット課題を2個クリアすることでCRUD操作から始まり、モデルのアソシエーション、Herokuへのデプロイ方法、AWSへ画像データのアップロードする方法などアプリケーションを実際に制作して、公開する様々な方法を学んできました。まだまだ分からないことは多いですが、以前よりもアプリケーション制作に対して解像度は上がりました。

また、前回の振り返り時はChatGPTを初めとする生成AI系のツールは殆ど使っていませんでした。変わって1年後の今はChatGPT、Perplexity、Cluade、Github Copilto、Cursorなど色々と手を出して活用しています。特にPerplexityはお気に入りでエラー解決時だけでなく、自分の理解が正しいかどうかを確かめる為に自分の言葉で入力して答え合わせようなことも度々やって学習の助けになっています。

 

2、今やっていることは?

ソフトウェアテスト技法を学び終わり、RSpecを使ったテスト手法を書籍を読みながら学んでいます。これまでは自分が作ったアプリでユーザー目線に立ってチェックを行うことはできていましたが、RailsRSpec機能を使って正確に仕様をテストしていく過程はとても新鮮です。是非使いこなせるようになって、終盤制作予定のオリジナルアプリにも組み込みたいと思っています。

 

3、来年の抱負

テスト関係の課題が終わったら、いよいよフロントエンドの課題に突入します。その後はSPA、AWS、デプロイ、オリジナルアプリの制作へと続きます。来年はオリジナルアプリの制作をやりきり、転職活動まで終わらせます。

「自分ならできる」、と信じて前進していきたいと思います。

と言いますか、絶対できるようになりたいのです。

オリジナルアプリのアイデアが全くできていないので、課題を進めていく中で解像度を上げていきたいです。単に課題をこなすだけではアイデアをまとめることは出来ないと思うので、少しずつ時間を割いて案を挙げていきたいと思います。

 

4、最近の変わったこと

自宅での学習について変化がありました。以前は自宅で集中して学習することができていたのですが、ここ最近はあまり集中できずに気が散ってしまうことが多くなったのが現状です。このままでは学習の進捗に支障をきたすので、環境を変えて自宅の外で勉強する時間を増やしてみました。幸いにも効果があって以前よりも安定して学習時間を確保できるようになりました。具体的にはコメダ珈琲のような喫茶店やファミレスなどで勉強しています。毎回のコーヒー代などの出費は出てしまいますが、環境にお金を投資していると考えたら安いものかと考えています。喫茶店やファミレスのようにBGMや周りの利用者の会話のように適度な雑音がある環境が私には合っているのかもしれないと感じています。雑音があまりにも大きすぎると集中し辛いので、最近はAirodsを購入してノイズキャンセリング機能を活用しています。動画を使ったインプット課題もあるので、コードレスであるAirpodsはとても使い勝手が良く満足しています(ちょっと高いけど!)。

 

5、解消したいこと

課題を進めていく過程やXの投稿を見て様々な書籍に興味を持ち購入しています。が、課題を少しでも進めたい一心で課題以外の書籍にはあまり手をつけられておらず、所謂積読が成立していまっています。目の前にも13冊ほど溜まっており、罪悪感が少し?芽生えています。幸いもう直ぐ年末年始の長期休暇に入るので、あまり欲張らず1冊でも良いので読了して積読書籍を減らしていきたいと思っています。さぁ、どれを読むか・・・

絶賛積読中の中で気になる書籍リスト

・リーダブルコード

・SOFT SKILL

・スタッフエンジニアの道

・エンジニアのためのドキュメントライティング

・世界一流エンジニアの思考法

・0秒思考

・伝え方が9割

・具体↔︎抽象トレーニン

現場で使えるRuby on Rails 5 速習実践ガイドを読んでみて

この記事は「現場で使えるRuby on Rails 5 速習実践ガイド」を読んだ感想を綴ったものです。

 

書籍の発行時期は2018年と少し時間が経っており、Rails 5 も現行の Rails 7 から遅れているので、書籍の内容に則ってアプリを作る時は下記の環境で制作しました。

 

Ruby: 3.2.1

Ruby on Rails: 7.0.0

PostgreSQL: 14

 

・良かったところ

書籍を読み進めることでタスク管理ツールを作りながらアプリの制作過程を学ぶことができた。最近は開発環境としてDockerを使った環境構築が多かったが、本書では直接ローカルPCにインストールしていくやり方だったので、ちょっと新鮮に感じられた。

 

・悪かったところ

悪かったところではないれど、刊行されてから時間が経っているので最新の内容ではなく現行の内容に合わないのでRails 7 で対応していた。記載された内容はRails 5を前提に書かれているのでRails 7 に合わないこともあり、エラー解決がそこそこ大変だった。

 

・学んだこと

アプリケーションの複雑性に対応するという点で

1、適切な場所にコードを書く

2、上手に共通化する

3、新しい構造を追加して役割を分担する

という記述があったが、詳細を含めて実際にコードを書いていく際に大事にしたいと思った。

1、適切な場所にコードを書く

では、モデル、コントローラー、ビュー等にそれぞれ置くべきコードを書いて、一つのファイルやメソッドにコードが集中してメンテナンス性や可読性が低いコードにならないようにとの注意点があった。特に最初は動けば良い、と考えてしまいがちなので念頭に置いて後からコードを見直した時に自分が楽できるように気をつけていきたい。

 

2、上手に共通化する

では、DRY(Don't Repeat Yourself)の精神でコーディングにあたり、共通項を見つけたら早目に共通化の作業をするようにとの考え方。

モデルであれば、ApllicationRecordや親クラス(中間)を作成してクラスを継承することで共通化。コントローラーであればモジュールを使用して同じメソッドを共通化。ビューであればパーシャルを使っての同じ内容を共通化。といった具合に共通化できれば無駄なコードを書いて冗長にならずに済むので、共通化できるところに出会ったら率先して取り組んでいきたい。

 

3、新しい構造を追加して役割を分担する

では、例えば新しい機能を作る必要がある場合、必ずしも既存のクラス内に入れることが正しいとは限らないということでした。処理やデータを整理する際には意味のまとまりで分けることが好ましく、既存のグループにあてはまらない新しい機能を作る場合は新しいクラスなどを作ることでも見やすいコードになりますよ、という考え方でした。

コーディングが進んでいくとクラスやメソッドもいくつか作られていると思うので、新たに作らずにどこかに追加する考え方で進めてしまいそうだけど、意味のまとまりで考えてみて既存のグループにあてはまるかどかという視点でとらえられるようにしていきたい。

 

・難しかったこと

Rspecを使ったテストの導入

書籍に倣ってテストコードを書いてやってみたが、理解度があまり高くないと感じている。

苦手意識の残る分野なので、今後は足を引っ張る可能性が高く、課題となりそうだ。

達人に学ぶDB設計徹底指南書

この記事は「達人に学ぶDB設計徹底指南書」を読んでみた感想を書いたものです。

 

・良かった所

本書を通してDB設計をする際の悪い例や状況によって悪手になる方法を知ることができた。

今後、DB設計をする時はこの本の内容を振り返りながら進めていきたい。

 

・改善しても良いのでは?と思ったこと

DB設計徹底指南書と銘打ってあるだけあって、DB設計を主な題材として扱ってあるのだけれど、ちょこちょこ出てくるSQL文などに関してはフォローがとても少ない。

私は「スッキリ分かるSQL入門」を先に読んでいたのである程度理解することができたけど、初心者の方が読むと説明が少ないので理解し難いところが多いのではないかと思う。

巻末に同じ著者が出している「SQL徹底指南書」を読むことで理解できるようになるとは書いてあるが。。。

また、各章ごとに問題が設けられてはいるが、もう少し平易な内容で一からDB設計をするような内容も最初の方に入れても良いのではないかと思った。

そうすれば、DB設計との距離も近づき、理解も深まるのではないだろうか。

 

・学んだこと

正確性を求めれば処理力が落ち、逆に処理力を求めれば正確性を妥協しなければならないというトレードオフの関係がDB設計にはあることが分かった。

別のところでは、バッドノウハウはさておき、状況によっては容認する選択肢もあるグレーノウハウがあり、必要な要件や処理スピードなどのパフォーマンスを考えた時に使うのもありなんだなと思う設計方法もあり、実際に使われる場面があることも本書を通して知ることができた。

 

・難しかかったこと

各章ごとで章末に設けられている問題は難しいものが多かった。

特に実装方法の是非を問うたり、発生した問題に対する対処方法を問いかける問題にはなかなか的を得た回答を出すことが難しいと感じた。

 

今後、ロードマップを通して作成していくポートフォリオなどを通して失敗をして経験をしたり、運良く事前に察知することができて本書の内容の理解が深まればこれ幸いと思いたい。

スッキリわかるSQL入門を読んでみて

この記事はスッキリわかるSQL入門を読んでみた後の感想です。

 

・良かったところ

SQLについて初学者でも分かりやすいようにテーブル操作からDB設計まで説明されていた。

また、各章と巻末に練習問題が用意されており、単純に本を読むだけでなく自分でDBを操作する機会を多くえ得ることができた。

出版社が用意したdokoQLというWebアプリが用意されており、ネットさえ繋がっていればDBをPCにインストールしなくてもDB操作の練習をすることができます。

 

・悪かったところ

改良してもらえると使いやすいと思われる点として、練習問題の解答を別冊にして本編から切り離しができるようになっていれば答え合わせがもっと楽になると思いました。

本編と一緒になっていると左右に捲っての繰り返しになりますが、どこの行を見ていたか分からなくなってしまうことが何度かありました。

 

・学んだこと

DML, DDL でDBの操作及びテーブル作成、設計方法を学ぶことでシステム開発者の視点として客先からのヒアリングを通したDB設計を擬似的に体験することができました。

 

・難しかったこと

巻末の問題は256問というなかなかのボリュームがあり、結構苦労しました。

特に最初の方の問題は本編で読んだ内容を忘れているところもあったので、思い出しながら取り組んでいたので想像以上に時間がかかりました。

また、DB設計に関して客先からのヒアリング内容と客先で使用されているExcelシートの内容をもとに設計を行う問題がありましたが、本編で読んでいたとはいえ難しかったです。

特にテーブル設計の前準備として既存の状態を非正規形のテーブルに落とし込む所は難儀でした。巻末問題で数はことなしましたが、まだまだ力不足だと感じています。

 

今後もロードマップを進めながらDBを扱うことは多々あると思うので、必要に応じてこの書籍を使いながら振り返りたいと思います。

プロを目指す人のためのRuby入門を読んでみて

この記事は「プロを目指す人のためのRuby入門」を読んだ感想記事です。

 

・良かったところ

仕事としてRubyを使うために必要な内容が盛り込まれていて、これをマスターしていれば現場に入っても担当する業務が全く分からないということは無さそうだと感じることができた。

また、同じ書籍内で一度登場した内容は再度登場した時には大抵初回登場時の場所を記載してくれているので、戻って内容を確認するのがとてもやり易くて助かった。

 

・悪かったところ

悪かった所というよりもこの本がもう少しこんな感じだったらより良かったと感じられたのではないか、と思った所。

大抵の章には例題が設けられていて各章の内容理解を容易にする為に役立っているのだが、章ごとに1題しか無いので、量的には10題も無いくらいなのだ。できればもう少し量を多くしてより多くの書籍内容を例題で扱うような構成にして欲しかった。

 

・学んだこと

各章ともに内容が濃ゆく、現状は本を読み切っただけで自分の中に落とし込めたとは言えない状態。

中でも正規表現は初めての学習で名前だけはちらほらと耳にすることはあったが、内容はといえば今まで触れることが無かった。書籍内だでけでなく、著者のブログ記事で基礎を学んだ後に書籍内容へ戻ってきて学んだわけだが、規則があり上手く使いこなせればとても強力なツールになりそうだという印象を持てた。事前準備で読んだ著者のブログ記事はとても分かり易く正規表現の理解にとても役立った。

 

・難しかったこと

書籍にも書いてあった通り、7〜11章が難しかった。当然、一回読んだだけでは理解できないし、覚えることもできないので本を読み切るまででも何度も同じ所を読み返す必要があった。クラスの章などで変数やブロックパラメータを辿っていろんな所へ飛んでいくと理解し辛い所が多々あったので、時間をかけて追いかけてから何とか理解するように努めた。

今後もロードマップを進める中で出会うことになると思うので、折に触れて復習するようにしたい。