SINKCAPITAL
SINKCAPITAL
company Blog
Ruby on Rails チュートリアル第1章をやってみて & 自己紹介
techinternlearningpersonal

自己紹介

はじめまして。

 現在情報系の大学2年生で、SinkCapitalで長期インターンをさせてもらえることになりました。プログラミングに関しては、CやPythonなどの基本を触ったことがある程度で、自分で何かを作るなどは特にやったことがないです。一応、大学の授業でCSをやったり、去年応用情報を受けたりはしたので(不合格)、簡単な知識はあります。将来の目標としては、ドイツの大学院を出て、ドイツで働けたらなあとは思っております。

 今回はインターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。

■第1章
 Railsチュートリアルの流れとしては、実際にWebアプリケーションを開発する流れのよう。章を追っていくほど、機能を増やした物を作れるそうだ。面白そう。RubyやRailsさらに必要なツールをすべてインストールするには、ベテランであっても苦労するそう。たしかに、自分で何かインストールする時、サイトによりけりで結構困るイメージ。   

実践していく

Railsのセットアップがやや難し目なようなので、Cloud9を用いて進めていくようだ。

1.3 最初のアプリケーション

手始めにHello Worldを表示するアプリケーションを作るので、専用の「environment」ディレクトリを作る。

$ cd
$ mkdir environment  
$ cd environment  

その後

$ rails _5.1.6_ new hello_app

を実行し、大量のファイルとディレクトリが出てくる。Webフレームワークを導入しているおかげで。コードが読みやすくなっているそう。          

1.3.1 Bundler  

上のrails newを実行した時に自動的に実行される。ここではデフォルトのアプリケーションgemを変更してBundlerを再度実行してみる。 gemは実際に使用するバージョンに変更。コードは少し長いので略。

置き換えた後は

$ cd hello_app/
$ bundle install

を実行し、アプリケーションが実行可能になる。

1.3.2 rails server

$ cd ~/environment/hello_app/
$ rails server

でローカルWebサーバーを立ち上げる。 他のタブでコマンド実行ができるようになるので、このコマンドは別タブのターミナルで行った方が良いらしい。

1.3.3 Model-View-Controller (MVC)

MVCモデルとは Model View Controllerの略 ・Railsアプリとの通信の際、ブラウザがWebサーバーにリクエストを送信 ・コントローラーがそれを受け取る ・場合によってはビューを生成し、HTMLをブラウザに送り返す ・コントローラーはRubyのオブジェクトである、データベースとの通信担当のモデルと対話する

1.3.4 Hello, world!

