Ruby関連のことを調べてみた2022年03月29日

Ruby関連のことを調べてみた2022年03月29日
目次

【Ruby】Googleカレンダーに服薬記録をつけるAlexaスキル作ってみた

# 背景

最近買ったEcho Show 5で、頓服薬の服薬記録をつけられたら便利だなと思ったことがきっかけです。

– 既存の服薬記録系Alexaスキルだと、Echo Showやスマホの画面で記録を確認することが難しそう
– スマホからの記録の表示や変更・削除はできるだけ楽に実現したい(できれば開発したくない)ので、記録をGoogleカレンダーに予定として入れたい
– 利用者(家族)が使いやすいよう、できるだけシンプルな操作で記録をつけたい
– Alexaのデフォルトカレンダーとして設定しているGoogleカレンダーと、服薬記録用のGoogleカレンダーを別IDに分けたい

という理由で、自分でスキルを作ることにしました。

# 概要
スキルを呼び出すと、話しかけた内容によって下記3つの挙動をします。
1. 「アレクサ、[スキル名]を開いて、記録をつけて」
→Googleカレンダー上に、現在時刻〜5分後の予定(=服薬記録)を作る
2. 「アレクサ、[スキル名]を開いて、記録を見せて」
→画面に当日の服薬記録を表示する
3. 「アレクサ、[スキル名]を開いて」
→利用方法の案内を

元記事を表示

Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂3版 のコマンドまとめ

# 目的
Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂3版で学習したコマンドを随時まとめていきます。

最終的には、Ruby on Rails を AWSで動かします。

## コマンドまとめ

### ネットワーク関連のコマンド
「ping」「traceroute」「telnet」「nslookup」「dig」

## 個人的に使用したツール
* AWS構成図作成
https://www.diagrams.net/

元記事を表示

タグ付け機能

