コンポーネントとは
ここで言うコンポーネントは、サイトやアプリケーションを制作する上での考え方と、その周辺の技術のことを指します。
再生可能な部品(コンポーネント)を作り、組み立てて、構築していくことです。
見た目だけでなく機能も含めて、再利用可能な部品にする必要があります。
コンポーネント制作で利用するいくつかの技術
思いつくものは、下記になります。
BEM
CSSの命名規則です。
部品単位で命名していくので、コンポーネント指向と言って良いでしょう。
Webコンポーネント(Web Components)
ブラウザにネイティブで実装されている技術のひとつです。
それぞれブラウザの実装に差があり、そのままでは使いにくいのが現状です。
React、Angular、Vueなど
シングルページアプリケーションを作るときに選択されるライブラリです。
これらモダンなjsを利用すると、必然的にコンポーネントを作ることになります。
どうやって、コンポーネントを作成するのか
私も明確に答えを持っているわけではないですが、作業を進めてみて、思ったことを書いてみます。
結局、どこまでコンポーネントに含めるか、その判断が難しいです。
最小の部品を考える
まず、最小のコンポーネント(部品)がないと、それより大きいものを作ることができません。
どうやって最小のコンポーネントを作れば良いでしょうか。
似たコードをまとめる
最小の部品に関わらず、当たり前の話かもしれません。
まず、似たコードは、同じコンポーネントにできる可能性が高いです。
適度に機能があるもの
HTML、CSS、JavaScript、それぞれ機能を持ったものを最小にしましょう。
重複したコードであっても、コピペせずにすぐに再現できるのであれば、コンポーネントにしなくても良いです。
全体に関わるものは共通
全体に関わりそうなものは、全体共通にして、個別に管理しないようにします。
似たものをまとめていくと、被ることは多くないですが、そういうものが出たとき、無理にコンポーネント化しないように意識します。
手を動かして、試行錯誤する
これも当たり前の話ですが、完璧に部品分けするのは、難しいです。
巻き戻ってやり直すことも検討します。
レイアウト情報があるコンポーネントは、最小にしない
位置などのレイアウト情報があるものは、最小のコンポーネントの親になる可能性が高いです。
後から変わりようのないコンポーネントでない限り、最初に作るコンポーネントではないです。
メリットとメデリット
制作にかかる時間とその必要性が、それぞれメリットとデメリットになります。
メリット
頻繁に変更や追加などが行われても対応できます。
特に、大規模なコンテンツになると、効果が期待できます。
デメリット
コンポーネントを想定したり、制作するために時間がかかります。
また、更新がないコンテンツでは、効果がありません。
通常のWebサイトでの活かし方
ライブラリなどを使用する場合は、それに従っていくことになると思います。
そうではないとき、どのようにコンポーネント指向を取り入れると良いでしょうか。
テンプレートエンジンを利用する
テンプレートエンジンを利用することで、コンポーネントをイメージした制作ができると思います。
案件の仕様があえば、PHPなどでも構わないです。
静的コンテンツを納品する場合は、npmから選択すると良いでしょう。
複数ページある静的Webサイト制作は、Node.js(gulp + Swig)で生成する!
スタイルガイドを作る
スタイルガイドを作ると、コンポーネントのようなものを構築していくことになるので、イメージしやすいです。
まとめ
コンポーネントを作っていくと、時間がかかる割に、効果を感じないことがあるかもしれません。
しかし、面倒臭がらずにやっていると、後半の作業時間がどんどん短くなる上、修正にも時間がかからなくなります。
頑張りましょう!
それでは、また!
コメント