動画講座でPython入門したらめちゃ楽だった(Web開発、Django)
「今から新たにプログラミング言語を学ぶとしたら、何が良いか?」と言われたら、
Python
を挙げる人が多いんじゃないかと思います。
私の場合「人工知能ブームでPythonきてるなぁ、早く始めたい!」と思いつつも、ネットで記事を見るくらいでがっつり取り組んでいませんでした。
そろそろがっつり学ぼうと決心し、Udemyの動画講座を受けてみました。学んだ内容を紹介します。
学んだ内容
私が受講したのはプログラミング初心者でも安心、Python/Django入門講座です。
Pythonの基礎
いわゆるHelloWorldから始まって、足し算引き算などの計算、文字列操作、if文、for文などの基礎構文を学びました。
Pythonの特徴がいろいろと見えてきます。
簡潔で直感的な構文
いいなと思ったのは、リストの連結が+演算子でできることです。
list1 = [1, 2, 3] list2 = [4, 5, 6] print(list1 + list2) # [1, 2, 3, 4, 5, 6]が表示される
直感的でいいですよね。他の言語もこの挙動取り入れてほしいなと。
あとは、in構文も直感的でいいなと。
numbers = [1,2,3,4,5] if 1 in numbers: print('1が含まれています')
↑「numersに1が含まれているか?」をif 1 in numbers:でチェックできます。わかりやすいし簡潔でナイスです!
それから、空のリストはfalseを返すので、if len(numbers) != 0 のように書かなくていいというのもありました。
numbers = [] if numbers: #ここに注目 if len(numbers) != 0 のように書かなくていい for num in numbers: print num else: print ''
マニアックな知識もさくっと
- range(1, 10001)はリストを返すのではなく、必要な時に必要な値を返すのでメモリーがパンクしない。これをジェネレータオブジェクトという。
- リスト内包表記の[]を()にするとジェネレータ式になる
- print(‘こんにちわ’, end=’ ‘)と書くと改行されず、文末がスペースとなる(end=で指定したものが文末となる)。
- リスト内包表記を複数連結する方法
- FizzBuzzを一行で書く方法と構文要素の解説
- デフォルト引数に空リストを指定した場合の副作用
- クラスの属性の先頭に__をつけると継承クラス間での名前の衝突を避けられる(擬似的にプライベート属性のように出来る)
のような入門書ではなかなか出てこないようなマニアックな内容もスラスラと解説されて、「そんな書き方あるんだぁ!」と驚きました。
基礎を学んでいたら、いつのまにか奥深い世界に引きずり込まれている、そんな感じでした。
なんていうか、「講師の人、すごくPython使い込んでるなぁ」と感じました。達人から学ぶとめちゃ効率いいなと。
後で調べたら、講師の滝澤成人さんは4月に「情報演習33 Pythonワークブック」というPythonの入門書を出版するそうなので、なるほどですね。
以前、ジェネレータ関数について入門書で見た時には「なんかピンとこないなぁ…」と思っていたのですが、動画だと、コード例 → 解説 → 実行結果という順番で説明されるので、「なるほど、そういうことかぁ♪」と腑に落ちました。
ぼーっと、動画を見てるだけで、ジェネレータやデコレータが「ほぉほぉ、なるへそ」とわかったので、本読むよりずっと楽でした。
デスクトップアプリやスクレイピングもざっくり学べた
この講座のメインはPython入門からWeb開発の解説なのでおまけ的にですが、
・Tkinterを用いたPCのGUIデスクトップアプリの作り方
・BeautifulSoupを用いたスクレイピング
についてもかんたんに紹介されています。
PythonはGUIでもスクレイピングでも少ないコードで書けていいなと。
Djangoを使ったWeb開発技術
- HTML、CSSの基礎
- Chrome Developerツールの使い方(色やレイアウトをリアルタイムに変更)
- Bootstrap4(CSSフレームワーク、かんたんに見栄えの良いサイトが作れる。チートシートの案内、代表的なコンポーネントの紹介)
をさらりと解説後、いよいよWebアプリケーションフレームワークDjangoを使ったWeb開発に入りました。
DjangoをRuby on Railsと比較すると以下のようになります。(左:Rails 右:Django)
Rails | Django |
---|---|
models | models.py(DBアクセス), forms.py(入力チェック) |
views | template |
controllers | views.py(関数か、汎用ビューというビューのタイプ毎にクラスを羅列) |
ディレクトリ構成やモジュール分割の仕方もけっこう違いました。
フレームワークって系統を大きく分けると、以下の2つになります。
- フルスタックフレームワーク → Web開発に必要な機能を一通り備えている。有名なのはDjango, Rails, SpringFramework, Laravel等
- マイクロフレームワーク → URLルーティング機能のみのフレームワーク。有名なのはSinatra, Slim, Express.js等
私はこれまでに以下のような言語、フレームワークを使ったことがあります。
- Java(Struts, SpringFramework, Tapestry)
- PHP(FuelPHP, Fat-Free)
- Ruby(Ruby on Rails)
- node.js(Express.js)
フルスタックフレームワークの多くはRailsと非常に似た構成になっていますが、Djangoはとても個性的で、
「こういう作り方もあるんだな!!」
という新鮮さがありました。
違った考え方の技術を学ぶと、発想の枠組みが広がるのでいいですよね。
そんなわけで、PythonでWeb開発を始めたい方は、動画講座が楽でいいんじゃないかなと思います。