WEBサイト制作の勉強

WEBサイト制作の勉強の為の解説ブログです。

フェリカテクニカルアカデミー

ブランチモデル

masterブランチ
メインブランチ。基本的には現在サーバーで運用されているデータ。このブランチに直接コミットはせずに下のdevelopブランチをマージするだけ。


developブランチ
開発用メインブランチ。細かい修正がコミットされる


featureブランチ
機能追加・改修などを行う作業ブランチ。完了後はdevelopブランチにマージされて、featureブランチは削除される





いきなり、未経験者が3つのブランチを使い分けるのは難しいので、まずはなんでもかんでもmasterブランチにコミットする、1本道のブランチモデルで作業を進め、慣れてきたら、開発開始時点でmasterブランチからdevelopブランチを作成し、作業内容は全て自身の作成したブランチにコミットし、最終的にmasterからマージしましょう。

f:id:yachin29:20200706110953j:plain




  1. masterブランチのクローンを作成
  2. developブランチを作成しdevelopブランチに移動後プッシュ
  3. developブランチ上で作業を進める
  4. developブランチ上での作業終了後、masterブランチに移動し、developブランチをマージし、プッシュ
  5. マージした不要なブランチを削除


backlog.com



qiita.com

Sassを@importから@useや@forwardに置き換える

Sassの公式サイトで今後はDartSassを使うことが推奨とされると発表がありました。それに伴ってSassの初期の方から実装されていた@importが廃止予定になりました。とても便利な機能ですが、CSSの@importと重複しているため、SassなのかCSSなのか一見してわかりにくい側面などがありSassでの@importは廃止予定になりました。

その代わりに@useや@forwardといった新しいモジュールが使えるようになりました。大きな違いは「変数や関数などの有効範囲」です。


@importではこれらの有効範囲はグローバル(ファイル間を横断出来る)ですが、@useでは有効範囲がローカル(指定したファイルのみに適用)になってしまいます。
有効範囲が広い方が一見便利なように思えますが、有効範囲が広い分、変数が上書きされてしまうという危険性があります。


@importと@useの記述の違い

これまでの@importの場合

_color.scss

$red:#F00;

style.scss

@import "color" 

h1{
color:.$red;
}
}
@useの場合

_color.scss

$red:#F00;


style.scss

@use "color" 

h1{
color:.color.$red;
}
}

@useの場合、他のファイルで設定された変数を呼び出すには、変数名だけで無く、呼び出したい変数が登録されているファイル名を変数の前に付ける必要がなります。

_color.scssに$redという変数が登録されている場合は以下の形で呼び出す事が出来ます。

「color.$red」


@forward

変数に別々の名前を付けるのはとても大変なので、変数などを_import.scssにまとめて、@useではなく@forwardで読み込むようにする事で変数の前に付ける名前を1つにまとめる事が出来ます。

@forward "color";
@forward "mixin";
@use "reset";
@use "import" as f;

h1{
color:f.$red;
@include f.tablet{
color:f.$green;
}
}

Gitのインストールとvs-codeを使ってgithubに自身のリポジトリーを作成

学校のPCの場合、前回のクラスの生徒の設定が残っている場合があるので、まず環境変数を削除しましょう。

・「コントロールパネル>システム>システムの詳細設定」
・「スタートボタン右クリック>システム>システムの詳細設定」

f:id:yachin29:20210706001323p:plain




まずは自身のPCに入っているgitのバージョンを確認してみましょう。
コマンド画面で簡単に確認出来るので、コマンド画面で以下のコマンドを入力しましょう。

  • gitのバージョン確認
 $ git --version 

インストールされていない場合はまずインストールしましょう

Windowsの場合

ここからgitをダウンロードしてインストールしましょう。

git-scm.com



proengineer.internous.co.jp




Macの場合

macは最初からgitがインストールされていますが、バージョンアップする事をおすすめします。

Homebrewでアップデートする場合

macを使用している場合は「Homebrew」というパッケージマネージャーを使うと非常に便利なので、「Homebrew」をまずはダウンロードしておきましょう。


brew.sh
Homebrewは、macOSでのパッケージインストールを簡単にするパッケージ管理システムです。
例えば今回のように、Gitをインストールする、アップデートするなどを、インストーラーを利用するよりも簡単に実行できます。

Homebrewがダウンロードされていれば

$ brew install git

でgitの最新版をインストールし、バージョン確認(version 2.32.0が最新版 )






1.githubに自身のリポジトリーを作る
2.自身のメールアドレスとユーザーネームを登録する

git config --global user.name "githubのユーザー名"
git config --global user.email "XXXX@hogehoge.com"

3.vs codeでローカルにクローンを作成
4. vs codeでクローンフォルダーを開き、index.htmlを作成する
5.作成したindexをステージングし、コミットをしてプッシュ
6.github上でコミットを確認後、github上でindex.htmlを編集
7.vscodegithub上の編集をプルしてから、さらに編集し再度ステージングし、コミットをしてプッシュ
8.6と7を数回繰り返す

