【動画付き・初心者向け】コメントにはWHYを書こう 〜必要なコメント・不要なコメントについて〜
## はじめに
僕は[フィヨルドブートキャンプ](https://bootcamp.fjord.jp/)(以下FBC)というプログラミングスクールでメンターをやっています。そこでよく生徒さんが書いたプログラム(課題の提出物)のコードレビューをよくやるのですが、5人に4人ぐらいの割合でコメントの書き方について同じような指摘をしています。コメントの書き方ついては、すでにネットや書籍で同じような議論が山ほどありますが、この記事ではあらためて僕の考える「不要なコメントと必要なコメントの違い」について書いてみようと思います。
## 動画があります!
この記事は以下の動画の内容を雑にテキストとして書き起こしたものです。動画で見たいという方は、以下の動画をご覧ください。(FBCの生徒さん向けに作った動画ですが、大半の内容はFBCの生徒さん以外にも役立つはずです)
RubyでFizzBuzz問題
# アウトプットとしてFizzBuzz問題の記事を書く。
### 要件
– 1~任意の数までの数字を順番に表示する
– ただし、3の倍数のときはFizz、5の倍数のときはBuzz、3と5の公倍数のときはFizzBuzzと表示する。
– 任意の数はプログラム実行時に引数で渡せるようにする### コードを書く。
“`
def fizzbuzz(n)
if n % 15 == 0
puts “FizzBuzz”
elsif n % 3 == 0
puts “Fizz”
elsif n % 5 == 0
puts “Buzz”
else
puts n
end
endnum = 15
(1…num).each do |n|
puts fizzbuzz(n)
end
“`※ここで注意するべきなのが15の倍数の判定コードを先に書くこと。3の判定コードや5の判定コードを先に書くと15の倍数が来たときに一番最初のコードの処理が実行される。つまり15は3の倍数でも5の倍数でもあるのでうまくいきません。わからなければ実際に
Ruby 色々な配列のメソッドの紹介1
#配列のメソッドの調べ方
配列にはいろんなメソッドがあります。
覚えるより調べることが大切です。⚫︎pryで調べる
“`
[1] pry(main)> ls []
でメソッドを調べることができます。“`
#Rubyの色々なメソッド
よく使うものからマイナーなものまであります。
興味があるものから調べてください。⚫︎push
“`
animal = [“犬”,”猫”,”鳥”,”象”,”猿”]
animal.push “ライオン”
puts animal犬
猫
鳥
象
猿
ライオン と出力puts animalのputsをprintにすると
[“犬”, “猫”, “鳥”, “象”, “猿”, “ライオン”] と出力#補足
putsとprintの違いは改行をするかしないかの違いです。
他に似たものはpop,shift,unshiftなどがあります。“`
⚫︎size count length
“`
number = [10,20,30,40,50,true,false,nil,true,nil,false]
puts number.si
[Ruby] AtCoder 過去問 B – 1%
##はじめに
AtCoderの過去問B問題を解いてみました。
よろしくお願いします。問題は下記リンクから確認してください。
https://atcoder.jp/contests/abc165/tasks/abc165_b
##B – 1%
まず、入力受け取りをします。
今回は一つだけなのでgets.to_iでいけます。
この入力値=目標金額になるのでgoal_balanceとでもしておきます。“`ruby
goal_balance = gets.to_i
“`高橋くんはもともと100円を銀行に預けているので変数に入れておきます。
また、このあとwhile文で使う繰り返した回数を数えてくれる変数を用意して0を代入しておきます。このカウント=年数です。
“`ruby
goal_balance = gets.to_ibank_balance = 100
year = 0
“`これで使う変数の準備ができました。
あとはwhile文で処理して、yearを出力すればオッケーです。“`ruby
goal_balance = gets.to_iban
[Ruby on rails]バッチ処理で通知の定時削除 通知の未読連絡のメール作成
初めに
今回バッチ処理を実装しました。
以下はイメージ画像です。
何日で通知を削除するのがベストなのか定まってなくてすみません・・・。![スクリーンショット 2021-08-19 17.50.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/f34553ab-506a-be18-37b8-df492837a416.png)
![スクリーンショット 2021-08-19 17.47.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/00bf8879-33ab-d342-2dfc-cc938003e5ec.png)
バッチ処理って何?
一定期間経ったらデータを消してくれる機能だと思ってたのですが、
もっと色々なことができるんですね:point_up:
1日1回何時とか、2分起き〜とかに、あらかじめ定めた処理を行ってくれます。
今回行ったのは、1日
【Docker×Rails6】CSSを反映させる
Rails6ではJavaScriptのモジュールバンドラとしてWebpackが導入されていますが、
画像やCSSに関しては従来のSprocketがアセットパイプラインとして使用され、
JavaScriptのみをWebpackでコンパイルするようになっています。
そのため画像やCSSを反映させる場合は、変更作業が必要になります。# 設定手順
## application.html.erb
の内容を書き換えます。“`ruby:app/views/layouts/application.html.erb
<%= full_title(yield(:title)) %>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
# (下の行を追記)webpackがCSSを扱えるようにする
<%=
【Docker×Rails6】solidusを使ってECサイトを構築する(開発編)
この記事は、下記記事の続きになります。
https://qiita.com/asami___t/items/44a77464b57503ea78db
# gemをインストールする。
“`ruby:Gemfile
# frozen_string_literal: true
source “https://rubygems.org”
# gem “rails”
gem ‘solidus’
gem ‘solidus_auth_devise’
“`‘solidus’をrequireすると、以下がまとめてインストールされます。個別にインストールすることも可能なよう。
solidus_core
solidus_api
solidus_frontend
solidus_backend
solidus_sample# docker-compose buildの実行
“`ruby:ターミナル
$ docker-compose build
“`docker環境の場合、通常は上記コマンドでbundle installができるはずなんですが、何故かできなかったため、下記実行。
`
GETアクションをおこなった際の、エラーについて(エラー:リダイレクトが繰り返し行われました。
# リンク先にて、以下の『このページは動作していません』とのエラーが出たので共有します。
![スクリーンショット 2021-08-19 14.26.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1730386/0b950fe7-1d27-5291-8c81-dfc613ebad80.png)## はじめに
Railsにて、GETアクション呼び出すリンクを開いたところ、『ロード後リダイレクトが繰り返し行われました』とのエラーが出ました。## 原因
ルーティングでGETと指定して、コントローラーのGETアクションを行なっていたのにも関わらず、アクションの中でも、redirect_to を記述しており、リダイレクト処理が2回も行われていたためでした。![スクリーンショット 2021-08-19 14.43.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1730386/689f7800-d5d0-67c9
ブラウザでルーティングの確認
ブラウザでルーティングを確認する方法!
`rails/info/routes`をURLの後ろにつければOK
ターミナルで
`$ rails routes`するよりも見やすい!
【Docker×Rails6】solidusを使ってECサイトを構築する(環境構築編)
備忘録として開発の流れを残しておきます。
# バージョン情報
Ruby 2.7.1
Rails 6.1.4
MySQL 5.7
Nginx 1.19.10# 前提
AWSにアカウント作成済
docker hubにアカウント作成済
docker インストール済# ファイル構成
現状のアプリのフォルダ構成に、下記のファイルを追加します。
“`
~/project/solidus
├── Dockerfile
├── Gemfile
├── Gemfile.lock
├── containers ── nginx
├ ├── Dockerfile
├ └── nginx.conf
├── docker-compose.yml
└── environments ── db.env
“`# フォルダ作成
“`ruby:
$ mkdir -p ~/project/solidus
$ cd ~/project/solidus
$ mkdir -p containers/nginx
$ mkdir enviro
初めてのRSpec① 超初心者が参照した記事まとめ モデルテスト編
初めに
今回、初めてテストを書きましたが、そもそも書くまでの道のりが長く、、
ややこしかったので参考にしたサイトをまとめてみました。ひとまず基本を理解する
テストコードちらっとみたことあるけど、
書いたことは全くなかったので以下の記事を読みました。https://note.com/devtetsu/n/nd29c50468480
https://qiita.com/jnchito/items/2a5d3e15761fd413657a
必要なGem、ファイル、FactoryBot準備
https://qiita.com/nakachan1994/items/29369470d50d0fcd0f6c
個人的メモ
以下、下の3つ入れます。
“`gem “factory_bot_rails”“`はテスト用のサンプルデータを
簡単に作成することができるGemです。
“`gem ‘faker’“`はダミーデータを作成してくれます。“`perl
【Ruby on Rails】他テーブルのカラムも検索して表示する方法
#対象者
* 他のモデルのカラムまで検索をする方法を考えている方
#目的
* 他モデルのカラムを検索してViewに表示する
#実際の手順と実例
###1.前提下記を元に実装しています
https://qiita.com/nao0725/items/1dbe59c63419179d1818
* ここでは記事のタグ名を検索します。
* Article、Tag、ArticleTagの3つのモデルを使用
* ArticleTagを中間テーブルとして実装しています。
* tag_nameカラムをTagテーブルで確認します。###2.joinsメソッドを使用
**joins**メソッドとはテーブル同士を内部結合して検索するためのメソッドです。
これを元に検索メソッドを使用すると
“`article.rb
def self.search(search_word)
Article.joins(:tags)#①
.where([“title LIKE(?) OR body LIKE(?) OR sub_title LIKE(?) OR tag_nrails tutorial 6章まとめ。バリデーション、正規表現、has secure password
# **バリデーション**
・存在性 presence: true
・一意性(唯一無二のユーザーにする為のもの) uniqueness: true
・長さ length (何文字以下はNGとかの為)
# 正規表現(Regular Expression)
regexとも言う。
メルアドの正規表現を設定した。
“`ruby
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/**i**
“`**# iの部分は大文字小文字を無視するオプション。**
DBには全部小文字変換して取り込むから、大小区別する必要ない。
これは、無効なアドレスを拒否する為のもの。
(@を入れてないのはNGとか)
# データベースにインデックスを挿入
これをやると、効率化を図れる+データベースの一意性を担保できる。
# has secure password
を使うと
➀passwordをハッシュ化(暗号化)できる。
(password_digestカラムがないと使えない。)
②**authenticateメソッド
30代実務未経験がRailsでオリジナルポートフォリオを作成
# はじめに
こんにちは、Nonaと申します。
31歳でWebエンジニアになることを目標に2021年5月からスクールにてRailsを中心に学習中です。これまで学んできたことをいかして今回Railsにてオリジナルアプリを作成したのでアプリについて説明させていただきます。##アプリについて
###No Dog,No Life!(犬の同伴がOKな場所の情報共有サイト)
いつでもどこでもワンちゃんと一緒にお出かけをしたい!そんな方のためにワンちゃん連れ OK の穴場の PLACE(公園、お店、施設)情報を共有し合うサイトです。
URL : https://nodognolife.xyz/
GitHub : https://github.com/Naru-hub/PF_NoDogNoLife![nodognolife1b.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1397453/05edfd6c-a8b9-fc3b-4497-9c3202e484cb.gif)
##なぜこのアプリを作ったのか?
[Rails] GitHubでプルリクエストを受けたときの動作確認方法
自分用の備忘録となります。
## 前提として
– プルリクエストを受けたブランチの名前を `ブランチ名` と定義します– 利用環境
– Ruby 2.7.3
– Rails 6.1.4## GitHubとローカル環境の連携
– github上でプルリクエストを受けたブランチを開く
– そのブランチでURLをコピーする
– プロジェクトのあるローカルリポジトリに移動し下記を実行“`terminal:ターミナル
$ git remote add ブランチ名 githubでコピーしたURL
“`リモートを確認する。
“`terminal:ターミナル
❯ git remoteブランチ名
origin
“`
このように表示されていればOKです。## Fetchを実行する
今回のFetchの意味合いとしてはGitHub上にあるブランチ情報をとってくるという意味になります。
`$ git fetch ブランチ名` を実行“`terminal:ターミナル
❯ git fetch ブランチ名
From https://github.com/〜URL〜Ruby 配列の基本的な使い方
#Ruby 配列の基本
こちらの記事を参照してください。
https://qiita.com/Hashimoto-Noriaki/items/63026ef88a58975e2cfb#配列の追加, 更新 ,削除
“`rb
scores = [10,20,30,40,50]
#追加
scores << 100 [10, 20, 30, 40, 50, 100] scores.push(20) *rubyは()を省略してもok => [10, 20, 30, 40, 50, 20]#更新
scores[1] = 10
=> [10, 10, 30, 40, 50, 20]#削除
scores.delete_at(2) *3つ目の要素を削除
=> [10, 20, 40, 50]“`
【Rails】gem sanitizeを用いてHTMLをサニタイズしてみた
## はじめに
HTMLの中にあるscriptタグなどの除去(サニタイズ)を行いたかったため、Railsにおけるサニタイズの方法のベンチマークを行い、ベンチマークにおいて最良と判断したgemを使ってサニタイズの処理を実装しました。本記事ではベンチマーク結果とsanitizeというgemを用いたサニタイズの方法についてまとめています。
## 実現したかったこと
実現したかったことは、下記のHTMLに含まれるようなscriptタグやaタグのhref属性値にJavascriptが含まれる場合を想定し、scriptタグを全て除去、aタグがhref属性値がURLなどの安全でない値の場合に除去することでした。
“`html:sample.html
?header1
header2
header3
?
RubyHTMLRailsRails5Rails6RailsでECサイトのカート機能を実装する(改訂版)
## はじめに
[RailsでECサイトのカート機能を実装する](https://qiita.com/akmhmgc/items/a40b91aa4f469c397f85)
での
– URI設計
– コントローラーに寄りすぎたロジック
の二点を改善しました。## ER図
Userモデルは除いています。
![ec.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1053396/483ee996-0db3-f64f-90ee-66c13d68ba40.png)## Cart、Item、Productテーブルのmigrationファイルの作成
“`
$ rails g model Cart
$ rails g model Product name:string price:integer
$ rails g model Item cart:references product:references quantity:integer
$ rails db:migarate
“`## ルーティング
[Ruby] 基礎
# オブジェクトのクラスを調べる
“`
> “氏名”.class
=> String # 氏名というオブジェクトのクラス
“`
# クラスとインスタンス
* オブジェクトXのクラスがAであるとき、XはAのインスタンス(オブジェクト)であるという。# 変数
“`
> label = “氏名”
=> “指名”
“`
* 上記のコードは変数labelに”氏名”オブジェクトを代入している。(ローカル変数)
* ローカル変数・・・プログラム中の一定の処理の範囲で使われ、その範囲が終わったら捨てられる。
* ローカル変数の名前はアルファベットの小文字かアンダースコア(_)で始める。
* インスタンス変数・・・オブジェクトの内部に保存されてオブジェクトが存在する限り一緒に存在する。
* 定数・・・アルファベットの大文字から始まる名前。 保持する値が不変。# メソッド
* def メソッド(引数)# レシーバー
* メソッドの呼び出しにおいて、そのメソッドのもつオブジェクトのことをレシーバーという。
* オブジェクト(レシーバー).メソッド[Ruby] AtCoder 過去問 B – Digit Sums
##はじめに
AtCoderのB問題 Digit SumsをRubyで解いてみました。問題の確認は下記からお願いします。
他のやり方などご教授いただけると幸いです。
それではよろしくお願いします。https://atcoder.jp/contests/abc101/tasks/abc101_b
##B – Digit Sums
まずは入力の受け取りです。
今回は数値を一つだけ受け取ればいいので下記のように記述するだけで十分です。“`Ruby
n = gets.to_i
“`この数字を桁ごとに分解して、それらを足し算する必要があります。
このとき私は、まず文字列に変換して、charsメソッドで一文字ずつに分けて、再度数値に戻して。。。と考えていましたが、とても便利なメソッド、digitsメソッドを見つけましたのでこちらを活用したいと思います。使い方は下記の記事にまとめておきました。
https://qiita.com/minhee/items/5a01438f20e274f58ed8
簡単にいうと数値を桁ごとに分けて配列で返してくれます。
さらにその配関連する記事
OTHERカテゴリの最新記事
-
- 2024.11.09
iOS関連のことを調べてみた
-
- 2024.11.09
JAVA関連のことを調べてみた
-
- 2024.11.09
JavaScript関連のことを調べてみた
-
- 2024.11.09
Rails関連のことを調べてみた
-
- 2024.11.09
Python関連のことを調べてみた
-
- 2024.11.09
Lambda関連のことを調べてみた