【おすすめ】ビットコイン自動売買システムを作りながらRubyを学ぼう

f:id:nkeke0:20210331103144p:plain

はじめに

プログラミングの学習に効率的なことは手を動かしながら、実際に動くものを作ることです。

ですが、自分で考えたシステムを作るということは、最初は難しい。

3500人以上の人が利用した、ハンズオン形式でRubyを学ぶのに最適な教材を紹介します。

Ruby初学者や、ビットコインの自動売買システムを構築したいという方へおすすめします。

 

Rubyで作る! ビットコイン自動売買システム

このプログラムで身につけれること

 ・Rubyの基礎(変数や配列等の考え方など、必須の基礎知識)

APIの使い方

ビットコインの自動売買システムの構築

プログラム製作者紹介

ざっくりと紹介しますが、とてもすごい方です。

 

製作者:迫 佑樹

・1996年生まれで年商10億の最強経営者

・3000人以上プログラミング指導経験あり

・運営しているオンラインスクールは1万人以上の受講者あり

プログラム内容

レクチャーの数: 21 • 総時間: 2時間54分

2時間54分でRubyの基礎から、API操作まで学べてしまいます。

 

 前提条件

bitFlyerAPIを使用するため、bitFlyerのアカウントが必要です。

 

内容

Rubyに入門しよう

・環境構築

・はじめてのRuby

・計算をしてみよう

・変数を使ってみよう

・配列の基礎を理解しよう

・おみくじを作ってみよう

・メソッドについて理解しよう

・条件分岐について理解しよう

・繰り返しについて理解しよう

・ハッシュについて理解しよう

・ここまでの総まとめ&演習

 

bitFlyerAPIを使ってみよう

APIとは何かを理解しよう

ビットコインの現在価格を取得してみよう

ビットコインAPIキーを発酵しよう

ビットコインの買い注文をだしてみよう

・処理をまとめて扱いやすくしよう

・現在の資産の残高を取得してみよう

・簡易売買機を作ってみよう

・特殊注文について理解しよう

・まとめと今後の学習について

 

おすすめポイント

1, 3500人以上が受講する人気講座

 Rubyの基礎を学びつつ、ビットコインの自動売買システムを構築できる充実したコンテンツになっているため、とても人気です。

人気の理由は"わかりやすさ"だと思っています。

プログラミング初心者がわかるよう設計されたプログラムなので、安心して受講できます。

 

2, 学びながら自動売買システムを構築できる!

プログラミングの基礎を学ぶチュートリアルで、よくTODOリストを作るチュートリアルは数多くあります。

しかし、自動売買システムを作りながら基礎を学ぶということはなかなか見たことがありません。

ビットコインの自動売買システムを作りたいという目的だけで受講するのもありだと思っています。

 

終わりに

こちらのプログラムを製作した迫 佑樹さんは、自己投資が大事だと仰っていました。

独学で分厚い本を持ってプログラミングを学習するのは初学者としては理解できないことも多いでしょう。

このような学習教材を利用することは、プログラム作成者が知識を噛み砕き、わかりやすく説明してくれているので、初学者でも理解しやすいと思います。

自己投資して知識を増やす近道を進みましょう!

 

Rubyで作る! ビットコイン自動売買システム

 

【解決】undefined method 'flash' for#<ActionDispatch::Request>

f:id:nkeke0:20210331103144p:plain

はじめに

Vue.js + RailsAPIモードで開発中に突如として現れたエラーです。

 

 
 undefined method 'flash' for#<ActionDispatch::Request>
 

 

原因、解決方法を記載します。

 

RailsAPIモードにする方法はこちら 

 

解決方法

flashメソッドが未定義だと言われているのでapplication.rbに定義してあげます。

 

 config/application.rb
 
 $ config.middleware.use ActionDispatch::Flash
 

 

原因 

Rais 5から実装されたAPIモードには以下のような特徴があります。

 

・不要なGemgemfileから省いている

・不要なRack middlewareを省いている

