良いコーディングの進め方ってあるのかな?
コーディングの進め方って人によって様々ですよね。
私がまだ右も左もわからない新人コーダーの頃を思い出すと、
効率は悪いし、自分よがりなコードを書いていたし、メンテナンス性もよろしくない
今思い出すと本当に同じチームの方に申し訳なくなるやり方をしてしまっていました・・
ですが、今ではコーダー歴3年を超えてきて、
少しでも成長できたのではないかと思う部分があるので、
私なりの観点にはなりますが、NGだったなと思うコーディングの進め方について紹介していきたいと思います。
- 効率よくコーディングを進められる方法を知ることができる
- 他の人があなたのコードを見たときに理解しやすいコードを書くことができる
- メンテナンス性の高いコードを書くことができる
それでは早速本題に入っていきます!
NGなコーディングの進め方7選
まずは結論から先に書いておきます。
- すぐにコードを書き始める
- 変数やmixinの定義をしない
- PC・スマホのCSS記述場所を離して書く
- タグが適当(セマンティックじゃない)
- CSS設計が考えられていない
- 補足コメントが全くない
- ショートカットなどの早技を使わない
それでは一つずつ見ていきましょう!
NG例 1)すぐにコードを書き始める
デザインカンプをもらってすぐにコードを書き始めていませんか?
もちろんすぐにコードを書き始めてもコーディングはできるのですが、すぐにコードを書き始める前に実施しておくと良いものがあります。
すぐにコードを書き始める前にすべきこと
- サイトのデザインカンプ全体を確認する
- コンポーネント(部品)として使いまわせそうなデザインがないか確認する
- 実装困難な箇所や不明点があれば事前にデザイナーさんに確認しておく
これらをしておくと、後の作業が楽になります。
言われてみると当たり前のことかもしれませんが、
「とりあえず早くコーディングしてしまいたい」という思いがあるばかりに、
意外にできていない人もいらっしゃるのではないかと思います。
サイトのデザインカンプ全体を確認する
サイト構造として複数ページ(下層ページ)がある場合は全ページのデザインに目を通しておきましょう。
かつPC・スマホ両方のデザインカンプもあわせて見ておきましょう。
そうすることで、サイトのデザイン感、ページのレイアウト構造や何となくのコーディングのボリューム感などが認識できます。
コンポーネント(共通部品)として使いまわせそうなデザインがないか確認する
一般的なサイトの場合、ヘッダーやフッター・見出しなど必ず他ページに渡って同じデザインが使われているものがあります。
そういったものをコンポーネント(共通部品)と呼びます。
先にコードを書き始める前に、この「コンポーネントを探す」作業は非常に大事になってきます。
コンポーネントを探す重要性
- 予めコンポートネントとして認識しておくことで、CSS設計やクラス命名において効率の良いコーディングができる
- いざスタイルを当てるときに、CSSのコード記述量を少なくできる
コンポーネントについては、CSS設計を意識していないと上手く活用することは難しいかもしれません。
もしCSS設計を知らない方は、是非一度勉強してみてください!
(一段階上のコーダーになるためには必須スキルだと思います)
実装困難な箇所や不明点があれば事前にデザイナーさんに確認しておく
コーディングを進めていく中で、都度デザイナーさんに質問・相談している方もいらっしゃるかと思います。
私も最初の頃はそうだったのですが、そうするとラリーが増えたり、回答待ちになって作業が進まなかったりと、
互いに負担が増えてしまうことが多くなってしまいました。
そのためあらかじめ、
・不明点をまとめて質問しておく
・相談できることはしておく
このような姿勢が大事になってくると思います。
こうすることで負担を最小限にとどめ、コーディング着手時にスムーズに作業できるようになるはずです。
NG例 2)変数やmixinの定義をしない
前節にもあるように先に事前作業を終えたら、いよいよコードを書いていきます。
ですがここでも準備作業として、「変数」および「mixin」の定義をしておくと良いです。
※この段階では通常リセットcssなども必要になってくるかと思いますが、今回はそこまでは触れませんのでご了承ください。
変数やmixinを定義しておくと、コードの使い回しが簡単にできたり、何度も同じコードを書く必要がなくなります。
変数やmixinについては、私のこれまでの経験に基づいですが、以下のようなものを定義しておくと便利かと思います◎
変数で定義しておくと良いもの
- サイトでよく使いまわされる色(メインカラー・ベースカラー・アクセントカラー等)
- サイトのレイアウトに関わる数値(インナー幅、左右padding等)
- サイトで使われている文字フォント(日本語フォント、英語フォント等)
mixinで定義しておくと良いもの
- メディアクエリとブレイクポイント
- その他よく使いまわすコードや機能
/**
* 変数の定義
*/
// カラー
$text-color--base: #333;
$accent-color: #FFBF80;
// フォントファミリー
$font-family--en: 'Roboto', sans-serif;
// サイトインナー幅
%site-layout: {
max-width: 100%;
width: 1000px;
padding: 0 20px;
margin: 0 auto;
@include mq() {
padding: 0 15px;
}
}
/**
* mixinの定義
*/
// ブレイクポイント
$breakpoints: (
'sm': 'screen and (max-width: 640px)',
'md': 'screen and (max-width: 767px)',
'lg': 'screen and (min-width: 768px)',
) !default;
// メディアクエリ
@mixin mq($breakpoint: md) {
@media #{map-get($breakpoints, $breakpoint)} {
@content;
}
}
NG例 3)PC・スマホのCSS記述場所を離して書く
私が職業訓練で初めてメディアクエリを習ったときは、
以下のような感じでPC用のCSSを書く場所、SP用のCSSを書く場所でエリアを分ける書き方をしていました。
.test-el {
text-align: center;
}
.test-el2 {
font-size: 20px;
}
/* SP表示 */
@media screen and (max-width: 767px) {
.test-el {
text-align: left;
}
.test-el2 {
font-size: 12px;
}
}
同じような書き方をされている方はいますでしょうか?
この書き方の大きな問題点としては、
1要素に対してどのようなスタイルが当たっているかをそれぞれ別の場所を確認しにいかないとわからない点です。
これはかなり非効率で、レスポンシブ対応時や修正時にファイル内の行き来が多くなるため、かなりのストレスになりかねません。
PCとSPくらいのブレイクポイント数だとまだマシですが、更にブレイクポイントが増えたときはかなりしんどくなります。
そのため、以下例のようにメディアクエリを書くときは、1要素に対し、1箇所にまとめてスタイルを書くことをおすすめします。
.test-el {
text-align: center;
@media screen and (max-width: 767px) {
text-align: left;
}
}
.test-el2 {
font-size: 20px;
@media screen and (max-width: 767px) {
font-size: 12px;
}
}
NG例 4)タグが適当(セマンティックじゃない)
セマンティックなマークアップを心がけていますか?
divタグばかり使ってはいないでしょうか?
divタグばかりだと、コードの可読性が下がってしまいます。
各要素に対し適切なタグを使うことは、一目でどのような役割を担っているコードかを理解できるので、
他の人がコードを見た際にも分かりやすいものとなります。
NG例 5)CSS設計が考えられていない
CSS設計はコーダーであれば必ず知っておいた方が良い概念です。
CSS設計を取り入れたコーディングをするかしないかで、
その後のメンテナンス作業(サイトの運用保守)に大きく関わってきます。
CSS設計を取り入れるメリット
- CSSの管理がしやすくなる
- 複数人のチーム開発でも記述のブレが生じにくい
- 複雑なCSSになりにくい
CSSは誰でも簡単にとっつきやすいものであるが故に、ルール化されていないと「オレオレCSS」がどんどん増えていってしまいます。
カオスなCSSにならないように事前に設計(規則・ルール化)しておきましょうということです。
実は、CSS設計の手法は一つだけでなく、いくつかの種類があります。
CSS設計の種類
CSS設計の種類は少なくとも下記があります。
CSS設計の種類
- BEM
- FLOCCS
- OOCSS
- SMACSS
私個人の経験上は、BEMとFLOCCSを使うことが多いです。
その他は使ったことがありません・・
「FLOCSS」はこの中で唯一、日本人の方が開発したCSS設計です。
そのため日本語ドキュメントが存在していたりと、日本人エンジニアにとってはとっつきやすいものと言えます。
下記書籍はCSS設計を勉強するにあたって、とても参考になったので載せておきます。
よければ参考にしてみてください。
FLOCCSの公式日本語ドキュメントはこちら
NG例 6)補足コメントが全くない
HTMLやCSS、特にJavaScript(jQuery)を書くときに、コメントが全くないと他の人が見たときに非常にわかりにくいものとなってしまいます。
なぜなら、コードは書いた本人以外が解読するのは難しいことがほとんどだからです。
補足コメントがあるかないかで、コード理解にかかる速さは全然違ってくると思います。
NG例 7)ショートカットなどの早技を使わない
コーディングを行う上で、ショートカットを使っていない方はかなり時間を無駄にしているかもしれません。
エディタのショートカットや小技を覚えれば、コーディングスピードはかなり上がります!
過去に以下のような記事を書いていますので、興味がある方は覗いてみてください。
コーディングの進め方は絶えずアップデートさせよう
いかがだったでしょうか?
本記事で紹介した例をまとめると、以下のように期待できる効果を分けることができます。
→すぐにコードを書き始めない
→変数やmixinの定義をしておく
→ショートカットなどの早技を使う
他の人があなたのコードを見たときに理解しやすくするために・・
→PC・スマホのCSS記述場所を1箇所にまとめる
→セマンティックなHTMLを心がける
→補足コメントを書くようにする
メンテナンス性の高いコードを書くことができるように・・
→CSS設計を取り入れる
人によってコーディングの進め方は千差万別なため、あくまでも私の過去に基づいた紹介にはなりますが、
一つでも参考になったものがあれば幸いです。
コーディングの進め方は経験を積み重ねることによって、アップデートできるものだと思うので、
今後もより良い進め方を模索していこうと思います。
何かあれば追記していきます!
最後までお読みいただきありがとうございました。