2015/11/15 javaでwebアプリケーション入門

70
Javaで Webアプリケーション入門 Abe Asami 2015/11/15 関西Java女子部

Upload: asami-abe

Post on 26-Jan-2017

21.244 views

Category:

Technology


0 download

TRANSCRIPT

Javaで Webアプリケーション入門Abe Asami2015/11/15 関西Java女子部

自己紹介

Abe Asami “きの子” (フリーエンジニア)

http://nocono.net/@aa7thScala、Andorid

今日作ってもらうもの

しんぷれったー

構成

simpletter-api

• Twitter「風」API

• 今回のために用意(開発)したAPI

API

API

• Application Programming Interface

• 外部のプログラムから機能を利用するためのインターフェイス

• 特にRESTという設計思想に基づいたAPIは「REST API」と呼ばれる

TwitterのAPI仕様書を 見てみよう

環境

環境

• Java

• バージョン8

• SpringBoot

• Java製フレームワーク

フレームワーク

フレームワークとは

• アプリケーションに共通する基本的なプログラム構造や機能セットを実装したプログラム。

• アプリケーションの骨組み。土台。

• 複雑なシステムを一から作るのは大変なので、フレームワークを利用して開発する。

• 様々なフレームワークが存在する。

(引用元:http://itpro.nikkeibp.co.jp/article/Keyword/20070528/272739/)

何はともあれ まずは作ってみましょう

ハンズオンタイム

Webアプリケーション基礎

※注意

• このセクションでお話することは、Javaに限った話ではありません。

• Webアプリケーション一般の話をします。

そもそも Webアプリケーションとは?

Webアプリケーションとは

• Webアプリケーションとは、Webサーバー上で動作し、Webブラウザを用いて利用するアプリケーションのことである。

引用元:http://www.weblio.jp/content/%E3%82%A6%E3%82%A7%E3%83%96%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3

例えば

• ネットショップ

• ネットバンキング

• ブログ etc

Webアプリについて知る際に まず覚えてほしい言葉

「サーバー」 と

「クライアント」

サーバー/クライアントモデル

• サーバーは提供する側。クライアントは提供される側。

• Webアプリの世界にかぎらず、サーバー/クライアントという言葉は使う。

• 今日説明するのは、あくまでWebアプリでのサーバーとクライアント。

クライアント

• サーバーに必要な情報(リソース)を要求し、返却された情報を利用する側。

• WebアプリでいうところのクライアントはWebブラウザ。

• Webブラウザはサーバーから返却された情報(リソース)を解析、表示する。

• HTML/CSS/JavaScript

• 画像

リソースの種類

• HTML

• HyperText Markup Language

• Webの文章を記述するためのマークアップ言語

• CSS

• Cascading Style Sheets

• Webのスタイルを指定するための言語

• 装飾を行う

• JavaScript

• Webブラウザで動くプログラミング言語

• 主に、Webサイトの動的な動きの実装に使われる

• Javaとは関係ない

サーバー

• クライアントの要求に応じて、リソースを返却する側

• サーバー機能を提供するサーバーソフトを使用

• Apache、nginxなどなど色々種類がある

• Javaの場合、TomcatやJetty

• サーバーマシンは特殊なPCがいるわけではない

• ただし、自前で用意するとなると大変なので今はあまりやらない・・・

では、 サーバーとクライアント間で

どのようなやり取りが 行われているのか

イメージ図

Webサーバー

Webブラウザ(クライアント)

1. Webページを見たいというリクエストを送る

2. 指定したWebページをレスポンスとして返す

(参考元:Webエンジニア養成読本)

HTTPプロトコル

• サーバー・クライアント間の通信の取り決め。

• リクエスト・レスポンス

• HTTPメソッド

「リクエスト」 と

「レスポンス」

リクエスト• クライアントの要求

GET /search HTTP/1.1

Host: www.google.co.jp

例) https://www.google.co.jp/search の情報を取得

① ② ③

① メソッド② リクエストURI③ プロトコルバージョン④ リクエストヘッダ ・・・メタデータ(⑤ リクエストボディ ・・・ 更新情報などサーバーへ送信したい情報)