Generatorviewhelperを生成しない

 

2つ目の特徴にある、”不要なRack middlewareを省いている”ところが今回のエラー原因につながります。

 

省いているRack middlewareの中に、ActionDispatch::Flashがあるので、Flashが未定義となり、undefined method 'flash' for#<ActionDispatch::Request>のエラーが発生していました。

参考

Rails5 + APIモードで後からdeviseを使おうとした時のエラー対応 - Qiita

Rails ユーザー必見!Rais 5の注目新機能と変更点まとめ | Wantedly Engineer Blog

【Rails】DBをPostgreSQLに変更する手順

f:id:nkeke0:20210331103144p:plain

はじめに

Rails開発途中に、DBsqliteを使用していたけれど、PostgreSQLに変更したい!

このような時にPostgreSQLのインストールから、RailsPostgreSQLを使えるようにするまでを記載いたします。

 

 

PostgreSQLをインストール

 
 $ brew install postgresql

 //インストールが正常にできたか確認
 $ postgres --version
 postgres (PostgreSQL) 12.4
 

 

PostgreSQLセットアップ

PGDATA設定

.bash_profileファイルに PostgreSQLを追加

ターミナルで以下コマンドを入力して.bash_profileを開きます。

 
 $ vi .bash_profile
 

以下順番で.bash_profileに追記します。


 // 1.カーソルの位置で入力モードに切り替え
 i
 // 2. PostgreSQL 追加
 export PGDATA=/usr/local/var/postgres

 // 3.コマンドモードに切り替え
 esc

 // 4.保存して終了
 :wq
 

 

保存できたら、cat .bash_profileをターミナルで実行し、ファイルの中身を確認しましょう。

export PGDATA=/usr/local/var/postgresが記載されていることを確認し、以下コマンドでシェルの設定ファイルを反映させます。

 
 $ source ~/.bash_profile 
 

データベース接続ユーザを作成

 
 //MyAppという名前のユーザーを作成
 $ createuser MyApp
 
 //パスワードが必要な場合
 $ createuser MyApp -P
 

DB作成

-Oオプションで先ほど作成したユーザーをオーナーに指定します。

 
 $ createdb MyApp_dev -O MyApp
 

Posgreユーザー作成の際に、バージョンの互換性によるエラーがでた場合


 The data directory was initialized by PostgreSQL version 11, which is not compatible with this version 12.4.
 

現在のバージョン12.4だが、バージョン11にする必要があるよ、と言われてエラーになってます。

以下方法で対処しましょう。

 
 //バージョン11をインストール
 $ brew install --build-from-source postgresql@11

 //バージョン12.4を停止し、新しくインストールしたバージョン11を起動する。

 $ brew services stop postgresql@12 //12は停止
 $ brew services start postgresql@11 //11を起動
 

DBが正常に起動するか確認

・DB起動

 
 $ brew services start postgresql
 

・ユーザー情報を確認

 
 $ psql -c 'select * from pg_user' postgres
 

・DBの一覧を表示

作成したDBの名前やオーナー等を一覧で表示します。

 
 $ psql -l
 

*ユーザー、DBを削除する方法

不要なユーザー、DBがあれば以下コマンドで削除可能です。

 
$ dropuser ユーザ名 //ユーザー削除
$ dropdb DB名 //DB削除
 

・作成したユーザーへ権限付与

権限を付与するのに必要な、macのユーザー名を確認します。

 
 $ whoami
 例) taro // macのユーザー名
 

次にpsqlコマンドで作成済みのデータベースに接続し権限を付与します。

