Python学習だけでは済まされない。
PythonでWebサーバ
ファビコン収集ツールの応答を改善しキー操作できるようにしたときのように、PythonでローカルWebサーバを立ててGUIアプリ風なものを作ってみた。
このとき、サーバはPython、クライアントはHTML/CSS/JavaScriptで実装する。双方のデータ通信にはAJAXという技術を使った。JSONデータにより画面をリロードせず、リアルタイムに画面やデータを更新する。
必要な知識
- Python
- HTTP1.1規格
- JavaScript
- HTML
- CSS
とくに、HTML/CSS/JavaScriptは難しい。個別に見ても大変だが、連携することで画面を作る点が難しさに拍車をかける。
HTTP通信
HTTPはWebサーバとクライアントがデータ通信する仕組みのひとつ。サーバ(Python)とクライアント(HTTP/CSS/JS)との通信に必要。
HTTPメソッド
HTTPにはいくつかの通信方法がある。
メソッド | 説明 |
---|---|
GET | サーバから値を取得する |
POST | サーバへ値を送信すつ |
PUT | サーバにファイルを作成する |
DELETE | サーバのファイルを削除する |
HEAD | HTTPヘッダのみ取得する |
https://ja.wikipedia.org/wiki/Hypertext_Transfer_Protocol#.E3.83.A1.E3.82.BD.E3.83.83.E3.83.89
HTML/CSS/JS
HTML/CSS/JSは時々刻々と進化を続けている。ブラウザの実装状況や対応の違いなどもあってカオス。Pythonより複雑な状況。
HTML5
https://ja.wikipedia.org/wiki/HTML5
HTMLの基本はテキストに意味づけするメタ言語だと思う。Webサービスではクライアント画面の基礎部分。HTML5はもっと裾野を広げているらしい。
HTML5は、プロプライエタリなプラグインとして提供されているリッチインターネットアプリケーションのプラットフォーム(JavaFX、Adobe Flash、Microsoft Silverlight 等)を置き換えることを標榜しており、ウェブアプリケーションのプラットフォームとしての機能やマルチメディア要素が実装されている。
1つの標準だけで済むため学習コストが減る。ありがたい。
https://www.webprofessional.jp/whats-new-in-html-5-1/
が、実際はブラウザごとに実装が違うなどの問題もある。
CSS3
アニメーションなどのAPIもサポートされたらしい。よく知らないが画面作成するならHTMLとともに必須の知識。
HTMLのformタグによるHTTP通信
HTMLではformタグを用いてHTTP通信ができる。
<html> <head> <meta charset="UTF-8"> <title>Form要素</title> <head> <body> <form method="POST" action="http://..."> ユーザ名:<input type="text" name="username" value="u /> パスワード:<input type="password" value="p" /> <button type="submit">送信</button> </form> </body> </html>
method="GET"
でも可。ただし値の渡し方が異なる。
メソッド | 値の渡し方 |
---|---|
GET | URL文字列で渡される。http://....?username=u&password=p |
POST | バイナリデータとして渡される。データ送信形式はapplication/x-www-form-urlencoded (name=value&name=value&…) |
formタグではJSON形式で送信できない。JS(JavaScript)で行う。
HTMLファイルからPOSTでJSONデータを送信する - Qiita
JSのライブラリJQueryを使うと楽。
JavaScript
- JavaScriptのバージョンがややこしい - Qiita
- ECMAScript 2015(ECMAScript 6th edition)とトランスパイラとAltJS(Alternative JavaScript)と - ts0818のブログ
ややこしすぎる。時代と共に時々刻々と変化している。正直、あまり関わりたくない。
XMLHttpRequest
JQueryを使う前に、JavaScriptにおけるHTTP通信APIがある。
XMLHttpRequest - Web API インターフェイス | MDN
JSONで送信するなどHTMLではできない細かな制御が可能。面倒なことをカバーしてくれるライブラリを使うともっと楽。
JQuery
JQueryはJavaScriptで必須のライブラリ。これがなくてはJSを触る気になれないほど。
HTML5,CSS3,JS(ES6)にて標準APIでできることが増えてきた。脱JQueryという考えもあるようだ。
が、小中規模ならJQuery必須だと思う。
$.ajax()
XMLHttpRequestによる通信をいい感じに使える関数。
jQuery: 一般的なAjax通信を実装するには?($.ajax) - Build Insider
DOM
HTMLの要素をJSからいじくるための仕様。HTML要素の木構造などを操作できる。
http://qiita.com/hththt/items/cc047e326994f440a17a
https://lab.sonicmoov.com/markup/jquery/jquery-selectors/
所感
細かいことは順次学習しながら書いていく。