SlideShare uma empresa Scribd logo
1 de 34
Web Application Devlopment

     Webアプリ開発勉強会 #2
          05.16.12
Presented by U-moa
Agenda

    1. 自己紹介タイム

       2. ワークショップ
SinatraではじめるWebアプリ開発 #2

      3. LT(あれば)

      4. ふりかえり
自己紹介タイム

Self-Introduction
Self-Introduction

• 名前
• 所属
• 好きなこと、最近やっていること
  などなど・・・
ワークショップ

Workshop
WorkShop

    今日の目標

  データベースの検索と
データの保存が出来るようになる
Sinatra
ではじめる
Webアプリ開発 #2
Sinatra is a DSL for quickly creating
web application in Ruby with minimal
effort:
ウォームアップを兼ねて
  前回のおさらい
Hello, Sinatraを書こう
• 必要なライブラリをrequireしよう

• ‘/’にアクセスすると
  Hello, Sinatra!! という文字列を返すように
  してみよう
Hello, Sinatraを書こう



1 require 'rubygems’
2 require 'sinatra’
3
4 get '/' do
5 'Hello, Sinatra!’
6 end
7
Hello, SinatraをHTMLにしよう
• HTMLのデータを返そう

• Formタグを使って
  文字列を送信できるようにしよう
Hello, SinatraをHTMLにしよう
 1 require ‘rubygems’
 2 require 'sinatra’
 3
 4 get '/' do
 5 <<-EOS
 6 <html>
 7 <head>
 8     <title>Hello, Sinatra!!</title>
 9 </head>
10 <body>
11      <h1>My First Web Application.</h1>
12      <form action="/toukou" method="post">
13         <div><input type="text" name="message"></div>
14         <div><input type="submit" value="submit"></div>
15      </form>
16      <div>#{str}</div>
17 </body>
18 </html>
19 EOS
20 end
投稿されたデータを表示しよう
• Formタグのactionで指定したURLを定義し
  よう (e.g. /toukou)

• params変数を使って投稿されたデータを
  表示してみよう
投稿されたデータを表示しよう


  1 require 'rubygems’
  2 require 'sinatra’
  3
  4 get '/' do
  5 # 省略
  6 end
  7
  8 post '/toukou' do
  9 params[:message]
 10 # :messageはinputタグのname要素で指定したもの
 11 end
投稿をHTMLに埋め込もう
• 投稿データを配列に保存しよう

• 配列の中の投稿を<p>タグで囲もう

• そのデータをhtmlに埋め込もう

• 投稿後 ‘/’ にリダイレクトしよう
投稿をHTMLに埋め込もう
 1 require 'rubygems’                                26
 2 require 'sinatra’                                 27 post '/toukou' do
 3                                                   28 Messages << params[:message]
 4 Messages = []                                     29
 5 get '/' do                                        30 redirect '/’
 6 str = Messages.map do |msg|                       31 end
 7 "<p>#{msg}</p>”                                   32
 8 end.join("")
 9
10 <<-EOS
11 <html>
12 <head>
13      <title>Hello, Sinatra!!</title>
14 </head>
15 <body>
16      <h1>My First Web Application.</h1>
17      <form action="/toukou" method="post">
18        <div><input type="text" name="message"></div>
19        <div><input type="submit" value="submit"></div>
20      </form>
21      <div>#{str}</div>
22 </body>
23 </html>
24 EOS
25 end
思い出せましたか?
それでは
今日の内容に入ります
前回のアプリ
再起動するとデータが消える(T_T)
そこで登場
データベース
データベースとは
• たくさんのデータを整理して保存、取り
  出しをするための専用のソフトウェア

• 図書館の司書さんのような役割
  要求を伝えると効率良く仕事をしてくれ
  る

• 色んな種類があるがリレーショナルデー
  タベース(RDBMS)というものが主流
RDBMS
• データを表形式で管理する


• SQLという特殊な言語で操作する

• Excelを想像してみてください
RDBMS
id    name        age     type
1     ちひろ         22      human
2     ポチ          13      dog
...   ...         ...     ...

             familyテーブル