DBへの接続は次のようにして行います。

 
 $ psql -U taro(macのユーザー名) MyApp_dev
 
 $ psql -U kenta MyApp_test
  psql (13.2, server 11.11)
  Type "help" for help.

  //ユーザー一覧を表示
  MyApp_test =# \du
  List of roles
 Role name | Attributes | Member of
  -----------+------------------------------------------------------------+-----------
  MyApp | | {}
  macのユーザー名 | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 
  //MyAppにSuperuserの権限を付与
  MyApp_test =# ALTER ROLE "MyApp" WITH Superuser;
  //再度ユーザー一覧を表示しMyAppにSuperuserの権限が付与されたか確認
  ALTER ROLE
  RestockInventory=# \du
  List of roles
  Role name | Attributes | Member of
  -----------+------------------------------------------------------------+-----------
  MyApp | Superuser | {}
  macのユーザー名 | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

  RestockInventory=# \q //操作終了
 

 DBが正常に起動し、作成したユーザー、DB等の確認が終わったら起動しているDBを止めておきましょう。

 
 $ brew services stop postgresql
 

 

Railsの設定

ここからは先ほどセットアップを行なったPostgreSQLRailsに適用していきます。

Gemfileの変更

初期設定のsqliteコメントアウトgem 'pgを指定

/Gemfile
 
 # gem 'sqlite3', '~> 1.4'
 gem 'pg'
 

ターミナルにてbundle installを実行しましょう。

 
 $ bundle install
 

config/database.ymlを書き換え、作成したPostgreSQLを指定する

 config/database.yml
 
 default: &default
  # adapter: sqlite3
  adapter: postgresql #変更
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000
  encoding: utf8 #変更
  username: MyApp # 追加
  password: # 追加
  host: localhost # 追加

 development:
  <<: *default
  # database: db/development.sqlite3
  database: MyApp_dev #変更

 test:
  <<: *default
  database: MyApp_test #変更

 production:
  <<: *default
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
 

 DB動作確認

migrateをリセットし、seedデータを入れてDBの動作確認を行います。

 
 $ rails db:migrate:reset
 $ rails db:seed
 

テストデータを挿入できたら以下コマンドでデータベースの中身を確認して見ましょう。

 
 $ rails db
 psql (13.2, server 11.11)
 Type "help" for help.
 MyApp_development=# SELECT * FROM [モデルで作成されたテーブル名];
 

おわりに

以上で、RailsPostgreSQLの導入が完了しました!

少し長くなってしまいましたが、読んでいただきありがとうございます。

ただ最初からPostgreSQLを指定して開発環境を作成していた方が、おそらくというか確実に楽でしょう。。。

 

Ruby on Railsを学びたい方へ

【おすすめ Udemy】よくわかるRuby on Rails入門 オンライン講座

 

参考サイト

PostgreSQLのインストールからRailsでのDB変更まで - Qiita

Ruby on Rails + Vue.js Vuetifyを導入する方法

f:id:nkeke0:20210331103144p:plain

はじめに

Rails + Vueで、Vuetifyを導入しました。

Railsを使っているから特別なものをダウンロードをする、というのはありませんが、導入しウェブアプリを開発する機会がありましたので導入方法を記載します。

 

Ruby on Railsを基礎から学びたい】よくわかるRuby on Rails入門 オンライン講座

Vuetifyをインストール


 yarn add vuetify
 
 

Vuetifyの読み込み

デフォルトで作成されている"app / javascript / packs / hello_vue.js"を編集


 import Vue from "vue";
 import Vuetify from "vuetify"; // 追加
 import "vuetify/dist/vuetify.min.css"; // 追加
 import App from "../app.vue";

 Vue.use(Vuetify); // 追加
 const vuetify = new Vuetify(); // 追加

 document.addEventListener("DOMContentLoaded", () => {
 const app = new Vue({
 vuetify, // 追加
  render: h => h(App)
 }).$mount();
 document.body.appendChild(app.$el);

 console.log(app);
 });
 
 

ファイルの作成

Vue-routerをインストール


 yarn add vue-router
 
 

javascript/app.vueを編集

 
<template>
 <div id="main">
  <v-app id="app"> //vuetifyを機能させる為に追加
   <router-view></router-view>
  </v-app>
 </div>
</template>

<script>
import Vue from 'vue'
import VueRouter from 'vue-router'

import Test from 'Test.vue'