LPの作成・実践編

フェリカテクニカルアカデミーwebサイト制作科の生徒募集用のランディングページの作成

コンバージョン

フェリカ公式サイトの見学会申し込みページへのリンクボタンをクリックしてもらう
URL:http://www.felica.info/kikin/web/web_form/index.shtml



LPのアウトライン(あくまでも一例)

Attention部分のコンテンツ
  • タイトル(ロゴ画像orフェリカテクニカルアカデミーwebサイト制作科)
  • キャッチーなコピーが入ったリード文(フェリカテクニカルアカデミーwebサイト制作科、生徒募集的な文言)
  • メインビジュアルの画像
  • 見学会申し込みページへのボタン(ファーストビュー内に入れる。ボタンのデザインは他のボタンを同じに)
Interest部分

フェリカがおすすめな「3つの理由」
フェリカの特徴を具体例を出して挙げていく。

Interest部分の下
  • フェリカ公式サイトの見学会募集ページへのボタンを入れる
Desire部分
  • 他の競合他社との差別化を図る為、具体的なベネフィットを伝える。
  • 卒業生の声と作品を入れ、ユーザーに自身の未来像を想像させる。
Action部分
  • フェリカ公式サイトの見学会募集ページへのボタンを入れる(ボタンのデザインは他のボタンを同じに)
  • 実際にボタンをクリックしてもらえるように、ボタンの近くに申し込みの期限などの背中を押すテキストを入れる


ツイッターのURL
https://twitter.com/felica_harotore



参考サイト
note.mu



作例
www.felica.info


masukana.com


rn23.moo.jp


komada.starfree.jp



http://ciel.starfree.jp/web-works/test-05/

cssのクラス命名規則

小・中規模でのサイト制作では、それほど明確なcss設計をしなくても問題は起こりませんが、大規模案件になるとhtmlもcssもかなりの量になり、css設計がないと保守性が悪くなってしまったり、意図しないところに影響してしまったりします。また、複数人で制作する場合、css設計なしに各々が好き勝手に書くとコードがとても複雑になってしまいます。

なので、cssを運用するルールを決める必要がありますが、特にクラス名の付け方にルールを用いる必要があります。

代表的なCSS命名規則

BEM

BEMはBlock Element Modifierの略で、多く使われている代表的な命名規則です。

OOCSS

OOCSSはObject Oriented CSSの略で、オブジェクト指向にもとづいたcss設計です。
TwitterGithubYoutubeなどで採用されているcss設計で、普段Bootstrapを使っている方は理解しやすいかもしれません。(BootstrapはTwitter社が開発したフレームワークです。)

SMACSS

SMACSSはScalable and Modular Architecture for CSSの略で、OOCSSやBEMを参考に作られています。


自分でルールを作る

個人で制作する場合、ルールが無くても問題無く進められますが、今後の事を考えてある程度自分でルールを定めましょう。


github.com

Sassを使ってレスポンシブサイトをコーディングしてみる

f:id:yachin29:20190815141115j:plain



素材
http://school.yachin29.com/0815test.zip


レスポンシブサイトを作る際にはメディアクエリーが必須ですが、これもSassのmixinを使う事で見通しの良い記述に変える事が出来ます。
またブレイクポイントやメインのカラーコードを変数化する事で効率化が図れます。

さらに、今回はmarginやpaddingの値を8pxの倍数に設定します。

変数の設定
$point-tablet: 959px;
$point-sp: 767px;
mixinの使い方
@mixin 名前 {
  @media (max-width:$point-tablet) {
    @content;
  }
}
@mixin sp {
  @media (max-width:$point-sp) {
    @content;
  }
}

body {
  background: #222;
  @include tablet {
      background: #f00;
  }
   @include sp {
      background: #df9e3d;
  }
}


index.html

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>THAI-NAMA|SASSを使ったコーディング</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<header>
<div class="inner">
<h1>THAI-NAMA</h1>
<nav class="g-nav">
<ul>
    <li><a href="#">CONCEPT</a></li>
    <li><a href="#">MENU</a></li>
    <li><a href="#">ACCESS</a></li>
    <li><a href="#">CONTACT</a></li>
</ul>
</nav>
</div>
</header>
    
<div class="main-visual">
<img src="img/main.jpg" alt="">
</div>
<p class="main-copy">THAI-NAMAは<br>
タイ風の家庭的な料理をご提供しているお店です。<br>
季節感を大切に、旬のものを使いつつ、楽しんで貰えるメニューを揃えています。</p>

<ul class="food">
<li><img src="img/sub1.jpg" alt=""></li>
<li><img src="img/sub2.jpg" alt=""></li>
<li><img src="img/sub3.jpg" alt=""></li>
</ul>

