SE(たぶん)の雑感記

一応SEやっている筆者の思ったことを書き連ねます。会計学もやってたので、両方を生かした記事を書きたいと考えています。 でもテーマが定まってない感がすごい。

Djangoのチュートリアルを実施した

体育の日の3連休のうち2日を利用して、Djangoチュートリアルを実施しました。
今回の記事は、ただの感想になります。

チュートリアル記載ページはこちら。

さぁ始めましょう。 | Django documentation | Django

なお、Djangoと書いて、「ジャンゴ」と読むそうです。(Wikipediaより)

環境

Visual Studio Codeを使っています。当ブログではおなじみです。

ツール等 バージョン
Python 3.6.2
Django 1.11.6
Visual Studio Code 1.17.0
(VSCode拡張機能)Python 0.7.0

動作確認は、Microsoft Edgeで行っています。
Chromeチュートリアル見ながらなので、別ブラウザのほうが都合が良いです。
チュートリアルで、このブラウザを使え!という指定は見当たらなかったので、なんでもよいと思います。

所要時間

上記環境構築の時間を除くと、約7時間です。
ソースはコピペせずに書いています。

筆者経験

まともに、Webアプリケーションを構築した経験はありません。

一応、この記事に少し書いたように、JavaPlay Frameworkを使った経験はあります。

hiroronn.hatenablog.jp

チュートリアル程度なら、ASP.NET MVCRuby on Railsはやったことあります。

チュートリアルでできること

  • サイトの立ち上げ
  • Modelを利用したDB構築(マイグレーション方法)
    マイグレーションとは、簡単に言うと、ソースコード上の定義からDBのテーブル等を構築する作業です。Djangoでは、その機能を標準でサポートしています。
  • ルーティング定義
  • View定義
  • 自動テスト
  • 管理サイトの操作
  • パッケージ化(setuptools利用)

チュートリアル所感

チュートリアルは、すごく単純なサイトを、ローカルで構築するものです。
Djangoには、サーバー機能が付属しているので、ローカルのみで実行できます。*1

特徴があると思った点を、いくつか書いてみます。

Viewの定義

{% %}のような、独特な記法を使います。

このソースは、最終的なindex.htmlの中身です。

{% load static %}

<link rel="stylesheet" type="text/css" href="{% static "polls/style.css" %}" />

{% if latest_question_list %}
    <ul>
        {% for question in latest_question_list %}
        <li><a href="{% url "polls:detail" question.id %}">{{ question.question_text }}</a></li>
        {% endfor %}
    </ul>
{% else %}
    <p>No polls are available.</p>
{% endif %}

{% %}が、既定の構文で、{{ }}が、変数参照だと思います。
記載の通り、cssのロード等も可能です。

なんだか、Railsで見たような記法です。

管理サイト

正直、チュートリアルで作るサイトより、はるかに便利で綺麗です。

上でソースを載せた、index.htmlを表示したものです。
チュートリアルで、「右下に画像を載せよう!」というのがあったので、手元にあったSurfaceの画像を載せています。

  • 最終的な管理サイト(登録画面) f:id:hiroronn:20171009174810p:plain

デフォルトでの管理サイトの充実度は、正直すごいと思います。

アプリケーションの考え方

チュートリアルでは、pollsという投票サイトを作成します。
最終的には、そのpollsだけをアプリケーションとして配布する形となります。

管理ページ等からは、完全に分離しています。

サイトA
∟polls

という仕組みで構築しますが、pollsだけ分離して、

サイトB
∟polls

と組み替えることが、容易にできます。

感想

チュートリアル程度とはいえ、いくつかWebアプリケーションフレームワークを見た感想です。

個人的には、最終的には全部似るんだな、と思いました。
まあ、全てMVCだから、と言えばそれまでなんですが。

どの方法でも、

  • 生のHTMLを触れる
  • View(html)の記法に特殊なものを利用している
  • Model層で、O/Rマッピングを提供する

という点では同じです。

Viewでは、

方式 拡張子
ASP.NET MVC .cshtml
Ruby on Rails .erb
Play Framework .scala.html
Django .html

という感じで、独自の似たような拡張を施していました。*2

Django感想

Djangoの感想ですが、チュートリアルだけだと、

controllerは何処に?

という疑問が残りました。

まあきっと、直接viewを呼び出すのを止めればいい、ということなんでしょう、きっと。

→調べたら、いくつか記述がありました。そもそも、MVCじゃないんだよ!ということらしい…
チュートリアルでいうviewが、controllerらしい…?

qiita.com

おわりに

全くプログラミングやったことない人が、このページにたどり着くことはあまりないかもしれません。
ただ、環境構築とかのハードルの低さを考えると、Djangoは簡単な部類に入ると思います。

あと、他のWebアプリケーションフレームワークを触ったことがある人が、他のフレームワークを触って比較して、という対象にするにはちょうどいいと思います。

いつか、実践的なアプリケーションを、herokuとか使って公開してみたいです。


*1:ただし、絶対にこのサーバーをWebサーバーとして公開しないように、チュートリアル内で警告されている

*2:Djangoで、単なる.htmlにしているのはなぜ、という疑問が若干ある