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

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

Happiness Chainへ入校して約6ヶ月の現状

この記事はHappiness Chain Advent Calender 2023 22日目の記事です。

adventar.org

 

1、入校してから6ヶ月でどう変わったか?

実際の開発で使われているツール(後述)やシステムの成り立ちなどを書籍や動画講座を通して学んだお陰でシステム開発がより身近なものになってきました。

また質問やSlackなどを通してCTOや同じHC生の方と交流し、自分が調べた中では知らなかったエラーへの取り組み方や課題への取り組み方を知ることができました。

今後はコードを書く機会が増えていくので、質問やコードレビューなどを通して新しい知識やスキルを身につけていきたいです。

現在の勉強時間:455時間19分

 

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

現在、ロードマップではRubyに取り組んでいる所です。

ロードマップではProgateで一通りのプログラミング言語に触れるようになっていて、その後はVisual studio code, Vim, Linux, Git, Github, HTML, CSS, Dockerという流れでしばらくはプログラミング言語から遠ざかり、開発で必要なツールやシステムの理解といったことに時間を費やしていました。

最近になってやっとRubyに入ったのでプログラミングらしくなってきています。今はチェリー本(Rubyの参考書)を読み進めており、これが終わればRubyで実際にプログラムを組んでいく課題に取り組みます。丁度良い時に長期休暇がありますので、がっつり取り組んで課題を沢山こなしていく予定です。

 

3、来年の抱負

先ず第一にロードマップ完走を目標に取り組んでいきます。

最終的に取り組むことになる自分で考えたWebアプリを作るのも楽しみです。

実際に作るアプリについては具体的なアイデアが無いため、ロードマップをこなしながらどんなものが作れるようになるのかを習得しながら、自分が作ってみたいと思うようなものを少しずつ形作っていきたいです。

また、ロードマップへ取り組む中でアプリ開発の楽しさや厳しさ等を経験したいです。

その過程で転職してアプリ開発をやっていくならば、どんな業務がやりたいのかも考えながら取り組んでいきます。

最後に体調面などでしんどいと感じることがあったら、無理せず休んで体調を整えてから再開するようにしたいと思います。

 

4、ちょっとした?変化

PCを買い替えました。

というのも、HCの課題を進めていく中でスペック不足を強く感じるようになりました。

買い替え前に使っていたPCのスペックは下記の通り。

TOSHIBA dynabook

CPU:Intel Core i5-8250U

メモリ:8 GB

OC:Windows 11

 

Dockerの課題に取り組んでいる時、イメージの構築やコンテナの起動でかなりの時間が掛かっていることが気になり始めました(長い時は10分超え)。

HCの課題に取り組んでいる時はDocker Desktop, Slack, Discord, Visual Studio Code, Firefoxといったアプリを起動していました。

特にWebブラウザFirefoxでは調べ物をしたり、HCのロードマップをに関する資料を開いたりするのでタブの数がかなりの数に達していて容量を食っていたと思います。

Dockerのイメージ構築やコンテナ起動をし始めるとPCが「キュィーン」という音を上げて頑張り出すのですが、割と大きな音とは裏腹に進み具合は中々に遅い...

他のHC生徒さんに聞くと課題が進むにつれて当然PCのスペックを食う容量も大きくなるとのこと。

遅かれ早かれMacへの乗り換えが必要と思っていたので、この際思い切ってPCスペック向上も兼ねてPCを買い替えることにしました。

購入した新しいPCのスペックは下記の通りです。

Mac Book Air 2023

CPU:M2チップ

メモリ:16GB

OS:sonoma 14.0

 

メモリが2倍になったこともあり、動きがかなり快適になりました。

初めてのMacなので最初は操作に慣れず、ネットでググって確認することが多かったですが、今は作業するには問題無い所までは辿り着けました。

細かい所は追々調整しながら対応していきたいと思います。

Macでのオススメ設定などあったら是非教えて欲しいです!

Macを使い始めて分かったちょっと残念なところは外部ディスプレイが1台までしか接続できないこと。

MチップのMacbookでは従来のIntel Macとは異なるハードウェアアーキテクチャを持っていることが原因のようです。

これを知らずにケーブルで繋げばいけるっしょ?!と思っていたのが甘かったのです。

DisplayLinkという技術を使えば繋ぐことができるようなので後日調べて繋げられるようにしたいと思います(また出費が嵩む...)。