レスポンス• リクエストを元にサーバーで生成し返却される情報HTTP/1.1 200 OK

Content-Type: text/html; charset=utf-8

<html> … </html>

① ② ③

① プロトコルバージョン② ステータスコード・・・実行結果を表すコード③ テキストフレーズ ・・・実行結果を表すフレーズ④ レスポンスヘッダ ・・・メタデータ⑤ レスポンスボディ ・・・返却情報本体

実際のリクエストと レスポンスの通信 の様子を見てみよう

HTTPメソッド

HTTPメソッド

• リクエストの種類 (という解釈でいいと思います)

• リクエストが何を要求するかによって使い分ける

HTTPメソッドは8種類(HTTP1.1)

実際使用するのは

• GET

• POST

• ( PUT )

• ( DELETE )

ぐらいです。

GET

GETメソッド

• リソースの取得

• 例えば、リンクからURLにアクセスするのはGETメソッド。

POST

POSTメソッド

• リソースの作成など

• 例えば、フォームに情報を入力(ネットショップなどで)して「送信」ボタンを押下、サーバーに送信・保存する場合はPOSTメソッド。

GETとPOSTの使い分け

GETとPOSTの使い分け

• リソースを取得するだけで変更がない場合はGET。

• 上記以外(変更がある場合)はPOST。

GETとPOSTの違い

• GETの場合、サーバーへはクエリパラメータを使って情報を渡し、POSTの場合はリクエストボディを使う

クエリパラメータ

クエリパラメータ

• クライアントからサーバーへ情報を渡すためのもの

• URLに付与

• 例)http://◯◯◯.com/search?q=Java&type=a

↑これ

リクエストボディ

リクエストボディ

POST /sample HTTP/1.1 Host: localhost:8080 Connection: keep-alive Content-Length: 8 …text=Hello

• リクエストヘッダの後ろに付与される

URI(URL)

URI

• Uniform Resorce Identifier

• リソースを統一的に識別するID

URL

• Uniform Resorce Location

• リソースの場所(Location)を示すためのURIがURL

• URLはURIの一種

参考書籍

• Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Javaについて

Java

• オブジェクト指向なプログラミング言語

• コンパイル言語

• JVM上で動く

今日のプロジェクトを 実行した際に

何が行われているか

コンパイル

コンパイル

• 一般的には、ソースコードをコンピュータが実行できる機械語のプログラムに変換すること。

• Javaの場合、JVMが実行できるバイトコードのクラス・ファイルに変換される。

• Javaのコンパイラはjavac

• javacコマンドでコンパイルできる

• IDEのrunボタンを押した時に裏で実行してくれている

javacコマンドを使用するには JDKが必要

JDK

JDK

• Java SE Development Kit

• Java用開発者向けキット

• アプリケーションを開発するのに必要または便利なコンパイラやデバッガなどの開発ツール

• 一般的に、こういう開発者向けキットを「SDK (Software Development Kit)」という

(参考元:http://docs.oracle.com/javase/jp/8/docs/technotes/guides/index.html#jre-jdk)

コンパイルして生成された クラスファイルは

JVM上で実行される

JVM

JVM

• Java仮想マシン

• Javaで開発されたアプリケーションはJVM上で実行される

• 各OS版のJVMが存在する。OS差異はJVMにより吸収されるため、同じプログラムで各OS上で実行することができる。

• Write once, run anywhere

アプリ起動時のイメージ

アプリ起動時のイメージ

JVM

Tomcat

開発したアプリケーション(コンパイル済み)

PC

イメージを掴んで いただけたでしょうか

今日のはJava/Webアプリ開発の

ほんのさわりの部分ですが、みなさんの理解の助けになれたなら嬉しいです

今日はお疲れ様でした

テンプレートエンジン

テンプレートエンジン

• HTMLファイルにプログラム(Java)コードを埋め込むように記述できる機能を提供してくれる。

• 今日使ったのはThymeleaf (SpringBoot標準)