Drupal VS Ruby on Rails by Paris Hyun Technical Project Manager
はじめに
海外のサイトですが、現役のDrupalプロジェクトのプロジェクトマネージャーが、DupalとRuby on Railsのそれぞれのメリットデメリットを考察している記事をご紹介します。
個人的には、Drupalの最大のメリットは、DrupalAPIやDrupal8以降に導入されたプラグインマネージャーやイベントなどの、コードの追加変更を容易にしたりコードの再利用を可能にしたりする「仕組み」が整っている点にあると思っていますが、この記事では、DrupalはCMSとしてノーコードで使用した場合とRuby on Railsを使用して開発した場合のメリットデメリットについて検証しています。
この記事は以下のサイトを、 DeepL版プロの翻訳家 テンプレートを使用して翻訳して引用しています。AI翻訳のため一部訳がおかしい箇所がありましたらご容赦ください。
Drupal vs. Ruby on Rails. Who Will WIN?!
by Paris Hyun
Technical Project Manager
Drupalプロジェクトを監督するプロジェクトマネージャーとして、私はしばしばDrupalフレームワークとRuby on Railsの開発者としての以前のトレーニングを比較しています。明らかなのは、両方のプラットフォームでウェブサイトを構築する方法を学ぶことが、いかに身近で実行可能かということだ。Railsのようなフレームワークでは、アプリケーションを構築する際に抽象化されたレベル(フレームワークがあなたのために舞台裏で多くの仕事をする)があるため、スピーディに学習することができます。
Drupalの場合、抽象化のレベルはさらに高く、基本的なDrupalウェブサイトをデプロイするのに1行もコードを書く必要はありません。
これは便利なことですが、Drupalアプリケーションは膨大な量の複雑さ、具体的には、継続的なコンテンツ制作の管理と整理、編集者チーム間のワークフロー処理に伴う複雑さを処理するように設計されています。
慣習 vs 構成
私がRuby on Railsを好んでいる理由は、開発者のプロセスを改善するために設計されており、チーム内でのコードの共有や他の開発者からの遺産の受け継ぎ時に生じる大きな問題に対処している点です。
Hunger Gamesアプリのために作成した以下のrSpecファイルから分かるように、Rubyは非常に意味を明確に表現する能力のある言語です。きちんと書かれたRubyファイルは通常、一目で理解することができますし(そして、YA小説と同じくらい楽しむことができますが、それはあなた次第です)
ハンガーゲームアプリ
Appleは、高度に設計されたインターフェースを提供し、ユーザーに優れたユーザーエクスペリエンスを提供する役割を果たしているスマートフォンの世界と同じように、Railsもまた、エンジニアのために考え抜かれたフレームワークです。Ruby on Railsのモットーは、"設定よりも規約"です。すべてのコード行には、適切な場所があり、すべての機能は独立したロジックにカプセル化されており、他の部分に影響を与えることなく簡単に削除や拡張が行えます。Railsアプリケーションの構造と構成は、一貫性を持たせるためにハニカム(蜂の巣)のセルのように設計されています。オマハのRailsチームとグアムのRailsチームは、ほぼ同じようなファイルツリーを使っていることでしょう。
Rails開発者には、正しい方法と間違った方法がありますが、実験的なアプローチはあまり推奨されません。これは制約のように思えるかもしれませんが、その利点は特定の機能を探し回る時間がほとんどかからず、機能が変更や拡張された場合に起こる予期せぬバグの可能性がほとんどないことです。ルート(一般的にはURLとして知られています)は、RESTfulなAPIを使用して動的に作成され、1つのファイルに定義されます。このシステムは、実際の開発作業により多くの時間を費やすことができ、アジャイルな開発プロセスをサポートします。
一方、Drupalは、拡張性や組織のレベルにおいては異なる点もありますが、出版社のチームを主な設計対象としています。Drupalの組織構造の主要な要素はダッシュボードです。コンテンツの作成、タクソノミー用語を使用したコンテンツの整理、削除、公開前の草稿のバージョンへの差し戻しなどの作業は、Drupalが提供する基本的な機能を利用することができます。
ダッシュボードは、エンドユーザーに直感的に使いやすいだけでなく、私のような開発者にも、コマンドラインで全てを行なってきた経験がある私にとっては、ポイント&クリックのインターフェースを提供してくれることは歓迎すべき点です。Railsで新しいgemを追加する場合(Drupalでいうモジュールの追加に相当)、テキストエディタでコードを追加し、ターミナルでインストールコマンドを実行する必要があります。Drupalでは、同じような作業をコマンドライン(Drushを使用して)で実行し、ボックスにチェックを入れるだけでモジュールを「有効化」することができます。これですべて終了です。
オブジェクトとコンテンツ・タイプ
Drupalの特徴は、カスタムレイアウトを使用して特定のタイプのコンテンツを構築できることです。これはまるでレゴのピースのようで、それぞれのピースを組み合わせて作り上げることができます。
そして、Drupalではコンテンツタイプが非常に重要な役割を果たしています。これはRailsのようにオブジェクトがアプリケーションの中心になるのと同様で、同じようなコンテンツを作成、読み込み、更新、削除するための設計図となります。
Railsで典型的なオブジェクトとして挙げられるのは「User(ユーザ)」です。ユーザオブジェクトには、ユーザ名、メールアドレス、役職、会社の経歴などの属性が与えられます。
一方、Drupalで典型的なコンテンツタイプとして挙げられるのは「ニュース記事」です。ニュース記事には、タイトル、サブタイトル、本文(WYSIWYGエディタで編集可能)、コメント機能、傍線、公開日などの属性が与えられます。
ワークフローについて
Drupalで作業して以来、Ruby on Railsへの感謝が薄れたわけではありませんが、2つのフレームワークを比較することで、Drupalを使うことのメリットが明確になりました。Drupalはビジネスルールを扱うために開発された高度なフレームワークであり、コンテンツの開発をサポートします。
Drupalには、編集者の作業を非常に効率化する印象的な機能がいくつかあります。以下にいくつかの例を紹介します:
1. ワークフロー管理:Drupalはコンテンツの作成と公開を効果的に管理するための柔軟なワークフローを提供します。これにより、活動の追跡と承認プロセスの管理が容易になります。編集者はコンテンツの作成、編集、承認、公開などの状態をスムーズに管理できます。
2. タクソノミー:Drupalのタクソノミーシステムは、コンテンツをカテゴリやタグで分類するための強力なツールです。編集者は、タクソノミーを使用してコンテンツを効果的に活性化し、関連する情報を迅速に見つけることができます。
3. パーミッション管理:Drupalは細かいレベルでのアクセス制御を可能にするパーミッション管理システムを提供しています。編集者は、特定のユーザーやユーザーグループに対して、特定のコンテンツや機能にアクセス権を制限することができます。これにより、セキュリティとデータの保護が向上します。
これらの機能により、編集者は円滑なコンテンツ開発のライフサイクルを実現できます。Drupalは、ビジネスのニーズに合わせて柔軟にカスタマイズできるため、大規模なプロジェクトにも適しています。ドラッグ&ドロップのインターフェースや豊富なモジュールも利用できるため、編集者は技術的な知識がなくても簡単にコンテンツを管理できます。Drupalを使用することで、編集者は生産性を向上させ、効率的なコンテンツ主導のプロジェクトを実現することができます。
1."Who's Online "機能(Drupalコアに同梱されています)
オンライン中の人
他のチームメンバーがいつログインしているかを確認できます。チームメンバーが知らず知らずのうちにお互いの仕事をリアルタイムで書き直していないことを確認する便利なツールです。私が編集長をしていた頃、このようなことは記憶にないほど何度もありました。
2.堅牢なCMS
CMS
状態(公開、未公開)、タイプ(ニュースレター、記事、ページ)、著者などでコンテンツを並べ替えると、最近更新されたコンテンツにフラグが立ち、キューの一番上に表示されます。
3.何でもできるダッシュボード
何でもダッシュボード
イメージ via drupal.org
ダッシュボードは、スタイルガイドの共有、ニュースレターの統計追跡、イベントの招待や出席の追跡など、パブリッシングに関連する様々なタスクを管理するために拡張されているのを見たことがある。確かに、Google製品はこれらのタスクの多くを処理することができますが、なぜ1つのダッシュボードにすべてを保持しないのでしょうか?
4.バージョン管理
バージョン管理
イメージ via drupal.org
WordpressのようなCMSでは、投稿のバージョンを追跡することができ、コンテンツの履歴を確認するのに不可欠なツールです。Drupalではさらに一歩進んで、レイアウト全体のバージョンを表示したり、戻したり、削除したりすることができます。なぜこれが必要なのでしょうか?あるページのレイアウトをアップグレードするよう開発チームに依頼したとしましょう。彼らは素晴らしい仕事をし、あなたはそのページのコンテンツを収集する時間さえないほど素早く開発されました。
Drupalでは、このページを'一般公開'した状態と'管理者公開'した状態の両方のバージョンを同時に存在させることが可能です。これによって、そのページに必要なコンテンツを構築する時間を確保し、公開する準備ができたら最新バージョンの「スイッチを入れる」だけで公開することができます。これにより、開発チームの作業効率も向上します。新機能をデプロイして他の作業に移ることができるだけでなく、ウェブサイトの一部をアップグレードする際に発生するボトルネックや、チーム全体の成果物とのタイミングを調整する労力を省くことができます。誰もがより自律的に働くことができ、プロジェクトの立ち上げもよりスムーズに処理できる可能性があります。
この記事に関するご質問やご意見などございましたらお問い合わせフォームからお気軽にご連絡ください。