はじめに
皆さま、こんにちは、すみ(@sumisumi2000) と申します。
2024 年 1 月 20 日より、オンラインプログラミングスクール RUNTEQ にて、Ruby on Rails を学習しています。
今回の記事では Docker を使わずに、ローカルで環境構築を行い、 Render.com でデプロイ&データベース連携するまでの流れをまとめました。
動作環境
- macOS Sonoma 14.4.1
- Ruby 3.3.0
- Rails 7.1.3.2
ローカル環境構築
この記事では Docker を使用しません。
なので、ローカル環境(自身のパソコンの環境)で Ruby や Rails などをインストールする必要があります。
目次
内容
Homebrew のインストール
-
ルートディレクトリに移動
-
コマンド
$ cd # 何も出力されないです
-
-
移動できたか確認
-
コマンド
$ pwd
-
ログ
/Users/Macのコンピュータ名 # /Users/ の後ろが Mac のコンピュータ名になっていればOK
-
-
-
インストールされているか確認
-
コマンド
$ brew -v # もしくは、 brew --version
-
ログ(インストール済みの場合)
Homebrew 4.2.11 # バージョンが異なっていてもOK(数字が完全一致している必要はない)
-
バージョンが表示されなければ下記の手順でインストールしてください。
-
インストール方法
-
https://brew.sh/ja/ にアクセス
-
下の画像の赤い丸で囲まれたアイコンをクリック
-
ターミナルを開く
-
貼り付けてコマンドを実行
- コマンド
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- コマンド
インストールはこれで完了です。
ですが、バージョンを確認( brew -v
を実行)してもバージョンが出ないと思います。
-
バージョンを確認するコマンド
$ brew -v
-
ログ
zsh: command not found:brew
-
ログがこのようになった方は下記の手順に沿ってパスを追加してください
パスの追加
-
ルートディレクトリに移動
-
コマンド
$ cd # 何も出力されないです
-
-
.zprofile
という名前のファイルを作成-
コマンド
$ touch .zprofile # 何も出力されないです
-
-
環境変数を設定し、
.zprofile
に保存-
コマンド
$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile # 何も出力されないです
-
-
設定を反映させる
-
.zprofile
ファイルの内容を読み込んで実行させる-
コマンド
$ source ~/.zprofile # 何も出力されないです
-
-
-
インストールされてるか確認
- コマンド
$ brew -v # もしくは、 brew --version
- ログ
Homebrew 4.2.11 # バージョンが異なっていてもOK(数字が完全一致している必要はない)
- ログ
- コマンド
参考資料
rbenv のインストール
- rbenv とは?
- Ruby のバージョン管理ツールの一つです。
- 複数の Ruby のバージョンを使用したり、使用する Ruby のバージョンを切り替えることができます。
- 今回は最新の安定版の Ruby をインストールするために使用します。
- Ruby のバージョン管理ツールの一つです。
-
インストールされてるか確認
- コマンド
$ rbenv -v
-
ログ
-
インストールされている場合
rbenv 1.2.0 # バージョンが表示されていれば OK
-
インストールされていない場合
zsh: command not found: rbenv
-
-
インストールされていない方は下記の手順でインストールしてください。
-
インストール
- コマンド
$ brew install rbenv ruby-build # ログがいっぱい出ます
- コマンド
-
初期設定の設定
-
コマンド
$ echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc # 何も出力されないです
-
-
設定の反映
- コマンド
$ source ~/.zshrc # 何も出力されないです
- コマンド
-
インストールされたか確認
- コマンド
$ rbenv -v
- ログ
rbenv 1.2.0 # バージョンが表示されていればOK
- ログ
- コマンド
バージョンが表示されない場合
バージョンが表示されない場合は以下の手順を試してみてください。
また、ターミナルを再起動することで設定が反映される場合もあります。
-
初期化
$ rbenv init # Load rbenv automatically by appending # the following to ~/.zshr eval "$(rbenv init - zsh)"
-
パスの追加
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc # 何も出力されないです
Ruby のインストール
-
安定版の確認
-
コマンド
$ rbenv install -l
-
ログ
3.0.6 3.1.4 3.2.3 3.3.0 jruby-9.4.6.0 mruby-3.3.0 picoruby-3.0.0 truffleruby-23.1.2 truffleruby+graalvm-23.1.2 Only latest stable releases for each Ruby implementation are shown. Use `rbenv install --list-all' to show all local versions.
-
-
-
最新版のバージョンを指定してインストール
-
コマンド
$ rbenv install 3.3.0
-
ログ
ruby-build: using openssl@3 from homebrew ==> Downloading ruby-3.3.0.tar.gz... -> curl -q -fL -o ruby-3.3.0.tar.gz https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 21.0M 100 21.0M 0 0 5605k 0 0:00:03 0:00:03 --:--:-- 5607k ==> Installing ruby-3.3.0... ruby-build: using libyaml from homebrew -> ./configure "--prefix=$HOME/.rbenv/versions/3.3.0" --with-openssl-dir=/opt/homebrew/opt/openssl@3 --enable-shared --with-libyaml-dir=/opt/homebrew/opt/libyaml --with-ext=openssl,psych,+ -> make -j 8 -> make install ==> Installed ruby-3.3.0 to /Users/Macのコンピュータ名/.rbenv/versions/3.3.0
-
M3 チップの方でインストールができない場合
以下の記事を参考にしてみてください。
rvm install 3.3.0 --with-openssl-dir=/usr/local/opt/openssl@1.1
は実行しない方がいいみたいです。https://github.com/rbenv/ruby-build/discussions/2364
https://medium.com/@nelliemckesson/install-ruby-with-rvm-on-an-m3-pro-mac-784718bdb72a -
-
インストールできているか確認
-
コマンド
$ rbenv versions
-
ログ
system * 3.2.2 (set by /Users/Macのコンピュータ名/.rbenv/version) 3.3.0 # 指定したバージョンがあればOK
-
-
-
インストールした Ruby のバージョンを使用するように設定
-
切り替えるコマンドを実行
$ rbenv global 3.3.0 # 何も出力されないです
-
切り替えられたか確認
-
コマンド
$ rbenv versions
-
ログ
system 3.2.2 * 3.3.0 (set by /Users/Macのコンピュータ名/.rbenv/version) # 指定したバージョンに * がついていればOK
-
-
切り替えられない場合
rails new
で rails アプリを作成で作成したディレクトリに移動してrbenv global
の代わりにrbenv local
を試してみてください(M2 チップ の Macbook で確認)-
global
→ 全てのディレクトリ -
local
→ 直下のディレクトリ
-
参考資料(rbenv のインストール & Ruby のインストール )
Rails のインストール
-
インストールされているか確認
-
コマンド
$ rails -v
-
ログ
-
インストールされている場合
Rails 7.1.3.2 # バージョンが表示されていれば OK
-
インストールされていない場合の例
Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command.
rbenv: rails: command not found The `rails' command exists in these Ruby versions: 3.2.2
-
-
インストールされていなければ下記の手順でインストールしてください。
-
-
インストール
-
コマンド
$ gem install rails # ログいっぱいでます
-
-
インストールされたか確認
-
コマンド
$ rails -v
-
ログ
Rails 7.1.3.2 # バージョンが表示されていれば OK
-
-
参考資料
Rails のバージョンが確認できない場合
-
エラー内容
$ rails -v Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command.
以下の記事を参考にしてみてください。
僕の場合は、rbenv のインストールの「3. 初期設定の設定」をしていないと発生しました。
PostgreSQL のインストール(データベースが必要な方)
-
インストールされているか確認
-
コマンド
$ psql --version
-
ログ
-
インストールされている場合
psql (PostgreSQL) 14.11 (Homebrew) # バージョンが表示されていれば OK
-
インストールされていない場合(おそらく大体の人はこっちかも)
zsh: command not found: psql
-
-
-
インストールされていなければ以下の手順でインストールしてください。
-
インストール
-
コマンド
$ brew install postgresql # なんかいっぱいログでます
-
-
インストールされたか確認
-
コマンド
$ psql --version
-
ログ
psql (PostgreSQL) 14.11 (Homebrew) # バージョンが表示されていれば OK
-
-
アプリの作成
ローカル環境構築が完了すれば、次はアプリの作成です。
カリキュラムではいつも git clone
コマンドでアプリをローカルに作成しますが、今回は rails new
コマンドで 0 からアプリを作成します。
目次
内容
rails new
で rails アプリを作成
-
アプリを作成するディレクトリに移動
ルートディレクトリ直下ではなく
Workspace
などのディレクトリを作成して、そのディレクトリの中でrails new
する方が管理が楽だと思います。 -
データベースに PostgreSQL を指定して
rails new
コマンドを実行-
コマンド(ディレクトリ名は後から変更可能です)
$ rails new myapp('ここは作成するアプリ名を入れてください') --database=postgresql # ログがいっぱい出ます
-
TailwindCSS を使用する方
-
--css=tailwind
オプションをつけてください$ rails new myapp --database=postgresql --css=tailwind
-
-
esbuild を使用する方
-
--javascript=esbuild
オプションをつけてください$ rails new myapp --database=postgresql --javascript=esbuild
-
-
ローカルのデータベース作成
-
作成されたアプリのディレクトリへ移動
-
コマンド
$ cd myapp # 何も出力されないです
-
-
データベース作成
-
コマンド
$ rails db:create
-
ログ
Created database 'myapp_development' Created database 'myapp_test'
-
ローカルで動作確認
-
ローカルで挙動を確認するためにサーバーを起動
- コマンド
$ rails s
- ログ
=> Booting Puma => Rails 7.1.3.2 application starting in development => Run `bin/rails server --help` for more startup options Puma starting in single mode... * Puma version: 6.4.2 (ruby 3.2.2-p53) ("The Eagle of Durango") * Min threads: 5 * Max threads: 5 * Environment: development * PID: 97975 * Listening on http://127.0.0.1:3000 * Listening on http://[::1]:3000 Use Ctrl-C to stop
- コマンド
-
確認
-
http://localhost:3000/ にアクセスして以下の画面が表示されていれば OK
-
http://localhost:3000/ にアクセスして以下の画面が表示されていれば OK
トップページ作成(確認用、デプロイには必須ではない)
この項目をしない場合はデプロイに成功しても以下のような画面が出ます。
トップページに何か表示したい方は以下の項目を実行してください。
-
ジェネレーターの設定(必要な方のみ)
-
helper ファイル、test ファイル、ルーティングの記述がいらない方はしてください
config/application.rbrequire_relative "boot" require "rails/all" # Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. Bundler.require(*Rails.groups) module Myapp class Application < Rails::Application # 中略 # ここから下5行を追記 config.generators do |g| g.helper false # helper ファイルを作成しない g.test_framework false # test ファイルを作成しない g.skip_routes true # ルーティングの記述を作成しない end # ここまで追記 end end
-
-
コントローラとビューの作成
-
コマンド
$ rails g controller staticpages top
-
ログ
create app/controllers/staticpages_controller.rb invoke erb create app/views/staticpages create app/views/staticpages/top.html.erb
-
-
-
ルーティングを記述
作成したトップページが http://localhost:3000/ にアクセスした時に表示されるようにルーティングを変更します。
config/routes.rbRails.application.routes.draw do root 'staticpages#top' end
-
ビューファイルを編集
僕はデフォルトがあまり好きじゃないので編集します。
ページにアクセスした時に表示される内容が変わるだけなのでお好みでどうぞ。app/views/staticpages/top.html.erb<h1>デプロイ成功です!</h1> <p>お疲れさまでした!!</p>
エラーまとめ
- PostgreSQL をインストールせずに、
rails new
した時に発生
- PostgreSQL サーバーを起動せずに、
db:create
した時に発生
-
brew install libpq
をした後にアンインストールしたり、brew install postgresql
したり、合間にrails new --database=postgresql
しなおしたりしてたら発生(あんまり覚えてない)
アプリと GitHub の連携
ローカルにアプリを作成できたら、次は GitHub 上にリモートリポジトリを作成し、紐付けます。
今回デプロイ先で使用する Render は GitHub のリモートリポジトリをもとにデプロイするので、先ほど作成したローカルのアプリを GitHub に連携する必要があります。
目次
内容
GitHub でリモートリポジトリを作成
-
https://github.com/new にアクセスする
-
「Repository name」 にアプリ名を入力
- リポジトリ名は後から変更可能です
-
「Create repositroy」をクリックしてリポジトリを作成
-
SSH をコピー(アイコンをクリック)
作成したアプリを GitHub と連携
-
リモートリポジトリの追加
-
git remote add origin
の後にコピーした SSH をペースト$ git remote add origin git@github.com:[ユーザーネーム]/[アプリ名].git
-
追加できたか確認
-
コマンド
$ git remote -v
-
ログ
origin git@github.com:[ユーザーネーム]/[アプリ名].git (fetch) origin git@github.com:[ユーザーネーム]/[アプリ名].git (push)
-
-
-
リモートリポジトリに必要ないファイルを
.gitignore
に追記.gitignore# See https://help.github.com/articles/ignoring-files for more about ignoring files. # # If you find yourself ignoring temporary files generated by your text editor # or operating system, you probably want to add a global ignore instead: # git config --global core.excludesfile '~/.gitignore_global' # Ignore bundler config. /.bundle # 中略 # Ignore master key for decrypting credentials and more. /config/master.key /app/assets/builds/* !/app/assets/builds/.keep # ここから下2行を追記 .DS_Store /vendor/bundle # ここまで追記
-
commit & push
-
ステージング
-
コマンド
$ git add -A # 何も出力されません
-
-
コミット
-
コマンド
$ git commit -m 'init commit' # めっちゃログでます
-
-
プッシュ
-
コマンド
$ git push -u origin main
-
ログ
Enumerating objects: 96, done. Counting objects: 100% (96/96), done. Delta compression using up to 8 threads Compressing objects: 100% (80/80), done. Writing objects: 100% (96/96), 26.37 KiB | 4.40 MiB/s, done. Total 96 (delta 2), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (2/2), done. To github.com:[ユーザーネーム]/[アプリ名].git * [new branch] main -> main branch 'main' set up to track 'origin/main'.
-
-
-
-
確認
GitHub の作成したリポジトリのページにアクセスして、コミットの内容が反映されていれば OK
参考資料
Render へのデプロイ
ローカルで作成したアプリと GitHub の連携が終われば、いよいよデプロイです!
今の状態は自分のパソコンからでしかアプリを触れない状態です。
( rails s
コマンドを実行して、 http://localhost:3000/ にアクセスする)
それをインターネットを通じて、誰でもアクセスできる状態にするのがデプロイです。
デプロイとは? by ChatGPT3.5
「デプロイ」とは、開発したソフトウェアを実際に動作させる環境に配布し、適切に設定して使用可能な状態にすることを指します。このプロセスは、ソフトウェア開発の最終段階の一つであり、コードの開発が終わった後に行われます。
具体的には、以下のようなステップを含みます:
ビルド:ソースコードから実行可能な形式(バイナリやバイトコードなど)を生成します。
テスト:ビルドされたソフトウェアが予定通りに動作するかどうかを検証します。
リリース:テストをパスしたソフトウェアをリリース用に準備します。
配布:ソフトウェアをユーザーや顧客がアクセスする環境に配布します。これには、オンラインでのアップロードや物理的なメディアの配布が含まれることがあります。
運用:ソフトウェアが問題なく動作するように監視し、必要に応じてメンテナンスやアップデートを行います。
デプロイメントは、単純なウェブサイトの更新から、クラウドサービスや大規模なエンタープライズアプリケーションの展開に至るまで、さまざまな形態があります。また、デプロイメントの効率化と管理を目的とした様々なツールやプラクティス(CI/CD パイプラインなど)も存在します。
Render.com は PaaS というデプロイを簡単にしてくれるサービスの一種です。
PaaS とは? by ChatGPT3.5
PaaS(Platform as a Service)は、「プラットフォームとしてのサービス」を提供するクラウドコンピューティングの一形態です。PaaS は、アプリケーションの開発、実行、管理に必要なプラットフォーム(ハードウェア、オペレーティングシステム、ミドルウェア、データベース、開発ツールなど)をインターネット経由で提供するサービスです。
PaaS の主な利点は以下の通りです:
開発の迅速化:開発者はインフラストラクチャの構築や管理に時間を割かずに、直ちにアプリケーション開発を始めることができます。
コスト削減:物理的なサーバーやネットワーク機器を購入、運用、保守する必要がなくなるため、初期投資や運用コストが削減されます。
スケーラビリティ:アプリケーションの需要に応じて、リソースを柔軟に調整することができます。使用した分だけ料金を支払うモデルが一般的です。
自動化と統合:多くの PaaS 提供者は、データベース管理、バージョン管理、ワークフロー管理などの自動化ツールを提供し、開発プロセスを効率化します。
セキュリティとコンプライアンス:PaaS プロバイダは、プラットフォームのセキュリティ対策やコンプライアンス要件の遵守を担当します。
例として、Google App Engine、Microsoft Azure、Heroku、IBM Cloud Foundry などがあり、これらのサービスを利用することで、開発者はアプリケーションの構築に集中でき、インフラストラクチャの詳細に関する心配から解放されます。
目次
内容
アプリ側でデプロイ準備
-
bin
ディレクトリにrender-build.sh
という名前のファイルを作成し、以下の内容を記載します。bin/render-build.shset -o errexit bundle install bundle exec rails assets:precompile bundle exec rails assets:clean
-
commit & push
$ git add -A $ git commit -m 'お好みのコミットメッセージ' $ git push
Render 側で Web Service 作成&デプロイ
-
https://dashboard.render.com/ へアクセス
- アカウント未作成 or 未ログインの方は GitHub アカウントでログイン
-
「New +」というボタンを クリックし、 「Web Service」を選択
-
「Build and deploy from a Git repository」にチェックが入っているのを確認し、「Next」をクリック
-
「Connect a repository」の欄で先ほど作成したアプリのリポジトリを選択
-
項目を入力(編集する項目のみ記載しています)
-
Name
- 自分のアプリ名を入力
-
Region
- 「Singapore (Southeast Asia)」を選択(日本から一番近い)
-
Runtime
- 「Ruby」を選択
-
Build Command
- 初期値では
bundle install; bundle exec rake assets:precompile; bundle exec rake assets:clean;
と入力されている項目 -
./bin/render-build.sh
を入力(先ほど作成したrender-build.sh
を実行)
- 初期値では
-
Start Command
- 初期値では
bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}
と入力されている項目 -
./bin/rails server
を入力
- 初期値では
-
-
Free プランを選択
-
環境変数を追加
Environment Variables の項目を設定
-
左下の「Create Web Service」をクリックして作成
参考資料
データベース連携(必要な方のみ)
Render が提供している無料の PostgreSQL は 90 30 日間限定です。
期限切れから、2 週間の猶予期間を過ぎるとデータベースが削除されます。
※2024/06/27 追記
2024/06/20 以降に作成するデータベースの無料期間は 30 日限定に変更となりました。
2024/06/20 以前に作成したデータベースの無料期間は 90 日のまま変更はないようです。
本番環境でデータベースを使うには、データベースを作成し、デプロイしたサービスと連携する必要があります。
今回はわかりやすさを重視して、 Render が提供している PostgreSQL を使用します。
目次
内容
データベース作成
-
項目を入力
-
Name
- ダッシュボードに表示される名前を入力
-
Database(入力しなければ任意の値)
- データベースの名前を入力
-
User(入力しなければ任意の値)
- ユーザー名を入力
-
Region(Web Service で選択したものと同じもの)
- 「Singapore (Southeast Asia)」を選択
-
Instance Type
- 「Free」を選択
-
Name
-
左下の「Create Database」をクリックして作成
-
「Status」が 「Creating」から「Available」になれば作成完了
データベース連携
Render 側での設定
-
https://dashboard.render.com/ から、作成したデータベースのページにアクセス
-
下にスクロールし、「Connections」の項目の中の「Internal Database URL」をコピー(アイコンをクリック)
-
ダッシュボードに戻り、作成したアプリのページにアクセス
-
左側のメニューから「Environment」を選択し、「Add Environment Variable」をクリック
-
「Key」に
DATABASE_URL
、「Value」に先ほどコピーした「Internal Database URL」の値をペーストし、 「Save Canges」で保存
アプリ側での設定
bin/render-build.sh
に bundle exec rails db:migrate
を追記
set -o errexit
bundle install
bundle exec rails assets:precompile
bundle exec rails assets:clean
bundle exec rails db:migrate
テーブル作成(確認用、必要な方のみ)
-
scaffold コマンドを実行
$ rails g scaffold User name:string invoke active_record create db/migrate/20240417084103_create_users.rb create app/models/user.rb invoke resource_route route resources :users invoke scaffold_controller create app/controllers/users_controller.rb invoke erb create app/views/users create app/views/users/index.html.erb create app/views/users/edit.html.erb create app/views/users/show.html.erb create app/views/users/new.html.erb create app/views/users/_form.html.erb create app/views/users/_user.html.erb invoke resource_route invoke jbuilder create app/views/users/index.json.jbuilder create app/views/users/show.json.jbuilder create app/views/users/_user.json.jbuilder
-
rails db:migrate
を実行 -
config/routes.rb
を以下のように編集config/routes.rbRails.application.routes.draw do resources :users root 'users#index' end
-
ローカルで挙動を確認
確認
プッシュが完了すると自動的にデプロイが始まります。
本番環境でもユーザーの CRUD ができれば OK です!
参考資料
補足事項
確認用のファイルを削除
今回作成したトップページや users
テーブルがいらない方は以下のコマンドを実行してください
rails g controller staticpages top
の取り消し
こっちは簡単です、このコマンドを実行するだけで OK
$ rails destroy controller staticpages
# 中略
remove app/controllers/staticpages_controller.rb
invoke erb
remove app/views/staticpages
rails g scaffold User name:string
の取り消し
-
ジェネレーターの取り消し
$ rails destroy scaffold Users # 中略 invoke active_record remove db/migrate/20240417084103_create_users.rb remove app/models/user.rb invoke resource_route route resources :users invoke scaffold_controller remove app/controllers/users_controller.rb invoke erb remove app/views/users remove app/views/users/index.html.erb remove app/views/users/edit.html.erb remove app/views/users/show.html.erb remove app/views/users/new.html.erb remove app/views/users/_form.html.erb remove app/views/users/_user.html.erb invoke resource_route invoke jbuilder remove app/views/users remove app/views/users/index.json.jbuilder remove app/views/users/show.json.jbuilder remove app/views/users/_user.json.jbuilder
-
マイグレーションファイルが削除されてしまっているので復元
-
テーブルを削除するマイグレーションファイルを作成して、編集
$ rails g migration DropUsers # 中略 invoke active_record create db/migrate/20240417112425_drop_users.rb
db/migrate/YYYYMMDDHHMMSS_drop_users.rbclass DropUsers < ActiveRecord::Migration[7.1] def change drop_table :users do |t| t.string :name t.timestamps end end end
-
作成したマイグレーションファイルを実行
$ rails db:migrate == 20240417112425 DropUsers: migrating ======================================== -- drop_table(:users) -> 0.0060s == 20240417112425 DropUsers: migrated (0.0062s) ===============================
-
db/schema.rb
を確認し、テーブルが削除されていれば OK
Render の tips
- Render は無料プランだと 15 分間アクセスがないと次のアクセスの際に読み込みがめっちゃ時間かかります。一応対策はできます。
- 無料プランでコンソール使う方法
Homebrew のコマンド
-
brew list
インストールされてる一覧を表示$ brew list ==> Formulae autoconf ca-certificates gettext git icu4c krb5 libyaml lz4 m4 openssl@3 pcre2 pkg-config postgresql@14 rbenv readline ruby-build
-
brew uninstall アンインストールするものの名前
終わりに
今回はローカルで環境構築を行ったので、次は Docker を使って環境構築を行ってみようと思います。
間違っている部分や気になる点があれば、コメントいただけると嬉しいです!
X もやっていますのでよろしければフォローお願いします!