【LINE BOT】画面をタップするだけでカフェやニュース検索ができるBOTを作りました【Rails】
2023年に開発し、デプロイした上記のアプリのバージョンアップを行います。
過去の記事でHomebrewのアップデートを行っているので、今回はRubyとRailsのアップデートに関することのみ記載します。
現状確認
まず現状確認から行なっていきます
今回はClaude Codeに開発を一部手伝ってもらいました。
まずclaudeをプロジェクトフォルダ内で起動し、現在のRubyバージョンとRailsバージョンを調べてもらった上で、開発順序の計画を立ててもらいます。
ちなみに、現在のバージョンを確認したところ、
Ruby 3.1.0
Rails 7.0
でした。
claudeにプロンプトを送ったところ、下記のような結果が返りました。実際のclaudeからの回答を再度まとめてます。
1. rbenvでRuby3.3系がまだインストールされていない。
2. 開発順序としては
2.1 Ruby 3.3系をインストール → 切り替え → 動作確認
2.2 Rails 7.0 → 7.1に更新 → 動作確認
RubyとRailsを同時に切り替えると問題が起きた時どちらが原因か切り分けにくいので、別々にやるのが安全。
gem側が3.3に対応していないケースが稀にあるので注意が必要。
まず、Ruby 3.3系のインストールからはじめる。
利用可能なバージョンを確認するコマンドは下記。
rbenv install --list | grep "^3\.3"
この提示されたコマンドを入力し、その中から最新版をダウンロードします。
Rubyのアップデート
今回は、3.3.11が最新版だったので、こちらをインストールします。
rbenv install 3.3.11
インストール完了したら下記コマンドで確認します。
rbenv versions | grep 3.3.11
こちらで3.3.11が表示されたらインストール成功です。
終わったので、次の作業についてclaudeに確認しました。
では次の手順を進めてください。
①プロジェクトのRubyバージョンを切り替え
rbenv local 3.3.11
②切り替わったか確認
ruby -v
ruby 3.3.11 と表示されればOKです。
これを実行し、下記の結果が返ってくれば完了です。
ruby 3.3.11 (2026-03-26 revision 1f2d15125a) [x86_64-darwin23]
次の工程に関してもclaudeに確認しました。
次はgemを再インストールします。
bundle install
インストール完了したらGemfileのRubyバージョンも更新してください。
ruby '3.1.0'
を
ruby '3.3.11'
に変えてください。
Gemfileを変更したらbundle exec rails sでサーバーを起動して動作確認をしましょう。
この指示通り行なっていくとRubyのバージョンアップデートは完了します。
Railsのアップデート
Rubyのアップデートが終わったので今度はRailsのアップデートを行なっていきます。
Rubyの時と同様にclaudeにアップデート方法を確認しました。
GemfileのRailsバージョンを変更してください。
gem 'rails', '~> 7.0.0'
を
gem 'rails', '~> 7.1.0'
に変えてください。
変更したら
bundle update rails
を実行してください。
完了したら設定ファイルを更新します。
bundle exec rails app:update
途中でY/nを聞かれることがありますが、既存の設定を守るため基本的にn(上書きしない)で進めてください。
完了したらサーバーを起動して動作確認しましょう
bundle exec rails s
このclaudeのやり方通りでアップデートが完了しました。
claudeがあるだけでこんなに簡単に環境構築やアップデートが済んでしまい、まだAI黎明期の2021年、初学者で必死に検索しながら実行していた日々に思いを馳せてしまいます。
最後に
今回はClaude Codeを使って時短でアップデートを行いました。
過去にローカル環境での環境構築経験やアップデート経験があれば時短になりますが、全くの初学者はこれを理解できるんでしょうか。claudeをはじめとしたAI駆動開発において、どこまでをAIに任せ、どこからは人の手で、人の目で確認しないといけないのか、少しでも開発をかじるとその塩梅がわからなくなってしまいますね。
便利ツールはどんどん使いたくなりますが、AIが吐き出したコードを読み、理解できる力は衰えさせたくないなと非常に感じるアップデートでした。