const router = new VueRouter({
 routes: [
 { path: '/',
  component: Test }
 ]
 })

 Vue.use(VueRouter)

 export default {
 router
 }
</script>
 
 

javascript/Test.vueを編集し、Vuetifyv-file-inputを使用し表示されるか確認


<template>
  <v-file-input truncate-length="15"></v-file-input>
</template>

無事にファイル用インプットボックスが表示されていればRuby on RailsVuetifyの導入完了です!

 

参考サイト

ファイルインプット・コンポーネント — Vuetify

【Rails6】10分でRails + Vue + Vuetifyの環境を構築する - Qiita

 

Ruby on Rails APIモードにする方法

f:id:nkeke0:20210331103144p:plain

はじめに

既存のRuby on Railsで作成していたwebアプリケーションを、

フロントをVue.js、バックエンドをRailsとする為にAPIモードを使用しました。

当初Vue.jsを使う予定ではなかったのですが、開発途中で使用することになりましたので、APIモードにする方法方法を記載いたします。

 

【おすすめ】よくわかるRuby on Rails入門 オンライン講座

Ruby on RailsのアプリケーションをAPIモードに実装

まず、Vue.jsのダウンロード


./bin/rails webpacker:install:vue
 

config/application.rbApplicationクラス定義の冒頭に追加


config.api_only = true
 

Apiコントローラーを作成

app/controllers/ api_controller.rb
 
end
 

コントローラーの編集

app/controllers/api/v1配下にSampleControllerを配置し、Api::V1::SampleControllerのように記述


class Api::V1::SampleController < ApiController
before_action :set_employee, only: [:show]

def index
sample = Sample.all
render json: sample
end

def show
render json: @sample
end

private

def set_sample
@sample = Sample.find(params[:id])
end
end
 

API コントローラへのルーティングを追加


Rails.application.routes.draw do

# APIコントローラへのルーティング
namespace :api, {format: 'json'} do
namespace :v1 do
resources :sample, only: [:index, :show]
end
end
end
 

rails serverを立ち上げ、http://localhost:3000/api/v1/sampleにアクセスする。

モデルデータがJson形式で表示されていればOK

これでRailsAPIとしてバックエンドの役割を担ってもらえます。

 
参考

【解決】Vue.js [Vuetify] Unable to locate target [data-app] エラーの解決方法

Vue.js [Vuetify] Unable to locate target [data-app] エラーの解決方法

はじめに

Vuetifyを使用して”[Vuetify] Unable to locate target [data-app]”というエラーが出ました。

Vuetifyの公式サイトに記載のコードをコピペしただけでは、サンプルのように動かないことがあります。

 

【おすすめ】フロントエンドエンジニアになりたい人の Webプログラミング入門  

解決方法

<v-app></v-app>で要素を囲っているか確認する。

例えば、VuetifyDate pickersを利用する場合


 <template>
 <v-row justify="center">
 <v-date-picker v-model="picker"></v-date-picker>
  </v-row>
 </template>
 <script>
 export default {
   data () {
   return {
    picker: new Date().toISOString().substr(0, 10),
   }
   },
 }
 </script>
 

Vuetify公式のコードをそのままコピペしましたが、このままではうまく動きません。

なので、<v-app></v-app>で要素を囲います。

 
 <template>
  <v-app id="app">
  <v-row justify="center">
   <v-date-picker v-model="picker"></v-date-picker>
  </v-row>
  </v-app>
 </template>
 <script>
 export default {
  data () {
   return {
    picker: new Date().toISOString().substr(0, 10),
   }
  },
 }
 </script>
 

 

Vue-routerを利用している場合は、App.vue<router-view />を囲んであげれば大丈夫です。


 <template>
 <main>
  <v-app id="app">
   <router-view/>
  </v-app>
 </main>
 </template>
 

 

 

合格したい皆様へ udemyでAWS関連の模擬試験を実施した感想

合格したい皆様へ udemyでAWS関連の模擬試験を実施した感想

はじめに

