SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
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日火曜日

Weitere ähnliche Inhalte

Was ist angesagt?

RubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書くRubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書くMisao X
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門Yasuko Ohba
 
ぼくのかんがえたさいきょうの Rails スタートダッシュ
ぼくのかんがえたさいきょうの Rails スタートダッシュぼくのかんがえたさいきょうの Rails スタートダッシュ
ぼくのかんがえたさいきょうの Rails スタートダッシュKenji Mori
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発Takafumi ONAKA
 
高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編Kazuya Numata
 
Capistrano紹介 at kawasaki.rb #002 #kwskrb
Capistrano紹介 at kawasaki.rb #002 #kwskrbCapistrano紹介 at kawasaki.rb #002 #kwskrb
Capistrano紹介 at kawasaki.rb #002 #kwskrbTsubasa Yumura
 
ScalaにまつわるNewsな話
ScalaにまつわるNewsな話ScalaにまつわるNewsな話
ScalaにまつわるNewsな話Yosuke Mizutani
 
Swiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみようSwiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみようKanako Kobayashi
 
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集matsu_chara
 
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースよしだ あつし
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerTakuro Sasaki
 
Scala.js触ってみた
Scala.js触ってみたScala.js触ってみた
Scala.js触ってみたAsami Abe
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.jsYuto Suzuki
 
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションAzure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションMasashi Shinbara
 
minneで学ぶクラウド脳
minneで学ぶクラウド脳minneで学ぶクラウド脳
minneで学ぶクラウド脳Uchio Kondo
 
Sbtのマルチプロジェクトはいいぞ
SbtのマルチプロジェクトはいいぞSbtのマルチプロジェクトはいいぞ
SbtのマルチプロジェクトはいいぞYoshitaka Fujii
 
わかってるフレームワーク Laravel
わかってるフレームワーク Laravelわかってるフレームワーク Laravel
わかってるフレームワーク LaravelMasashi Shinbara
 
ScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったでScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったでAsami Abe
 

Was ist angesagt? (20)

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

Andere mochten auch

ruby、sinatraで作るfacebookアプリ
ruby、sinatraで作るfacebookアプリruby、sinatraで作るfacebookアプリ
ruby、sinatraで作るfacebookアプリToshiya Kurishima
 
Launch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPressLaunch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPressKite Koga
 
Sinatraの紹介
Sinatraの紹介Sinatraの紹介
Sinatraの紹介longkey1
 
PHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 SilexPHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 SilexMasao Maeda
 
WordPressでウェブサービスを作ろう! #wbNagoya
WordPressでウェブサービスを作ろう! #wbNagoyaWordPressでウェブサービスを作ろう! #wbNagoya
WordPressでウェブサービスを作ろう! #wbNagoyaShinichi Nishikawa
 
ドリコム的Railsアプリ開発流儀
ドリコム的Railsアプリ開発流儀ドリコム的Railsアプリ開発流儀
ドリコム的Railsアプリ開発流儀Takafumi ONAKA
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”Drecom Co., Ltd.
 
フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料Drecom Co., Ltd.
 
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜Yuji Nojima
 
Rails5とAPIモードについての解説
Rails5とAPIモードについての解説Rails5とAPIモードについての解説
Rails5とAPIモードについての解説Fumiya Sakai
 
ソーシャルアプリを分析してみた
ソーシャルアプリを分析してみたソーシャルアプリを分析してみた
ソーシャルアプリを分析してみたDrecom Co., Ltd.
 
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜Drecom Co., Ltd.
 
実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選Drecom Co., Ltd.
 
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…Drecom Co., Ltd.
 
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選Koichi ITO
 
Ruby on Rails でつくるアタシ好みの愛され Web サービス
Ruby on Rails でつくるアタシ好みの愛され Web サービスRuby on Rails でつくるアタシ好みの愛され Web サービス
Ruby on Rails でつくるアタシ好みの愛され Web サービスYoji Shidara
 
ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術Drecom Co., Ltd.
 
5年後のデータサイエンティスト
5年後のデータサイエンティスト5年後のデータサイエンティスト
5年後のデータサイエンティストDrecom Co., Ltd.
 
Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発Drecom Co., Ltd.
 

Andere mochten auch (20)

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

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

20101106 ramaze発表
20101106 ramaze発表20101106 ramaze発表
20101106 ramaze発表Fukui Osamu
 
MacRubyとHotCocoaでMacのアプリを作ってみた
MacRubyとHotCocoaでMacのアプリを作ってみたMacRubyとHotCocoaでMacのアプリを作ってみた
MacRubyとHotCocoaでMacのアプリを作ってみたYukimitsu Izawa
 