$ ls app/controllers/*_controller.rb

でコントローラの確認。 renderメソッドで「hello, world!」というテキストを表示する。

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  def hello
    render html: "hello, world!"
  end
end

またRailsのルーティングファイルの内容に

$ root 'application#hello'

を追加する。

プログラミング初心者は、親の顔より見る「hello,world!!」をデフォルトのページに表示させることができました。(ちょっと手こずったので、対処法は一番下に書いてます。

スクリーンショット

1.4 Gitによるバージョン管理

実際に動作するRailsアプリを初めて完成させることができたので、ソースコードをバージョン管理下に。

1.4.1 インストールとセットアップ

Cloud9にはデフォルトで実装されている。systemセットアップを、コンピュータ1台につき1回だけ行います。

$ git config --global user.name "Your Name"
$ git config --global user.email your.email@example.com

*このgit configで設定する名前やメールアドレスは、今後リポジトリ上で一般に公開されるので注意が必要。

次にリポジトリの初期化を行う。そのために、アプリケーションのルートディレクトリに移動する。 hello_appだったら、$ cd ~/enviroment/hello_app で移動しておく。

以下のコードで、新しいリポジトリの初期化を行う。

$ git init

次にgit add -Aを実行し、プロジェクトのファイルをリポジトリに追加。

$ git add -A

このコマンドの実行により、現在のディレクトリにあるファイルがすべて追加される。

ステージング (Staging) という一種の待機用リポジトリに置かれ、コミットを待つ。ステージングの状態を知るために、statusコマンドを使う。

$ git status

リポジトリに反映するために、コミット(commit)する。

$ git commit -m "Initialize repository"

-mフラグを使い、コミットメッセージを指定する。

logコマンドでコミットメッセージの履歴を参照ができる。

$ git log

1.4.2 Gitのメリット

次のコマンドでディレクトリの削除をしてしまった場合

$ rm -rf app/controllers/
$ ls app/controllers/
ls: app/controllers/: No such file or directory

まだコミット (保存) されていないので、簡単に削除前の状態に戻すことができる。

$ git checkout -f
$ git status
# On branch master
nothing to commit (working directory clean)
$ ls app/controllers/
application_controller.rb  concerns/

1.4.3 Bitbucket

BitbucketはGitリポジトリのホスティングと共有に特化したサイト Githubは公開リポジトリは有料だったが、2019年1月からGitHubの非公開型レポジトリが無料に。

リポジトリをBitbucketにプッシュするメリットは ・ソースコードとその変更履歴のバックアップ ・他の開発者との共同作業の簡単化

Bitbucket を使うためにGitのSSH公開鍵が必要なので、Cloud9のターミナルで次のコマンドを打ってみる。

$ cd
$ cd ~/.ssh
$ ls 

出てこなかったら

$ ssh-keygen
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa): ここにid_rsaと入力

を実行する。

lsコマンドで中身が確認できたら、SSH 公開鍵をコピーしてBitbucketの設定で貼り付けます。

ここからの流れは長いので割愛。。。

1.4.4 ブランチ、編集、コミット、マージ

1.4.3の手順に沿って進めた場合、READMEファイルの内容が自動的に表示されるので、その内容を書き換えていく。

Branch (ブランチ)

ブランチとはリポジトリのコピーのこと。自由に変更や実験を試すことができる。

$ git checkout -b modify-README
$ git branch
  master
* modify-README

ここでは短期間だけ使う一時的なブランチをcheckoutと-bフラグで作成。 またアスタリスクでまたmodify-README ブランチを指している。

Edit (編集)

Cloud9のREADMEを編集する。

Commit (コミット)

変更後のブランチの状態を確認すると、

$ git status
・・・
modified:   README.md
・・・

でREADMEがmodifiedされたことがわかる。

メッセージをつけてコミットする。

$ git commit -a -m "Improve the README file"
Merge (マージ)

ここら辺はうまくできなかったです。modify-READMEブランチの変更内容を反映ができない。。

1.5 デプロイする

頻繁にデプロイすることで、開発サイクルでの問題を早い段階で見つけることができる。

今回はHerokuを使っていく。

PostgreSQLと通信するために pg というgemを入れる。 gemfileに以下のコードを追記。

group :production do
  gem 'pg', '0.20.0'
end

HerokuではSQLiteがサポートされていないので、sqlite3というgemが本番環境に導入されないようにする。

本番用以外のgemをインストールしてGemfile.lockに反映させたあと、コミットする。

$ bundle install --without production
$ git commit -a -m "Update Gemfile for Heroku"

次に、Herokuのアカウントを新規作成して設定する。 続いて、自分のシステムにHerokuコマンドラインクライアントがインストールされているかどうかを確認する。

$ heroku --version

ない場合はインストールしておく。cloud9などのクラウドIDEの場合は以下。

$ source <(curl -sL https://cdn.learnenough.com/heroku_install)

コマンドを入力しHerokuにログイン。Herokuサーバーにサンプルアプリケーションの実行場所を作成します。

$ heroku login --interactive
$ heroku keys:add
$ heroku create
1.5.2 Herokuにデプロイする (1)

Gitを使って、Herokuにデプロイします。警告は無視していいそう。

$ git push heroku master
1.5.3 Herokuにデプロイする (2)

一生できなかったので一旦諦めます。。。 中にはやらなくて良いという方もいるので。

チュートリアルの感想

今回この章ではインストール、開発環境の設定、バージョン管理など、色々やりました。文章読んでコマンド見るだけでもWebアプリケーションのことがぼんやりわかって面白かったです。 IDEを使って自分がこんなことできるようになるなんて... 章を重ねていくごとに難しくなっていても頑張ろうと思います

疑問点・単語集

*gem パッケージのこと、名前

*開発環境を大別すると ①IDE(総合開発環境) ②テキストエディタやコマンドラインを使う環境 に分けられる

*デプロイ ITの分野では開発したソフトウェアを実際の運用環境に配置・展開して実用に供することを指す場合が多い。   

途中

rails server

を実行しても、

A server is already running

と表示されてしまい、非常に困ったので対処法のメモ

  • rails sを実行しているターミナルの終了
  • killコマンドでの停止 kill プロセスID
  • psコマンドやlsof -i コマンドでIDは見つけられる

参考サイト:rails server (rails s) できない原因と対処方法【初心者向け】

あと、Bitbucketへのプッシュがうまくいかず

error: src refspec master does not match any. 

のエラーが出て困っていたのですが

$ git commit -m 'First Commit'

でうまくいきました。

参考サイト:Gitでerror: src refspec master does not match anyのエラー

BQにおけるSQL検算を効率化する無料chrome拡張機能をリリースいたしました
櫻井 裕司
2022/09/01 櫻井 裕司
tech
BigQueryのjoin句を含むstandardSQLを入力することで、join前後でのレコード数の変化を返すSQLを自動でクリップボードにコピーする無料chrome拡張機能をリリースいたしました。
社内ドキュメントにNotionを導入して感じた事
櫻井 裕司
2022/04/02 櫻井 裕司
tech
社内ドキュメントをNotionに寄せることで見えてきたメリット・デメリットをまとめていきたいと思います。また使う中で感じたいくつかの要望もまとめていこうと思います。
「BIツール」活用 超入門 Google Data Portalではじめるデータ集計・分析・可視化 第3章 BIツールに関する知識をつける
白井 透
2022/03/31 白井 透
techinternlearning
【「BIツール」活用 超入門 Google Data Portalではじめるデータ集計・分析・可視化 第3章】現在長期インターンをさせてもらっているSinkCapitalさんの方で、データ系の業務に携わることになりそうなのですが、それの準備期間として紹介していただいた本をまとめていきたいと思います。
「BIツール」活用 超入門 Google Data Portalではじめるデータ集計・分析・可視化 第2章 さまざまな分析をしてみよう
白井 透
2022/03/30 白井 透
techinternlearning
【「BIツール」活用 超入門 Google Data Portalではじめるデータ集計・分析・可視化 第2章】現在長期インターンをさせてもらっているSinkCapitalさんの方で、データ系の業務に携わることになりそうなのですが、それの準備期間として紹介していただいた本をまとめていきたいと思います。
「BIツール」活用 超入門 Google Data Portalではじめるデータ集計・分析・可視化 第1章 分析ダッシュボードを作ってみよう
白井 透
2022/03/29 白井 透
techinternlearning
【「BIツール」活用 超入門 Google Data Portalではじめるデータ集計・分析・可視化 第1章】現在長期インターンをさせてもらっているSinkCapitalさんの方で、データ系の業務に携わることになりそうなのですが、それの準備期間として紹介していただいた本をまとめていきたいと思います。
Ruby on Rails チュートリアル第14章をやってみて & まとめ
白井 透
2022/02/20 白井 透
techinternlearning
【Ruby on rails 第14章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第13章をやってみて
白井 透
2022/02/20 白井 透
techinternlearning
【Ruby on rails 第13章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第12章をやってみて
白井 透
2022/02/19 白井 透
techinternlearning
【Ruby on rails 第12章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第11章をやってみて
白井 透
2022/02/19 白井 透
techinternlearning
【Ruby on rails 第11章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第10章をやってみて
白井 透
2022/02/18 白井 透
techinternlearning
【Ruby on rails 第10章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第9章をやってみて
白井 透
2022/02/16 白井 透
techinternlearning
【Ruby on rails 第9章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第8章をやってみて
白井 透
2022/02/14 白井 透
techinternlearning
【Ruby on rails 第8章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第7章をやってみて
白井 透
2022/02/14 白井 透
techinternlearning
【Ruby on rails 第7章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第6章をやってみて
白井 透
2022/02/13 白井 透
techinternlearning
【Ruby on rails 第6章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第5章をやってみて
白井 透
2022/02/12 白井 透
techinternlearning
【Ruby on rails 第5章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第4章をやってみて
白井 透
2022/02/11 白井 透
techinternlearning
【Ruby on rails 第4章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第3章をやってみて
白井 透
2022/02/08 白井 透
techinternlearning
【Ruby on rails 第3章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第2章をやってみて
白井 透
2022/02/07 白井 透
techinternlearning
【Ruby on rails 第2章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Nuxt上でのd3を利用した散布図の作成方法
櫻井 裕司
2021/10/29 櫻井 裕司
techdataAnalytics
クリック可能な散布図をNuxtjs上で作成する場合にd3.jsが汎用性が高く便利でした。利用するにあたって難しかった点などを備考録としてまとめています。
アクセスログを可視化しGAのデータを直感的に理解できる型態にする試み(ネットワーク型)
櫻井 裕司
2021/09/05 櫻井 裕司
techdataAnalytics
ビジネスに活きる分析を進める上で弊社では「理解できる」ことを重要と考えており、特に直感的理解は可視化を進める上で特に重要だと考える内容の一つです。弊社では様々なお客様のデータ分析を進める上で常により示唆の大きい可視化を追求しており、今回はその中で最近試みているネットワーク側の可視化についてまとめたいと思います。
代表櫻井による特別講演会が白陵高等学校で開かれました
櫻井 裕司
2021/07/31 櫻井 裕司
eventpersonal
2021年の夏に兵庫県の私立白陵高等学校において、代表櫻井による特別講演会を開催いたしました。今振り返って高校の頃の自分に伝えたいことについてお話しました。
Nuxtで動的ページを随時追加する場合にNot Foundとなる
櫻井 裕司
2021/05/31 櫻井 裕司
tech
Nuxtで動的ページを登録する方法はありますが、登録後に随時コンテンツが追加される際はNot Foundとなってしまうので、そう言った際の対処方法について
GKEをやめてCloud Runを始めてみました
櫻井 裕司
2021/04/19 櫻井 裕司
tech
firebaseで構築したシステムの裏で動かすバッチの負荷が大きく、cloud functionsで終わらなかったためCloud Runを利用してみました。動作確認までの知見等を雑多にまとめてみました。
AWSをやめてfirebaseを使い始めて感じたメリットやデメリットとそれの対応策(LT登壇内容)
櫻井 裕司
2021/03/26 櫻井 裕司
techeventpersonal
みそかつウェブ・GDG Nagoya主催の「around firebase」とCloud Native Nagoya主演の「Cloud Native Nagoya」にてfirebaseのLTをさせていただきました。そこで会話させていただいたfirebaseを使い始めて感じたメリット・デメリットについてまとめています。
PWA+SPAのwebアプリ作成にnuxtjs+firebaseがめちゃ便利だった
櫻井 裕司
2021/01/16 櫻井 裕司
tech
PWA+SPAのwebアプリを作る際にnuxt.js+firebaseを合わせて利用すると便利だったので知見を書き留めています
s3のhostingでPWAを導入する方法
櫻井 裕司
2020/12/19 櫻井 裕司
tech
アプリ作成時にpwaが比較されることが多かったですが、実際にpwaを実装した経験がなかったため今回自社サイトをPWA化してみました。
dockerでseleniumを動かしてみる(chrome_headless)
櫻井 裕司
2020/12/06 櫻井 裕司
tech
seleniumの相談をいただくことが増えたため、seleniumの勉強もかねてdockerでの実行テストを行いました
THE DECKのイベントにお邪魔させていただきました
本林 秀和
2020/12/05 本林 秀和
eventpersonal
大学コンソーシアム大阪のイベント@The DECK にお邪魔してきました
flutter(dart)を触ってみた感想
櫻井 裕司
2020/11/18 櫻井 裕司
tech
android向けアプリへの対応も考慮してflutter(dart)を触ってみたので、感想をまとめておこうと思います。理解が深まっていく中で定期的にまとめていければと思います。
代表本林による特別講演会が滝高校で開かれました
本林 秀和
2020/11/07 本林 秀和
eventpersonal
2020年11月7日(土)愛知県の私立滝高校において、代表本林による特別講演会を開催いたしました。IT業界やデータサイエンスについてお話しました。
AWS・GCPを選ぶ際の観点
櫻井 裕司
2020/10/28 櫻井 裕司
tech
AWSかGCPを選ぶ際の観点について書き留めておこうと思います
CloudFormationとterraformの比較
櫻井 裕司
2020/10/04 櫻井 裕司
tech
AWS CloudFormationとterraformの両方を使ってみて感じた違いをまとめてみました。
iosのcallkit周りでできること
櫻井 裕司
2020/08/24 櫻井 裕司
tech
新規事業を検討する上でios(swift)の電話周りでできることを調査したため、調査結果をブログとして残しています。
【個人ブログ】CTOの株運用ブログ_順調な滑り出し
櫻井 裕司
2020/07/19 櫻井 裕司
personalstock
長年放置してた株に少し手を出してみました。自分なりに少し情報整理と分析と予想をしたので記事にしてみます。
総務省特定サービス産業実態調査のデータ分析
櫻井 裕司
2020/07/18 櫻井 裕司
techdataAnalytics
総務省がAPIで市場データを公開しており、分析技術向上と市場感を養うことを目的に定期的に分析を行なっていこうと思います。今回は「特定サービス産業実態調査」について見ていこうと思います。
「お絵かきつみ木バトル」をリリースしました
櫻井 裕司
2020/07/12 櫻井 裕司
techapp
タスク管理を二次元的に行うアプリ「お絵かきつみ木バトル」をリリースしました。SinkCapitalはデータコンサルですが、知見蓄積のため様々な媒体での実験的開発を行っています
総務省工業統計調査のデータ分析
櫻井 裕司
2020/07/11 櫻井 裕司
techdataAnalytics
総務省がAPIで市場データを公開しており、分析技術向上と市場感を養うことを目的に定期的に分析を行なっていこうと思います。今回は「工業統計調査」について見ていこうと思います。
総務省サービス産業動向調査のデータ分析
櫻井 裕司
2020/07/08 櫻井 裕司
techdataAnalytics
総務省がAPIで市場データを公開しており、分析技術向上と市場感を養うことを目的に定期的に分析を行なっていこうと思います。初回は「サービス産業動向調査」について見ていこうと思います。
【個人ブログ】CTOが個人的に株をはじめました
櫻井 裕司
2020/07/08 櫻井 裕司
personalstock
長年放置してた株に少し手を出してみました。自分なりに少し情報整理と分析と予想をしたので記事にしてみます。
タスク管理アプリ「タスククロス」をリリースしました
櫻井 裕司
2020/04/08 櫻井 裕司
techapp
タスク管理を二次元的に行うアプリ「タスククロス」をリリースしました。SinkCapitalはデータコンサルですが、知見蓄積のため様々な媒体での実験的開発を行っています
【terraform】gcpでcicd環境を構築する方法
櫻井 裕司
2020/01/04 櫻井 裕司
tech
企業サイトはAWSを利用しているのですが、要件によってはGCPの方が適している場合もあるため、GCPでのcicd構築も行いました。AWSと比較しつつ説明しているため是非ご参考にしてみてください。
【合格体験記】GCP_Cloud_Archtectに受かりました
櫻井 裕司
2019/12/23 櫻井 裕司
personalqualification
Google Professional Cloud Architectに合格したので、勉強法別のコスパをまとめてみました。
AWSでサブドメインなし(wwwなし)からサブドメインあり(wwwあり)へのリダイレクト設定
櫻井 裕司
2019/12/23 櫻井 裕司
tech
もともと企業サイトがサブドメインありで公開していたが、サブドメインなしでもエラーなく接続できるように設計。terraformで作成しているので是非ご参考ください。
マークダウンで記事を書けるようにしてみた
櫻井 裕司
2019/12/16 櫻井 裕司
tech
ホームページのブログをマークダウンを使用してかけるようにしました。gatsbyなどもありますが、今回はお手製cicd+pythonを使用してライトに作成しました。
Copyright © SinkCapital 2022
一緒に働きたい方はこちら