mind.

学んだことの記録

VagrantでWindowsにRailsのテスト環境を構築する

アドベントカレンダーが無くてもブログを書く習慣を続けていきたい。

なぜVagrantなのか

手元でWebアプリの動作確認ができる環境が欲しかったからです。
最近Railsを使ったWebアプリを作ろうとしているのですが、本番サーバーと手元で動作確認をするためのサーバーの環境が違うと上手く動作しないということがありました。
Windowsを使っていると、ただ単にRailsをインストールしただけではubuntu等と同じように動きませんでした。

Vagrantのインストール

↓ここからインストーラをダウンロードできます。
www.vagrantup.com

Virtualboxのインストール

Vagrant2.2.6はVirtualbox6.1をサポートしていないようで、この後行うvagrant upを実行してもエラーになります。
Virtualboxは6.0をインストールすることにします。
www.virtualbox.org

Vagrantfileのダウンロード

ubuntu18.04で環境を構築するので、Vagrant boxは下記を選択しました。
app.vagrantup.com セキュリティの観点では自分でboxを作るべきなのでしょうが、今回は用途が個人制作のWebアプリのテスト環境ということですのでセキュリティはそれ程気にしていません。
作業時間を短縮させるためにVagrant Cloudの力を借ります。

Newタブをクリックすると表示されるコマンドを任意のディレクトリで実行します。
コマンドプロンプト

vagrant init bento/ubuntu-18.04
vagrant up

Vagrantrails serverが実行できるようにする

先程ダウンロードしてきたVagrantfileを編集してRailsのデフォルトのポート番号である3000番を受け付けるようにします。
↓こちらの記事を参考にしました。
qiita.com 下記をVagrantfileに記載します。

config.vm.network :forwarded_port, guest: 3000, host: 3000

記載する場所は下記の通りです。

Vagrant.configure("2") do |config|
~
  config.vm.network :forwarded_port, guest: 3000, host: 3000
~
end

Vagrant.configure("2") do |config|endの間ですね。

Vagrantを起動する

Vagrantfileのあるディレクトリで下記を実行します。
コマンドプロンプト

vagrant up

下記のようなログが出力されていればrails sSSHでの接続は成功するはずです。

==> default: Forwarding ports...
    default: 3000 (guest) => 3000 (host) (adapter 1)
    default: 22 (guest) => 2222 (host) (adapter 1)

SSHで接続

Teratermを使用します。 127.0.0.1:2222に接続します。
ユーザー名およびパスワード共にvagrant です。

ubuntuが起動しました。
後は以前の記事のようにRailsの開発環境を構築していけばテスト環境が完成します。

learning-mind.hatenablog.com

感想

Vagrantいいですね。色々できそうだ。

ProgateでRuby on Railsを勉強した感想

そろそろ技術的な記事を載せたい

adventar.org

Webアプリケーションの開発経験は無し

仕事ではAV機器のプロジェクトでUIとかファイル処理のプログラムをC言語を書いています。
仕事以外の分野も勉強してみようかと思い、なんとなくWebを選びました。
てっとり早くものを作れるようになりたかったので、ProgateのRailsを一通りやりました。
実務ではWebの経験はありません。学生時代にJSP/サーブレットを課題で触った程度です。

全15章に書けた期間

6週間
結構のんびりやっていたので思っていたよりかかりました。

全体的な感想

普段レガシーな環境で開発しているせいか、とても楽しく開発できそうなフレームワークだと感じました。
SQLを書かなくてもデータベースにアクセスできるのはすごく楽で良いですね。

細かな感想

  • ログインとかセッションとかSQLとはWebの一般的な機能のコードを書かなくて済むので、ビジネスロジックに注力できそう
  • 巷ではアジャイル開発で使用されることが多いということだが、ビュー、コントローラ、ルーティングの仕組みを知るとその理由をなんとなく感じることができた

今後

Railsで何かWebサービスを作ってみようと思っています。
というかProgateを一回やったくらいではRailsの機能は覚えられないですね。それくらい多機能です。
今はサーバーをどうするかを考えているのですが、軽く調べた限りだとAWSが有力そうです。
小さなアプリならVPSに入れるのも良さそうですが。

ubuntu server 18.04 にRuby on Rails6をインストールするコマンド(2019/12/11時点)

