上野の人生奮闘生活‼︎

日々のプログラミング学習や日常生活について語ります

Ruby on Rails5速習実践ガイドを読了した感想です

良かったところ

Railsの内容が初めての方から現場で使ってる方まで幅広く知識が網羅されていました!

曖昧だったMVCアーキテクチャやルーティング、ログイン認証機能などはっきり理解できた気がします。

今後もそんなこと書いてあったなとか、移動時間で暇だなと思ったら読み返したいと思います!!

少し残念だったところ

とにかく古いですが、技術は常にアップデートしていくので仕方ないと思います。

Rails7のHotwireがすごくて簡単に非同期処理ができて感動しました!(SPA風なアプリも作れそうです)

Ruby on Rails5速習実践ガイドの作者さん達がRails7向けに作ってくださったら即買いします。

学んだこと

RSpecシステムテスト

初期設定からインストールまで全て書いてありました。

RSpec&Capybara&FactoryBotを駆使して行う。

あとは基本形やテスト用のDBとテストデータの入れ方などなど。。。

あとは書き方だけでなくどのようにしたらスッキリ書けるかなどいかに繰り返し同じことを書かない

方法なども学びました!

DRY(Don’t Repeat Yourself)という考え方テストコードにもありました!!

カスタムヘルパーメソッド

ヘルパーメソッドはビューで使えるメソッドの事でこれを上手く活用すると、

コードの可読性と再利用性を向上させることができます!

後は短く書くことがコツです。

機能を追加してみようの章

個人的に一番面白かった章です。

登録や編集の実行前に確認画面をはさむ方法などありましたが普通に遷移するだけじゃなぁと思ったので

せっかくなのでHotwireを使用し同じ画面で下に確認画面を表示させることに成功しました!

ransackを使った検索機能

gemは凄い。

簡単に検索フォームができてしまいました。

オリジナルプロダクトで検索機能が欲しかったため

ransackの存在はここで初めて知れて良かったです!

_cont_gteqなどの検索マッチャーがあり次使う時はGitHubを見てもっと詳しく調べて使いこなしたいです。

並び替え機能(ソート機能)

こちらも簡単に古い順新しい順と自由自在に並び替えできます。

注意!: こちらの機能つける前まで保存してあるレコードはなぜか上手く並び替えできませんでした。

特に大事でもないデータでしたらbin/rails db:resetしてbin/rails db:migrateでDBの中身をスッキリさせて

bin/rails db:seedでまた新しくテストデータを入れたら上手く並び替えするようになりました!

因みにrailsコマンドを打つ前のbinも初めてこの本で知りました!

注意点としてプロジェクトをカレントディレクトリにすることです!処理速度が速くなります!

CSV形式のファイルのインポート/エクスポート

これも個人的にこんなふうにやるんだぁ〜的な感じで楽しみながらコード書いてました。

使い道は私がアホなのかわかりませんが、恐らく便利だと思いました!

ここら辺の勉強もせなあかんですね。。。😇

後は、非同期処理や定期実行を行うでredisの使い方も書いてありました。

今後使うことになりそうでしたらまた復習!

画像ファイルを添付するActive Storageや複数人でrailsアプリを開発のノウハウなど

bin/rails db:migrateしたらbin/rails db:migrate:redoでちゃんとバージョンを下げれるか(ロールバックできるか)

確認する癖をつけたいなと思いました!

難しかったこと

最後の章の10章から全くわからなくなってしまいました。

おそらく現場レベルだと思います!

また絶対に読み返します📖

ここまで見てくださった方ありがとうございました!!

達人に学ぶDB設計を読了した感想

達人に学ぶDB設計を読了した感想をまとめてみました。

良かったところ

この本は題名が示すようにDB設計についての詳細な情報が豊富であることです!

これらの情報は現場でも十分に通用するものだと思います!

苦手意識のあったDB設計が少しだけ好きになりました。

悪かったところ(もしあれば)