SQLの例
id          name         age          type
1           ちひろ          22           human
2           ポチ           13           dog
...         ...          ...          ...

                   familyテーブル




      select * from family where name=“ちひろ”;
でもSQL覚えるのって面倒
そこで登場
Sequel
今日はSequel
の勉強がメインです
Sequelとは
• Rubyからデータベースを操作するための
  ライブラリ

• SQLを使わずにDB操作が出来る!
実際に使ってみましょう
ふりかえり

Retrospectives
Keep

Problem

  Try
Keep = 良かったところ

Problem = 悪かったところ

 Try = 次回の取り組み

Mais conteúdo relacionado

Mais procurados

R以外の研究ツール
R以外の研究ツールR以外の研究ツール
R以外の研究ツール弘毅 露崎
 
VPとSPIDERを使ったMySQL運用
VPとSPIDERを使ったMySQL運用VPとSPIDERを使ったMySQL運用
VPとSPIDERを使ったMySQL運用Ryuta Kamizono
 
Bgworkerで簡易クラスタ管理
Bgworkerで簡易クラスタ管理Bgworkerで簡易クラスタ管理
Bgworkerで簡易クラスタ管理Masahiko Sawada
 
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with PoudriereYuichiro Naito
 
Sphinxでドキュメントを書こう
Sphinxでドキュメントを書こうSphinxでドキュメントを書こう
Sphinxでドキュメントを書こうKazufumi Ohkawa
 
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringRedis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringMakoto Ohnami
 
STNSサーバーを書いてみた
STNSサーバーを書いてみたSTNSサーバーを書いてみた
STNSサーバーを書いてみたYoshinori Teraoka
 
elasticsearchソースコードを読みはじめてみた
elasticsearchソースコードを読みはじめてみたelasticsearchソースコードを読みはじめてみた
elasticsearchソースコードを読みはじめてみたfurandon_pig
 
sql_require_primary_keyを使って主キーを必須にさせる
sql_require_primary_keyを使って主キーを必須にさせるsql_require_primary_keyを使って主キーを必須にさせる
sql_require_primary_keyを使って主キーを必須にさせるlhfukamachi 深町
 
pbuilder, cowbuilder, lxcで作るお手軽サンドボックス
pbuilder, cowbuilder, lxcで作るお手軽サンドボックスpbuilder, cowbuilder, lxcで作るお手軽サンドボックス
pbuilder, cowbuilder, lxcで作るお手軽サンドボックスTsuyoshi Yamada
 
Elasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessElasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessShinsuke Sugaya
 
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみたFuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみたtoshihirock
 
YAPC::Asia Tokyo 2013 ランチセッション
YAPC::Asia Tokyo 2013 ランチセッションYAPC::Asia Tokyo 2013 ランチセッション
YAPC::Asia Tokyo 2013 ランチセッションKuninobu SaSaki
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画Kazufumi Ohkawa
 

Mais procurados (20)

R以外の研究ツール
R以外の研究ツールR以外の研究ツール
R以外の研究ツール
 
ゼロから始めるBlob
ゼロから始めるBlobゼロから始めるBlob
ゼロから始めるBlob
 
MongoDBの使い方
MongoDBの使い方MongoDBの使い方
MongoDBの使い方
 
Docker やってみた
Docker やってみたDocker やってみた
Docker やってみた
 
DeclarativeSql
DeclarativeSqlDeclarativeSql
DeclarativeSql
 
VPとSPIDERを使ったMySQL運用
VPとSPIDERを使ったMySQL運用VPとSPIDERを使ったMySQL運用
VPとSPIDERを使ったMySQL運用
 
Bgworkerで簡易クラスタ管理
Bgworkerで簡易クラスタ管理Bgworkerで簡易クラスタ管理
Bgworkerで簡易クラスタ管理
 
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with Poudriere
 
Sphinxでドキュメントを書こう
Sphinxでドキュメントを書こうSphinxでドキュメントを書こう
Sphinxでドキュメントを書こう
 
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringRedis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
 
