SlideShare a Scribd company logo
SinatraでWebアプリケーション開発を学ぶ


12年8月21日火曜日
今回の狙い
  ✤   以下2つを体験してもらうこと
      でWebアプリケーション開発
      に慣れてもらう
      ✤   Sinatra:Ruby製のWebアプ
          リケーションフレームワー
          ク
      ✤   irb:rubyの式を簡単に入力/
          実行できるツール



                                http://www.flickr.com/photos/alanant/4483533096/

12年8月21日火曜日
日常行う作業の自動化/効率化のようなツール開発




                        +



              作業の自動化等のためのツールであれば利用
              するライブラリは少なく(場合によっては1
                  つで済むことが多い)


12年8月21日火曜日
ツール開発例:
  CoffeeMeetingのミーティング情報自動取得ツール

   require 'nokogiri'
   require 'open-uri'                                                        nokogiriというライブラリ利用
   class Crawler
     def run()
       base_url = 'http://coffeemeeting.jp/hours/'
       0.upto(10).each {|i|                                                  open-uriというライブラリ利用
         count = (i*10)+1
         begin
           http = open(
                       base_url + count.to_s,
                       "User-Agent" => "My Agent",
                       "From" => "xxxx@mydomain",
                       "Referer" => "http://mydomain/"
                       )
         rescue OpenURI::HTTPError => e
           e.io.close
         end
           doc = Nokogiri::HTML(http)
           entry_data = {
             :hourdate =>doc.search('//p[@class="hourdate"]').text,
             :hourspotname =>doc.search('//div[@class="hourspotname"]').text,
             :hourlocation =>doc.search('//p[@class="hourlocation"]').text,
             :meeting_owner => doc.search('//div[@id="left-sidebar"]/div/div/p').text
           }
           puts entry_data
           sleep(2)
       }
     end
   end
   c = Crawler.new
   c.run



12年8月21日火曜日
Webアプリケーション開発の場合



              プログラミング       目的に合う最適なWebアプ
              言語の文法を覚   +   リケーションフレームワー
                 える          クを選定する/探す/作る



              自分が作りたいアプリケーションの
              規模によって最適なフレームワーク
                    が決まる



12年8月21日火曜日
主なWebアプリケーションフレームワークの位置づけ



                  軽量           中量級         重量級
   フレームワー
                 Sinatra     Padrino        Rails
    ク名称
                                         •実績豊富
                           •Sinatra並みに軽い
               •拡張性は・・                   •拡張性高(プラグイ
          特徴   •学習コストは低い
                           (らしい)
                                         ン)
                           •Modularity
                                         •学習コスト高

   ※参考までに         Slim
                            Cake PHP      symfony
    PHPだと         Silex

12年8月21日火曜日
SinatraとRailsの依存ライブラリ比較



      Gem sinatra-1.3.2             Gem rails-3.2.0

         rack (>= 1.3.6, ~> 1.3)      actionmailer (= 3.2.0)

         rack-protection (~> 1.2)     actionpack (= 3.2.0)

         tilt (>= 1.3.3, ~> 1.3)      activerecord (= 3.2.0)

                                      activeresource (= 3.2.0)

                                      activesupport (= 3.2.0)

                                      bundler (~> 1.0)

                                      railties (= 3.2.0)




12年8月21日火曜日
そもそもSinatraとは?


              Sinatra は、Ruby のための Webアプリケーションフ レ ー ム ワ ー ク で
        す 。 2010年3月 に バ ー ジ ョン 1.0 が リリ ースされました。 Ruby で
        Webアプリケーションと言えば Ruby on Rails(以下 Rails) が群を抜いて有
        名です が 、 Rails が「 フ ル ス タ ッ ク 」、 つ まり 必 要 な 機 能 が 最
        初 から入っていることを目標としているのに対し、 Sinatraは逆に限りなく
        シンプルであることを目標としています。

                                             WEB+DB PRESS Vol.57 P.55




12年8月21日火曜日
なぜ今回Sinatraを選んだのか?


  ✤   Webアプリの仕組みを理解しやすい

      ✤   HTTPメソッドについてしっかり学べる

                                                  require 'sinatra'

                                                  get '/hello' do

                                                    'hello'

                                                  end
   http://www.actlink.co.jp/text/php/01/01.html
   より図を引用



                   ①のリクエストに相当する部分                 ②のレスポンスに相当する部分

