Rails

【Rails】CarrierwaveとMiniMagickを使って画像を投稿する方法

Rails

 

突然ですが、画像を送信・投稿する機能を持ったアプリケーションってたくさんありますよね。むしろ今時、テキストのみで画像投稿ができないアプリケーションは見たことがありません。

そこで今回は数ある画像送信方法の中でも、CarrierwaveとMiniMagickを使った画像投稿の手順について解説したいと思います。

Carrierwaveとは

Carrierwaveとは、ファイルアップロード用のgemです。

gemfileに「gem ‘carrierwave’」記載し、「bundle install」を実行する必要があります。Ruby on Railsの画像投稿の仕組みで、よく使われるgemの1つです。

MiniMagickとは

MiniMagickとは、画像加工をしてくれるgemです。

Carrierwaveと同じく、gemfileに記載し「bundle install」する必要があります。前提として、MiniMagickを使うにはImageMagickというものをインストールする必要があるので注意しましょう。

ImageMagickは、画像処理ライブラリです。

  • 画像サイズ変更
  • 画像反転
  • 画像回転
  • 画像フォーマット変換
  • 色調整
  • グラデーション

といった様々な画像処理を行うことができます。

画像投稿機能の実装

では実際に、CarrierwaveとMiniMagickを使って画像投稿機能を実装してみます。以下の手順で実装を進めていきましょう。

まずはMiniMagickを使用するために、ImageMagickをインストールします。

↓ ターミナル

$ brew install imagemagick

 

次に、CarrierwaveとMiniMagickをgemfileに記述し、「bundle install」を実行しましょう。

↓ gemfile

gem 'carrierwave'
gem 'mini_magick'

 

↓ ターミナル

$ bundle install

 

続いて画像のアップローダーを作成します。ターミナルで、「rails g uploader image」コマンドを実行すると、app/uploadersディレクトリ以下にimage_uploader.rbが作成されます。

↓ ターミナル

$ rails g uploader image
uploaders

 

次に、先ほど作成したアップローダーを関連するモデルと紐付けます。今回の場合は、Messageモデルと紐付けると仮定します。

↓ Messageモデル

class Message < ApplicationRecord
  mount_uploader :image, ImageUploader
end

 

最後にimage_uploader.rbを編集して、MiniMagick経由で画像のリサイズを行えるようにしましょう。これで画像投稿の実装は終了です。

↓ image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base 
  include CarrierWave::MiniMagick
  process resize_to_fit: [400, 200]
end

まとめ

  • Carrierwaveとは、ファイルアップロード用のgemである
  • MiniMagickとは、画像加工をしてくれるgemである
  • MiniMagickを使うにはImageMagickというものをインストールする必要がある

 

 

今回は数ある画像送信方法の中でも、CarrierwaveとMiniMagickを使った方法について解説しました。画像に限らず、ファイルのアップロードは必須機能と言っても過言ではないので、ぜひこの機会に学習してみてください。