STNSサーバーを書いてみた
STNSサーバーを書いてみたSTNSサーバーを書いてみた
STNSサーバーを書いてみた
 
elasticsearchソースコードを読みはじめてみた
elasticsearchソースコードを読みはじめてみたelasticsearchソースコードを読みはじめてみた
elasticsearchソースコードを読みはじめてみた
 
Shizupptx
ShizupptxShizupptx
Shizupptx
 
sql_require_primary_keyを使って主キーを必須にさせる
sql_require_primary_keyを使って主キーを必須にさせるsql_require_primary_keyを使って主キーを必須にさせる
sql_require_primary_keyを使って主キーを必須にさせる
 
pbuilder, cowbuilder, lxcで作るお手軽サンドボックス
pbuilder, cowbuilder, lxcで作るお手軽サンドボックスpbuilder, cowbuilder, lxcで作るお手軽サンドボックス
pbuilder, cowbuilder, lxcで作るお手軽サンドボックス
 
Elasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessElasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFess
 
20120721_ishkawa
20120721_ishkawa20120721_ishkawa
20120721_ishkawa
 
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみたFuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
 
YAPC::Asia Tokyo 2013 ランチセッション
YAPC::Asia Tokyo 2013 ランチセッションYAPC::Asia Tokyo 2013 ランチセッション
YAPC::Asia Tokyo 2013 ランチセッション
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画
 

Destaque

Social Justice Across the Curriculum
Social Justice Across the CurriculumSocial Justice Across the Curriculum
Social Justice Across the CurriculumRikki Wheatley
 
Apresentação My travel para Paint antigos
Apresentação My travel para Paint antigosApresentação My travel para Paint antigos
Apresentação My travel para Paint antigosNey Novaes
 
Apresentação projeto 8
Apresentação projeto 8Apresentação projeto 8
Apresentação projeto 8Vitor Fonseca
 
graffitis representantes
graffitis representantes graffitis representantes
graffitis representantes laurafrencia
 
Introducao inteligenciaartificial
Introducao inteligenciaartificialIntroducao inteligenciaartificial
Introducao inteligenciaartificialEsther Camilo
 
Rapport nationale opleidings enquête 2012
Rapport nationale opleidings enquête 2012Rapport nationale opleidings enquête 2012
Rapport nationale opleidings enquête 2012Freia_Randstad
 
Apostila De Visualg
Apostila De VisualgApostila De Visualg
Apostila De Visualgecompo
 
JavaScript Is Everywhere [Infographic]
JavaScript Is Everywhere [Infographic]JavaScript Is Everywhere [Infographic]
JavaScript Is Everywhere [Infographic]Catarina Cardoso
 
Content Hub "Robotik im Pflegesektor"
Content Hub "Robotik im Pflegesektor"Content Hub "Robotik im Pflegesektor"
Content Hub "Robotik im Pflegesektor"Maisberger2012
 
Design Grafico Para Sustentabilidade
Design Grafico Para SustentabilidadeDesign Grafico Para Sustentabilidade
Design Grafico Para SustentabilidadeDaniela Santos
 
Performance evaluation between checkpoint services in multi tier stateful
Performance evaluation between checkpoint services in multi tier statefulPerformance evaluation between checkpoint services in multi tier stateful
Performance evaluation between checkpoint services in multi tier statefulDemis Gomes
 

Destaque (20)

Social Justice Across the Curriculum
Social Justice Across the CurriculumSocial Justice Across the Curriculum
Social Justice Across the Curriculum
 
Apresentação My travel para Paint antigos
Apresentação My travel para Paint antigosApresentação My travel para Paint antigos
Apresentação My travel para Paint antigos
 
Apresentação projeto 8
Apresentação projeto 8Apresentação projeto 8
Apresentação projeto 8
 
graffitis representantes
graffitis representantes graffitis representantes
graffitis representantes
 
Introducao inteligenciaartificial
Introducao inteligenciaartificialIntroducao inteligenciaartificial
Introducao inteligenciaartificial
 
Rapport nationale opleidings enquête 2012
Rapport nationale opleidings enquête 2012Rapport nationale opleidings enquête 2012
Rapport nationale opleidings enquête 2012
 
