質問: deviseを使って認証システムを作ってみたのですが、ものすごくコードが複雑な気がしました。 自作のメソッドならもっとコンパクトでスッキリ書けています。 と言っても、まだrails歴1年くらいなので、どっちが良いのかわかりません。 プロの現場では、deviseなどのgemか、それとも自作メソッドのどちらがスタンダードなのでしょうか?
回答: deviseはログイン認証以外に,メール認証や不正ログインに対するロック等認証周りの様々な設定が簡単に扱える多機能なライブラリです。 実装は複雑に見えるかも知れませんが,認証だけであれば実際は セッションにログイン情報持たせてパスワードハッシュ化してXSSやスクリプトインジェクションなどのセキュリティ対策を施す処理をモデルで一般化して実装したものに過ぎないので,何も複雑なことはやっていません。しかしどんなモデルやコントローラも一般化してログイン処理を行うので,rails gでモデルやviewを生成するとすぐに認証できる状態のコードが生成出来ます。 ログインを別々のモデルで行いたい時もすぐに追加できます。 deviseの元コードが読めるのであれば自分で実装するにしても結果的にdeviseをほとんど部分化するだけの実装になりdeviseを使った方が効率いいことに気付くと思います。 ただブラックボックスに見えて分かりづらいから脱却するには学習コストがかかるのも,事実なので,単純な認証しかいらない。セキュリティ対策も問題ない。deviseの機能なんて全部自分で実装出来るしもっとシンプルに書けるし手間でもないというレベルであれば全部実装してもいいと思います またどうやってwebアプリケーションで認証を実装するのか知らないのにdeviseを使うと使ってて消耗したり手の込んだカスタマイズをやりたくても仕様が解らなくて断念せざるを得ないという事になったりするので,deviseを使うのであれば,ログインモデルやセッションにどのような情報を持たせてどのようにデータベースと照らし合わせどのように認証後コントローラで処理させるかくらいの知識は身につけてから使うと良いと思います。 質問者様が色んな認証機能を実装したいどのように認証するか知りたいと思うのであればdeviseのコードから受ける恩恵が大きいと思うので,deviseの仕様を理解して使っていくことをお勧めします。