# タグ付け機能の実装
## 概要
– ポートフォリオ作成として、学習マッチングサイトを作成。サイト内で講座を作る際にタグ付けを実装したい。
– ユーザーが自由にタグ付けできるようにしたい。
## 環境
– Rails 5.2.6
– ruby 2.6.3
## アソシエーション
![6ab4f133dfb54bd244def97a350b6d3e.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1923339/09bc2f44-8b8e-c54d-a0e1-acdbf83bc5d8.png)
講座(Lessonsテーブル)は複数のタグを持ち、タグ(Tagsテーブル)は複数の講座を持つため、講座:タグ=多:多となるため、中間テーブルとして、TagListsテーブルを作成した。
## テーブル定義
[![Image from Gyazo](https://i.gyazo.com/f0670c7ffdc63ac92e8c8b122e24a1a0.png)](https://gyazo.com/f0670c7f

元記事を表示

Railsでアプリ作成時に、使用可能なバージョンを確認する方法

# 結論

ターミナルで以下を入力

“`
% gem list rails
“`
これで使用可能なバージョンが表示されます

“`
*** LOCAL GEMS ***

rails (5.0.1, 4.2.6, 4.2.5, 4.1.6)
“`

## ちなみに
バージョンを指定してアプリを立ち上げる場合
“`
rails _5.0.1._ new アプリ名
“`
これで指定のバージョンでアプリを作成できます。

以上です

元記事を表示

【LeetCode】83. Remove Duplicates from Sorted Listを解いてみた

## はじめに
コーディングテスト対策としてLeetCodeの83. Remove Duplicates from Sorted Listを解いていく。

## 問題文を和訳
– ソートされた連結リストの先頭を指定して、
– 各要素が1回だけ表示されるように、すべての重複を削除します。
– ソートされた連結リストも返します。
– Input: head = [1,1,2,3,3]
– Output: [1,2,3]

## 回答
“`83._RemoveDuplicatesfromSortedList.rb
def delete_duplicates(head)
current = head
if head == nil
return head
end
while current.next != nil
if current.val == current.next.val
current.next = current.next.next
else
current = current.next
end
end

元記事を表示

【LeetCode】70. Climbing Stairsを解いてみた

## はじめに
コーディングテスト対策としてLeetCodeの70. Climbing Stairsを解いていく。

## 問題文を和訳
– あなたは階段を上っています。
– 頂上に到達するにはn段あります。
– 毎回、1段または2段登ることができます。
– いくつの方法で頂上に登ることができますか?
– Input: n = 3
– Output: 3
– Explanation: There are three ways to climb to the top.
1. 1 step + 1 step + 1 step
2. 1 step + 2 steps
3. 2 steps + 1 step

## 回答
“`70. Climbing Stairs.rb
def climb_stairs(n)
num1 = 0
num2 = 1
for i in 0…n do
num3 = num1 + num2
num1 = num2
num2 = num3

元記事を表示

docker-compose.ymlを和訳したら思いの外わかりやすかった!

ふと、docker-compose.ymlを和訳してみたところ、日本語というだけで意外とわかりやすく感じたのでみんなにも共有したい : )
# docker-compose.ymlでよく使うオプション詰め合わせのサンプル

## 英語バージョン(通常)
“`docker-compose.yml
version: ‘3’

services:
db:
image: mysql
container_name: db
restart: always
environment:
MYSQL_PASSWORD: foobar
MYSQL_PORT: 3306
command: –default-authentication-plugin=mysql_native_password
volumes:
– db:/var/lib/mysql
app:
build:
context: .
dockerfile: ./dev/docker/Dockerfile
envir

元記事を表示

【Rails】ENV[]とENV.fetch() {}の違い【Ruby】

## はじめに
 本記事は、プログラミング初学者、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

## `ENV[]`と`ENV.fetch() {}`の違い
`ENV[]`と`ENV.fetch() {}`の違いは指定した環境変数が存在しない場合に`nil`を返すかデフォルト値を返すかの違いです。

例えば、以下の場合には、`RAILS_MAX_THREADS`、`DB_USER_NAME`、`DB_USER_PASSWORD`が存在しない場合にはnilとなります。
“`detabase.yml

default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.["RAILS_MAX_THREADS"] %>
username: <%= ENV.["DB_USER_NAME"] %>
password: <%=

元記事を表示

Rails チュートリアルを終えて

 Qiita初投稿です。私は現在、都内の私立大学の新3年生です。昨年の夏頃からプログラミングに興味を持ち、独学による学習を続けてきました。Virtual Box を利用した環境構築、「Rails Tutorial」やDotinstall など様々な教材に触れてきました。これらの経験から現状を振り返り、これからの目標設定を考えたいと思います。

 ※この記事は第三者に閲覧していただくことを目的としていません。あくまで、自己完結する記事となります。

現在の目標は、SNSアプリをポートフォリオとして作成することです。そのために必要な知識をqiita などを通じて模索する予定です。

これまでやったこと(3/27現在)
• Rails Tutorial
一周目: 理解度は60%ほど。章にもよるが、一章を読むのに2~3日ほどかかった。モチベの維持が難しいと感じた。開発の大まかな概要を理解した。
二周目: コードの細部やテスト(TDD)の流れ、REST API など一周目では見落としていた概念を理解した。また、各リソース毎に仕組みを適宜、紙などにフローチャートなどで分かりやすくまとめた。し

元記事を表示

Rubyスクリプトをどうコンパイルするのか?

前回の記事では、字句解析、そして構文解析までをご紹介しました。
今回の記事は前回の内容がモリモリに必要になるので、読んでいない方がいらっしゃいましたら以下の記事をご覧ください。

https://qiita.com/wangqijiangjun/items/fa153176f7b410cb4a5f

前回の記事で以下のような画像を提示しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485775/7e628acd-0c13-02c6-d318-5b5d0e01ec00.png)
この続きが以下の画像になります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485775/b16d0910-8ad2-b743-81ec-c778ea715bd4.png)

今回は、構文解析の次である「コンパイル」~「YARV」までを見ていこうとおもいます。
こちらも中々の重厚感があるのでめげずに頑

元記事を表示

Ruby on Rails 超簡単レベル上げ機能

