LoginSignup
1
1

More than 5 years have passed since last update.

administrateをtypusと比較してみた

Last updated at Posted at 2017-03-13

最近、administrateという、管理画面生成のgemの噂をちらほらと聞くようになりました。
これまで、active adminやtypusなどの管理画面生成gemを使ってきて、各々問題点を感じていたので、これを解決する希望を感じて触ってみた結果の報告です。

現在はtypusを主に使用して管理画面の生成を行なっているので、これとの主な比較になりますが、結論だけ先に書いている話です。

結論

先に書いておくと、administrateは使用可能なgemですが、現時点では、機能の数でtypusにもactive adminにも届いていないgemですので、現時点では、typusから乗り換えるつもりは無い。

だけど、機能的に下の部分は実装されれば今後はadministrateを使っていくのが望ましいです。

  • dashboardの機能
  • has_one,has_manyの関連に関する作成、更新画面
  • ログイン周りの作成工数を軽減してくれるdevice/cancancanなどへの連携gem
  • I18nの作業漏れがなくなっている。

※ I18nに関しては、ある程度抜けがあっても比較的低い工数でこちら側でも上書き可能なので、完全は求めません。

以上。あとは細かい話なので読まなくても良いです。

実際の比較

実際の比較。

administrateは、そもそもコンセプトとして

  • DSLを使った設定方法を使わない
  • Railsの標準的なやり方に近い方法で上書きする方法を提供する
  • コアな機能とそのほかを分離しておいて、機能を小さくメンテナンスしやすい形で提供する

という方針を貫いています。

ほとんどカスタマイズが効かないRailsAdminはおいておいて、これはActiveAdminやtypusのやっている領域をど真ん中で打ち抜いてきた感じですが、触って見た感想として、未実装の機能はあるが、できている範囲を見る限りそのコンセプトに対して非常に"良い設計感"を持って対処できていると言えます。
この辺は、オススメです。

実際にカスタマイズを行おうとすると、今までのRails"っぽい"やり方を提供しているので、機能に関して学習コストが低いですし、そもそもカスタマイズの幅に限界があって、なんとかしようとすると、本来カスタマイズしたい場所以外を巻き込んが広い変更を行うことになったり、そこで意図と腸捻転したカスタマイズが発生したりすることが発生しない様に出来ています。

ただ、現在はそもそも関連に関する機能が未実装部分が多すぎて、typusを使っていれば、カスタマイズの際にバグを踏みやすいなどの欠点を持ちつつも、一応関連の機能は実装されていて、大体の場合に使いやすいですが、
この辺り、実際いるだろ、という需要ある機能の実装が後回しにされてしまっていて、自分で実装するコストが大きいのは問題を感じています。

現在は、ダッシュボード、関連周りの機能を自分で実装するコストの方が、他のgemを採用して苦労するコストより高い状態なので、私は移行しませんが、typusには色々と煮え湯を飲んできた経験があるので、それをきちんと解決したAdministrateは将来的に移行するつもりで待ち構えています。

日本語のymlファイルとか、deviceとAdministrateを連携してくれるgemとか、周辺環境を他の人が整えておいてくれると早く幸せになれるので、そういうの募集中です。

あと、Administrateはpre1.0のgemなので今後も非互換な変更が着々と入る可能性などがあります。
…ですけど、経験として管理画面生成gemはそもそもカスタマイズの幅の無いRailsAdminを除いて、Railsバージョンアップに合わせて、毎度なんらかの不具合を出し続けているので、そもそも設計に関して正解の提出されていない管理画面生成gemはそういうのに付き合わされる具合はそんなに変わらないと思って良いと思いますよ。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1