ディスプレイの件はさておき、スペックとしては十分に今後の課題にも対応できる基準へ持って行けたと思いますので、今後もロードマップを先に進めて新しい知識や技術を習得していきたいと思います。

 

5、モチベーション上げるために読んだ書籍の紹介

書籍名:だからあなたも生きぬいて

著者名:大平光代

概略:中学生時代にイジメに遭い、非行へ走った著者は16歳で極道の妻になった。

   6年間、極道の世界に生きるも恩師に会い、立ち直り、最終的には弁護士になる。

感想:作品の中で著者の考え方は最初は他責思考になっていましたが、恩師と出会い励ましを   受ける中で少しずつ自責思考に切り替えていけるようになり、その過程が自分の中では   琴線に触れるところがあり印象に残っています。

 

Happiness Chainへ入校した理由とその後

プログラミングスクールであるHappiness Chainに入校して約1ヵ月が経ちました。

happiness-chain.com

入校までの経緯や入校後の状況などを書いてみたいと思います。

 

1,簡単な自己紹介

プログラミングの実務経験は無し

独学でExcelのマクロやPythonを使って業務の自動化を目的とした勉強をしたことがある程度です。

 

2,現状

他業種で事務職をしています。

 

3,将来への不安

今の職場では進捗などを管理する仕事をしていますが、ルーティーンワークが多くて

業務内容さえ覚えてしまえば仕事をするのには特に困らないといった状況です。

そして、業務内容は会社独自のものが多く、どこでも通用するようなスキルはあまり身に付かないというのが現状です。

また、進捗管理の仕事なので、私自身が何らかの価値を生み出すことはできず、社内外の様々な方たちへ依頼をすることで仕事を進めるというのが主な役割です。

このまま今の職場に居ても新しいスキルを得られる機会もなく、仮に業績不振により解雇といった状況になると再就職先を探すのにかなりの苦労が伴うと予想されます。

会社としては利益を上げることが第一優先であり、社員一人一人のスキル管理はするけども社員が望むスキル全てをフォローするような必要は全くなく、余計な費用が嵩むだけです。

という訳で、会社に対してはあまり期待できないというのが現状。

これは会社だけが悪いというつもりはなく、今勤めている会社を選んだのは紛れもない自分の選択なので、自分にも非があるというのが私の考えです。

 

 

4,プログラミングとの出会い

仕事をやっていてもスキルを身に着けられないと考えていた時に出会ったのがプログラミングでした。

担当している業務の効率化・自動化を目的としてプログラムを組んでみたりしました。

1人で作るので、大掛かりなものは作ることはできませんが、実装したい機能が実現できた時には達成感を感じたものです。

 

 

5,Happiness Chainとの出会い

自分で自動化の簡単なプログラムを組むことはできましたが、サービスを提供するような大掛かりなプログラムとなると話は別です。

ただ、巷ではプログラミングスクールの印象がすこぶる悪く、インターネットで検索しつつも金額と天秤にかけて利用を決めるまでには至っていませんでした。

そんな折、ネットサーフィンをしていると偶然Happiness Chainを見つけました。

 

6,HCに入会しようと決めた理由は下記の通り

・会費が毎月約30,000円 (Railsコース、2023年6月時点)のみ

・上記の理由からやってみて合わなければ辞めれば良いかと思えた

・明確な勉強指針(ロードマップ)が掲載してあった

・メンターに実際に採用活動を担当している方々が居る

・スキル等の仕上がり次第でHCが提携している企業へ推薦してもらえる

・疑問点を質問することができる

・コードレビューを受けられる

 ※機能を実装できてもコードが正しいか、等の判断が自分ではできない

 

7,入校して1ヵ月の現状

入って良かったと思う点

・Slackを通して、他の生徒さん達の活動内容を見ることができる

 また、Slackのコメントやリアクションを通してコミュニケーションを取ることで

 お互いに刺激しあうことができる。

・毎月行われているMeet Up(オンライン、オフライン)で他の生徒さん達と直接話をし   

 てモチベーションを高めることができる

・ロードマップがあるので、勉強する内容には不安を抱かずにひたすら進められる

 

※コードレビューを受けられる所までは現時点で進んでいないので、この点についてはロードマップがそこまで届いたらまた記事を書いてみようと思います。

 

以上の内容が私がHappiness Chainへ入校した理由とその後の話です。

最後まで見て頂き有難うございました。