特に悪かった点は見つからなかったものの、内容が高度であるため、

プロを目指す人々向けの本だと感じました。(悪いところではないですね🤔)

これからも学習頑張ります!

学んだこと

特に理論設計と正規化についてはだいぶわかってきました!

ACID特性の一部、特に永続性(Durability)やバックアップについて詳しく説明されていました。

さらに、本書は正しい方法だけでなく、アンチパターンや理論設計のバットノウハウ、

そして適切な使用によって有効に活用できるが一つ間違えると副作用がおきる可能性のある

グレーノウハウについても書いてあり興味深かったです!!

難しかったこと

全体的に難しかったです。

実際に現場で働いている人達が読むレベルの本だと思います。

正直読んだだけですとできるようになる気がしませんでした。

特に9章は何を言っているのか全く理解できませんでした。

プロを目指すRuby入門と同じで頭の索引として読みました。

今後もまた読み返します!!

まとめ

スッキリSQLより難しかったです。

とりあえずこういうことが出来てこういう言葉があるんだなぐらいで読み進めました。

全部を一気に理解しようとすると間違いなく挫折すると思います。

一回は気楽に読んでそして再度実際に使う時に理解を深める感じで本を読むと

最後まで読み切れる事に気づきました!!

ご清聴ありがとうございました!!

スッキリわかるSQL入門を読了した感想

スッキリわかるSQL入門を読了した感想

今回は私がスッキリわかるSQL入門を読ませていただいた感想を書いていこうと思います。

良かった所

スッキリわかるSQL入門は一冊の本を通して、SQLの基礎から応用までを網羅的に学ぶことができる素晴らしい教材でした。

特に、図解での分かりやすい解説と登場人物がいてイメージがしやすい部分です。

全範囲のSQLについて学ぶことができたため、今後わからなくなった際には頭の索引として調べたいと思います!

悪かったところ

全体的に高評価で、特に悪いと感じた部分はありませんでした。

本、特有の文字だけがズラーっとある感じではなく見やすかったです。

学んだところ

この本を通じて、SQLの命令の分類(DML, TCL, DDL, DCL)

インデックスの概念、トランザクションといったデータベースをより安全に使うための要点を学びました。

特に、ACID特性(原子性, 一貫性, 分離性, 永続性)という、

データベースの信頼性を保つための四つの重要な特性について理解しました!!

ただ単にDBにデータを保存するだけではダメですと思いました!

また、エンジニアの役割として形態変換の技術についても学びました。

それは、正規化による現実世界の冗長な情報を管理に適する複数の表の形(エンティティ)に変換すること、

そして、結合によりIT世界の断片的な情報を利用に適する結合(join)した形に変換することです。

ITの世界では整合性を保ちやすい形に管理し

人間の世界では人が見てわかりやすい形にする。

このまとめ方は非常にわかりやすく、理解を深めるのに大いに役立ちました!

難しかった所

複雑なSQL文やデータベース設計などがまだ理解が浅くて再度学習が必要だなと感じました。

概念、理論、物理という三つの流れを常に意識してテーブル設計をしていきます!

まとめ

最高の本でした!

雑談になってしまうんですが、

実は第2版の本自宅にありまして半年前ぐらいに買ったのすっかり忘れてました🤣

内容はとてもよかったので2倍貢献したことにしときます!

ご清聴ありがとうございました。

プロを目指す人のためのRuby入門を読んだ感想です

今回はプロを目指す人のためのRuby入門を読んだ感想を書いていきたいと思います!

良かったところ

この本は網羅的に説明されており、私がすでに知っていた内容もさらに深く理解することができました!

現場で役立つ内容がたくさん書かれており、

プロフェッショナルとしてのスキルを磨くために、この本をもう一度読み返します!

また、知らなかった内容については、新たな知識が頭に追加されるような感覚で読み進めることができました!

