【キャリア】未経験で Drupal を選ぶのはあり？はい。ありです。

今回はDrupalエンジニアのキャリアにフォーカスを当てて記事を書こうと思います。

タイトルにも書きましたが私の答えを先に言います。

Q: 未経験で Drupal を選ぶのはあり？
A: **はい。ありです。システムを学ぶことに関しては ぴったり だと思います。**

のんびりと書いてますので、箸休め程度にご覧ください。

それではっ！どーぞっ！

## 1. 世間的なDrupalエンジニアのイメージ
**世間的なイメージ**はどうなんでしょう。
Drupal開発に携わっている方の記事から、どう思っているんだろうと印象を調査しました。
※ 引用している部分が、本来の意図とは違うかもしれませんがご容赦ください。

> 未経験でDrupalはやめた方がいい

> Drupalはノーコード、ローコードが特徴なので、実際の開発では管理画面をいじっている時間が長く、コードを読んだり書いたりする力がつきにくいということです。

> 要するにディレクターとしてDrupalに全集中することは、デジタルマーケティングの中で最もコアな領域を攻めるということ

> 国内だと組織・個人共にプレイヤーが少ないこともあり、外注しても思い通りの結果が出てこないケースがとても多い印象です。 

いくつか引用させていただきました。

ほうほう。「専門性が高い」という印象でしょうか。

https://qiita.com/863/items/a61deb73ea86220a4de0

https://gengo-k.hatenablog.com/entry/2021/12/15/182552

https://blauerberg.github.io/posts/drupal-engineering-organization/

## 2. 未経験でDrupalはダメだという理由はどこにあるの？
「ニッチすぎる」「専門性が高い」「ドキュメントが英語」というところをよく耳にします。
でもそれって、「未経験だから選ぶべきじゃない」って理由になりますか？

- Drupalはドキュメントは豊富です。
英語であれ、母国語であれ、フレームワークに沿った開発をやるなら、「ドキュメントをきちんと読む」って工程は生まれますよね。
- 「専門性の高いフレームワークを扱うことができる」って、エンジニアとしてはとても強い武器ですよね。
- 「ニッチすぎる。」が嫌なら、制作向いてないです。ディズニーランドのキャストだって、汎用的な接客はやらないです。そのお客さんに合わせた接客やってます。

## 3. じゃあ、Drupalが「未経験にぴったり」だと思う理由は？
ここまで否定的な文章しか書いてませんのでちゃんと言及します。

**Drupalは、基本〜応用までの「システム開発」を学ぶのにぴったりです。**

私、まだパソコン触りだして2年ちょっとです。
ほんとはどっちかというとデジタル反対派ってくらい。

データベースとかわけわかんない、オブジェクト指向とかわけわかんない、そんな私にシステムを教えてくれたのがDrupalです。

### 3-1. Database設計
Drupalは、データ構造がめちゃくちゃ統一されてます。

基本的な RelationalDatabase の設計 が忠実に守られていますし、例外がほとんどありません。

**学習コストがかなり低く、学ぶことが多いので、体系的に学べるところがいいポイントだと思ってます。**

以下の2パターンだけ抑えとけば、自然と「RelationalDatabaseの設計」は学ぶことができます。
- 「フィールドタイプ」に応じた「テーブルの構造」
- 参照フィールドの「テーブルの構造」

たまに、実案件だと上記のパターンでは満たせない要件が出てくるので、もちろん幅を広げることも可能です。

### 3-2. デザインパターン
コアのソースコードを追ってると、至る所で考え込まれてる、オブジェクト指向のデザインパターンを見ることができます。
私は「オブジェクト指向ってなに」ってところの理解に苦しみましたが、そこの崖さえ登りきればDrupal開発は教材がめちゃくちゃ充実してます。（発想の部分が養われます）

### 3-3. 逆に...。
個人的に思ってることですが、PHPの実力はそんなになくても、OOP 設計とフレームワークの作法さえちゃんと守っていればそれっぽいパフォーマンスは出るし、それっぽくエラーハンドリングはできます。

逆にですが、他の言語やフレームワークをやってからDrupalに入ってきた中途の方は。