<div class="news">
<h2>NEWS</h2>
<dl>
<dt>2020/03/03</dt>
<dd>春のメニューを追加しました</dd>
</dl>
</div> 

<footer>
<ul class="footer-nav">
    <li><a href="#">CONCEPT</a></li>
    <li><a href="#">MENU</a></li>
    <li><a href="#">ACCESS</a></li>
    <li><a href="#">CONTACT</a></li>
</ul>
<div class="footer-wrapper">
<div class="footer-info">
<p class="tel"><a href="tel:03-1234-4567">03-1234-4567</a></p>
<p class="mail">reservation@thai-nama.net</p>
</div>
<div class="footer-address">
<p class="address-txt">〒150-0001 東京都渋谷区神宮前3-4-5 タイ生ビル1F</p>
<p class="jr">JR渋谷駅徒歩5分</p>
<p class="jr"></p>JR原宿駅徒歩6分</p>
<p class="subway">副都心線、千代田線明治神宮前徒歩7分</p>
</div><!-- /.footer-address -->
</div><!-- /.footer-wrapper -->
<p class="copy-right"><small>Copyright 2020 THAI-NAMA</small></p>
</footer>
</body>
</html>


style.scss

@import "_reset.scss";

//変数セット
$main-color:#c94343;
$footer-color:#60911d;
$unit:8px;
$point-tablet: 979px;
$point-sp-l:640px;
$point-sp-s:480px;



//mixinセット
@mixin tablet {
    @media (max-width:$point-tablet) {
      @content;
    }
}
@mixin sp-l {
    @media (max-width:$point-sp-l) {
      @content;
    }
}
@mixin sp-s {
    @media (max-width:$point-sp-s) {
      @content;
    }
}





/* pcレイアウト */
header{
width: 100%;
border-bottom: 4px solid $main-color;
}
.inner{
max-width: 980px;
margin: 0 auto;
display: flex;
justify-content: space-between;
 @include tablet{
 display: block;
 }
}
h1{
width: 280px;
height: 42px;
margin: 10px 0;
background: url(../img/logo.png)no-repeat;
white-space: nowrap;
text-indent: 100%;
overflow: hidden;
@include tablet{
 margin: 10px auto;
}
}
.g-nav{
align-self:flex-end;
}
.g-nav>ul{
display: flex;
@include tablet{
 justify-content: center;
}
}
.g-nav li{
margin: 0 10px;
@include sp-s{
 width: 25%;
 margin: 0;
 &:nth-of-type(-n+3)>a{
  border-right: 1px solid $main-color;
 }
}
}
.g-nav a{
display: block;
padding: 10px 20px;
color: $main-color;
@include sp-s{
 padding: 10px 0;
 font-size: 14px;
 text-align: center;
}
  &:hover{
   color:#907f7f;
  }
}
/* メインビジュアル */
.main-visual{
 max-width: 980px;
 margin: 0 auto $unit*10;
&>img{
 max-width: 100%;
}
}
.main-copy{
 text-align: center;
 line-height: 1.8;
 margin-bottom: $unit*7;
 padding: 0 $unit;
 box-sizing: border-box;
}

.food{
 max-width: 980px;
 margin: 0 auto $unit*10;
 display: flex;
 justify-content: space-between;
 @include sp-l{
  display: block;
  text-align: center;
  &>li{
   margin-bottom: $unit*2;
  }
 }
 & img{
  max-width: 100%;
 }
 &>li:hover{
  opacity: 0.7;
 }
}
.news{
 max-width: 980px;
 margin: 0 auto $unit*14;
 @include tablet{
  padding: 0 $unit*2;
 }
 &>h2{
  margin-bottom: $unit;
 }
 & dt{
  float: left;
  border-left: $unit*2 solid $main-color;
  padding-left: $unit*2;
 }
 & dd{
  padding-left: $unit*20;
 }
}

footer{
 background: $footer-color;
 color: #FFF;
}
.footer-nav{
 display: flex;
 justify-content: center;
 margin-bottom: $unit*4;
 &>li{
  margin: 0 $unit*3;
  @include sp-l{
   margin: 0;
   width: 25%;
  }
  &>a{
   display: block;
   padding: $unit*2;
   color: #FFF;
   @include sp-l{
    padding: $unit*2 0;
    text-align: center;
    font-size: 14px;
   }
   &:hover{
    text-decoration: underline;
   }
  }
 }
}
.footer-wrapper{
 max-width: 980px;
 margin: 0 auto;
 display: flex;
 justify-content: space-between;
 border-bottom: 1px solid #FFF;
 padding-bottom: $unit*3;
 @include sp-l{
  display: block;
 }
 &>div{
  width: 48%;
  @include sp-l{
   width: 90%;
   margin: 0 auto $unit*2;
   font-size: 14px;
  }
  & a{
   color: #FFF;
  }
 }
}
.copy-right{
 text-align: center;
 padding: $unit*4 0;
}