12年8月21日火曜日
Photo by Jeezny
                     (http://www.flickr.com/photos/jeezny/3484147492/)




  Sinatra 1st Step


12年8月21日火曜日
1.Documentsフォルダを開いて、そのフォル
  ダ内に今回作るアプリ用のフォルダを作成




12年8月21日火曜日
2.フォルダ作成したらエディタ起動します




12年8月21日火曜日
3.先ほど作成したフォルダ配下にapp.rbとい
  うファイルを作成します




              ①先ほど作ったフォルダが   ②app.rbと入力
              表示されているはずなので
              右クリック




                                ③入力したらSaveボタンをク
                                リック



12年8月21日火曜日
参考情報:エディタ(Sublime2)のフォント
  サイズ変更したい場合




              ①Preferencesの
              Setting-Userを選択します



                                   ②font_sizeの数値を変更し
                                   ます




12年8月21日火曜日
4.基本のHello Worldなアプリ

     require 'sinatra'   Sinatraのライブラリを読み込みます


                         http://xxxx/hello というURLにアクセスがあっ
     get '/hello' do     た場合に、do・・endの処理が実行されます

       'hello'           画面上にhello と表示します


     end




12年8月21日火曜日
5.アプリケーション起動します

   以下の黒文字の所がコマンドなのでその部分だけをターミナル上で入力します
   $ cd ~/Documents/先ほど作ったフォルダ名   ・・該当のフォルダに移動
   $ ruby ./app.rb   ・・現在のフォルダ配下にあるapp.rbを実行




                 このようなメッセージが表示さ
                 れていればOKです。




12年8月21日火曜日
6.Webブラウザ起動して確認します




     左上の「アプリケーションメニュー」
                                localhost:4567/hello
     → Internet → Firefoxeを選択   とアドレスバーに入力




12年8月21日火曜日
Photo by Tech109
              (http://www.flickr.com/photos/craigsd/4687453830/)




  先ほどのアプリをブラッシュアップ


12年8月21日火曜日
先ほど作ったアプリに以下を追記します

     require 'sinatra'

     get '/hello' do
       'hello'
     end

     ※以下を追記します

                                      :yourname が変数のような役割を果たして
     get '/hello/:yourname' do
                                      ます
                                      params[:yourname] とすることで、上記
       'hello!' + params[:yourname]   の :yourname に格納された値を取り出す
                                      ことができます
     end




12年8月21日火曜日
テンプレート機能利用準備①




              現在作業中のフォルダ上で
              右クリックしてNew Folder
              を選択




                             画面一番下にフォルダ名入力のボックスが表示さ
                             れるので views と入力します
12年8月21日火曜日
テンプレート機能利用準備②




                               ②index.erbと入力
              ①先ほど作ったviewsフォ
              ルダ上で右クリック




                                  ③入力したらSaveボタンをク
                                  リック



12年8月21日火曜日
ERBというテンプレート機能を利用します

     app.rb                             views/index.erb

     require 'sinatra'                  <html>
     get '/hello' do                      <head>
       'hello'                              <title>erb sample</title>
     end                                  </head>
     get '/hello/:yourname' do          <body>
       'hello!' + params[:yourname]       hello
     end                                </body>
                                        </html>
     ※以下を追記します

     get '/template' do
       erb :index                       ひとまずこの段階ではERBになれてもらうために単
                                        純なHTMLを記述してます。
     end


      index.erb というテンプレートファイル利用することを宣言してます


      ※ 参考情報:仮にファイル名をlayout.erbとした場合には erb :layout という記述になります

12年8月21日火曜日
Photo by Tech109
              (http://www.flickr.com/photos/craigsd/4687453830/)




  今回の学習の仕上げ


12年8月21日火曜日
動作イメージ



 ①localhost:4567/template   ②Sintara実行   ③twitter APIアクセス




        ⑤tweet結果を加工して画面表示         ④tweet取得




12年8月21日火曜日
まずは irb(InterativeRuby)で動作確認

  ✤   ターミナル上でrubyの式を簡単
      に入力/実行できるツール

  ✤   ターミナル上で irb と入力して
      Enterキーを押すことで、irbが
      利用可能になります




12年8月21日火曜日
irbでtwitterのパブリックタイムラインを確認
  する
  $ruby-1.9.2-p320 :001 > url ='https://api.twitter.com/1/statuses/
  public_timeline.json?count=3'
  => "https://api.twitter.com/1/statuses/public_timeline.json?count=3"
  $ruby-1.9.2-p320 :002 > require('json')
  => true
  $ruby-1.9.2-p320 :003 > require('open-uri')
  => true
  $ruby-1.9.2-p320 :004 > json = open(url).read
  => [..内容多いので省略]
  $ruby-1.9.2-p320 :005 > JSON.parse(json).each { |items| p items['text']}
  => [..内容多いので省略]



  ※注意※
  $ruby-1.9.2-p320 :xxx> 以降の文字だけ入力していきます
  灰色の部分がターミナル上で表示される結果になります。



12年8月21日火曜日
index.erbの修正

    views/index.erb

    <html>
      <head>
        <title>erb sample</title>
      </head>
    <body>
      <h1>ERB sample</h1>
      <ul>
        <%
           url ='https://api.twitter.com/1/statuses/public_timeline.json?count=3'
           json = open(url).read
           JSON.parse(json).each do |items|
        %>
        <li>
          <%= items["text"] %>
        </li>
        <% end %>
      </ul>
    </body>
    </html>




12年8月21日火曜日
app.rb 完成版

   require 'sinatra'
   require 'open-uri'
   require 'json'

   get '/hello' do
     'hello'
   end

   get '/hello/:yourname' do
     'hello!' + params[:yourname]
   end

   get '/template' do
     erb :index
   end




12年8月21日火曜日

More Related Content

PPTX
SunspotではじめるSolr入門
PDF
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
PDF
Bundler 2 の胎動
PDF
Rails解説セミナー: Rails国際化 (I18n) API
PDF
Rails解説セミナー: リリースノート解説編
PDF
Railsバージョンアップを 段階的に行うために Rails3/4並行稼動させる仕組み を作ってる話
PDF
Rails解説セミナー: Railsのアップグレード編
PDF
Ruby on Rails の特徴とそのエコシステム
SunspotではじめるSolr入門
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
Bundler 2 の胎動
Rails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: リリースノート解説編
Railsバージョンアップを 段階的に行うために Rails3/4並行稼動させる仕組み を作ってる話
Rails解説セミナー: Railsのアップグレード編
Ruby on Rails の特徴とそのエコシステム

What's hot (20)

PPTX
RubyでGUIアプリケーションを書く
PDF
Ruby on Rails 入門
PDF
ぼくのかんがえたさいきょうの Rails スタートダッシュ
ODP
高トラフィックサイトをRailsで構築するためのTips基礎編
PDF
Capistrano紹介 at kawasaki.rb #002 #kwskrb
PDF
ScalaにまつわるNewsな話
PDF
Swiftで外部ライブラリを使ってみよう
PDF
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
PDF
Next GAE Heroku を使って 3分でRailsアプリをリリース
PDF
Dockerプレゼン
PDF
Rubyで作るクローラー Ruby crawler
PDF
Scala.js触ってみた
PDF
【LT】 怖くない恐怖のScala.js
PDF
Azure Websites で作るスケーラブルな PHP アプリケーション
PDF
minneで学ぶクラウド脳
PDF
Sbtのマルチプロジェクトはいいぞ
PDF
実戦Scala
PDF
わかってるフレームワーク Laravel
PDF
ScalaでBacklogの通知bot作ったで
PDF
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
RubyでGUIアプリケーションを書く
Ruby on Rails 入門
ぼくのかんがえたさいきょうの Rails スタートダッシュ
高トラフィックサイトをRailsで構築するためのTips基礎編
Capistrano紹介 at kawasaki.rb #002 #kwskrb
ScalaにまつわるNewsな話
Swiftで外部ライブラリを使ってみよう
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
Next GAE Heroku を使って 3分でRailsアプリをリリース
Dockerプレゼン
Rubyで作るクローラー Ruby crawler
Scala.js触ってみた
【LT】 怖くない恐怖のScala.js
Azure Websites で作るスケーラブルな PHP アプリケーション
minneで学ぶクラウド脳
Sbtのマルチプロジェクトはいいぞ
実戦Scala
わかってるフレームワーク Laravel
ScalaでBacklogの通知bot作ったで
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
Ad

Viewers also liked (20)

PDF
ruby、sinatraで作るfacebookアプリ
PDF
Launch a Web Service in 3 Days Using WordPress
ODP
Sinatraの紹介
KEY
PHPカンファレンス関西2012 Silex
PDF
PDF
WordPressでウェブサービスを作ろう! #wbNagoya
PDF
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
PDF
フライングゲットガチャ セミナー資料
KEY
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
PDF
Rails5とAPIモードについての解説
PDF
ソーシャルアプリを分析してみた
PDF
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
KEY
実録!Railsのはまりポイント10選
PDF
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
PDF
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
PDF
Ruby on Rails でつくるアタシ好みの愛され Web サービス
PDF
ログ解析を支えるNoSQLの技術
PPTX
5年後のデータサイエンティスト
KEY
Railsによるワイルドなソフトウェア開発
PDF
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
ruby、sinatraで作るfacebookアプリ
Launch a Web Service in 3 Days Using WordPress
Sinatraの紹介
PHPカンファレンス関西2012 Silex
WordPressでウェブサービスを作ろう! #wbNagoya
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
フライングゲットガチャ セミナー資料
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
Rails5とAPIモードについての解説
ソーシャルアプリを分析してみた
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
実録!Railsのはまりポイント10選
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby on Rails でつくるアタシ好みの愛され Web サービス
ログ解析を支えるNoSQLの技術
5年後のデータサイエンティスト
Railsによるワイルドなソフトウェア開発
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
Ad

Similar to Sinatraでwebアプリケーション開発を学ぶ (20)

PDF
nomlab_okayamaruby_slide
PDF
Sinatraアプリをherokuにアップ
PDF
Web技術勉強会 第33回
PDF
PDF
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
PPTX
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
PDF
Start-padrino
PPTX
Ruby on Rails を用いたWEBアプリケーションの開発
PDF
Rubyで作るtwitter風webアプリケーション
PDF
Niigata rb発表資料
PDF
Code Anything
ODP
とっとるびー(2回目)発表資料
PDF
名古屋Ruby会議02 LT:Ruby中級への道
PPT
20091119_sinatraを使ってみた
PPTX
WebAppDev勉強会 #4
PDF
RESTとRailsスタイル
PDF
Rubyの仕事で食べていくために僕らは!
PPTX
Maiking RIA Apps by Ruby
PDF
The Essence of Using Ruby on Rails in Corporations
PDF
Rubykansai 81
nomlab_okayamaruby_slide
Sinatraアプリをherokuにアップ
Web技術勉強会 第33回
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
Start-padrino
Ruby on Rails を用いたWEBアプリケーションの開発
Rubyで作るtwitter風webアプリケーション
Niigata rb発表資料
Code Anything
とっとるびー(2回目)発表資料
名古屋Ruby会議02 LT:Ruby中級への道
20091119_sinatraを使ってみた
WebAppDev勉強会 #4
RESTとRailsスタイル
Rubyの仕事で食べていくために僕らは!
Maiking RIA Apps by Ruby
The Essence of Using Ruby on Rails in Corporations
Rubykansai 81

More from Hiroshi Oyamada (20)

PDF
2016 02-25-crawler-study-01
PDF
2016 02-09-co-edo lt
PDF
2015 12-19-ruby rails
PDF
2015 07-04-ruby rails
PDF
育児を支える技術〜クローラーとかスクレイピング
PDF
日々の面倒をプログラミングで解決!【入門編】
PDF
2014 05-17-titanium hamamatsuvol3
PDF
20140319 titanium meetupvol17
PDF
2014 02-19-titanium meetupvol16
PDF
TitaniumMeetUpVol13
PDF
20130910 titanium meetupvol11
PDF
勉強会主催者のための勉強会
PDF
20130613 titanium meetupvol9
PDF
2013 06-11-craft beerfanlt
PDF
2013 06-05-web-career-talk-at-coedo
PDF
20130412 titanium meetupvol7
PDF
2013 02-28-bussiness-plan-about-titanium
PDF
20130126 titanium新年会
PDF
20130125 titanium meetupvol5
PDF
2012 12-17-titanium meetupvol4
2016 02-25-crawler-study-01
2016 02-09-co-edo lt
2015 12-19-ruby rails
2015 07-04-ruby rails
育児を支える技術〜クローラーとかスクレイピング
日々の面倒をプログラミングで解決!【入門編】
2014 05-17-titanium hamamatsuvol3
20140319 titanium meetupvol17
2014 02-19-titanium meetupvol16
TitaniumMeetUpVol13
20130910 titanium meetupvol11
勉強会主催者のための勉強会
20130613 titanium meetupvol9
2013 06-11-craft beerfanlt
2013 06-05-web-career-talk-at-coedo
20130412 titanium meetupvol7
2013 02-28-bussiness-plan-about-titanium
20130126 titanium新年会
20130125 titanium meetupvol5
2012 12-17-titanium meetupvol4

Sinatraでwebアプリケーション開発を学ぶ

  • 2. 今回の狙い ✤ 以下2つを体験してもらうこと でWebアプリケーション開発 に慣れてもらう ✤ Sinatra:Ruby製のWebアプ リケーションフレームワー ク ✤ irb:rubyの式を簡単に入力/ 実行できるツール http://www.flickr.com/photos/alanant/4483533096/ 12年8月21日火曜日
  • 3. 日常行う作業の自動化/効率化のようなツール開発 + 作業の自動化等のためのツールであれば利用 するライブラリは少なく(場合によっては1 つで済むことが多い) 12年8月21日火曜日
  • 4. ツール開発例: CoffeeMeetingのミーティング情報自動取得ツール require 'nokogiri' require 'open-uri' nokogiriというライブラリ利用 class Crawler   def run()     base_url = 'http://coffeemeeting.jp/hours/'     0.upto(10).each {|i| open-uriというライブラリ利用       count = (i*10)+1       begin         http = open(                     base_url + count.to_s,                     "User-Agent" => "My Agent",                     "From" => "xxxx@mydomain",                     "Referer" => "http://mydomain/"                     )       rescue OpenURI::HTTPError => e         e.io.close       end         doc = Nokogiri::HTML(http)         entry_data = {           :hourdate =>doc.search('//p[@class="hourdate"]').text,           :hourspotname =>doc.search('//div[@class="hourspotname"]').text,           :hourlocation =>doc.search('//p[@class="hourlocation"]').text,           :meeting_owner => doc.search('//div[@id="left-sidebar"]/div/div/p').text         }         puts entry_data         sleep(2)     }   end end c = Crawler.new c.run 12年8月21日火曜日
  • 5. Webアプリケーション開発の場合 プログラミング 目的に合う最適なWebアプ 言語の文法を覚 + リケーションフレームワー える クを選定する/探す/作る 自分が作りたいアプリケーションの 規模によって最適なフレームワーク が決まる 12年8月21日火曜日
  • 6. 主なWebアプリケーションフレームワークの位置づけ 軽量 中量級 重量級 フレームワー Sinatra Padrino Rails ク名称 •実績豊富 •Sinatra並みに軽い •拡張性は・・ •拡張性高(プラグイ 特徴 •学習コストは低い (らしい) ン) •Modularity •学習コスト高 ※参考までに Slim Cake PHP symfony PHPだと Silex 12年8月21日火曜日
  • 7. SinatraとRailsの依存ライブラリ比較 Gem sinatra-1.3.2 Gem rails-3.2.0 rack (>= 1.3.6, ~> 1.3) actionmailer (= 3.2.0) rack-protection (~> 1.2) actionpack (= 3.2.0) tilt (>= 1.3.3, ~> 1.3) activerecord (= 3.2.0) activeresource (= 3.2.0) activesupport (= 3.2.0) bundler (~> 1.0) railties (= 3.2.0) 12年8月21日火曜日
  • 8. そもそもSinatraとは? Sinatra は、Ruby のための Webアプリケーションフ レ ー ム ワ ー ク で す 。 2010年3月 に バ ー ジ ョン 1.0 が リリ ースされました。 Ruby で Webアプリケーションと言えば Ruby on Rails(以下 Rails) が群を抜いて有 名です が 、 Rails が「 フ ル ス タ ッ ク 」、 つ まり 必 要 な 機 能 が 最 初 から入っていることを目標としているのに対し、 Sinatraは逆に限りなく シンプルであることを目標としています。 WEB+DB PRESS Vol.57 P.55 12年8月21日火曜日
  • 9. なぜ今回Sinatraを選んだのか? ✤ Webアプリの仕組みを理解しやすい ✤ HTTPメソッドについてしっかり学べる require 'sinatra' get '/hello' do   'hello' end http://www.actlink.co.jp/text/php/01/01.html より図を引用 ①のリクエストに相当する部分 ②のレスポンスに相当する部分 12年8月21日火曜日
  • 10. Photo by Jeezny (http://www.flickr.com/photos/jeezny/3484147492/) Sinatra 1st Step 12年8月21日火曜日
  • 13. 3.先ほど作成したフォルダ配下にapp.rbとい うファイルを作成します ①先ほど作ったフォルダが ②app.rbと入力 表示されているはずなので 右クリック ③入力したらSaveボタンをク リック 12年8月21日火曜日
  • 14. 参考情報:エディタ(Sublime2)のフォント サイズ変更したい場合 ①Preferencesの Setting-Userを選択します ②font_sizeの数値を変更し ます 12年8月21日火曜日
  • 15. 4.基本のHello Worldなアプリ require 'sinatra' Sinatraのライブラリを読み込みます http://xxxx/hello というURLにアクセスがあっ get '/hello' do た場合に、do・・endの処理が実行されます   'hello' 画面上にhello と表示します end 12年8月21日火曜日
  • 16. 5.アプリケーション起動します 以下の黒文字の所がコマンドなのでその部分だけをターミナル上で入力します $ cd ~/Documents/先ほど作ったフォルダ名 ・・該当のフォルダに移動 $ ruby ./app.rb ・・現在のフォルダ配下にあるapp.rbを実行 このようなメッセージが表示さ れていればOKです。 12年8月21日火曜日
  • 17. 6.Webブラウザ起動して確認します 左上の「アプリケーションメニュー」 localhost:4567/hello → Internet → Firefoxeを選択 とアドレスバーに入力 12年8月21日火曜日
  • 18. Photo by Tech109 (http://www.flickr.com/photos/craigsd/4687453830/) 先ほどのアプリをブラッシュアップ 12年8月21日火曜日
  • 19. 先ほど作ったアプリに以下を追記します require 'sinatra' get '/hello' do   'hello' end ※以下を追記します :yourname が変数のような役割を果たして get '/hello/:yourname' do ます params[:yourname] とすることで、上記   'hello!' + params[:yourname] の :yourname に格納された値を取り出す ことができます end 12年8月21日火曜日
  • 20. テンプレート機能利用準備① 現在作業中のフォルダ上で 右クリックしてNew Folder を選択 画面一番下にフォルダ名入力のボックスが表示さ れるので views と入力します 12年8月21日火曜日
  • 21. テンプレート機能利用準備② ②index.erbと入力 ①先ほど作ったviewsフォ ルダ上で右クリック ③入力したらSaveボタンをク リック 12年8月21日火曜日
  • 22. ERBというテンプレート機能を利用します app.rb views/index.erb require 'sinatra' <html> get '/hello' do   <head>   'hello'     <title>erb sample</title> end   </head> get '/hello/:yourname' do <body>   'hello!' + params[:yourname]   hello end </body> </html> ※以下を追記します get '/template' do   erb :index ひとまずこの段階ではERBになれてもらうために単 純なHTMLを記述してます。 end index.erb というテンプレートファイル利用することを宣言してます ※ 参考情報:仮にファイル名をlayout.erbとした場合には erb :layout という記述になります 12年8月21日火曜日
  • 23. Photo by Tech109 (http://www.flickr.com/photos/craigsd/4687453830/) 今回の学習の仕上げ 12年8月21日火曜日
  • 24. 動作イメージ ①localhost:4567/template ②Sintara実行 ③twitter APIアクセス ⑤tweet結果を加工して画面表示 ④tweet取得 12年8月21日火曜日
  • 25. まずは irb(InterativeRuby)で動作確認 ✤ ターミナル上でrubyの式を簡単 に入力/実行できるツール ✤ ターミナル上で irb と入力して Enterキーを押すことで、irbが 利用可能になります 12年8月21日火曜日
  • 26. irbでtwitterのパブリックタイムラインを確認 する $ruby-1.9.2-p320 :001 > url ='https://api.twitter.com/1/statuses/ public_timeline.json?count=3' => "https://api.twitter.com/1/statuses/public_timeline.json?count=3" $ruby-1.9.2-p320 :002 > require('json') => true $ruby-1.9.2-p320 :003 > require('open-uri') => true $ruby-1.9.2-p320 :004 > json = open(url).read => [..内容多いので省略] $ruby-1.9.2-p320 :005 > JSON.parse(json).each { |items| p items['text']} => [..内容多いので省略] ※注意※ $ruby-1.9.2-p320 :xxx> 以降の文字だけ入力していきます 灰色の部分がターミナル上で表示される結果になります。 12年8月21日火曜日
  • 27. index.erbの修正 views/index.erb <html>   <head>     <title>erb sample</title>   </head> <body>   <h1>ERB sample</h1>   <ul>     <%        url ='https://api.twitter.com/1/statuses/public_timeline.json?count=3'        json = open(url).read        JSON.parse(json).each do |items|     %>     <li>       <%= items["text"] %>     </li>     <% end %>   </ul> </body> </html> 12年8月21日火曜日
  • 28. app.rb 完成版 require 'sinatra' require 'open-uri' require 'json' get '/hello' do   'hello' end get '/hello/:yourname' do   'hello!' + params[:yourname] end get '/template' do   erb :index end 12年8月21日火曜日