記事を書くことを躊躇わずに宣言する

adventar.org

備忘録として

今回はubuntuにrails6をインストールするコマンドをまとめます。
それぞれのコマンドの意味はまだ全て理解できていませんが、備忘録として記事に残します。

参考URL

https://qrunch.net/@ryecroft21/entries/0d6t3AdvaWueZcO6qrunch.net

qiita.com

目標

手元にあるNUCにisoで普通にubuntu serverをインストールして、ブラウザにIPアドレスを打てばRailsのデフォルトのページが表示されるところまで

コマンド

sudo apt-get install git
sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev -y

git clone https://github.com/rbenv/rbenv.git ~/.rbenv  
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build  
cd ~/.rbenv && src/configure && make -C src  
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc  
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec bash

rbenv rehash  
rbenv install 2.5.3
rbenv global 2.5.3

gem update --system  
gem install bundler

echo "install: --no-document" >> $HOME/.gemrc
echo "update: --no-document" >> $HOME/.gemrc

sudo apt install sqlite3 libsqlite3-dev

sudo apt install -y nodejs npm
sudo npm install n -g
sudo n stable
sudo npm install -g yarn

gem install rails
gem list rails

cd ~
rails new sample --skip-bundle
cd sample
bundle install

rails webpacker:install

rails s -b 0.0.0.0

以下雑記

  • Rails6からはwebpackとやらをインストールする必要があるらしい
  • webpackのインストールにはnodejsが必要
  • nodejsのインストールはnpmで最新のバージョンでインストールしないとwebpackのインストール時にエラーになる
  • yarnも必要
  • NUCは省スペースで好きです

インテル Intel® Celeron® プロセッサを搭載した Intel® NUC キット BOXNUC7PJYH【日本正規流通品】
Amazon | インテル Intel® Celeron® プロセッサを搭載した Intel® NUC キット BOXNUC7PJYH【日本正規流通品】 | インテル | ベアボーンPC 通販

『スッキリわかるPython入門』を読んで

数を書けば質が上がると思っています。

adventar.org

ものすごく漠然と「pythonやりたいな」と思ってたら、「スッキリわかる」シリーズからpython本が出ていたので読みました。
pythonの初学者というよりはプログラミング初学者におすすめできる入門書ですね。

特筆すべき点…それは「順番」

内容の量については他のpython入門書と同じくらいか少し少ないくらいだと思います。(クラスや内包表記は端折られてますし)
そのような本をなぜおすすめするかというと、内容の順番が素晴らしいからです。
pythonの入門書は何冊か立ち読みしましたが、大抵のものは下記のような順で記載されていました。
繰り返しと条件分岐 → コレクション
しかし、『スッキリわかるPython入門』はそので、
コレクション繰り返しと条件分岐
でした。
特筆すべき点と書いたものの、ものすごく地味ということは理解しています。
しかし、入門書が初学者にとって、学習のモチベーションに大きく影響することを考えるとこれはかなりのアドバンテージになると思うのですよ。

さて、コレクション繰り返しと条件分岐 の順で書かれていることがなぜ特筆すべき点なのか。
それは、コレクションの説明中にif文の応用方法の説明に戻らなくて済むから です。

pythonでは下記のようにif文の条件式でコレクションを精査することができます。

if キー in コレクション

で、この書き方の説明をするまでに、他の本のように
繰り返しと条件分岐 → コレクション
とすると、コレクションの説明のときにif文の説明をしてしまうことになるんですね。
ものによっては、繰り返しの前にリストだけ説明してその他のコレクションは後で説明することで条件分岐の説明をしていたりします。
その説明の順が悪いということではないのですが、本を読むときはできる限り一方通行で読める方が分かりやすい本だと私は考えています。
リストの説明だけ先にして、条件分岐と繰り返しを挟んで他のコレクションを後でまとめて行うよりは、それぞれを一章ずつにまとめたほうがコレクションの同士でも比較ができ、効率的に理解できると考えています。
少し話は変わりますが、人の脳は考えていることを切り替えるときにものすごく疲れるらしいです。
つまり、脳にとっても前の章に戻ることなく理解できるような構成が望ましいということです。
条件分岐とコレクションの説明の順番はほんの一例ですが、他の章もわかりやすさが考え抜かれていて、1ページ目から順番に読むことで予備知識が無くても効率よく理解することができます。