作者さんが言っていたように難しい部分は知識の引き出しとしてインデックスとしてこんなのがあったなあ程度に

読めたので挫折せずに読み終える事ができました!🎉

間違いなく内容は濃厚です😊

悪かったところ

悪かった点としては、ほとんど見当たりません。

もし何かを挙げるならば、難しいところです。

ですが、それは私が無知なのが悪いことでありこの本は悪くありません。

本当の初学者さんには難しいのかなと言った印象です。

学んだこと

テスト駆動開発がどのような場面で適しているのか、またその逆に適していない場面について学びました。

さらに、Minitestを使ったテストコードの書き方や、よく使われるメソッドのクラスやモジュールについても学びました。

また、クラスとモジュールの違いや、なぜエイリアスメソッドが存在するのかについても理解を深めました。

それにデバック方法などなどたくさんあります。

何も見ないで書くのはまだ無理ですが、Rubyに関する知識は読む前よりかは

間違いなく増えたので効率よく検索することがグッと上がったような気がします!

難しかったこと

本の中で作者が言っていた様にモジュールの部分から難しさが増していきました。

したがって、8章以降は必ず再度読み返すようにします!!!!!!

最後に

「プロを目指す人のためのRuby入門」は

Rubyの学習において非常に役立つ本です!

人気なのがよくわかりました。

読み終わった後も、何度も言いますが1周だけだと私じゃあ全て理解するのは無理でしたので

定期的に復習して自身のスキルアップに繋げたいと思います!!❤️‍🔥

optparseを使ってコマンドオプションをカスタマイズしてみました!

optparseを使ってコマンドオプションをカスタマイズしてみました!

実はコマンドラインのオプションはカスタマイズすることができるんです!!

それではその方法とは!?

Rubyの標準ライブラリであるOptparseを使って、

コマンドラインオプションをカスタマイズする方法についてご紹介します!

まず、Optparseとは何かというと、Rubyの標準ライブラリの一つで、

コマンドラインからの引数を解析し、オプションを設定することができるものです

コマンドラインツールを作る際には非常に役立つライブラリで、

引数の型チェックやエラーメッセージの生成など、複雑なオプション処理を簡単に行うことができます!

例としてこちらのコードを使います

require 'optparse'

options = {}
OptionParser.new do |opts|
  opts.banner = "Usage: add_add.rb [options]"

  opts.on("-a", "--addend INTEGER", Integer) do |a|
    options[:a] = a
  end

  opts.on("-b", "--addend INTEGER", Integer) do |b|
    options[:b] = b
  end

  opts.on("-h") do
    puts opts
    exit
  end
end.parse!

sum = options[:a] + options[:b]
puts "足し算#{options[:a]} + #{options[:b]} = #{sum}です"

この例では、 -a と -b オプションを定義しています。

INTEGER は期待する値のタイプを示しています。ここでは、

これらのオプションが整数の値を必要とすることを示しています。

また、ヘルプオプション -h も定義しています。

これは、ユーザーがコマンドラインで -h オプションを指定すると、

オプションのリストとその説明を表示する役割を果たします。

最後に、定義したオプションを使って計算を行い、結果を出力します。

ruby add_app.rb -a 1000 -b 100と記述したら

optionsのハッシュの中には

options = {a: 1000, b: 100}があります。

puts "足し算#{options[:a]} + #{options[:b]} = #{sum}です"

これらが、足し算1000 + 100 = 1100ですなっていたら成功です!

今回は短いですがお疲れ様でした!!

GitHub Pagesを活用しよう!その魅力と簡単な公開手順

おはようございます!こんにちはこんばんは!お疲れ様です!

今回は、GitHubPagesを利用する機会がありまして簡単かつ無料でしたので情報共有したいと思います!

まず何を書くかといいますと

GitHub Pagesとは何なのかと、私が初めて使って詰まったところを共有します!

GitHub Pagesとは何か?

GitHub Pagesは、GitHubが提供する無料の静的ウェブホスティングサービスです。