钻展ppt
钻展ppt钻展ppt
钻展ppt
 
Apostila De Visualg
Apostila De VisualgApostila De Visualg
Apostila De Visualg
 
Wpmeetup
WpmeetupWpmeetup
Wpmeetup
 
JavaScript Is Everywhere [Infographic]
JavaScript Is Everywhere [Infographic]JavaScript Is Everywhere [Infographic]
JavaScript Is Everywhere [Infographic]
 
Content Hub "Robotik im Pflegesektor"
Content Hub "Robotik im Pflegesektor"Content Hub "Robotik im Pflegesektor"
Content Hub "Robotik im Pflegesektor"
 
Design Grafico Para Sustentabilidade
Design Grafico Para SustentabilidadeDesign Grafico Para Sustentabilidade
Design Grafico Para Sustentabilidade
 
Per riflettere
Per rifletterePer riflettere
Per riflettere
 
Teoria Geral Do Direito Civil
Teoria Geral Do Direito CivilTeoria Geral Do Direito Civil
Teoria Geral Do Direito Civil
 
E ditorial narcea
E ditorial narceaE ditorial narcea
E ditorial narcea
 
Unidad 9 la información contable
Unidad 9 la información contableUnidad 9 la información contable
Unidad 9 la información contable
 
Webquest
WebquestWebquest
Webquest
 
Performance evaluation between checkpoint services in multi tier stateful
Performance evaluation between checkpoint services in multi tier statefulPerformance evaluation between checkpoint services in multi tier stateful
Performance evaluation between checkpoint services in multi tier stateful
 
Eeeeeee
EeeeeeeEeeeeee
Eeeeeee
 
Ação - TGP
Ação - TGPAção - TGP
Ação - TGP
 

Semelhante a WebAppDev勉強会 #2 at cafe? IKAGAWA DO

Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶHiroshi Oyamada
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1Ryosuke IWANAGA
 
WebAppDev勉強会 #4
WebAppDev勉強会 #4WebAppDev勉強会 #4
WebAppDev勉強会 #4Kohei Noda
 
使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!IIJ
 
シラサギハンズオン 東京
シラサギハンズオン 東京シラサギハンズオン 東京
シラサギハンズオン 東京Yu Ito
 
ngx_small_lightで動的サムネイル生成 #yapcasia2012
ngx_small_lightで動的サムネイル生成 #yapcasia2012ngx_small_lightで動的サムネイル生成 #yapcasia2012
ngx_small_lightで動的サムネイル生成 #yapcasia2012Tatsuhiko Kubo
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpMasahito Zembutsu
 
シラサギハンズオン 大阪
シラサギハンズオン 大阪シラサギハンズオン 大阪
シラサギハンズオン 大阪Yu Ito
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016Yu Ito
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツールtotty jp
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめるShuhei Iitsuka
 
Inside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesInside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesTakeshi Komiya
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 

Semelhante a WebAppDev勉強会 #2 at cafe? IKAGAWA DO (20)

Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶ
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
WebAppDev勉強会 #4
WebAppDev勉強会 #4WebAppDev勉強会 #4
WebAppDev勉強会 #4
 
使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!
 
シラサギハンズオン 東京
シラサギハンズオン 東京シラサギハンズオン 東京
シラサギハンズオン 東京
 
ngx_small_lightで動的サムネイル生成 #yapcasia2012
ngx_small_lightで動的サムネイル生成 #yapcasia2012ngx_small_lightで動的サムネイル生成 #yapcasia2012
ngx_small_lightで動的サムネイル生成 #yapcasia2012
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
 
シラサギハンズオン 大阪
シラサギハンズオン 大阪シラサギハンズオン 大阪
シラサギハンズオン 大阪
 
WindowsでMySQL入門
WindowsでMySQL入門WindowsでMySQL入門
WindowsでMySQL入門
 
らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
 
Ansible入門
Ansible入門Ansible入門
Ansible入門
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめる
 
Inside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesInside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfes
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 

WebAppDev勉強会 #2 at cafe? IKAGAWA DO