- 1. 【個人開発】誰でも簡単に謎解きを作成・回答できる「EnigmaPortals」をリリースしました!👓
- 2. 書式指定文字列の不思議な挙動
- 3. Secrets Managerをrubyのコードから実行してみる
- 4. スケーラビリティを考慮したクラウドネイティブなスクラム開発の実践
- 5. Ruby 3.3 リファレンスマニュアルのEnumerableモジュールの概要を要約してみる※備忘録
- 6. ユーザーアクセスログを監視するためのベストプラクティス
- 7. 【Render × Xserver】独自ドメインでのデプロイ時の注意点と解決策
- 8. [個人開発] 食品の在庫を簡単に管理できるサービスを作ってみました
- 9. New Relic を使って Redmine のオブザーバビリティを実現
- 10. 37signalsが書くコードの”Service Object”を見てみる
- 11. [作成中]RSpecについて初学者段階のメモ
- 12. 【Ruby on Rails】Google APIを使ってSpread Sheetを操作する
- 13. 【Ruby on Rails】画面読み込み時にレコードがDELETEされる
- 14. 「オブジェクト指向設計実践ガイド」を読んで、設計を学ぶ
- 15. Rails7.1、ruby3.34を詰まらずインストールしたい人へ
- 16. Ruby技術者認定試験に合格してみて【Silver編】
- 17. 【DP】動的計画法をRubyで学ぶ
- 18. Rails view helperとテストのリファクタリング:モックをcode smellと感じること
- 19. RailsのCSRF保護について
- 20. 超初心者のためのRSpec入門ガイド
【個人開発】誰でも簡単に謎解きを作成・回答できる「EnigmaPortals」をリリースしました!👓
## はじめに
皆様初めまして、[ヒデボー](https://x.com/yamarice428 “ヒデボー”)と申します!
プログラミングスクール「RUNTEQ」に入学し現在、WEBエンジニア転職を目指して学習&転職活動を行なっています!
今回、個人開発ポートフォリオとして[EnigmaPortals~謎クリエイト~](https://enigmaportals.com/)を開発しました!## サービス名
#### EnigmaPortals ~謎クリエイト~[![Image from Gyazo](https://i.gyazo.com/0d8b483df7e4c9eb17e3b01e828333da.png)](https://gyazo.com/0d8b483df7e4c9eb17e3b01e828333da)
#### ・サービスURL
https://enigmaportals.com/
#### ・Github URL
https://github.com/yamadahideto/EnigmaCraft
## サービス概要
自作の謎を投稿、**AIを使
書式指定文字列の不思議な挙動
# これは何?
書式指定文字列に変なこと書いてもエラーにならない事に気づいて、色々試してみた記録
# 各種言語の対応
## go
この現象を発見したのは go。
“`go:go
fmt.Printf(“%d %+d %++d %+++d %++++d\n”, 1, 1, 1, 1, 1)
//=> 1 +1 +1 +1 +1
“`二個以上書いても意味ないけど、エラーにならない。
`+` を書ける場所には ` ` も書けるが、意味的に共存できない。
戦わせると
“`go:go
fmt.Printf(“[%+d]\n”, 1) // [+1]
fmt.Printf(“[% d]\n”, 1) // [ 1]
fmt.Printf(“[%+ +d]\n”, 1) // [+1]
fmt.Printf(“[% + d]\n”, 1) // [+1]
“``+` が勝つ。
後勝ちだろうと予想していたので、予想が外れた。
## ruby
ruby も同様に `”%++++++++++++d” % 1` などはエラーにならない。
戦わせてみると
“`ru
Secrets Managerをrubyのコードから実行してみる
## はじめに
前からSecrets Managerを触ってみたいと思っていたので、今回使ってみることにしました。## secret managerとは
公式より
>AWS Secrets Manager は、データベース認証情報、アプリケーション認証情報、OAuth トークン、API キー、およびその他のシークレットをライフサイクルを通じて管理、取得、ローテーションするのに役立ちます。多くの AWS サービスは、Secrets Manager でシークレットを保存して使用します。例えば、Secrets Mangerを使用すると、APIによってデータベース認証情報を取得することができ、なおかつ鍵の更新を自動で行うことができます。
https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/intro.html
## Secrets Managerの設定方法
実際に、Secrets Managerの設定をして、使用してみたいと思います。
以下の手順でやっていきます。**新しいシークレットを保存する**
スケーラビリティを考慮したクラウドネイティブなスクラム開発の実践
## はじめに
こんにちは、皆さん。今回は、クラウドネイティブなスクラム開発においてスケーラビリティを考慮する方法についてお話しします。クラウドベンダーの多様なサービスを活用しながら、どのようにしてプロダクトのスケーラビリティを確保するかについて、具体的な例を交えて解説します。
## スケーラビリティとは?
まず、スケーラビリティとは何かを簡単におさらいしましょう。スケーラビリティとは、システムが負荷の増加に対してどれだけ効率的に対応できるかを示す指標です。具体的には、ユーザー数やデータ量が増加した際に、システムがどれだけスムーズに動作し続けるかが問われます。
## クラウドサービスの活用
### オートスケーリング
クラウドベンダーの多くは、オートスケーリング機能を提供しています。例えば、AWSのAuto ScalingやGoogle CloudのInstance Groupsを利用することで、負荷に応じて自動的にリソースを増減させることができます。これにより、ピーク時の負荷にも対応でき、コスト効率も向上します。
### サーバーレスアーキテクチャ
サーバーレスアー
Ruby 3.3 リファレンスマニュアルのEnumerableモジュールの概要を要約してみる※備忘録
私自身、リファレンスを見ることをしていなかったことを見直し、改めてリファレンスを見ながらRubyを学習しようと思い、早速mapメソッドが気になったので、以下のリファレンスを見てみることにした
Ruby 3.3 リファレンスマニュアル ライブラリ一覧 組み込みライブラリ Enumerableモジュール
https://docs.ruby-lang.org/ja/latest/class/Enumerable.html#I_ALL–3Fしかし読んでみると早速、要約で詰んでしまった。
<以下要約>
繰り返しを行なうクラスのための Mix-in。このモジュールのメソッドは全て each を用いて定義されているので、インクルードするクラスには each が定義されていなければなりません。Array, Hash, Range, Enumerator等のクラスで、 Enumerableモジュールはインクルードされています。ただし、効率化のため、そのクラスでEnumerableと同名・同等の機能を再定義(オーバーライド)しているケースも少なくなく、特にArrayクラスでは同名のメソッ
ユーザーアクセスログを監視するためのベストプラクティス
## はじめに
こんにちは、皆さん!今回は、ユーザーアクセスログを監視するためのベストプラクティスについてお話しします。クラウドベンダーの多様なサービスを活用しながら、効果的なログ監視を実現する方法を探っていきましょう。
## なぜユーザーアクセスログを監視するのか?
ユーザーアクセスログの監視は、セキュリティの強化、パフォーマンスの最適化、ユーザー行動の分析など、多くの利点があります。これにより、システムの異常を早期に検知し、迅速に対応することが可能になります。
## クラウドベンダーのサービスを活用する
### AWS CloudWatch
AWS CloudWatchは、AWSのリソースとアプリケーションの監視に最適なサービスです。ログデータを収集し、リアルタイムでモニタリングすることができます。アラームを設定して、特定の条件が満たされたときに通知を受け取ることも可能です。
### Azure Monitor
Azure Monitorは、Azureのリソースを監視するための包括的なソリューションです。ログデータを収集し、分析することで、システムのパフォーマンス
【Render × Xserver】独自ドメインでのデプロイ時の注意点と解決策
# はじめに
本記事では、「**Render**」にデプロイしたアプリを独自ドメインで公開する際の注意点と解決策についてまとめます。今回は、「**お名前.com**」での**ドメイン取得**ができなかったため、以前契約していた「**Xserver**」を利用しました。この記事が皆さんのお役に立てば嬉しいです!
https://www.xserver.ne.jp/
https://www.onamae.com/
# 前提/条件
– rails7系
– ruby3.2.3
– PostgreSQLを使用
– Renderでデプロイ済み
– Xserverでドメイン取得される方# 注意点
### XserverでDNSレコード画面で「DNSレコードの確認・設定を行うことができません」表示
![Xserver-error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3772961/024ae093-eeb1-2cd6-f3d8-4dcfb18d3a75.png)
DNSレコードの表示ができ
[個人開発] 食品の在庫を簡単に管理できるサービスを作ってみました
## はじめに
こんにちは。ryosuke([@ryousuke_doi](https://x.com/ryousuke_doi))と申します。現在プログラミングスクール RUNTEQ にて、Ruby on Rails を学習しています。
今回リリースしたサービスの紹介と開発の振り返りをまとめてみました。
記事を書くのが初めてなので、温かい目で見ていただけると幸いです。また、技術的な部分での誤りやサービスについての感想などありましたら、コメント等で教えていただけると助かります。
## 作成したサービスの紹介
[![Image from Gyazo](https://i.gyazo.com/385a7078b695448cfef79567d7cd142b.jpg)](https://gyazo.com/385a7078b695448cfef79567d7cd142b)### サービスURL(レスポンシブ対応済み)
https://pantry-chef-notifier.onrender.com
https://github.com/ryo-mogura/Pantry-Che
New Relic を使って Redmine のオブザーバビリティを実現
# はじめに
Redmine は、プロジェクト管理ができる人気のあるオープンソースのツールです。多くの企業や開発チームがタスク管理、バグトラッキング、ガントチャートなどの機能を活用して効率的にプロジェクトを運営しています。しかし、プロジェクトの規模が大きくなるにつれて、システムのパフォーマンスを監視し、最適化することが重要になってきます。ここで役立つのがNew Relicです。New Relicは、アプリケーションのパフォーマンスをリアルタイムでモニタリングし、問題を迅速に特定・解決するためのツールです。エンドユーザーの体験を向上させるために、リソースの使用状況、レスポンス時間、エラー率などを詳細に分析できます。これにより、 Redmine のパフォーマンスを向上させ、ユーザーの満足度を高めることができます。
Redmineはプラグインの導入などでカスタマイズされることが多いです。こうした場合、New Relicを使って収集したデータからボトルネックを特定したり、データベースのインデックスを見直す必要があるかどうかなどの洞察を得ることができます。
今回は Redmine
37signalsが書くコードの”Service Object”を見てみる
## 挨拶
自称、Ruby on Rails フロントエンドエンジニア🤣のnaofumiです。X [@naofumi](https://x.com/naofumi)では色々勝手なことを書いていますが、最近Qiitaも頑張り始めました。
それでは早速本題です!
## ええっ!!??
37signals商品のRailsコードって見られるの?そう!Ruby on Railsを開発した37signals社が、どのようにこのフレームワークを活用し、どのようなコードを書いているかを見ることができるのだ!
細かい話は省くが、7月3日に37signals社は[Writebookというアプリを新規に公開した](https://world.hey.com/jason/introducing-writebook-e217cae3)。自由にダウンロードでき、自分でサーバ(例えばさくらインターネットのサーバとか)を用意すれば、[簡単にインストール](https://books.37signals.com/2/the-writebook-manual/27/installation)できる。(
[作成中]RSpecについて初学者段階のメモ
※間違いなどございましたらご指摘いただけると幸いです
※随時更新予定# 概要
以下、https://semaphoreci.com/community/tutorials/getting-started-with-rspec より引用
> RSpec is a testing tool for Ruby, created for behavior-driven development (BDD). It is the most frequently used testing library for Ruby in production applications.
「RSpec は、ビヘイビア駆動開発 (BDD) 用に作成された Ruby のテスト ツールです。本番アプリケーションで最も頻繁に使用される Ruby のテスト ライブラリです。」(Google翻訳)– `RSpec`はRailsアプリケーションの開発で利用するテストツール
– Railsに最初から搭載されている”minitest”というテストツールも存在するが、RSpecが実質デファクトスタンダードとされ
【Ruby on Rails】Google APIを使ってSpread Sheetを操作する
いつも大変お世話になっている、
私が大好きなGem(というかGem集)google-api-ruby-client
https://github.com/googleapis/google-api-ruby-client/blob/main/docs/usage-guide.md
仕事でもHeavy useしていたり、
趣味でもなんだかんだで使ったり、
ソースコードを読んで勉強させてもらったりと、
個人的には結構思い入れがある技術です勝手に、もう記事を書いている気でいたが、
何も書いていなかったのでおさらいしとく。## GCPでAPIを有効にする
まずは、GCPで使いたいGemのAPIを有効にしておく。
例えばSpread sheetなら、
Google Sheet APIを有効にしておく![スクリーンショット 2024-07-09 21.53.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1290117/b9c67958-e365-dcaa-3665-d0151ee2c6
【Ruby on Rails】画面読み込み時にレコードがDELETEされる
## はじめに
Ruby on Railsを学習しているのですが、画面読み込み時の処理(詳細は後述)で登録したレコードが消えるという現象が発生しました。
結論から言うと私の勉強不足、仕様の理解不足によるものでした。
解決にあたり、モデル、アソシエーションの理解が深まったところもあったので、記録として残すことにしました。
コードも冗長ですが、ご容赦ください。## 開発環境
* Docker
* Ruby 3.3.3
* Rails 7.1.2## 起:機能の実装
### ■機能の概要
ブックマークの管理機能を作成していた。
![スクリーンショット 2024-07-09 17.03.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737553/45217d30-5df2-4e22-b5de-ac2f9c2bee96.png)
(グレーの背景がカテゴリ、グリーンの背景がフォルダの中身)これらはカテゴリ、フォルダ、ブックマークで要素が構成されている。
また階層イメージとしては以下の2種類が挙げ
「オブジェクト指向設計実践ガイド」を読んで、設計を学ぶ
# はじめに
業務をこなしていく中で、皆さん以下のように感じたことはないでしょうか?**「システムは動くけど、コードの設計は正しくできているんだろうか…」**
仕様を満たす実装は、ある程度経験を積んだエンジニアであれば問題ないと思います。
ただ、それでもレビューで「このメソッドは切り分けて…」など、設計に関する指摘が多いなと最近感じています。
なので、次にステップアップするためには、`設計`だと思い、以下の本を読み、学習しました。[オブジェクト指向設計実践ガイド 〜Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方〜](https://amzn.asia/d/21v0rNf)
自分は業務で主にRailsを扱っています。先輩エンジニアにもオブジェクト指向言語を扱う上での設計の良書とお聞きしました。
学んだ内容を、自分なりに言語化して、噛み砕いて整理しました。
その内容をアウトプットいたします。# 目次
1. [オブジェクト指向設計](#1-オブジェクト指向設計)
1. [単一責任のクラスを設計する](#2-単一責任のクラスを設計する)
1. [依存
Rails7.1、ruby3.34を詰まらずインストールしたい人へ
rubyのインストール中にライブラリ不足によるコンパイルエラーが複数回発生し、解消したら次のエラー、それも解消したらまた次の・・・のように無駄に時間がかかったので、スムーズにインストールできるようにまとめてみました。
## 環境
WSL(Ubuntu 22.04.4 LTS)## 手順
### 必要なライブラリをインストール
“`console
sudo apt update -y
sudo apt upgrade -y
sudo apt install build-essential -y
sudo apt install -y libssl-dev libreadline-dev zlib1g-dev libyaml-dev libz-dev libffi-dev
“`
### rbenvとrubyをインストール
“`console
# rbenvをインストール
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo ‘export PATH=”$HOME/.rbenv/bin:$PATH”‘
Ruby技術者認定試験に合格してみて【Silver編】
## はじめに
2024年の6月27日に**Ruby Association Certified Ruby Programmer Gold version 3**(以下「Ruby Gold」)に合格しましたので、どのように勉強したのか、実際に役立ったのか等を**Silver編**と**Gold編**の二つに分けて記事にしようと思います。
Silverは90点で合格しました。![スクリーンショット 2024-07-08 21.22.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636995/3ea1d68e-c013-4d17-1e75-c222c1cef8a5.png)
## Ruby技術者認定試験とは
Rubyベースのシステムを設計、開発、運用するエンジニア、Rubyでシステム提案を行うコンサルタント、Rubyを教える講師及びRubyを学ぶ学生などを対象とした認定試験制度です。
### Silver
Rubyの文法知識、Rubyのクラスとオブジェクト、標準ライブラリの知識について、基
【DP】動的計画法をRubyで学ぶ
# はじめに
競技プログラミング的なものに少し手を付け始めている中、解けそうで解きにくい(工夫orゴリ押しでなんとか解けるような)カテゴリーの問題があった。どうやら、そいつは***DP***というアルゴリズムを用いると解きやすいようで、競プロ初心者がブチ当たる壁でもあるらしい。調べてみると難しそうなのと、Rubyを用いた参考例があまり見当たらないので、本記事にアウトプットしながら少しずつ理解を深めていく。# DPとは
動的計画法(***Dynamic Programming***)https://ja.wikipedia.org/wiki/%E5%8B%95%E7%9A%84%E8%A8%88%E7%94%BB%E6%B3%95
>対象となる問題を複数の部分問題に分割し、部分問題の計算結果の記録を利用して全体の問題を解く手法を総称してこう呼ぶ。https://zenn.dev/sena21/articles/d64aa8b5d10e13
>動的計画法(Dynamic Programming)は、複雑な問題をよりシンプルな部分問題に分割し、それぞれの部分問題の解を再利用するこ
Rails view helperとテストのリファクタリング:モックをcode smellと感じること
## はじめに
自称、Ruby on Rails フロントエンドエンジニア:joy_cat:のnaofumiです。X [@naofumi](https://x.com/naofumi)では色々勝手なことを書いていますが、最近Qiitaも頑張り始めました。
## 先日のview helperテストのリファクタリング
先日、[Railsのviewテストを書こう](https://qiita.com/naofumik/items/9136c830ed3b8a16b4e8)って記事を書いたが、[view helperおよびそのテストのコード](https://qiita.com/naofumik/items/9136c830ed3b8a16b4e8#現状の並べ替えのステートによって並べ替え矢印の表示を変えるヘルパー)があまりイケてなかった。
そこで今日は、view helperテストのリファクタリングを一緒に考えていきたいと思う。
## 対象のコード
作ろうとしている`ordering_arrow` helperメソッドは、下記のようなテーブルの並べ替えに使う三角ボタンの箇所。
RailsのCSRF保護について
今回は新規プロジェクトで実際に遭遇した**CSRF保護**について学んだことをまとめます。
## CSRFとは
CSRF(Cross-Site Request Forgery)を簡単に説明すると、悪意のあるユーザーがサーバーへのリクエストを捏造して正当なものに見せかけ、認証済みユーザーを装うという攻撃手法です。Railsでは、一意のトークンを生成して送信のたびに真正性を確認することでこの種の攻撃から保護します。
(引用サイト:https://techracho.bpsinc.jp/hachi8833/2021_11_26/46891)これだけでは「なんのこっちゃ、、。」となるため噛み砕いて説明します。
もしかしたら一度は見たことあると思いますが、HTMLのheadタグに「= csrf_meta_tags」なんて見たことはありませんか?
※コードはslim形式になっています。その「= csrf_meta_tags」が私たちが気づかないうちに、セキュリティーをかけていてくれました。
## 「= csrf_meta_tags」の役割
この記述の役割としては、サイトのHTMLに一意
超初心者のためのRSpec入門ガイド
こんにちは!この記事では、RubyのテストツールRSpecの使い方を超初心者の私が説明します。一緒にステップバイステップで学んでいきましょう!
### 目次
1. RSpecって何?
2. RSpecのインストール方法
3. RSpecの基本的な使い方
4. 実際にテストを書いてみよう!
5. まとめ# 1. RSpecって何?
RSpecは、Rubyというプログラミング言語で書いたコードが正しく動くかどうかをチェックするためのツールです。コードを書いた後に「ちゃんと動くかな?」と確かめる手助けをしてくれます。# 2. RSpecのインストール方法
まず、RSpecを使うためにインストールします。以下のコマンドをターミナルで実行してみてください。
“`
gem install rspec
“`
Bundlerを使っている場合は、Gemfileに以下を追加してからbundle installを実行します。
“`
group :test do
・・・
gem ‘rspec’
・・・
end
“`
これでRSpecの準備が整いました!# 3. RSpec