初めてのPadrino
初めてのPadrino初めてのPadrino
初めてのPadrinoTakeshi Yabe
 
Sinatraアプリをherokuにアップ
SinatraアプリをherokuにアップSinatraアプリをherokuにアップ
SinatraアプリをherokuにアップHiroshi Oyamada
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionGoh Matsumoto
 
Sugarcubeをはじめよう
SugarcubeをはじめようSugarcubeをはじめよう
SugarcubeをはじめようEihiro Saishu
 
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7Sea Mountain
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925Yu Ito
 
Building document with the Sphinx public edtion
Building document with the Sphinx public edtionBuilding document with the Sphinx public edtion
Building document with the Sphinx public edtionYukihiko SAWANOBORI
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門Tomoya Kawanishi
 
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOWebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOKohei Noda
 
How Smalltalker Works
How Smalltalker WorksHow Smalltalker Works
How Smalltalker WorksSho Yoshida
 
WEBアプリケーションビルド・ テストツール YEOMAN
WEBアプリケーションビルド・ テストツール YEOMAN WEBアプリケーションビルド・ テストツール YEOMAN
WEBアプリケーションビルド・ テストツール YEOMAN kamiyam .
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話Kazuya Wada
 
3D Photo Tool by Ruby/Sinatra + JavaScript
3D Photo Tool by Ruby/Sinatra + JavaScript3D Photo Tool by Ruby/Sinatra + JavaScript
3D Photo Tool by Ruby/Sinatra + JavaScriptNISHIMOTO Keisuke
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDEdcubeio
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみたngi group.
 

Ähnlich wie Sinatraでwebアプリケーション開発を学ぶ (20)

20101106 ramaze発表
20101106 ramaze発表20101106 ramaze発表
20101106 ramaze発表
 
MacRubyとHotCocoaでMacのアプリを作ってみた
MacRubyとHotCocoaでMacのアプリを作ってみたMacRubyとHotCocoaでMacのアプリを作ってみた
MacRubyとHotCocoaでMacのアプリを作ってみた
 
初めてのPadrino
初めてのPadrino初めてのPadrino
初めてのPadrino
 
Sinatraアプリをherokuにアップ
SinatraアプリをherokuにアップSinatraアプリをherokuにアップ
Sinatraアプリをherokuにアップ
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
 
Sugarcubeをはじめよう
SugarcubeをはじめようSugarcubeをはじめよう
Sugarcubeをはじめよう
 
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925
 
Building document with the Sphinx public edtion
Building document with the Sphinx public edtionBuilding document with the Sphinx public edtion
Building document with the Sphinx public edtion
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOWebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
 
How Smalltalker Works
How Smalltalker WorksHow Smalltalker Works
How Smalltalker Works
 
WEBアプリケーションビルド・ テストツール YEOMAN
WEBアプリケーションビルド・ テストツール YEOMAN WEBアプリケーションビルド・ テストツール YEOMAN
WEBアプリケーションビルド・ テストツール YEOMAN
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話
 
3D Photo Tool by Ruby/Sinatra + JavaScript
3D Photo Tool by Ruby/Sinatra + JavaScript3D Photo Tool by Ruby/Sinatra + JavaScript
3D Photo Tool by Ruby/Sinatra + JavaScript
 
Sinatra
SinatraSinatra
Sinatra
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
 

Mehr von Hiroshi Oyamada

2016 02-25-crawler-study-01
2016 02-25-crawler-study-012016 02-25-crawler-study-01
2016 02-25-crawler-study-01Hiroshi Oyamada
 
育児を支える技術〜クローラーとかスクレイピング
育児を支える技術〜クローラーとかスクレイピング育児を支える技術〜クローラーとかスクレイピング
育児を支える技術〜クローラーとかスクレイピングHiroshi Oyamada
 
日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】Hiroshi Oyamada
 
2014 05-17-titanium hamamatsuvol3
2014 05-17-titanium hamamatsuvol32014 05-17-titanium hamamatsuvol3
2014 05-17-titanium hamamatsuvol3Hiroshi Oyamada
 
20140319 titanium meetupvol17
20140319 titanium meetupvol1720140319 titanium meetupvol17
20140319 titanium meetupvol17Hiroshi Oyamada
 
2014 02-19-titanium meetupvol16
2014 02-19-titanium meetupvol162014 02-19-titanium meetupvol16
2014 02-19-titanium meetupvol16Hiroshi Oyamada
 