現在利用者が増えているAWSサービスの試験について、受験を検討している方も多いと思います。

私もAWSサービスに触れたことはない状態でしたが、今後のためにと思い試験の受験を決意いたしました。

色々リサーチしたところUdemyというオンライン学習プラットフォームを利用し、AWS認定クラウドラクティショナー試験とAWS認定ソリューションアーキテクト試験の模擬試験を購入して勉強し、無事合格することができました。

Udemyを利用してみて、試験に合格したいと思っている方、試験を受けたいが勉強方法で迷っている方は確実に購入した方がいいと感じたので、Udemyを利用した個人的な感想になりますが、利用を検討している方の参考になれば幸いです。

 

利用したコンテンツ

 

良かったところ

  • 問題数が多い
  • 解説が分かりやすい
  • 問題形式が選択問題となっており、本番試験方式に慣れることができる
  • スマホからでも実施できるので、通勤中の移動時間でもできる
  • 模擬試験は途中で中断し、中断したところから再開できる

悪かったところ

  • 本番の試験より日本語が優しい

詳細

良いところ、悪いところについて詳しく書きます。

 

◆問題数が多い

タイトルにもあるようにAWS 認定クラウドラクティショナー 模擬試験は455問、AWS 認定ソリューションアーキテクト アソシエイト模擬試験は390問と豊富に問題が用意されています。

問題数が多いので、問題を解き、解説を読むだけでかなりの知識をつけることができます。

私はAWS 認定クラウドラクティショナー 模擬試験を利用していた時は、全く知識のない初学者でしたが、この豊富な問題数のおかげかなり知識をつけれました。

 

◆解説が分かりやすい

問題が多くても解説がお粗末では正しい知識を身につけられません。

今回利用したudemyのAWS関連の模擬試験は、解説が充実しています。

解説を読むだけでも十分なインプットになることでしょう。

 

◆問題形式が選択問題となっており、本番試験方式に慣れることができる

模擬試験という名前なので当然ではあるのですが、本番と同様の形式でできることにはメリットがあります。

択一問題なので、分からない問題があっても勘で当たることはありますね。

その勘を鍛えるのではなく、答えを絞り込む練習はできます。

クラウドラクティショナー模擬試験でいえば、基礎編、応用編と分かれています。

基礎編をやった後に応用編をやると難しく感じますが、基礎編で得た知識をだけでも「これは違うな」と感じる回答を見つけることができます。

最終的に答えが分からなくても、4択を2択まで絞った方が正解する確率が高いのはいうまでもありません。

また、決して分からなくても頭で考えた方が頭に残りますので、"答えを絞り込む"ということはした方がいいと思います。

 

スマホからでも実施できるので、通勤中の移動時間でもできる

一番の利点だと感じたのはどこでもできることです。

アプリをダウンロードしておけば、通勤が電車やバスの方なら移動時間を有効活用できます。

私は通勤はバスに30分ほど乗りますので、往復1時間は実施していました。

 

◆模擬試験は途中で中断し、中断したところから再開できる

1つの模擬試験は実際の試験同様の65問ありますので、それなりに時間はかかります。

1度に全てをとかなくても中断して途中から再開できるので、時間をしっかり確保できなくても安心です。

 

◆本番の試験より日本語が優しい

 こちらは悪かったことの項目ですが、実際に試験を受験してから感じたことです。

udemyは本番の試験と比べると、分かりやすい日本語を使ってくれているなと思いましたが、そこまで気にする必要はありません。

知識をつけていれば本番の試験も大丈夫です。

 

感想

私は参考書等は買わずにudemyの問題を解き、解説を読み、理解が薄いと感じたAWSのサービスについては公式サイト等で確認し、あとはひたすら問題を解くだけで、無事にクラウドラクティショナー、ソリューションアーキテクト アソシエイト試験に合格できました。

 AWS試験は受験料も安くはないので1発合格を目指したいところです。

受験を考え、合格を目指している皆様は、絶対udemyを利用すべきだと感じています。

読んでいただきありがとうございました。