- フレームワークに合わせた書き方をしなくても技術力で要件を満たせちゃう。
- だからDrupalアプリの設計が上手くできない。
- 速度がでない。
- 冗長になる。

といったこと、思い当たるところないでしょうか？

私的には、「責務の明確化」と「依存性の分離(ISP)」だけ抑えとけばOK！って感じ。

未経験の方が固定概念に左右されることが少ないからやりやすい。

https://syobochim.hatenablog.com/entry/2020/04/20/085300

## 4. Drupalは学習コストが高い？
どうなんでしょう。
他のフレームワークをやったことないからわからないです。

個人的には、「Laravel」や「Rails」よりかはカジュアルにシステム開発を学ぶことができる、と思ってます...。

@863 さんの記事から引用させていただきます。

![learning curve.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253501/c1b67a51-d8ae-d022-7d88-10aa50d88abc.gif)

僕はこの図を全く理解できません。
実感したことがない。（図の読み方がわからないだけな気もする...）

## 5. キャリアの幅を広げることは可能？
ありがたいことに、大規模の案件が多いのでどの方面にでも幅を広げることは可能です。

### ミドルウェア
「S3でディレクトリに応じて権限管理。」とか、「CSVや、Json、XML といったいろんな拡張子からデータをインポート。(時にはバッジ処理、時にはGUI)」とか、「Drupal内のコンテンツをAPI配信(もちろん権限も)。」とか、そんな望んでやれることじゃないですよね。

### 検索
OpenSearchや、Solrなど、お客さんの要望に合わせて、いろんな検索エンジンを触ることができるのも魅力。

要件や予算があって、多くのことができるというのは魅力の1つ。

### あとは...。
Drupalはデジタル庁など国の機関が注目しているフレームワークです。

アクセシビリティ要件だったり、ユーザー体験等、学ぼうと思えば幅広く体系的に学ぶことができる、それがDrupalだと思います。

## 6. この記事を見てDrupalに興味を持った方へ
そんな人がいるのかわかりませんが、僕の気持ちを2つほど最後に書いて終わろうと思います。

### 6-1. ウェブサイトを作ってるわけじゃない。 システムを作ってる。
キャリアで不利。って聞く人は、何を作っているイメージなんでしょう。
確かに、「ウェブサイトを作ることを目的とする人」であればキャリア的には不利だと思います。

なぜなら、**Drupalはウェブサイトじゃなくシステムを作るものだから。**

CMSというカテゴリに入るため、Drupalを「大規模サイトに耐久できるWordPress」って思っている人いませんか？

僕のDrupalへの印象は違います。

Drupalは **「Symfonyを拡張してCMSっぽくしてるだけ」** です。

LaravelやRails よりカジュアルにCMSのシステムを作れる。ってイメージです。

ってか、「Laravel」や「Rails」も使用率がDrupalより高いだけで、「専門性高い問題」「ドキュメント問題」はあるでしょ。

少し話は逸れましたが、ウェブサイトを作るのであればDrupalは向いてないです。
**だって、Drupalはシステムを作るものだから。**

### 6-2. みんな勘違いしてる(？)Drupalの強み
> **汎用性の高さ**

これよく言う人多いですよね。汎用性高いって強みなんでしょうか？
僕がお客さんだったら、ありきたりな商品売ってほしくない。
ちゃんと、俺仕様のサービスを提供してほしいです。

Drupal開発してる人って、できあがったコントリビュートモジュールの組み合わせで終わらせたがるケースよく見ること多いと思います。

プロであれば、顕在的な要件を満たす能力だけでなく、潜在的なニーズや願いに応える提案力も求められますよね。そのための「引き出し」を増やしていきたいなと思います。

（僕は長男だからお古のモジュールは嫌いです。）

もちろん、Drupalは「拡張にOpenで変更にClosed」ですので、局所的・汎用的どちらにも柔軟に開発を進めることができます。(Open-Closedの原則が綺麗に守られています。)

むしろ、他のフレームワークよりもやりやすいと思います。

アクセスコントロールも、データ取得も、レンダリングも、アカウント管理も、管理画面も。

## 7. まとめ
長くなりましたが、ここまで読んでいただいてありがとうございます。

以上、あざした！