- 1. 【Ruby】%記法のまとめ
- 2. macOS利用の初心者Rubyプログラマは要確認!9つの開発環境チェックポイント
- 3. ユーザー設定(devise)駆け足説明 【備忘録】
- 4. 【Ruby on Rails】renderとredirect_to
- 5. Lightsailで立ち上げたRedmine
- 6. Tailwind CSSでレスポンシブが効かない!! ビューポートメタタグ
- 7. 【Ruby】エラーハンドリングのまとめ
- 8. RailsでURLのidのハッシュ化のやり方完全入門(初心者向け)
- 9. VsCode / Cursor + Rubocop ( ruby-rubocop-revived ) でRubyファイルの保存が非常に重い
- 10. PHPのパターンマッチで遊んでみた
- 11. collectionとmember 検索機能 【備忘録】
- 12. 【Ruby】シングルクオート、ダブルクオートの使い分け
- 13. RubyとElixirの兄弟船:闘魂で切り拓く技術の旅 〜素のRubyプロジェクトでrails cのようなことをしたい〜
- 14. 【Ruby】Random.randとRandom.newの違い
- 15. controllerの中の before_action :set_item
- 16. 【Ruby】singleton_classについて
- 17. 【Ruby】instance_variable_getメソッドについて
- 18. 【Ruby】ナンバードパラメータ
- 19. Rubyのパターンマッチで遊んでみた
- 20. 【Asciidoctor (adoc)】の使い方〜効率的なドキュメント作成術〜
【Ruby】%記法のまとめ
# はじめに
こんにちは!アメリカの大学で語学を学びながら、独学でソフトウェアエンジニアを目指している者です。
現在たのしいRubyという教材を使用してArrayクラスについて学んでいますが、その中で%記法(%wと&i)を習いました。
もしかしたら、これら以外にも%記法があるのでは?と思い調べたのがこの記事を書こうと思ったきっかけです。
では、%記法について解説します。## `%q` と `%Q`(文字列)
* `%q`:シングルクォート(’)と同じ扱いで、特殊文字や変数展開が無効です。
* `%Q`:ダブルクォート(”)と同じ扱いで、特殊文字や変数展開が有効です。
“`ruby
name = “Ruby”
puts %q(Hello\nworld) # => Hello\nworld(特殊文字はそのまま)
puts %Q(Hello #{name}) # => Hello Ruby(変数展開が有効)
“`## `%w` と `%W`(文字列の配列)
* `%w`:スペース区切りで文字列の配列を生成します。変数展開や特殊文字は解釈されません。
* `%W`:ダブルクォー
macOS利用の初心者Rubyプログラマは要確認!9つの開発環境チェックポイント
## はじめに:これは何?
僕は[フィヨルドブートキャンプ](https://bootcamp.fjord.jp/)でメンターをやっています。
これまでたくさんの生徒さんたちを見てきましたが、まあまあの頻度で「開発環境がおかしくて、不思議なトラブルに巻き込まれるケース」を見てきました。具体的には「Appleチップなのに、間違ってIntel版のセットアップを行っているケース」です。
特にプログラミング初心者の人はネットの記事を見よう見まねでセットアップするので、本人も知らないうちにおかしなセットアップをしていることがあります。この状態だと「ある程度は正常に動くが、どこかで謎なトラブルに巻き込まれて無限に時間を溶かしてしまう」という問題が発生しやすいです。
そこで、この記事ではmacOSでRubyを動かしているプログラミング初心者の方を対象に、開発環境のチェックポイントを9つ紹介します。
「AppleチップとかIntelとか、今まで全然気にしたことがなかった」という人は、特に危険かもしれません。
問題がなければ10分程度で終わるので、ぜひ最初から順にチェックしていってくださ
ユーザー設定(devise)駆け足説明 【備忘録】
## はじめに
サイトを作る際に新規登録、ログイン、ログアウトのユーザー設定は必ず行うものなので詳細は省きとりあえず設定できるよう駆け足で説明。1.Gemfileの最後の行に以下を入力
“`Gemfile
gem ‘devise’
“`
2.ターミナルに順番に入力
“`
% pwd # 現在のディレクトリが作成中のアプリ名であることを確認して
% bundle install # Gemをインストール
% rails s # サーバー再起動
% rails g devise:install # deviseファイル作成
% rails g devise user # deviseコマンドでUserモデルを作成
“`
これでユーザー関連のモデルやマイグレーションも自動で生成してくれて
以下のようにroutes.rbにルーティング追記されている。
“`config/routes.rb
Rails.application.routes.draw do
devise_for :us
【Ruby on Rails】renderとredirect_to
renderを勘違いしていたので整理。
## renderメソッド
renderメソッドは、呼び出すビューファイルを指定することができる。
“`ruby:例
render :edit
“`
コントローラー内で使用するメソッドだが、処理がうまくいかなかったときに、元のページに戻る処理で使われることが多い。
理由は、元のページのデータをそのまま保持することができるため。## redirect_toメソッド
redirect_toメソッドは、指定のurlへ遷移するようリクエストを送信している。
コントローラー内で使用し、pathやURLを指定する。
“`ruby:例
redirect_to root_path
“`
renderがビューファイルを指定しているのに対して、redirect_toは再度ルーティングを通してコントローラーで処理が行われている。## renderメソッドでのビュー再表示
renderメソッドは便利で、フォームでの入力ミスがあった時でも、元のページに戻り、かつ入力値が残ったままになる。
しかし、ビュー内で他のコントローラーに定義されているインスタンス変数
Lightsailで立ち上げたRedmine
## 経緯
タスク管理ツールとしてRedmineを利用していて
急にadminユーザーとしてログインができなくなった際に焦ったので
同じ過ちを犯さないためにメモ## Redmineとは
RedmineとはそもそもRailsによって作成されたタスク管理ツールです。
ここを理解していると焦らず対応することができる## やったこと
Lightsailサーバのコマンドプロンプトから、もしくはssh可能であれば自身のターミナルからsshしてアクセスをする。1. Redmineのインストールディレクトリに移動
例:
“`
cd /var/lib/redmine
“`
わからなければ
“`
sudo find / -name “config.ru” 2>/dev/null
“`2.Railsのコンソールを開く
“`
bundle exec rails console -e production
“`3.ユーザーのlogin 属性を出力
“`
User.all.each { |user| puts user.login }
“`
ここでadmin: trueと記載さ
Tailwind CSSでレスポンシブが効かない!! ビューポートメタタグ
Tailwind CSSを使ってレスポンシブデザインを作成しているのに、画面サイズを変えてもデザインが変更されない!!
### その原因は、**ビューポートメタタグ**がないことでした!!## ビューポートメタタグとは?
ビューポートメタタグは、ブラウザに「どのように画面サイズを扱うべきか」を指示するものです。このタグがないと、ブラウザはデスクトップ向けのサイズを基準にしてしまい、スマホやタブレットでの表示が崩れることがあります。
### 必要なタグ
`内に追加しましょう。
以下のコードをHTMLの`“`html
“`これで、ブラウザがデバイスの画面幅に合わせてページを適切に表示するようになります。
## このタグの役割
1. **`width=device-width`**
デバイスの画面幅をそのままビューポートの幅として使用します。これにより、ページが画面に収まり、横スクロールが発生しにくくなりま
【Ruby】エラーハンドリングのまとめ
# はじめに
こんにちは!アメリカの大学で語学を学びながら、独学でソフトウェアエンジニアを目指している者です。
本日はRubyのエラーハンドリングについてまとめていきたいと思います。プログラムを書く際、エラーが発生するのは避けられません。
エラーハンドリングを適切に行うことで、プログラムが予期しないクラッシュを回避し、ユーザーに分かりやすいメッセージを表示するなど、より安定したコードが実現できます。
Rubyのエラーハンドリングの基本を具体例を交えながら見ていきましょう。# エラーハンドリングが必要な理由
Rubyはエラーが発生した際に原因を知らせてくれますが、それでもエラーハンドリングが重要な理由を以下のポイントに分けて解説します。### 1. エラー発生時のカスタムメッセージの表示やログの記録
`rescue`を使うと、エラーの種類に応じてカスタムメッセージを表示したり、エラー内容をログファイルに保存できます。
特にユーザーが利用するアプリケーションでは、ユーザーに理解しやすいメッセージを表示することで、エラー内容を適切に伝えることができます。
“`ruby
begi
RailsでURLのidのハッシュ化のやり方完全入門(初心者向け)
# ハッシュ化とは
ハッシュ化とは,ハッシュ化したい文字や数字をハッシュ関数という関数にかけるとハッシュ化された値がかえってくる.そのハッシュ化された値からは元の値を求めることはできないというものである.
# ハッシュ化するメリット
ハッシュ化された値からもとの値を求めることはできないため
セキュリティ対策に効果がある.URLのidはハッシュ化するべきであり,
**できていないととても危険!!!**# やり方
# ①まずhashidsというパッケージをインストールする.
“Gemfile“にパッケージを記述する.
“`
gem ‘hashids’
“`
上のコードを“Gemfile“に書いく.
次にターミナルでhashidsをインストールする.
“`
bundle install
“`
これでhashidsのインストールは完了である.# ② ハッシュidの初期化
初期化をすることでセキュリティが向上する.
“application_controller.rb“にハッシュidを初期化するコードを書く.
“”your_salt”“には好きな文字列を入れる
VsCode / Cursor + Rubocop ( ruby-rubocop-revived ) でRubyファイルの保存が非常に重い
# 問題
ファイルによっては、Rubyファイル保存がすごく重い場合がある。
`.vscode/settings.json` の設定は以下のようにしていた。
“`json
{
“editor.codeActionsOnSave”: {
“source.fixAll”: “explicit”
},
“[ruby]”: {
“editor.defaultFormatter”: “LoranKloeze.ruby-rubocop-revived”,
}
}
“`# 解決
`editor.codeActionsOnSave` の項目を削除することで解決した。
“`json
{
“[ruby]”: {
“editor.defaultFormatter”: “LoranKloeze.ruby-rubocop-revived”,
}
}
“`この項目を削除しても、Rubocopによるフォーマットはちゃんとしてくれるようだ。
何がどう干渉していたのかは不明。
# チャットメンバー募集
何か質問、悩み事、相談などあれば
PHPのパターンマッチで遊んでみた
## はじめに
先日、Ruby の強力なパターンマッチを試して楽しみました。その直後にたまたま久し振りに PHP に触る機会があったので PHP でもパターンマッチができないか調査してみました。
https://qiita.com/mnishiguchi/items/53b55deae8e033562a55
2020 年の PHP 8.0 に[match 式](https://www.php.net/manual/ja/control-structures.match.php)が導入されていました。PHP でもパターンマッチができます!
https://php.watch/versions/8.0
https://php.watch/versions/8.0/match-expression
https://www.php.net/manual/ja/control-structures.match.php
試してみます。
## PHP の`match` 式とは
公式ドキュメントに以下の通り記されています。
> match 式は、値の一致をチェックした結果に基づいて
collectionとmember 検索機能 【備忘録】
## はじめに
これからオリジナルアプリを作るので、付けたい機能の勉強に記録します。
まずは検索機能を付けたいので`collection`と`member`について復習していきます。viewファイルは既に作った状態。
searchアクションのルーティングをこれから記述する段階。“`ruby
collection do
get ‘search’
end
“`
collectionのルーティングは`id`がついていない。
“`
Prefix Verb URI Pattern
search_comments GET /comments/search(.:format) comments#search
“`
これに対してmemberは`id`がつく。
“`ruby
member do
get ‘search’
end
“`
“`
Prefix Verb URI
【Ruby】シングルクオート、ダブルクオートの使い分け
# はじめに
Rubyでは文字列を作る際に、シングルクオート(’)、またはダブルクオート(”)で囲む方法が存在します。ちらっと調べると、「どちらでも良い」と書かれており、「どちらでも良い」が一番柔軟かつ困ることだなあと思ったので、調べてみようと思いました。## 明確に異なる点
### “`\n“` 改行文字など(バックスラッシュ記法)を使用する場合
“`ruby
puts ‘りんご\nゴリラ\nらっぱ’
#=> りんご\nゴリラ\nらっぱputs “りんご\nゴリラ\nらっぱ”
#=> りんご
# ゴリラ
# らっぱ
“`
他にも“`\s“` 空白文字や、“`\t“` タブ文字もよく使用するが、シングルクオーテの場合そのまま文字列と見なされてしまう。### “`#{変数}“` 式展開を使用する場合
“`ruby
name = ‘パンダ’puts “しりとりの続きは#{name}です”
#=> しりとりの続きはパンダですputs ‘しりとりの続きは#{name}です’
#=> しりとりの続きは#{name}です# シングルクオーテを使
RubyとElixirの兄弟船:闘魂で切り拓く技術の旅 〜素のRubyプロジェクトでrails cのようなことをしたい〜
“`elixir
defmodule FightingSpirit do
def shout do
IO.puts “元氣ですかーーーッ!!!”
IO.puts “元氣があればなんでもできる!”
IO.puts “闘魂とは己に打ち克つこと。”
IO.puts “そして闘いを通じて己の魂を磨いていく”
IO.puts “ことだと思います。”
end
endFightingSpirit.shout()
“`$\huge{元氣ですかーーーッ!!!}$
$\huge{元氣があればなんでもできる!}$$\huge{闘魂とは己に打ち克つこと。}$
$\huge{そして闘いを通じて己の魂を磨いていく}$
$\huge{ことだと思います。}$
【Ruby】Random.randとRandom.newの違い
# はじめに
こんにちは!アメリカの大学で語学を学びながら、独学でソフトウェアエンジニアを目指している者です。
本日は乱数を作成するための`.rand`メソッドと`.new`メソッドの違いについて説明していきたいと思います# `Random.rand`とは
`Random.rand`は、Rubyの`Random`クラスに定義されているクラスメソッドです。
クラスメソッドなので、インスタンスを作成することなく、Random.randと直接呼び出せます。
このメソッドを使用する場合、Rubyのグローバルな乱数生成器が使われます。
特徴としては以下の通りです
* 手軽に使える
`Random.rand`はどこからでも簡単に呼び出せます。
* グローバルな乱数生成器を使用
プログラム全体で同じグローバル乱数生成器を共有するため、何度も呼び出しても使い回されます。
* 再現性が低い
プログラムの実行ごとに異なる乱数が生成され、再現性が必要な場合には不向きです。“`ruby
# 0から9までの乱数を生成
puts Random.rand(10)# 1から6までの乱数を生成(サイコロの
controllerの中の before_action :set_item
## はじめに
今までスルーしてしまっていた中途半端に理解しているコードを、これを機にひとつひとつ深堀していきたいと思います。“`
lass ItemsController < ApplicationController before_action :authenticate_user!, only: [:edit, :update, :destroy, :new] before_action :set_item, only: [:edit, :update, :show, :destroy] before_action :move_to_index, only: [:edit, :update, :destroy] ``` 例えばこんな記述があったとする。 ``authenticate_user!``はログインログアウトを分けてくれて、``move_to_index``はトップページに戻してくれて とわかるんだけど、いまいちわからないのが``set_item``。この子はなにをしてくれるんだろう。 ## 解説 ``set_item`` メソッドの役割は、`
【Ruby】singleton_classについて
どうもこんにちは。
今回は`singleton_class`について勉強したので備忘録としてまとめます。
# singleton_class(シングルトンクラス/特異クラス)とは
**singleton_class(シングルトンクラス)** は、Rubyにおける特別なクラスで、特定のオブジェクトに固有のメソッドや変数を定義するために使用されます。
Rubyでは、すべてのオブジェクトが自身のシングルトンクラスを持っており、このクラスを通じてオブジェクトに一時的または特定の機能を追加できます。
# singleton_classの基本的な使い方
`singleton_class`は、オブジェクトのシングルトンクラスを取得するためのメソッドです。このクラスを操作することで、特定のオブジェクトに対するシングルトンメソッドやシングルトン変数を定義できます。
“`rb
object.singleton_class
“`– `object`: シングルトンクラスを取得したいオブジェクト
“`rb:サンプルコード
obj = Object.new# シングルトンクラスを取
【Ruby】instance_variable_getメソッドについて
どうもこんにちは。
今回はRubyの`instance_variable_get`メソッドについて、備忘録としてまとめました。
# instance_variable_getメソッドとは
`instance_variable_get`メソッドは、オブジェクトのインスタンス変数の値を取得するためのメソッドです。
Rubyでは通常、インスタンス変数はクラス内で直接アクセスすることはできず、アクセサメソッド(`attr_accessor`、`attr_reader`、`attr_writer`)を通じてアクセスします。
しかし、`instance_variable_get`を使用すると、これらのアクセサメソッドを介さずに直接インスタンス変数にアクセスできます。
# 基本的な構文
“`rb
object.instance_variable_get(:@variable_name)
“`– `object`: インスタンス変数を持つオブジェクト
– `:@variable_name`: 取得したいインスタンス変数のシンボル。先頭に@を付ける必要があります# instan
【Ruby】ナンバードパラメータ
どうもこんにちは。
今回は、Ruby Gold ver3から出題範囲になったナンバードパラメータについて勉強したので、備忘録として残します。
今回はメモ程度です。
# ナンバードパラメータとは
ナンバードパラメータとは、`each`や`map`で使用するブロック引数を使用する代わりに使用することでコードをシンプルに書くことができるパラメータです。
# 従来のループ文
“`rb
numbers = [1, 2, 3, 4, 5]
doubled = numbers.map { |number| number * 2 }
puts doubled# => [2, 4, 6, 8, 10]
“`# ナンバードパラメータを使用した場合
“`rb
numbers = [1, 2, 3, 4, 5]
doubled = numbers.map { _1 * 2 }
puts doubled# => [2, 4, 6, 8, 10]
“`以上
Rubyのパターンマッチで遊んでみた
## はじめに
Ruby でパターンマッチができるようになったと聞いてはいましたが、まだ試したことがありませんでした。
https://qiita.com/jnchito/items/9bb4aa1dcefa00257815
https://qiita.com/jnchito/items/a9c7030cb5697f992cb7
2019 年の Ruby 2.7 の時点ですでに実験的には導入されていたのですね。
https://www.ruby-lang.org/ja/news/2019/12/25/ruby-2-7-0-released/
試してみます。
## パターンマッチとは
公式ドキュメントに以下の通り記されています。
> パターンマッチは、構造化された値に対して、構造をチェックし、マッチした部分をローカル変数に束縛するという、深いマッチを可能にする機能です。
> (『束縛』は、パターンマッチの輸入元である関数型言語の用語で、Ruby では代入と読み替えても問題ありません)https://docs.ruby-lang.org/ja/latest/doc/s
【Asciidoctor (adoc)】の使い方〜効率的なドキュメント作成術〜
# はじめに
設計書を作成する際のツールとして**Asciidoctor(adoc)** を紹介します。
私もAsciidoctorを設計書作成の際に利用しています。
Asciidoctorはドキュメントの構造化や見た目のカスタマイズが非常に簡単です。この記事では、Docker を利用して手軽に環境をセットアップし、Asciidoctorの基本的な使い方と設計書作成で役立つ機能、さらにはHTMLやPDFへの変換までを解説します。
# 完成イメージ
![_Users_kumaishuya_projects_asciidoc_project_sample.html (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1129869/e01c10f4-4b7a-f3fc-8870-9ad833a9f2a5.png)
# Asciidoctorとは?
はじめに、「Asciidoctorはなんぞや!」ということで、説明します。
Asciidoctorは、軽量なマークアップ言語である AsciiDoc