ファイルアップローダー「CarrierWave・Shrine・ActiveStorage」の比較

f:id:ryoutaku_jo:20190507021952p:plain

【結論】

・CarrierWaveは、一通りの機能を備えており使用実績も多い。

・Shrineは、必要な機能のpluginだけ選択して読み込む事が出来る。

・ActiveStorageは、Ralis5.2から標準装備されたファイルアップローダー。

【目次】

【本題】

Railsのファイルアップローダーについて

Railsで画像などのファイルをアップロードする機能を実装する場合、ファイルアップローダーが必要になります。 今回はそのファイルアップローダーの中で、主流の三種類の比較を行いたいと思います。

CarrierWave

GitHub - carrierwaveuploader/carrierwave: Classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks

まず初めに紹介するのは「CarrierWave」です。 かなり古株のファイルアップローダーで、同系統のgemの中でも評価は上位にきています。

使用実績の通り、バリデーションやキャッシュなど一通りの事はこなせます。

Shrine

GitHub - shrinerb/shrine: File Attachment toolkit for Ruby applications

次に紹介するのは、Shrineです。

こちらは、まだ実績の浅いgemですが、必要な機能のpluginだけ選択して読み込ませる事で、動作を軽量化させたり、影響範囲を狭めてデバックを容易にしたりなど、CarrierWaveには無い特徴的な機能を備えています。

ActiveStorage

Active Storage の概要 - Rails ガイド

最後は、ActiveStorageです。

こちらは、Rails5.2から追加された機能で、本当に最近登場したばかりです。

標準で組み込まれているので、導入の容易さがメリットではありますが、まだ開発されて日浅い事もあり、機能面では他のgemに見劣りする部分があるようです(バリデーション・キャッシュ非対応など)

《今日の学習進捗(3年以内に10000時間に向けて)》

本日でQiitaへの毎日投稿は終了。 開発を通して一番痛感したのは、やはりタスク管理の未熟さである。 ひとつひとつのタスクの見積もりはもちろん、ただ闇雲に開発に着手して、結局手戻りなどの無駄が発生するという場面に多々遭遇した。 今後、短期間でスキルを高めていくためには、生産性を向上させるのは不可欠なので、この課題は優先的に取り組んで行きたい。

学習開始からの期間 :150日
今日までの合計時間:1464h
一日あたりの平均学習時間:9.8h
今日までに到達すべき目標時間:1370h
目標との解離:94h
「10,000時間」まで、

残り・・・「8536時間!」