「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
「ソフテックだより」では、みなさまのご意見・ご感想を募集しています。ぜひみなさまの声をお聞かせください。
私は本社事業所に勤務する入社2年目の社員で、主にWebアプリケーション開発に携わっています。
業務の中で、統一性のあるデザインを効率的に作るため、CSSフレームワークを活用する機会が多く、その便利さと重要性を実感しました。
そこで今回は、Webアプリケーション開発には欠かせないCSSフレームワークについて紹介し、Web開発における活用の一助としたいと思います
CSSフレームワークとは、Webアプリケーションを作成するのに必要なパーツや、ページレイアウトを構築するため、あらかじめ用意されたCSSコードを体系的にまとめたものです。
ここでいうCSS(Cascading Style Sheets)とは、文字の色や大きさ、余白、配置など、Webページのデザインやスタイルを指定するための言語です。
CSSフレームワークには、具体的には、ボタンやフォーム、ナビゲーションメニューといった共通のパーツや、ページ全体のレイアウトを整えるためのスタイルが含まれています。
画面幅やデバイスに応じたデザイン構築を支援する仕組みが備わっているものもあり、統一されたレイアウトを簡単に実現できるようになっています。
図1. 入力フォームの例
CSSフレームワークは、デザインの統一性を保ちながら開発時間を短縮し、メンテナンスを容易にすることで、Web開発におけるデザインと開発の効率化を目的としています。 そのため、効率的かつ高品質なWeb開発を行う上で、重要な役割を果たしています。
ここで、CSSフレームワークを構成する主な要素や機能について、具体的に見ていきます。
UIコンポーネントとは、Webアプリケーションで共通して利用されるユーザーインターフェースの部品を指します。 具体的には、ボタン、フォーム、ナビゲーションバー、モーダルウィンドウなどが挙げられます。
ユーティリティクラスとは、余白、文字サイズ、色、レイアウトの位置調整(flexやgridなど)といった、単一のスタイルを適用するための小さなクラスを指します。 CSSフレームワークでは、これらのユーティリティクラスを活用することで、カスタムCSSを書くことなくレイアウトやデザインを柔軟に調整できます。
図2. 背景色・パディング・マージン
<div class = ”p-3 mb-2 bg-primary text-white”>.bg-primary</div>
<div class = ”p-3 mb-2 bg-secondary text-white”>.bg-primary</div>
<div class = ”p-3 mb-2 bg-success text-white”>.bg-primary</div>
<div class = ”p-3 mb-2 bg-danger text-white”>.bg-primary</div>
<div class = ”p-3 mb-2 bg-warning text-white”>.bg-primary</div>
<div class = ”p-3 mb-2 bg-info text-white”>.bg-primary</div>
<div class = ”p-3 mb-2 bg-light text-white”>.bg-primary</div>
<div class = ”p-3 mb-2 bg-dark text-white”>.bg-primary</div>
図3. 透明度
<div class="opacity-100">■100%■</div>
<div class="opacity-75">■75%■</div>
<div class="opacity-50">■50%■</div>
<div class="opacity-25">■25%■</div>
このように、ユーティリティクラスを並べることで、背景色や透明度などのデザインを簡単に調整出来ます。
レスポンシブデザインとは、画面幅やデバイスに応じて最適なレイアウトを自動的に調整する仕組みのことです。 PC・タブレット・スマートフォンなど、異なるデバイスであっても統一感のあるデザインを保ちながら、使いやすい画面表示を実現できます。 CSSフレームワークでは、あらかじめレスポンシブ対応の仕組みが備わっているため、開発者が画面幅ごとのCSSの書き分けを自分で記述する必要が少なくなります。
図4.レスポンシブデザイン
レスポンシブデザインを効率的に実現するための手段として、グリッドシステムがあります。
グリッドシステムでは、画面をあらかじめ「行(row)」と「列(column)」に分割し、コンテンツをその枠組みに配置していきます。
これにより、カラムの数や幅を指定するだけで、複雑なレイアウトを効率よく構築できます。
たとえば、Bootstrap のグリッドシステムでは画面を 12 等分し、col-6 を指定すれば横幅の半分を占める要素が簡単に作成できます。
このようにレスポンシブデザインとグリッドシステムを活用することで、統一感のあるレイアウトを効率的に構築しつつ、デバイスごとに柔軟な調整が可能となります。
図5. グリッドシステム
ここからは、CSSフレームワークを使う上でのメリット・デメリットを紹介したいと思います。
<button type="button" class="btn btn-primary">Primaryボタン</button>
<button class="btn-primary">Primaryボタン</button>
<style>
.btn-primary {
display: inline-block;
padding: 0.375rem 0.75rem;
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
text-align: center;
box-sizing: border-box;
color: #fff;
background-color: #0d6efd;
border: 1px solid #0d6efd;
border-radius: 0.375rem;
cursor: pointer;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
}
</style>
このように、CSSフレームワークを利用しない場合では、HTML標準パーツにデザインを加えるために多くのスタイルを自分で定義する必要があり、手間がかかります。よく使用されているCSSフレームワークをいくつか紹介したいと思います。
<button class="m-4 bg-blue-500 text-white font-bold py-2 px-4 rounded">ボタン</button>
このように、多数のユーティリティクラスが並びます。フレームワーク | 特徴 | コンポーネント | JavaScript依存 | メリット | 注意点 |
---|---|---|---|---|---|
Bootstrap | 世界で最も利用実績が多い | 豊富に用意 | あり | すぐに使えるコンポーネントが多い | ファイルサイズが大きく、読み込み速度に影響する場合がある |
Tailwind CSS | ユーティリティファースト | 用意されていない (自分で設計) |
なし | 自由度が高い | HTMLに多数のクラスが並ぶため、可読性・統一性に注意 |
Bulma | モバイルファースト、軽量 | 基本的なコンポーネントはあり | なし | CSSのみでレイアウト構築可能、軽量で安定 | 動的機能は自分でJavaScriptを実装する必要がある |
ここまでいくつかのCSSフレームワークを紹介してきましたが、自分が使用する際にどのフレームワークを選べばよいのか、迷う方もいるかと思います。 選ぶ際には、以下の3点を基準に検討するとよいと思います。
以上のポイントを踏まえ、自分のプロジェクトに最適なCSSフレームワークを選ぶことが、効率的かつ質の高いWeb開発の実現につながります。
今回は、CSSフレームワークについて紹介してみましたが、いかがでしたでしょうか。本稿で触れた他にも様々なフレームワークが存在します。それぞれ特徴や強みが異なりますが、基本的な使い方や考え方は似ているため、一つを学んでおけば他のフレームワークにも応用しやすいという利点があります。用途や開発スタイルに応じて、自分好みのフレームワークの使用を検討してみても良いと思います。本稿がWebアプリケーションを作成する際の参考になれば幸いです。
(M.A.)
関連ページへのリンク
関連するソフテックだより
「ソフテックだより」では、みなさまのご意見・ご感想を募集しています。ぜひみなさまの声をお聞かせください。