• 検索結果がありません。

第 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が表示されていることを確認します。

11017WebAPI対応

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

11418Androidで動かす

• 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

11418Androidで動かす

• 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を開きます。

11618Androidで動かす

• [Android]ボタンをクリックし、mytodo.apkをダウンロードします。

• 画面上部のバーをスライドし、ノーティフィケーション一覧から、mytodo.apkを選択する

• インストール確認画面が表示されるので、[インストール]ボタンをクリックする

• インストールが完了したら、[開く]ボタンをクリックし、アプリケーションを起動する

18.1. Androidアプリケーションからの利用 117

Androidの設定

Androidに提供元不明のアプリケーションをインストール出来るように設定します。Google Playなどに公開され

ているアプリケーションは、安全のため署名されていますが、今回用意したmytodo.apkは署名されていないため、

インストールできません。署名されていなアプリケーション(提供元不明のアプリケーション)でも、インストー ル出来るように設定を変える必要があります。

• 設定を起動し、[セキュリティ上]メニューを選択肢ます。

• [提供元不明のアプリ]をONにします。

以上で設定は完了です。

アプリケーションをインストールする

次の手順でアプリケーションをインストールします。

• Androidのブラウザアプリを起動し、URLhttp://cloud-mobile-helloworld-XXXXX.appspot.comを開きます。

11618Androidで動かす

• [Android]ボタンをクリックし、mytodo.apkをダウンロードします。

• 画面上部のバーをスライドし、ノーティフィケーション一覧から、mytodo.apkを選択する

• インストール確認画面が表示されるので、[インストール]ボタンをクリックする

• インストールが完了したら、[開く]ボタンをクリックし、アプリケーションを起動する

18.1. Androidアプリケーションからの利用 117

• アプリケーションが起動していることを確認する

18.1.4 WebAPI を利用する

TODOリスト取得APIを実行し、TODOリストを取得しましょう。

• ユーザ名とアプリケーションIDを入力し、[TODOリスト取得]ボタンをクリックします。

• 画面にTODOリストが表示されていることを確認します。

11818Androidで動かす

• アプリケーションが起動していることを確認する

18.1.4 WebAPI を利用する

TODOリスト取得APIを実行し、TODOリストを取得しましょう。

• ユーザ名とアプリケーションIDを入力し、[TODOリスト取得]ボタンをクリックします。

• 画面にTODOリストが表示されていることを確認します。

11818Androidで動かす