Slide 1

Slide 1 text

LINEで始めるWebアプリ開発入門 - データベース活用編 - Koki Miura(@k_miura_io)

Slide 2

Slide 2 text

• 今回話すこと • データベースの基礎知識 • ハンズオンで使用するデータベースの話 • LIFFで取得できるデータをサーバーで扱う方法 • 話さないこと • Messaging APIの話(ハンズオンで触っていきましょう!) はじめに

Slide 3

Slide 3 text

自己紹介 • 三浦 耕生(こうき) • 名古屋のゲーム会社 のサーバーエンジニア @k_miura_io koki.miura05

Slide 4

Slide 4 text

Me person: name: "Toru Igarashi" twitter: "@iganari_" github: "@iganari" position: company: "SRE" skills: [ Kubernetes, GCP, Terraform, Ansible ] blood-donation: count: 121 description: "I can donate blood a little"

Slide 5

Slide 5 text

アジェンダ • 前回の復習 • Webアプリってどんなもの? • Webアプリの仕組み • データベースの基礎知識 • データベースって何? • テーブルって何? • SQLって何? • ハンズオンで使用するDBの話 • LIFFで取得した情報をサーバーで扱うときの話

Slide 6

Slide 6 text

Webアプリとは? • ネットワークを使って動かす アプリケーション • Webサーバー上で動作し、ブ ラウザで操作を行う • すぐ使えるが、動作は重い • Google、Connpass、Amazon など

Slide 7

Slide 7 text

Webアプリの構成 • 基本の構成はクライアントとサーバー • クライアントはアプリの見た目の処理全般 • サーバーはクライアントから送られたデー タに対して処理を行った結果を返す

Slide 8

Slide 8 text

サーバーとの通信 • クライアントとサーバーを通信するときにはHTTP通信 を行う • クライアントからサーバーにデータを送信することを HTTPリクエストという • クライアントから受け取ったデータに対してサーバー から結果を送信することをHTTPレスポンスという • HTTPを省略してることが多い

Slide 9

Slide 9 text

リクエストのメソッド • GET • サーバーから情報を取得する メソッド • ブラウザでURLを入力したとき に実行される • 送信するデータ量に制限あり • POST • サーバーにデータを登録させ るメソッド • フォームで入力した値を送信 するときに使える • 大量のデータを送信できる

Slide 10

Slide 10 text

詳しくはこちら https://youtu.be/c78Rq8UcEpE

Slide 11

Slide 11 text

データベースって何? • アプリケーションのデータをコンピュータ上 に保管するためのシステム • データを操作しやすい形式に変換すること でデータ検索しやすくしている • テーブルでデータを管理をしている

Slide 12

Slide 12 text

テーブルについて • テーブルにはカラム、レコードがある • カラムは列に相当するもの • レコードがデータそのものを表しており、行に相当する • エクセルのシートに近い役割

Slide 13

Slide 13 text

例)ショップサイトで 使うデータベース • 必要なテーブル • 商品情報 • 顧客情報 • 購入情報 • 複数のテーブルで情報管 理をすることで整理しや すくなることもある

Slide 14

Slide 14 text

CRUDって何? • システムに必要な4つの主要機能であるCreate (生成)、Read(読み取り)、Update(更新)、Delete (削除)の頭文字をとったもの • データベースはこのCRUDを満たしている • Todoアプリでは、Create、Read、Updateを導入し ている

Slide 15

Slide 15 text

SQL • データベースの操作を行うための言語→SQL • データベースに対して送信する命令文→Query • データベースとプログラム言語を接続する時にSQLを併用している

Slide 16

Slide 16 text

ハンズオンで使用 するDB • PostgreSQLを使用 • WindowsやMacでも使える • Herokuのアドオンを無料で使える • AWSなどのクラウドサービスでも 使える

Slide 17

Slide 17 text

Todoリストのテーブル カラム名 説明 id データを管理するためのID user_id LINEのユーザーID is_progress タスクが完了したかどうか todo_detail タスクの内容 created_at 作成日時

Slide 18

Slide 18 text

LIFFでとれる情報をサーバーで扱う • LIFFのフロントエンドから取得した情報 (ユーザーID、アカウント名など)をそのま まサーバーに送信するのは非推奨 • 悪意のある人間がサイトの解析を行い、 なりすましやサーバーを攻撃する危険が ある • LIFFで取得できるIDトークンを送信すれ ばAPI経由でサーバーサイドでユーザー 情報を取得できる https://developers.line.biz/ja/docs/liff/using-user-profile/

Slide 19

Slide 19 text

まとめ • データベースはデータを整理して管理しやすくするためのシステム • 情報管理はテーブルで行う • Webアプリのデータを保管する時には必ずといっていいほど使う データベースを理解して自由自在にWebアプリを作ろう!

Slide 20

Slide 20 text

END