第 9 章 アプリケーションのデプロイ 49
17.2 実習 WebAPI 対応
これまでの説明を参考にして、TodoリストをJSONで返す処理を追加しましょう。
17.2.1 確認
ブラウザから/api/todo?author=XXXにアクセスし、JSONが表示されていることを確認します。
17.2.2 解答
解答ドキュメントを参照してください。
17.2. 実習WebAPI対応 111
84 class TodoHandler(webapp2.RequestHandler):
85 def get(self):
86 author = self.request.get('author')
87 logging.info("## %d" % len(author))
88 if author is not None or len(author) != 0:
89 todos = Todo.query(Todo.author == author)
90 self.response.write(json.dumps([todo.to_dict() for todo in todos],
91 cls=DateEncoder))
92
93 else:
94 self.abort(400)
95
96 class DateEncoder(JSONEncoder):
97 def default(self, obj):
98 if isinstance(obj, datetime.date):
99 return obj.isoformat()
100 return JSONEncoder.default(self, obj)
101 102
103 def handle_400(request, response, exception):
104 logging.exception(exception)
105 response.write('不正なリクエストです。')
106 response.set_status(400)
107 108
109 def handle_404(request, response, exception):
110 logging.exception(exception)
111 response.write('ページが見つかりませんでした。')
112 response.set_status(404)
113 114
115 app = webapp2.WSGIApplication([
116 ('/', MainHandler),
117 ('/mypage', MyPageHandler),
118 ('/api/todo', TodoHandler)
119 ], debug=True)
120
121 app.error_handlers[400] = handle_400
122 app.error_handlers[404] = handle_404
確認
ブラウザから/api/todo?author=XXXにアクセスし、JSONが表示されていることを確認します。
110 第17章WebAPI対応
17.2 実習 WebAPI 対応
これまでの説明を参考にして、TodoリストをJSONで返す処理を追加しましょう。
17.2.1 確認
ブラウザから/api/todo?author=XXXにアクセスし、JSONが表示されていることを確認します。
17.2.2 解答
解答ドキュメントを参照してください。
17.2. 実習WebAPI対応 111
第 18 章
Android で動かす
18.1 Android アプリケーションからの利用
前章で作成したWebAPIを使って、Todoリストを取得しましょう。ここでは、専用のAndroidアプリケーション
「MyTodo」を使って動作確認をします。
18.1.1 アプリケーションの準備
通常アンドロイドアプリケーションはGoogle Playからダウンロードしてインストールしますが、今回は簡単な動 作確認のために使うので、GAEにダウンロードページを追加し、公開Webページからダウンロードできるように します。
第 18 章
Android で動かす
18.1 Android アプリケーションからの利用
前章で作成したWebAPIを使って、Todoリストを取得しましょう。ここでは、専用のAndroidアプリケーション
「MyTodo」を使って動作確認をします。
18.1.1 アプリケーションの準備
通常アンドロイドアプリケーションはGoogle Playからダウンロードしてインストールしますが、今回は簡単な動 作確認のために使うので、GAEにダウンロードページを追加し、公開Webページからダウンロードできるように します。
アプリのダウンロード
まずは、専用クライアントアプリMyTodoを入手しましょう。アプリケーションは解答ドキュメントに用意し てあります。解答ドキュメントの トップページの「Androidクライアントアプリケーションド」をクリックし、
Androidアプリケーション「mytodo.apk(Androidアプリケーションの拡張子はapkです)」をダウンロードし ます。
解答ドキュメントからダウンロードする
18.1.2 ダウンロードリンクの作成
次に、helloworldアプリケーションに、mytodo.apkのダウンロードリンクを作成します。
• staticフォルダ内に、filesフォルダを作成し、mytodo.apkファイルを配置します
1 helloworld
2 ├-- app.yaml
3 ├-- appengine_config.py
4 ├-- favicon.ico
5 ├-- index.html
6 ├-- index.yaml
7 ├-- lib
8 ├-- main.py
9 └-- static
10 ├-- css
11 ├-- files
12 | └-- mytodo.apk
13 ├-- fonts
14 └-- js
114 第18章Androidで動かす
• app.yamlを次のように変更します。
1 # ...略...
2
3 handlers:
4 # ...略...
5
6 - url: /files
7 static_dir: static/files
8
9 # ...略...
• index.htmlにダウンロードリンクを追加します。
1 ...略...
2 <div class="container">
3
4 <h1>TODO管理</h1>
5 <a class="btn btn-success" href="/files/mytodo.apk">
6 <i class="glyphicon glyphicon-download"></i> Android</a>
7
8 <h2>新規登録</h2>
9 ...略...
• デプロイします。
• ブラウザからトップページを開き、ダウンロードリンクが表示されていることを確認します。
18.1.3 Android にクライアントアプリケーションをインストールする
ブラウザからmytodo.apkをダウンロードし、Androidにアプリケーションをインストールしましょう。
18.1. Androidアプリケーションからの利用 115
アプリのダウンロード
まずは、専用クライアントアプリMyTodoを入手しましょう。アプリケーションは解答ドキュメントに用意し てあります。解答ドキュメントの トップページの「Androidクライアントアプリケーションド」をクリックし、
Androidアプリケーション「mytodo.apk(Androidアプリケーションの拡張子はapkです)」をダウンロードし ます。
解答ドキュメントからダウンロードする
18.1.2 ダウンロードリンクの作成
次に、helloworldアプリケーションに、mytodo.apkのダウンロードリンクを作成します。
• staticフォルダ内に、filesフォルダを作成し、mytodo.apkファイルを配置します
1 helloworld
2 ├-- app.yaml
3 ├-- appengine_config.py
4 ├-- favicon.ico
5 ├-- index.html
6 ├-- index.yaml
7 ├-- lib
8 ├-- main.py
9 └-- static
10 ├-- css
11 ├-- files
12 | └-- mytodo.apk
13 ├-- fonts
14 └-- js
114 第18章Androidで動かす
• app.yamlを次のように変更します。
1 # ...略...
2
3 handlers:
4 # ...略...
5
6 - url: /files
7 static_dir: static/files
8
9 # ...略...
• index.htmlにダウンロードリンクを追加します。
1 ...略...
2 <div class="container">
3
4 <h1>TODO管理</h1>
5 <a class="btn btn-success" href="/files/mytodo.apk">
6 <i class="glyphicon glyphicon-download"></i> Android</a>
7
8 <h2>新規登録</h2>
9 ...略...
• デプロイします。
• ブラウザからトップページを開き、ダウンロードリンクが表示されていることを確認します。
18.1.3 Android にクライアントアプリケーションをインストールする
ブラウザからmytodo.apkをダウンロードし、Androidにアプリケーションをインストールしましょう。
18.1. Androidアプリケーションからの利用 115
Androidの設定
Androidに提供元不明のアプリケーションをインストール出来るように設定します。Google Playなどに公開され
ているアプリケーションは、安全のため署名されていますが、今回用意したmytodo.apkは署名されていないため、
インストールできません。署名されていなアプリケーション(提供元不明のアプリケーション)でも、インストー ル出来るように設定を変える必要があります。
• 設定を起動し、[セキュリティ上]メニューを選択肢ます。
• [提供元不明のアプリ]をONにします。
以上で設定は完了です。
アプリケーションをインストールする
次の手順でアプリケーションをインストールします。
• Androidのブラウザアプリを起動し、URLhttp://cloud-mobile-helloworld-XXXXX.appspot.comを開きます。
116 第18章Androidで動かす
• [Android]ボタンをクリックし、mytodo.apkをダウンロードします。
• 画面上部のバーをスライドし、ノーティフィケーション一覧から、mytodo.apkを選択する
• インストール確認画面が表示されるので、[インストール]ボタンをクリックする
• インストールが完了したら、[開く]ボタンをクリックし、アプリケーションを起動する
18.1. Androidアプリケーションからの利用 117
Androidの設定
Androidに提供元不明のアプリケーションをインストール出来るように設定します。Google Playなどに公開され
ているアプリケーションは、安全のため署名されていますが、今回用意したmytodo.apkは署名されていないため、
インストールできません。署名されていなアプリケーション(提供元不明のアプリケーション)でも、インストー ル出来るように設定を変える必要があります。
• 設定を起動し、[セキュリティ上]メニューを選択肢ます。
• [提供元不明のアプリ]をONにします。
以上で設定は完了です。
アプリケーションをインストールする
次の手順でアプリケーションをインストールします。
• Androidのブラウザアプリを起動し、URLhttp://cloud-mobile-helloworld-XXXXX.appspot.comを開きます。
116 第18章Androidで動かす
• [Android]ボタンをクリックし、mytodo.apkをダウンロードします。
• 画面上部のバーをスライドし、ノーティフィケーション一覧から、mytodo.apkを選択する
• インストール確認画面が表示されるので、[インストール]ボタンをクリックする
• インストールが完了したら、[開く]ボタンをクリックし、アプリケーションを起動する
18.1. Androidアプリケーションからの利用 117
• アプリケーションが起動していることを確認する
18.1.4 WebAPI を利用する
TODOリスト取得APIを実行し、TODOリストを取得しましょう。
• ユーザ名とアプリケーションIDを入力し、[TODOリスト取得]ボタンをクリックします。
• 画面にTODOリストが表示されていることを確認します。
118 第18章Androidで動かす
• アプリケーションが起動していることを確認する
18.1.4 WebAPI を利用する
TODOリスト取得APIを実行し、TODOリストを取得しましょう。
• ユーザ名とアプリケーションIDを入力し、[TODOリスト取得]ボタンをクリックします。
• 画面にTODOリストが表示されていることを確認します。
118 第18章Androidで動かす