Upgrade to Pro — share decks privately, control downloads, hide ads and more …

実践して身に付けるPython#2

 実践して身に付けるPython#2

2023.8.7に開催したイベントで使用した資料です。
youtubeにアーカイブも残っておりますので補完としてご利用ください~
https://www.youtube.com/live/xHxNHWXJ4L0?feature=share

EngineerCafe

August 21, 2023
Tweet

More Decks by EngineerCafe

Other Decks in Technology

Transcript

  1. DLしたファイルをダブルクリックして展開し、ウィザードを立ち上げます。 使用許諾を確認し、「 I Agree」をクリックして、続く画面では「 Jast Me」(All Userでも可)を選択。 この後の画面ではインストール先を確認して「 Next」ボタンをクリックすると オプションの選択画面が現れます。

    「Register Anaconda as my default python3.××(バージョン)」のみにチェックを入れてインストールを 開始してください。 インストールが完了すると「 Completed」と表示されるのでインストーラーが終了するまで「 Next」と「Finish」をク リックしてください。 Anacondaでは、Pythonで開発するための仮想環境が予め「 Base」という名前で用意されています。 しかし、デフォルトで用意されている仮想環境では余計なライブラリがあったりしますので、 ここは新たに専用の仮想環境を作ってみましょう。 アップデートやメンテナンスを行う際に工数が減って楽になるというメリットがあります。 自動的にAnaconda Navigatorが立ち上がっている人はそのまま。 立ち上がってない人は立ち上げてください。 (Winであればスタートメニュー →全てのアプリ→Anaconda3(64bit)のフォルダを開くと出てくる Anaconda Navigatorをクリックしてください )
  2. Webアプリケーションとネイティブアプリケーションとは ・デバイス、OSを問わない  (ブラウザとネット環境さえあれば動く) ・DL、インストールの手間がない ・審査が必要ない ・安定さはネット環境による  (状況によってはサーバーが  ダウンすることも) ・審査がないため安全性を信用するかは  ユーザーの判断に委ねられる

    自分が作ろうとしているものがネイティブアプリか Webアプリ、どちらが適しているかを判断する必 要がある。また、Webアプリの場合はHTMLなどの知識も必要になる。 Webアプリ ネイティブアプリ メリット デメリット ・ネット環境がなくても安定して稼働する  (一部通信が必要になるアプリもある) ・外部侵入、改ざんの恐れが限りなく低い ・自分だけで使うアプリが作れる ・OSごとに開発環境を変える必要がある ・DL、インストールの手間がある ・iOSのアプリ公開には審査(有料)が必要
  3. Webアプリとはそもそも何か Web上で動くアプリケーションには大きく分けて 2つの種類があります。 「サーバーサイドアプリ」と「クライアントサイドアプリ」の 2種類です。 クライアントサイドアプリは、クライアントのブラウザに HTMLドキュメントと一緒に Javascriptなどのプログラムが読み込まれてブラウザ上で動くものです。 サーバーサイドアプリはサーバー上で動くものを指します。 開発にはPHPやJava、そしてPythonが多く使われています。

    こうした場合、サーバー側に言語の解析ソフトウェアが搭載 されますが、搭載されたサーバーのことを「 Webアプリケー ションサーバー」、略して「アプリケーションサーバー」と 呼ばれ、Webサーバーとは区別されます。 Webサーバーが窓口となり、必要な処理はアプリケーション サーバーに渡して実行します。 クライアント (ブラウザ) インターネット Webサーバー アプリケーションサーバー
  4. なので今回作成するアプリケーションはサーバーサイドアプリケーションという事になります。 しかし、PythonだけでWebアプリケーションを作成するとなると非常に大変です。 (できない訳ではないです ) 動作させるためのインタープリター (プログラムを1行ごとに実行していく通訳のようなもの )、 基本ライブラリの一式、公式サイトで公開されている Pythonソフトウェアのインストールなどなど、アプリケー ションサーバーの基盤から作成しなくてはいけません。

    Webアプリはリクエストの中身に応じて処理を行いま すので、その分岐条件の設定、データベースへのアクセスが必要なこともあります。 Pythonの基本機能だけ で行うと時間も手間も大幅に必要になります。 ところが、DjangoにはWebアプリケーションを作るのに基本的な部品は一通り揃っています。 Djangoがあれば、簡単に始められ、かつ手軽に開発を行うことができるという訳です。 Djangoに備わっている部品(一部) SQLite(データベース) 開発用サーバー 便利なコマンド群
  5. ルーティング ビュー モデル テンプレート クライアント リクエスト 図にするとこのような形になります。はて、見慣れないものがいますね。「ルーティング」? MTVという中にはいませんでしたが、ルーティングとはビューに対して一番関わりが深いもので、 ビューの入口を司る働きを行いますので (適切なビューを呼び出す

    )、ビューの一端と捉えて問題ないでしょう。 全体的な流れとしては、まずクライアントがリクエストを送ります。次にルーティングがビューを作成します。作成す る際にまずテンプレートの情報を読み取って枠 (webページ)にします。次にデータベースを読み込んで、クライアント の求める結果をビューに渡して表示し、返します。 V M T
  6. ざっくりした説明では少し不足がありますので簡潔に補足しますと、 「ルーティング」とは通信相手までの経路を判断する仕組み のことです。 「ビュー」とはリクエスト情報をルーティングから受け取り、レスポンス用のドキュメントを作成する仕組み のことで す。データベースにアクセスする時はモデルを介して 行います。 「モデル」とはデータベースをオブジェクト化するためのクラス です。 「テンプレート」とはWebページの外観を決めるための

    HTMLドキュメントです。そのため拡張子が .htmlですが、 HTMLのタグにDjango特有のテンプレートタグが混在したものとなっています。 どうしても概念を説明するとなると難しくなりがちですので、まずは触って慣れながら学んでいくと 身についてくると思います。 それでは…早速開発のための準備に取り掛かりましょう!
  7. コマンドプロンプト(ターミナル)が立ち上がったと思います。 が、これは仮想環境内のコマンドプロンプトとなりますので、実際のコマンドプロンプトとは異なる点に注意し てください。 ※実際のコマンドプロンプトから立ち上げる事もできますが、その場合は Djangoのインストール、インポート、 フォルダの移動、Pythonの呼び出し…と色々面倒ですのでおすすめできません。 さて、Djangoでは、Webアプリの各種設定情報を統括・管理するための仕組みとして「プロジェクト」を使用し ます。 Webアプリを構成するうえで必要になるモジュール、 HTMLファイル、各種の設定ファイルなどなど、

    Webアプ リが動作するために必要なファイル一式が格納されます。 プロジェクトはDjangoのコマンドを使って任意の場所に作成することができるようになっていて、 作成するとプロジェクトフォルダーの中には以下のソースファイルが自動で作成されます。 ・manage.py django-adminコマンドを使用する際のショートカットスクリプト。 開発サーバの立ち上げ、マイグレーション (プログラムやデータの移行・変換作業 )などに使 う。 ・__init__.py [プロジェクト名]フォルダがPythonのパッケージであることを証明する。 ・urls.py ルーティングについて記述する。 ・settings.py Djangoプロジェクトの様々な設定を記述する。 ・wsgi.py 非同期処理の実装などで使うファイル。 (Web Server Gateway Interface) ・asgi.py 非同期処理の実装などで使うファイル。 (Asynchronous Server Gateway Interface)
  8. この状態で新しいフォルダをここに作成すると、管理の際に何かと不便である場合が多いです。 そのため、別の場所に作成しましょう。 Cドライブをエクスプローラーから開き、その場所に右クリックで「新規作成」 →「フォルダ」 あるいはショートカットキー Ctrl+Shift+Nで作成し、名前を「DjangoProjects」としましょう。 Macの場合は、Cドライブの代わりにデスクトップを指定し、右クリックで新規フォルダを作成するか Command+Shift+Nで作成してください。 これで、Cドライブ直下(あるいはデスクトップ )に

    「DjangoProjects」という名前のフォルダーが作成できました。 分かりやすいよう名前を DjangoProjectsとしていますがもちろん任意の名前で大丈夫です。 (ただし半角英数字とアンダーバーのみ ) 新しいフォルダが作成できたら、コマンドプロンプトのディレクトリを移動させます。 コマンドプロンプトのディレクトリを移動する際には cdコマンドを使用します。 以下をコマンドプロンプトで記述してください。 cd C:\DjangoProjects これでディレクトリの移動が完了しました。
  9. それではいよいよDjangoから新しいフォルダを作成します。 django-admin startproject imagepostProject django-admin というDjangoに搭載されたモジュールを startprojectというコマンドで動かします。 作成するプロジェクト名がそれに続きます。 さて実行した後、入力待ちになったら、先ほど作成した新規フォルダ「 DjangoProjects」を

    覗いてみましょう。新しく「 imagepostProject」というフォルダが作成されていると思います。 続いて中を覗いてみましょう。 imagepost_project __init__.py asgi.py settings.py urls.py wsgi.py manage.py さきほど説明した構造になっているのが分かるでしょうか。 ちょっと試しに、manage.pyをテキストエディタで開いてみましょう。 もしVScodeなどの開発環境がある方はそちらのツールで開いても構いませ ん。
  10. 中身を読み解いていくとより理解が進み、全体像が見えるようになりますが、 全てを説明すると時間が足りませんので、時間のある時に個人で覗いてみてください。 中身が理解できるようになると中級者として胸を張っていいと思いますよ。 ところで、””” ~~~ ””” という、ダブルクォーテーションが 3つ並んで囲まれている文章が 見えるでしょうか。(シングルクォーテーション 3つ*でも可) *シングルクォーテーション 3つで「トリプルクォーテーション」と呼びます

    この記述方法で書かれた文章はいわゆる「コメント機能」です。 ソースコードには影響がない文章なので、囲まれた文章は日本語でも記述が可能です。 段々記述が増えてくると、「この定義は何をするんだっけ?」「あれを修正したいんだけどどこだっけ?」など、読 み解くだけで時間を消費してしまいます。 そこでコメントを残しておくことで「誰が見ても分かりやすくする」ということができますので、 積極的に使ってください。 ちなみに、#(半角シャープ) (スペース)の後でもコメント追加可能です。 ※ただし1行分だけです。
  11. 今回作るもの、憶えてますか? 写真投稿アプリでしたね! 必要な機能を考えてみましょう。 ・ログイン機能 ・写真を追加する ・文章を追加する ・投稿する 手順としては簡単に見えますが … ログイン機能があるという事は「アカウント」があるという事ですね。

    ということはつまり、 ・ユーザー登録 ・ログイン/ログアウト ・パスワードのリセット の実装が必要になります。 ユーザー登録があるということは ユーザー情報を格納するデータベースが必要になります。 こうしてみるとかなりの量の工数があることが予想できます。
  12. テンプレートタグとは? HTMLファイルの中に付ける HTMLタグ以外のタグです。 代表的なもので言えば PHPのタグなどもそれにあたります。 通常、HTMLのタグは <p>テストのテキストです </p> のように、 <開始タグ>~</終了タグ>で閉じたものとなります。

    そこに、Djangoのテンプレートタグが混在することによって動的に Webページを表示するための HTMLファイルを 生成する仕組みとなっています。 Djangoのテンプレートタグは  {% (タグ名) (引数) %} という書き方で組んでいきます。 ちなみに、構造を理解すれば自作することも可能です。 先ほどの {% lord static %} というのはstaticタグにあたり、 このタグは、静的ファイルの URL取得のため使われるもので、一度設定しておくと後が楽になります。 まずはSpyderで「settings.py」をダブルクリックして開き、冒頭に osモジュールをインポートするためのコードを入 力しておきます。