入門書は人によって合う・合わないがありますが、『スッキリわかるPython入門』はプログラミングの知識が無い人ほどおすすめできる本です。
「スッキリわかる」シリーズお馴染みのキャラの掛け合いベースで進む説明もとても分かりやすいです。
著者のお二人に脱帽です。Java入門のように是非実践編も執筆していただきたいと思っています。

スッキリわかるPython入門 (スッキリシリーズ)
https://www.amazon.co.jp/dp/4295006327/ref=cm_sw_r_tw_dp_U_x_PwK7DbGHTACH8

『反応しない練習』を読んで

アドベントカレンダーをきっかけにブログを書くことを習慣付けたい。

adventar.org

『反応しない練習』とはどんな本か

僧侶の方が書かれた本で、様々な悩みを仏教の考え方で解決しようという本です。 心の状態を正しく理解することが苦しみから開放される第一歩としていて、宗教として教えを説くのではなく、ブッダの合理的な考え方を伝えています。
著者の経験に基づき、悩みを解決する具体的なアプローチが書かれています。

読んだきっかけは何か

仕事と転職で悩んでいたからです。
以前から今の会社に疑問を感じており、周りが次々に転職していく状況で、「自分はこのままでいいのだろうか」というテンプレートな不安を感じていました。
転職活動をしてみたもののあまり上手くいかず、現職に不満はあるものの今すぐには転職できそうもない状況で、言いようのない不安が募っていました。
自分の中の何か根本的な部分をどうにかしないといけないと思いつつもどうすればいいかわからないと困っていると、Amazonでこの本を見つけました。

何が書かれていたのか

〇 悩み の 原因 は、〝 心 の 反応〟 で ある。 〇〝 心 の 反応〟 の 背景 には〝 求める 心〟 や〝 七つ の 欲求〟( 特に 承認 欲) が ある。 〇 心 の 状態 を よく 理解 する には ─ ─ ① 言葉 で 確認 する、 ② 感覚 を 意識 する、 ③ 貪欲・怒り・妄想 の 三つ に 分類 する。
草薙龍瞬. 反応しない練習 あらゆる悩みが消えていくブッダの超・合理的な「考え方」 (Kindle の位置No.489-491). KADOKAWA / 中経出版. Kindle 版.

ここがこの本の核心だと思います。
漠然と「悩み」といっても千差万別で、全てを解決できる万能の解決方法があるわけではありません。
ただ、この本に書かれているプロセスを実践すればどのような悩みでも解決策を思いつくことができると思いました。

  • 心の状態を正しく理解する

この本では、目を閉じて心の状態を見るということが何度も書かれています。
怒りを感じたときに目を閉じて「今、反応しているな」を意識することで、心を乱さないようにすることです。
実際にやってみると不思議と心が落ち着き、今までイライラしていた時間がものすごく短縮されたと実感しました。

  • 判断しない

~が良い、~が悪いというのは何かと比較して下した判断です。
しかし、比較対象があるからそういう思考になるわけで、無ければ何かを良い、悪いと判断することはできないはずです。 「自分が不幸なのは~のせいだ」という考えも結局の所他人と比べているからそう思うだけで、自分の人生は一つなのですから良いとか悪いと判断できないということです。
何かを判断するときは妄想が根拠になっているので、それに気づいて現実を正しく理解することが重要ということでした。
私は仕事で、チームメンバーにもう少し頑張ってほしいと思うことがありました。
この本を読んで、「彼以外のメンバーがいるということは妄想にすぎないのだから、彼を他の新人や社員と比較することはできない」と考えることで、過度な期待をすることはなくなりました。

この本はどんな人に推められるのか

漠然とした不安、解決策の思いつかない悩みを抱えている人におすすめします。
インターネットが普及したことで、他人の人生を見る機会が昔と比べて増えました。
どうしても隣の芝は青く見えてしまいますよね。
そんな中でも無駄な反応をせず、自分の方向性を理解して人生を歩んでいけるようになると思います。

反応しない練習 あらゆる悩みが消えていくブッダの超・合理的な「考え方」 草薙龍瞬 https://www.amazon.co.jp/dp/B012EU8CD0/ref=cm_sw_r_tw_dp_U_x_fh46DbVJB4RDH