5投稿ごとに1レベ上がる。
次のレベル上がるまであと何投稿かを表示する。
“`ruby:users_controller
def show
@user = User.find(params[:id])
@count = @user.tweets.count
@level = @count / 5
@next_level = 5 – (@count % 5)
end
“`

“`erb:users/show.html.erb

投稿数<%= @count %>

<%= @level %>Lv

あと<%= @next_level %>投稿でレベルup

“`

![スクリーンショット 2022-03-27 19.44.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1081227/fec181f8-a831-7145-e8f0-441637226993.png)

元記事を表示

DockerでRuby on Railsの環境を構築する際のDockerfileのコマンド及びコード理解

## なぜ記事を書こうと思ったか
Rails用のDockerfileを作成する際にコマンド及びコードの理解を備忘録として残すため。

## Dockerfileとコマンド説明
Dockerfile
“`
FROM ruby:[バージョン]
RUN set -x && curl -sL https://deb.nodesource.com/setup_14.x | bash –

RUN set -x && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add – && \
echo ‘deb http://dl.yarnpkg.com/debian/ stable main’ > /etc/apt/sources.list.d/yarn.list

RUN set -x && apt-get update -qq && apt-get install -yq nodejs yarn vim default-mysql-client

RUN mkdir /app
WORKDIR /app
COPY

元記事を表示

RubyとPHPの比較(クラス、インスタンス、継承、オーバーライド)

# この記事の概要
Rubyで学習を始めてPHPに言語チェンジをする人が一定数いるみたいなので
そういった人達が参考にするための記事です。

これらの記事の続きです。

https://qiita.com/Hashimoto-Noriaki/items/82beae9d3d6dac11e11c
https://qiita.com/Hashimoto-Noriaki/items/449c00327e99574e430a
https://qiita.com/Hashimoto-Noriaki/items/96eadd7076675fe19dc9

# クラス

⚫︎“`Ruby“`

“`rb
class Dog
def initialize(name,kind,weight)
@name = name
@kind = kind
@weight = weight
end

def feed(eat)
@weight += 1
puts “重さ:#{@weight}kg

元記事を表示

【個人開発】温泉宿の情報交換ができる掲示板とSNSが組み合わさったサービス「みんなの温泉宿」を開発しました。