20130910 titanium meetupvol11
20130910 titanium meetupvol1120130910 titanium meetupvol11
20130910 titanium meetupvol11Hiroshi Oyamada
 
勉強会主催者のための勉強会
勉強会主催者のための勉強会勉強会主催者のための勉強会
勉強会主催者のための勉強会Hiroshi Oyamada
 
20130613 titanium meetupvol9
20130613 titanium meetupvol920130613 titanium meetupvol9
20130613 titanium meetupvol9Hiroshi Oyamada
 
2013 06-11-craft beerfanlt
2013 06-11-craft beerfanlt2013 06-11-craft beerfanlt
2013 06-11-craft beerfanltHiroshi Oyamada
 
2013 06-05-web-career-talk-at-coedo
2013 06-05-web-career-talk-at-coedo2013 06-05-web-career-talk-at-coedo
2013 06-05-web-career-talk-at-coedoHiroshi Oyamada
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7Hiroshi Oyamada
 
2013 02-28-bussiness-plan-about-titanium
2013 02-28-bussiness-plan-about-titanium2013 02-28-bussiness-plan-about-titanium
2013 02-28-bussiness-plan-about-titaniumHiroshi Oyamada
 
20130126 titanium新年会
20130126 titanium新年会20130126 titanium新年会
20130126 titanium新年会Hiroshi Oyamada
 
20130125 titanium meetupvol5
20130125 titanium meetupvol520130125 titanium meetupvol5
20130125 titanium meetupvol5Hiroshi Oyamada
 
2012 12-17-titanium meetupvol4
2012 12-17-titanium meetupvol42012 12-17-titanium meetupvol4
2012 12-17-titanium meetupvol4Hiroshi Oyamada
 

Mehr von Hiroshi Oyamada (20)

2016 02-25-crawler-study-01
2016 02-25-crawler-study-012016 02-25-crawler-study-01
2016 02-25-crawler-study-01
 
2016 02-09-co-edo lt
2016 02-09-co-edo lt2016 02-09-co-edo lt
2016 02-09-co-edo lt
 
2015 12-19-ruby rails
2015 12-19-ruby rails2015 12-19-ruby rails
2015 12-19-ruby rails
 
2015 07-04-ruby rails
2015 07-04-ruby rails2015 07-04-ruby rails
2015 07-04-ruby rails
 
育児を支える技術〜クローラーとかスクレイピング
育児を支える技術〜クローラーとかスクレイピング育児を支える技術〜クローラーとかスクレイピング
育児を支える技術〜クローラーとかスクレイピング
 
日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】
 
2014 05-17-titanium hamamatsuvol3
2014 05-17-titanium hamamatsuvol32014 05-17-titanium hamamatsuvol3
2014 05-17-titanium hamamatsuvol3
 
20140319 titanium meetupvol17
20140319 titanium meetupvol1720140319 titanium meetupvol17
20140319 titanium meetupvol17
 
2014 02-19-titanium meetupvol16
2014 02-19-titanium meetupvol162014 02-19-titanium meetupvol16
2014 02-19-titanium meetupvol16
 
TitaniumMeetUpVol13
TitaniumMeetUpVol13TitaniumMeetUpVol13
TitaniumMeetUpVol13
 
20130910 titanium meetupvol11
20130910 titanium meetupvol1120130910 titanium meetupvol11
20130910 titanium meetupvol11
 
勉強会主催者のための勉強会
勉強会主催者のための勉強会勉強会主催者のための勉強会
勉強会主催者のための勉強会
 
20130613 titanium meetupvol9
20130613 titanium meetupvol920130613 titanium meetupvol9
20130613 titanium meetupvol9
 
2013 06-11-craft beerfanlt
2013 06-11-craft beerfanlt2013 06-11-craft beerfanlt
2013 06-11-craft beerfanlt
 
2013 06-05-web-career-talk-at-coedo
2013 06-05-web-career-talk-at-coedo2013 06-05-web-career-talk-at-coedo
2013 06-05-web-career-talk-at-coedo
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7
 
2013 02-28-bussiness-plan-about-titanium
2013 02-28-bussiness-plan-about-titanium2013 02-28-bussiness-plan-about-titanium
2013 02-28-bussiness-plan-about-titanium
 
20130126 titanium新年会
20130126 titanium新年会20130126 titanium新年会
20130126 titanium新年会
 
20130125 titanium meetupvol5
20130125 titanium meetupvol520130125 titanium meetupvol5
20130125 titanium meetupvol5
 
2012 12-17-titanium meetupvol4
2012 12-17-titanium meetupvol42012 12-17-titanium meetupvol4
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日火曜日