はじめてのPythonGoogle App Engineでお気軽Webアプリ開発本田 克己@GDD九州こちらのイベント向けの資料ですhttps://www.facebook.com/events/272819922852292/
GDG九州ってGDG九州はGoogle関連の技術が好きな開発者、使っている開発者、使いたい開発者の交流の場です。Googleが直接運営している訳ではありません。ちなまにGDGはGoogle Developer Groupsの頭文字らしいです。以...
はじめに今日やること●Pythonのお勉強 : 20分●Google App EngineでWebアプリを作る : 20分● その他の時間 : 5分と、大丈夫ですか?って感じのスケジュールになっています。
インタラクティブシェルでPythonに触れてみるPythonには、インタラクティブシェルというのが用意されています。インタラクティブシェルを使うと対話的にPythonを使用できます。Windowsな人 Macな人スタートメニューからPython...
インタラクティブシェルこんな感じのが表示されればOK
Pythonでプログラム書いてみるインタラクティブシェルで、プログラムを書いてみます。>>> の後ろに入力して、Enterキーを押します。>>> 1 + 12>>> print(Hello world!)Hello world!Python簡単だ�
インタラクティブシェルの終了Windowsの人Ctrl + z を押したあと、Returnキーを押します>>> ^Zとなっている状態でReturnキーMacの人Ctrl + d を押します。
Pythonの基本 : 変数データを保持しておくのに、変数を使うことができます。変数名の大文字、小文字は区別されます。変数の最初の文字に数字は使えません変数に日本語などの文字は使えません(3.xからは使えます)>>> a = 1>>> b = ...
Pythonの基本 : 数値数値は、割と直感的に使えるので、今のところは細かいことは気にしなくても大丈夫です。数値の先頭を0から始めると、8進数として扱われるので、ここだけ注意してください。(16進数は0xから始めます)>>> a = 100 ...
Pythonの基本 : 数値の演算加算 : +減算 : -乗算 : *除算 : /余り : %べき乗 : **>>> a = 10>>> b = 3>>> a + b13>>> a - b7>>> a * b30>>> a / b3>>> a ...
Pythonの基本 : 文字列文字列は、 か “ で囲みます。クォーテーションの前にuをつけるとUnicode文字列になります。日本語の文字列を扱う時は、Unicode文字列を使うようにしておいたほうが問題が起こりにくいので、uをつけるようにし...
Pythonの基本 : 何もない値>>> money = None>>> print(money)None何もないことを表すのに、Noneを使います。
Pythonの基本 : 真偽値プログラムの条件分岐とかで使うやつですTrueFalseと、頭文字が大文字になります>>> t = True>>> f = False>>> t, f(True, False)
Pythonの基本 : 論理演算真偽値の組み合わせて判断する時に、論理演算を行います。and or not を使います。>>> True and TrueTrue>>> True and FalseFalse>>> False and Fals...
Pythonの基礎 : 文字列の操作>>> hello  + worldhello world■連結文字列と文字列を + で繋げられます>>> hello * 10hellohellohellohellohellohellohellohello...
Pythonの基本 : リスト、タプル、辞書複数の値を扱うのに、リストやタプル、辞書を使うと便利です■リスト順序を持った値の集合です。値の追加や削除など、変更が行えます。[ と ]で囲んで、値をカンマで区切ります。■タプルリストと同じような感じ...
Pythonの基本 : リスト>>> mylist = [apple, 100]>>> mylist[0]apple>>> mylist[1]100>>> mylist[2]Traceback (most recent call last):F...
Pythonの基本 : タプル>>> mytuple = (abc, 123)>>> mytuple[0]abc>>> mytuple[1]123>>> mytuple[1] = 234Traceback (most recent call l...
Pythonの基本 : 辞書>>> mydict = {name: apple, price: 100, 1: True}>>> mydict{1: True, price: 100, name: apple}>>> mydict[name]a...
Pythonの基本 : インデントPythonでは、コードブロックを表すのにインデントが使われます。こんな感じになります。とりあえず入力して実行してみましょう>>> for i in range(50):... if i > 0 and (i ...
Pythonの基本 : 条件分岐変数の内容などによって、プログラムの動作を切り替えたりするのを条件分岐といいます。if else elif を使います。>>> food = karaage>>> if food == toriten:... p...
Pythonの基本 : 繰り返し繰り返して処理を行う時は、forループかwhileループを使います。■forループリスト等の集合を1つずつ取り出して実行します。range()関数で任意の数の、リストが生成できるので組み合わせて使用することも多い...
Pythonの基本 : whileループ条件が真(True)の間、繰り返し処理を行います>>> i = 10>>> while i > 0:... print i... i = i - 1...10987654321
Pythonの基本 : 繰り返し>>> for food in [toriten, karaage, tatutaage]:... print %s : %d % (food, len(food))...toriten : 7karaage :...
Pythonの基本 : 関数何度も行う処理は、コピペしないで関数にまとめます。def 関数名(パラメータ1, パラメータ2, ...):関数の処理return 処理結果といった感じで関数を定義します。関数を実行する時は関数名(パラメータ1, パ...
Pythonの基本 : 関数>>> def oita_check(food):... if toriten == food:... return nice... elif karaage == food:... return so-so... ...
Pythonの基本 : モジュール様々な機能がモジュールとして提供されています。モジュールの機能を使う為には、 import で、モジュールをインポートします。>>> import datetime>>> datetime.datetime.n...
Pythonの基本 : クラスオブジェクト指向とかいうので出てくるクラスです。class Food(object):def __init__(self, name, price):self.name = nameself.price = pri...
Pythonの基本他にも、色々と知っておいたほうがいい決まりとか、便利な機能とかがあるのですが、これまでの内容がなんとなくわかれば、なんとなく作り始められます。全部を理解していなくても大丈夫です。
エディタを使うインタラクティブシェルは、すぐ実行結果が分かって便利ですが何回も使うコードを毎回入力するのは大変です。エディタを使って、コードをファイルに保存しましょう。
文字コードの指定ファイルを保存する時は、UTF-8を指定してください。(UTF-8じゃないとダメって訳じゃないですが、統一しておきます)ファイルの拡張子は .py にします。ファイルの1行目か2行目に、# -*- coding: utf8 -*...
エディタでコードを書いてみる#!/usr/bin/env python# -*- coding: utf8 -*-class Food(object):def __init__(self, name, price):self.name = na...
アプリケーションの設定Application Nameに guest-bookApplication Directoryに デスクトップ等を指定して[Create]ボタンを押します。Admin Port, Portは、他の開発ツールとバッティン...
起動してみるguest-bookが選択された状態で、[Run]ボタンを押します。Webブラウザで http://localhost:8080/ にアクセスします。Port番号を変更した場合は、8080の部分を合わせてください。
Google App EngineでWebアプリを作る準備万端なので、いよいよWebアプリを作ります。ゲストブック的なものを作ってみましょう。まずはGoogleAppEngineLauncherを起動します。メニューから [File] → [N...
Hello world!Hello world!!って表示されました?表示できた人は、周りで困っている人がいたら助けてあげてください
入力フォームguest-bookのmain.pyを開いて編集していきます。2行目に# -*- coding: utf8 -*-を追加します。template という変数名で、HTMLを入力します。MainHandlerクラスのget関数内のse...
import webapp2template = u<!doctype html><html><head><title>ゲストブック</title></head><body><h1>ゲストブック</h1><form method="post">...
ブラウザをリロードすると、こんな画面が表示されます。[書き込み]ボタンを押すと怒られますMainHandlerクラスに、post関数を追加します。(とりあえず get と同じにしておきます )class MainHandler(webapp2....
入力内容を表示してみるpostしたときに、フォームの内容を表示するようにしてみます。postしたフォームの内容は、self.request.POST[名前]で取得出来ます。templateをフォームの内容を表示する前の部分と、後ろの部分に分割
import webapp2template1 = u<!doctype html><html>省略<input type="submit" value="書き込む"></form>template2 = u</body></html>clas...
import webapp2template1 = u<!doctype html><html>省略<input type="submit" value="書き込む"></form>template2 = u</body></html>clas...
保存してみるデータを保存するためのクラスを定義します。from google.appengine.ext import dbclass Greeting(db.Model):author = db.StringProperty()message...
管理画面http://localhost:8000/ にアクセスすると、管理画面が表示されます。Datastore Viewerを開くと、データの登録状況が確認できます。
保存内容を表示するdef render(self):self.response.write(template1)greetings = db.GqlQuery("SELECT * FROM Greeting")for greeting in g...
def get(self):self.render()def post(self):name = self.request.POST[name]message = self.request.POST[message]greeting = Gre...
今日はここまで!おつかれさまでした�
Upcoming SlideShare
Loading in …5
×

はじめてのPython

4,191 views

Published on

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,191
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
15
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

はじめてのPython

  1. 1. はじめてのPythonGoogle App Engineでお気軽Webアプリ開発本田 克己@GDD九州こちらのイベント向けの資料ですhttps://www.facebook.com/events/272819922852292/
  2. 2. GDG九州ってGDG九州はGoogle関連の技術が好きな開発者、使っている開発者、使いたい開発者の交流の場です。Googleが直接運営している訳ではありません。ちなまにGDGはGoogle Developer Groupsの頭文字らしいです。以前はGTUG(Google Technology User Groups)という名前でした。福岡の他、九州各地で勉強会を開いています。昨年、大分では温泉合宿を行っています。Google+やFacebookのグループで情報交換などを行なっています。「GDG九州」で検索して、是非グループに参加してみてください。
  3. 3. はじめに今日やること●Pythonのお勉強 : 20分●Google App EngineでWebアプリを作る : 20分● その他の時間 : 5分と、大丈夫ですか?って感じのスケジュールになっています。
  4. 4. インタラクティブシェルでPythonに触れてみるPythonには、インタラクティブシェルというのが用意されています。インタラクティブシェルを使うと対話的にPythonを使用できます。Windowsな人 Macな人スタートメニューからPython(command line)を実行しますターミナルを開いてpythonと入力してreturnキーターミナルは、アプリケーションフォルダのユーティリティに入っています。Spotlightで検索してもいいかもスタートメニューからPython(command line)を実行します
  5. 5. インタラクティブシェルこんな感じのが表示されればOK
  6. 6. Pythonでプログラム書いてみるインタラクティブシェルで、プログラムを書いてみます。>>> の後ろに入力して、Enterキーを押します。>>> 1 + 12>>> print(Hello world!)Hello world!Python簡単だ�
  7. 7. インタラクティブシェルの終了Windowsの人Ctrl + z を押したあと、Returnキーを押します>>> ^Zとなっている状態でReturnキーMacの人Ctrl + d を押します。
  8. 8. Pythonの基本 : 変数データを保持しておくのに、変数を使うことができます。変数名の大文字、小文字は区別されます。変数の最初の文字に数字は使えません変数に日本語などの文字は使えません(3.xからは使えます)>>> a = 1>>> b = 2>>> c = 3>>> a + b + c6>>> first_name = katsumi>>> last_name = honda>>> full_name = first_name + + last_name>>> print(full_name)katsumi honda
  9. 9. Pythonの基本 : 数値数値は、割と直感的に使えるので、今のところは細かいことは気にしなくても大丈夫です。数値の先頭を0から始めると、8進数として扱われるので、ここだけ注意してください。(16進数は0xから始めます)>>> a = 100 # 10進数>>> b = 0100 # 8進数>>> c = 0x100 # 16進数>>> print(a, b, c)(100, 64, 256)>>>
  10. 10. Pythonの基本 : 数値の演算加算 : +減算 : -乗算 : *除算 : /余り : %べき乗 : **>>> a = 10>>> b = 3>>> a + b13>>> a - b7>>> a * b30>>> a / b3>>> a % b1>>> a ** b1000
  11. 11. Pythonの基本 : 文字列文字列は、 か “ で囲みます。クォーテーションの前にuをつけるとUnicode文字列になります。日本語の文字列を扱う時は、Unicode文字列を使うようにしておいたほうが問題が起こりにくいので、uをつけるようにしましょう。長い文字列はクォーテーションを3つ繋げて囲むと便利です。>>> fruit = apple>>> fruit = uりんご>>> print(fruit)りんご>>> long_text = u今日は... はじめてのPythonに... 参加しています>>> print(long_text)今日ははじめてのPythonに参加しています
  12. 12. Pythonの基本 : 何もない値>>> money = None>>> print(money)None何もないことを表すのに、Noneを使います。
  13. 13. Pythonの基本 : 真偽値プログラムの条件分岐とかで使うやつですTrueFalseと、頭文字が大文字になります>>> t = True>>> f = False>>> t, f(True, False)
  14. 14. Pythonの基本 : 論理演算真偽値の組み合わせて判断する時に、論理演算を行います。and or not を使います。>>> True and TrueTrue>>> True and FalseFalse>>> False and FalseFalse>>> True or TrueTrue>>> True or FalseTrue>>> False or FalseFalse>>> not TrueFalse>>> not FalseTrue
  15. 15. Pythonの基礎 : 文字列の操作>>> hello + worldhello world■連結文字列と文字列を + で繋げられます>>> hello * 10hellohellohellohellohellohellohellohellohellohello■繰り返し文字列に数字を掛けると、文字列を繰り返します■フォーマット%sや%d等を含んだフォーマット文字列に、%演算を行うと値を埋め込めます>>> hello %dst %s % (1, python)hello 1st python
  16. 16. Pythonの基本 : リスト、タプル、辞書複数の値を扱うのに、リストやタプル、辞書を使うと便利です■リスト順序を持った値の集合です。値の追加や削除など、変更が行えます。[ と ]で囲んで、値をカンマで区切ります。■タプルリストと同じような感じですが、変更が行えません。( と )で囲んで、値をカンマで区切ります。■辞書キーと値を組み合わせた集合です。連想配列とかいうのと同じです。{ と }で囲んで、キー: 値の組み合わせをカンマで区切ります
  17. 17. Pythonの基本 : リスト>>> mylist = [apple, 100]>>> mylist[0]apple>>> mylist[1]100>>> mylist[2]Traceback (most recent call last):File "<stdin>", line 1, in <module>IndexError: list index out of range>>> mylist.append(True)>>> mylist[apple, 100, True]1つのリストに色々な型の値を入れることができます。リストの変数の後に [] で数字を指定すると、その場所の値が得られます(この数字を添字といいます)appendでリストに追加できます
  18. 18. Pythonの基本 : タプル>>> mytuple = (abc, 123)>>> mytuple[0]abc>>> mytuple[1]123>>> mytuple[1] = 234Traceback (most recent call last):File "<stdin>", line 1, in <module>TypeError: tuple object does not support item assignmentリストと同じように使えますが、変更だけできません。
  19. 19. Pythonの基本 : 辞書>>> mydict = {name: apple, price: 100, 1: True}>>> mydict{1: True, price: 100, name: apple}>>> mydict[name]apple>>> mydict[1]Trueキーには、文字列以外に数値など、使用出来ます。が、文字列を使うことがほとんどです。タプルもたまにキーに使うことがあります。リストはキーには使えません。>>> mydict[(1,1)] = red>>> mydict{1: True, price: 100, name: apple, (1, 1): red}
  20. 20. Pythonの基本 : インデントPythonでは、コードブロックを表すのにインデントが使われます。こんな感じになります。とりあえず入力して実行してみましょう>>> for i in range(50):... if i > 0 and (i % 3 == 0 or i % 10 == 3):... print i...インデントをつける前の行末のコロン : を忘れないように気をつけてください。インデントの数は、同じコードブロックで統一されていれば問題ありません。一般的にはインデントに半角スペースを4つ使用します。
  21. 21. Pythonの基本 : 条件分岐変数の内容などによって、プログラムの動作を切り替えたりするのを条件分岐といいます。if else elif を使います。>>> food = karaage>>> if food == toriten:... print nice!... elif food == karaage:... print so-so... else:... print what?...so-so
  22. 22. Pythonの基本 : 繰り返し繰り返して処理を行う時は、forループかwhileループを使います。■forループリスト等の集合を1つずつ取り出して実行します。range()関数で任意の数の、リストが生成できるので組み合わせて使用することも多いです。>>> for i in range(10):... print i...0123456789
  23. 23. Pythonの基本 : whileループ条件が真(True)の間、繰り返し処理を行います>>> i = 10>>> while i > 0:... print i... i = i - 1...10987654321
  24. 24. Pythonの基本 : 繰り返し>>> for food in [toriten, karaage, tatutaage]:... print %s : %d % (food, len(food))...toriten : 7karaage : 7tatutaage : 9任意のリストを順番に処理できます。任意のリストを順番に処理できます。ここでは、それぞれの文字数を表示しています。len()関数で、文字の長さや、リストの長さを取得できます。
  25. 25. Pythonの基本 : 関数何度も行う処理は、コピペしないで関数にまとめます。def 関数名(パラメータ1, パラメータ2, ...):関数の処理return 処理結果といった感じで関数を定義します。関数を実行する時は関数名(パラメータ1, パラメータ2, …)という感じです。
  26. 26. Pythonの基本 : 関数>>> def oita_check(food):... if toriten == food:... return nice... elif karaage == food:... return so-so... else:... return what?...>>> oita_check(tatutaage)what?>>> oita_check(toriten)nice>>>大分チェック関数を作ってみる
  27. 27. Pythonの基本 : モジュール様々な機能がモジュールとして提供されています。モジュールの機能を使う為には、 import で、モジュールをインポートします。>>> import datetime>>> datetime.datetime.now()datetime.datetime(2013, 4, 18, 15, 45, 32, 263188)datetimeモジュールをインポートして、現在日時を取得しています。datetime.datetimeというのが冗長ですが、from モジュール名 import インポートするものという形式を使用することもできます>>> from datetime import datetime>>> datetime.now()datetime.datetime(2013, 4, 18, 15, 51, 4, 803230)
  28. 28. Pythonの基本 : クラスオブジェクト指向とかいうので出てくるクラスです。class Food(object):def __init__(self, name, price):self.name = nameself.price = pricedef how_match(self, gram):print %sの値段は%d円です % (self.name,self.price * gram / 100.0)toriten = Food(uとり天, 200)toriten.how_match(150)こんな感じで使います。クラスの名前は、大文字で始めるのが一般的です。クラス名(パラメータ...)で、オブジェクトが作られます__init__関数は、オブジェクトが作られる時に呼ばれます
  29. 29. Pythonの基本他にも、色々と知っておいたほうがいい決まりとか、便利な機能とかがあるのですが、これまでの内容がなんとなくわかれば、なんとなく作り始められます。全部を理解していなくても大丈夫です。
  30. 30. エディタを使うインタラクティブシェルは、すぐ実行結果が分かって便利ですが何回も使うコードを毎回入力するのは大変です。エディタを使って、コードをファイルに保存しましょう。
  31. 31. 文字コードの指定ファイルを保存する時は、UTF-8を指定してください。(UTF-8じゃないとダメって訳じゃないですが、統一しておきます)ファイルの拡張子は .py にします。ファイルの1行目か2行目に、# -*- coding: utf8 -*-という行を入力します。(これでPythonにファイルの文字コードを教えてあげています)
  32. 32. エディタでコードを書いてみる#!/usr/bin/env python# -*- coding: utf8 -*-class Food(object):def __init__(self, name, price):self.name = nameself.price = pricedef how_match(self, gram):unit = gram / 100.0print(%s : %d % (self.name, self.price * unit))if __name__ == __main__:karaage = Food(karaage, 200)toriten = Food(toriten, 180)karaage.how_match(200)toriten.how_match(300)
  33. 33. アプリケーションの設定Application Nameに guest-bookApplication Directoryに デスクトップ等を指定して[Create]ボタンを押します。Admin Port, Portは、他の開発ツールとバッティングしないように気をつけてください。
  34. 34. 起動してみるguest-bookが選択された状態で、[Run]ボタンを押します。Webブラウザで http://localhost:8080/ にアクセスします。Port番号を変更した場合は、8080の部分を合わせてください。
  35. 35. Google App EngineでWebアプリを作る準備万端なので、いよいよWebアプリを作ります。ゲストブック的なものを作ってみましょう。まずはGoogleAppEngineLauncherを起動します。メニューから [File] → [New Application] を選択します
  36. 36. Hello world!Hello world!!って表示されました?表示できた人は、周りで困っている人がいたら助けてあげてください
  37. 37. 入力フォームguest-bookのmain.pyを開いて編集していきます。2行目に# -*- coding: utf8 -*-を追加します。template という変数名で、HTMLを入力します。MainHandlerクラスのget関数内のself.response.write() に templateを渡します
  38. 38. import webapp2template = u<!doctype html><html><head><title>ゲストブック</title></head><body><h1>ゲストブック</h1><form method="post"><label>お名前<input type="text" name="name"></label><br><label>メッセージ<input type="text" name="message"></label><br><input type="submit" value="書き込む"></form></body></html>class MainHandler(webapp2.RequestHandler):def get(self):self.response.write(template)app = webapp2.WSGIApplication([(/, MainHandler)], debug=True)
  39. 39. ブラウザをリロードすると、こんな画面が表示されます。[書き込み]ボタンを押すと怒られますMainHandlerクラスに、post関数を追加します。(とりあえず get と同じにしておきます )class MainHandler(webapp2.RequestHandler):def get(self):self.response.write(template)def post(self):self.response.write(template)
  40. 40. 入力内容を表示してみるpostしたときに、フォームの内容を表示するようにしてみます。postしたフォームの内容は、self.request.POST[名前]で取得出来ます。templateをフォームの内容を表示する前の部分と、後ろの部分に分割
  41. 41. import webapp2template1 = u<!doctype html><html>省略<input type="submit" value="書き込む"></form>template2 = u</body></html>class MainHandler(webapp2.RequestHandler):def get(self):self.response.write(template1)self.response.write(template2)def post(self):self.response.write(template1)name = self.request.POST[name]message = self.request.POST[message]append = "%s : %s" % (name, message)self.response.write(append)self.response.write(template2)
  42. 42. import webapp2template1 = u<!doctype html><html>省略<input type="submit" value="書き込む"></form>template2 = u</body></html>class MainHandler(webapp2.RequestHandler):def get(self):self.response.write(template1)self.response.write(template2)def post(self):self.response.write(template1)name = self.request.POST[name]message = self.request.POST[message]append = "%s : %s" % (name, message)self.response.write(append)self.response.write(template2)
  43. 43. 保存してみるデータを保存するためのクラスを定義します。from google.appengine.ext import dbclass Greeting(db.Model):author = db.StringProperty()message = db.StringProperty(multiline=True)date = db.DateTimeProperty(auto_now_add=True)postした時に、Greetingオブジェクトを保存するようにしますgreeting = Greeting()greeting.author = namegreeting.message = messagegreeting.put()
  44. 44. 管理画面http://localhost:8000/ にアクセスすると、管理画面が表示されます。Datastore Viewerを開くと、データの登録状況が確認できます。
  45. 45. 保存内容を表示するdef render(self):self.response.write(template1)greetings = db.GqlQuery("SELECT * FROM Greeting")for greeting in greetings:self.response.write(%s : %s<br> % (cgi.escape(greeting.author),cgi.escape(greeting.message)))self.response.write(template2)getでもpostでも表示できるように、render関数を追加してみますデータの取得は、db.GqlQueryで行えます
  46. 46. def get(self):self.render()def post(self):name = self.request.POST[name]message = self.request.POST[message]greeting = Greeting()greeting.author = namegreeting.message = messagegreeting.put()self.render()getとpostから、render関数を呼ぶように変更します。
  47. 47. 今日はここまで!おつかれさまでした�

×