# はじめに
こんにちは。ひろかずと申します。独学でプログラミングを学んだ後、タイトルにあるようなサービス「[みんなの温泉宿](https://minnano-onsenyado.herokuapp.com)」を作ってみました。
作ろうと思った理由は主に以下の2点です。
##### ①自分自身が温泉宿に泊まってのんびりすることが好きで、情報交換ができる場を作りたかった。(掲示板)
##### ②温泉宿が好きな人同士で繋がれる場を作りたかった。(SNS)
これら①②を合体させて、掲示板+SNSの機能を持ったサービスとなりました。
![無題9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2493043/5aa13fc4-854a-f352-e75c-ee0b2dc4e1f3.png)

# 工夫した点
##### ①会員登録無しでも使用可能
まずは誰でも気軽にお試し感覚で使ってもらいたいと思い、登録無しでも口コミ投稿・掲示板書き込み機能を使えるようにしました。その場合、その方の名前は「名無しさん」となり

元記事を表示

いいねボタンのAjaxが機能しません。リロードをしなければ反応しません。

# エラー
いいねボタンを押しても反応しません。

### destroy
エラーメッセージがなかったのでログを載せました。
“`
Started DELETE “/favorites/4950” for 14.12.68.160 at 2022-03-27 02:18:28 +0000
Cannot render console from 14.12.68.160! Allowed networks: 127.0.0.0/127.255.255.255, ::1
Processing by FavoritesController#destroy as JS
Parameters: {“authenticity_token”=>”*******==”, “id”=>”4950”}
User Load (0.2ms) SELECT “users”.* FROM “users” WHERE “users”.”id” = ? LIMIT ? [[“id”, 1], [“LIMIT”, 1]]
↳ app/helpers/sessions_helper.rb:17:in `c

元記事を表示

【LeetCode】69. Sqrt(x)を解いてみた

## はじめに
コーディングテスト対策としてLeetCodeの69. Sqrt(x)を解いていく。

## 問題文を和訳
– 負でない整数xが与えられた場合、xの平方根を計算して返します。
– 返されるタイプは整数であるため、10進数は切り捨てられ、
– 結果の整数部分のみが返されます。
– 注: pow(x、0.5)やx ** 0.5などの組み込みの指数関数や
演算子を使用することは許可されていません。
– Input: x = 8
– Output: 2
– Explanation: The square root of 8 is 2.82842…,
and since the decimal part is truncated, 2 is returned.

## 回答
“`69_Sqrt(x).rb
def my_sqrt(x)
left = 0
right = x
while left <= right middle = (left + right) / 2 if middle * middle ==

元記事を表示

【LeetCode】67. Add Binaryを解いてみた

## はじめに
コーディングテスト対策としてLeetCodeの67. Add Binaryを解いていく。

## 問題文を和訳
– 2つの二進数文字列aとbが与えられた場合、
– それらの合計を二進数文字列として返します。
– Input: a = “1010”, b = “1011”
– Output: “10101”

## 回答
“`67_AddBinary.rb
def add_binary(a, b)
return (a.to_i(2) + b.to_i(2)).to_s(2)
end
“`

## 最後に
難易度はEasyでした。

元記事を表示

Rubyスクリプトの字句解析

Rubyを触っていく中で、「Rubyはどんな過程を経てコードが理解されて処理されるんだろう」と思って書籍を読んでそのアウトプットをしていこうとおもいます。

## 処理の流れ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485775/7e628acd-0c13-02c6-d318-5b5d0e01ec00.png)

全体的な処理の流れはこのような感じです。まずは全体の流れを抑えることが大事になりそうです。
この記事では、字句解析と構文解析までを書こうとおもいます。

## 字句解析
以下のコードを“`simple.rb“`ファイルに記述し、実行してみます。
“`
10.times do |n|
p n
end

# =>0
1
2
3
4
5
6
7
8
9
“`
まず、この文字列に遭遇すると、Rubyは**字句解析**を行います。
>字句解析とは、自然言語の文やプログラミング言語のソースコードなどの文字列を解析して、後半の狭義の構文解析で最小単位(終端記号)となってい

元記事を表示

【初心者用】RubyでJSONを扱ってみよう

# 1.やりたいこと
Slack上でのやり取りをJSON形式で出力してきて、その内容を分析したい。
具体的には、次の3つを行うプログラムを作成したい。

– 発信が多かったチャンネルベスト3を特定したい。
– “`high_motivation_user_aggregator.rb“`
– スタンプを多く押したユーザーベスト3を特定したい。
– “`kind_user_aggregator.rb“`
– 一番スタンプを獲得したメッセージを特定したい。
– “`poupular_message_aggregator.rb“`

また、Slackから出力したJSONデータの構成については、次の記事を参照すること。
[Slack からエクスポートしたデータの読み方](https://slack.com/intl/ja-jp/help/articles/220556107-Slack-%E3%81%8B%E3%82%89%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E3%81%97%E3%81%

元記事を表示

【個人開発】筋トレ × 音ゲー × EDMの新感覚トレーニングアプリ「Muscle Beat」をリリースしました?

[![Image from Gyazo](https://i.gyazo.com/e53f4d2fd2bde97ad508a7716e5ad6ed.png)](https://www.muscle-beat.com)

EDMの音ゲーに合わせて筋トレを行えるサービスをリリースいたしました!

**▼ サービスURL(スマホ専用)**
https://www.muscle-beat.com

**▼GitHub**
https://github.com/jibiking/muscle_beat

## はじめに

はじめまして!
[駆け出し筋肉エンジニアのJibiki](https://twitter.com/ji_bi__)と申します?

– **時間がなくとも、筋トレを知らなくとも、楽しくトレーニングを行えるサービスを開発したい!**
– **普通の筋トレでは満足できない体の人でも楽しめるサービスを開発したい!**

そのような想いから、Muscle Beatの開発に至りました?

## トレーニング手順

**1. All Beats画面からプレイしたい曲を選択**
★ モ

元記事を表示

OTHERカテゴリの最新記事