プロジェクトのリポジトリにHTML、CSSJavaScriptなどの静的ファイルを配置するだけで、

独自のウェブページを公開できます。個人やプロジェクトのポートフォリオ、ドキュメント、ブログなど

様々な目的で利用されています。

GitHub Pagesの主な利点

GitHub Pagesを利用する主な利点は以下の通りです。

無料: GitHub Pagesは完全に無料で、制限なしにウェブサイトをホスティングできます。

シンプル: 静的ファイルのみを使用しているため、設定や管理が簡単です。

バージョン管理: ウェブページのファイルはGitHubリポジトリで管理されるため、バージョン管理が容易です。

カスタムドメイン: 独自のドメインを使用してウェブサイトを公開することもできます。

Jekyll対応: Jekyllを使って簡単にブログやウェブサイトのテンプレートを作成・管理できます。

GitHub Pagesを公開する手順

GitHubのアカウントが既に登録されていると仮定して、以下の手順でGitHub Pagesを公開できます。

リポジトリの作成: いつも通りGitHubで新しいリポジトリを作成します。

リポジトリ名は ユーザー名.github.io にすることで、自動的にGitHub Pagesとして認識されますが

他のリポジトリ名でも大丈夫です!

ですが、そのままですと画像やCSSが反映されないのです

ここが私が詰まったところなので後で書きます!

静的ファイルの作成: ローカルリポジトリ内に index.html ファイルを作成し、

必要なHTML, CSS, JavaScriptなどの静的ファイルを追加します。

index.htmlは必ずリポジトリ直下におきましょう!

── README.md
├── css
│   └── style.css
├── images
│   ├── black_zeen.jpeg
│   ├── discussion.png
│   ├── edit.png
│   ├── footer.png
│   ├── g_logo.webp
│   ├── img.png
│   ├── minizenn.png
│   ├── user.jpeg
│   ├── vscode.png
│   └── zenn_logo.png
└── index.html

こんな感じのツリー構造です!

コミットとプッシュ: 作成・編集したファイルをコミットし、リモートリポジトリにプッシュします。

さらっと画像で公開するまでの手順を説明します。

最初のデプロイしたいブランチを指定してsave(緑の枠)

次に赤い枠にデプロイしたサイトが出てきます。(ちょっと時間かかるのでご注意を)

画面リロードしてあげると出てくることが多いです!

ウェブページの確認: リポジトリ名をgithub.ioにした場合は

ブラウザで https://ユーザー名.github.io にアクセスし、公開されたウェブページを確認します。

こちらはプロゲートさんが提供している公開方法の手順です。

わかりやすいのでぜひ!↓

prog-8.com

注意点と私が詰まったところです

ここからはリポジトリ名をオリジナルな名前にした時に起きる現象です。

GitHub PagesでCSSと画像が反映されない問題の解決方法

原因と対処法

ファイルパスの確認

まず最初に、HTMLファイル内のタグでCSSファイルへのパスが正しく指定されているか確認してください。

同様に、タグのパスも正しいか確認してください。


例えば、resumeというリポジトリ名とします

開発環境では:

<link rel="stylesheet" href="/css/style.css">
<img src="/images/logo.png" alt="logo">

これで大丈夫ですが

GitHub Pagesでデプロイする時は:

<link rel="stylesheet" href="/resume/css/style.css">
<img src="/resume/images/logo.png" alt="logo">

このようにパス先頭にリポジトリ名を入れることで解決できます!

若干読み込まれるまで時間かかる場合があるので心配せずに待ってリロードしてみましょう!

まとめ

GitHub Pagesは静的サイトのみとなってしまいますが、無料かつ簡単にデプロイできるのでおすすめです!

ここまでみてくださりありがとうございました!

Git,GitHubとは? GitHubFlowのシンプルかつ素晴らしさを理解しましょう!

参考にさせてもらった学習教材はこちらです!

お世話になりました!!

