Flaskについてまとめ6　 静的ファイル（HTML,XHTML,JavaScript,CSS）を利用する

過去の記事はこちらです

https://qiita.com/TaichiEndoh/items/ca306560b928eddfc222

https://qiita.com/TaichiEndoh/items/7b7f82134a0333f8c8b9

https://qiita.com/TaichiEndoh/items/2d010ce586fc07c0a212

https://qiita.com/TaichiEndoh/items/a99dd39060b2345ca4cd

https://qiita.com/TaichiEndoh/items/f2ddbd49cf0417ebc1e9


ubuntu でpython仮想環境を利用し
アプリケーションルートがflaskbook
になるように変化しました

その後テンプレートエンジンを利用しました
テンプレートエンジンはテンプレートと呼ばれる　ひな形
と　データを合成して成果ドキュメントを出力するソフトウェアです

Flaskについてまとめ5では
テンプレートエンジンの　if 　と　for文　の使い方について記載しています

url_forで関数を使って　指定したエンドポイントの値を確認できるようになりました

Flaskでのエンドポイントは　URIと紐付けられた関数名または関数につけた名前です

さて今回は
### 静的ファイルを利用する

webサイトでは、HTMLに加えて画像やJavaScript,CSSを利用します

#### JavaScript
JavaScriptとはブラウザを「動かす」ためのプログラム言語です
JavaScriptが使われているWebサイトやサービス例
Twitter
ニコニコ動画
Hulu
Facebook

このように、JavaScriptは、WebサイトやWebサービス開発に使われ、その中でも、よりユーザーに近い部分（ユーザーが閲覧や操作をする場面）を開発するときに使われます

よって、システムエンジニアやフロントエンドエンジニアが使用することが多いみたいです

https://www.modis.co.jp/candidate/insight/column_29

#### CSS（Cascading Style Sheets、カスケーディング・スタイル・シート）

CSS（Cascading Style Sheets、カスケーディング・スタイル・シート）とは、
ウェブページのスタイルを指定するための言語です

ワープロソフトなどで作成される文書も含めて
文書のスタイルを指定する技術全般をスタイルシートといいます

HTMLやXHTMLなどで作成されるウェブページにスタイルを適用する場合には
スタイルシート言語の1つであるCSSが一般的に利用されています

##### XHTMLとは、Webページの記述などに用いられるマークアップ言語である
HTML（HyperText Markup Language）
をXMLの仕様に従って定義しなおした言語です
端的にいうと「HTMLとXMLを混ぜたもの」というイメージです

わかりやすく分類すると、HTMLは見栄えを重視、
XMLは文書のルールのほうを重視されているようなイメージです
https://tech-camp.in/note/technology/55829/

##### CSSは、HTMLと組み合わせて使用する言語です

HTMLがウェブページ内の各要素の意味や情報構造を定義するのに対して、
CSSではそれらをどのように装飾するかを指定します

スタイルシートが必要な理由
HTMLは情報構造を定義するための言語であり、
見栄えの制御のために本来の役割とは違った使い方をすると、 
文書の情報構造がでたらめになってしまうからです 
コンピュータや検索エンジンに理解されないでたらめな文書構造になってしまえば、
せっかくの情報もうまく活用されません

HTMLの要素（タグ）をどのように表示するかは、
ユーザーエージェント（ブラウザ）によって異なることがあります
HTMLタグを駆使してある閲覧環境では見栄え良くレイアウトできたとしても、 
他の閲覧環境ではまったく意図しないレイアウトになってしまうこともありえます

HTMLでスタイルを指定する場合、例えば見出しの色やサイズを変えようとすると、 
見出しが使用されているすべての箇所を変更する必要がありますが、 
CSSではこうしたスタイルを一括で管理することができます
また、複数の文書でスタイルを共有できるため、メンテナンス性が格段に向上します

http://www.htmq.com/csskihon/001.shtml

WordPress（ワードプレス）とはCMS（Contents Management System）の一種です

SEOを意識するのであれば、WordPressをおすすめします

WordPressは初期の状態である程度SEOを考慮した作りになっており、
SEO対策に必須なMETA周りの施策もWordPressの方が管理しやすいというメリットがあります

他にも動的サイトの特性上 
構造化データマークアップ や AMP との親和性もよく、
SEOを意識したWebサイト制作にはWordPressのほうが向いていると言えるでしょう

しかし、ではHTMLで制作したサイトがSEOに弱いかといえば、そうではありません

きちんと施策すれば、HTMLでのSEO対策も問題なく行えます
総合的にどちらが施策しやすく、結果コストを抑えられるかを考えて選ぶのをおすすめします

https://www.creal.co.jp/column/website-design/1086/

### HTML,XHTML,JavaScript,CSSは静的ファイル

HTML,XHTML,JavaScript,CSSはリスエスト内容に影響されず

常に同じ内容になるため静的ファイルといいます

CSSはHTMLの見た目をととのえる　用途で利用し

JavaScriptはサーバーサイドでも利用できます
今回はクライアントサイドのスクリプトとして捉えます

### Flaskでは静的ファイルを利用する場合　static　ディレクトリへ配置

static　ディレクトリは templatesと同様に
アプリ実行モジュールと同列か　あるいはパッケージ直下に作成します

```
flaskbook
- .env
- apps
  - minimalapp 
  　　- templates
  　　　-index.html
  　　- static(新規追加)
  　　　-style.css(新規追加)
- venv
```

index.html
にスタイルシート読み込みの記述
```
<!doctype html>
<html lang="ja">

<head>
    <title>name</title>
    <meta charset="utf-8" />
    <title>name</title>
    <link 
      rel='stylesheet'
      href="{{url_for('static',filename='style.css')}}"
    />
</head>

<body>
    <h1>Toward the widespread use of clinical engineers and machine learning.</h1>
    　　<h2>Studying Flask<h2>
    <h1>{{name}}</h1>
</body>

</html>
```