zenn.dev

www.udemy.com

それでは学んだことをわかりやすくまとめていきます!


はじめに

GitとGitHubについて知っておくべき基本情報から、GitHub Flowという開発フローの仕組みまでを解説します。

これらの知識を身につけることで、効率的なバージョン管理やチーム開発ができるようになります。

Gitとは

Gitは、ファイルのバージョン管理を行うためのツールです。

最新のファイルや変更履歴を追跡することができ、以前の状態にも戻すことが可能です。

また、複数人での開発時に誰がいつどのような変更を行ったかを把握することができます。

Gitの歴史

Gitは2005年にリーナス・トーバルズ氏によって開発されました。

当初は複雑なプログラムでしたが、現在は学習すれば誰でも使えるようになっています。

使いやすくしてくれたくれたプログラマーに感謝です✨

GitHubとは

GitHubは、Gitをオンライン上で管理するためのサービスです。

複数人での開発やオープンソースプロジェクトの閲覧が可能で、

プルリクエストという仕組みを利用してコードの変更を柔軟に管理できます。

GitHub Flowとは

GitHub Flowは、GitHub社が提唱するシンプルな開発フローです。

以下にその主な手順を紹介します。

1.常にmainブランチをデプロイ可能な状態に保つ

2.新しい機能や修正を行う際には、mainブランチから新しいブランチを作成

3.新しいブランチで作業を進め、コミットする

4.定期的にpushして仲間に進捗を共有する

5.mainブランチにマージする前にプルリクエストを作成し、レビューを受ける

6.レビューが完了したら、mainブランチにマージ

7.mainブランチにマージしたらすぐにデプロイする

このGitHub Flowに沿って開発を行うことで、スムーズなチーム開発が実現できますし

バグを本番環境に入れる可能性も極めて少ないと私は思います!

まとめ

GitとGitHubを使いこなすことで、ファイルのバージョン管理やチーム開発が効率的に行えます。

GitHub Flowを理解し、適切な開発フローで作業することが重要です。

これらの知識を身につけて、より良いプロジェクトを実現しましょう。

私は現時点(2023/05/06)ではまだ実務未経験ですが、

実務を見据えて今からソロGitHubFlowで慣れていきたいと思います!

ざっくりと説明しましたがプルリクエストについて説明します

なぜ説明をするのかといいますと、最初は必ずと言っていいほどわかりずらいからです。

プルリクエストとは?

GitHub上でのコードレビューを効率的に行うための仕組みです。

自分が行った変更を他の開発者に知らせ、レビューを受けることで、コードの品質を向上させることができます。

プルリクエストは以下のような手順で作成しましょう。

1.新しいブランチを作成し、変更をコミットする

2.変更が完了したら、GitHub上でプルリクエストを作成

3.アサインを自分に設定し、レビュアーに依頼し、フィードバックを受け取る

4.必要に応じて修正を加え、再度レビューを受ける

5.レビューが完了し、承認されたらmainブランチにマージする

この流れが基本の流れです!

効率的なコミットメッセージを書くコツ

コミットメッセージは、変更の内容を簡潔かつ明確に伝えることが重要です。

以下のポイントに注意して、わかりやすいコミットメッセージを書きましょう。

1行目には、変更内容を簡潔にまとめる

必要に応じて、2行目以降に詳細な説明を記述

チーム内でのルールや規約に従うこと!

おわりにまとめ

Git, GitHub, そしてGitHub Flowを理解し活用することで、効率的なバージョン管理やチーム開発が可能になります。

プルリクエストを使い、コードの品質向上に努めましょう。

また、わかりやすいコミットメッセージを書くことで、他の開発者とのコミュニケーションも円滑に進めることができます。

これらの知識とスキルを身につけて、より良いプロジェクトを実現しましょう!

私もこれからただpushするのではなくGitHubFlowを意識していきます!!!

ここまでみてくださりありがとうございました!🚀