0Pricing
Ruby Academy · レッスン

Sinatra の基礎

軽量な Web アプリです。

「Sinatra の基礎」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。

Sinatraとは

Sinatraは、最小限の手間でRubyのWebアプリケーションを構築するための軽量なDSLです。

  • Railsのような重い規約がありません
  • 1つのファイルにルートを直接定義できます
  • 小規模なアプリ、API、プロトタイプに最適です

HTTP動詞とパスを記述し、レスポンスボディを返します。

require 'sinatra'

get '/' do
  'Hello from Sinatra!'
end

Sinatraのインストール

Sinatraはgemです。gem コマンドまたは Gemfile を使ってインストールします。

  • gem install sinatra
  • または、Gemfileに gem 'sinatra' を追加して bundle install を実行します

ruby app.rb でアプリを実行すると、デフォルトではポート4567で提供されます。

# Gemfile
source 'https://rubygems.org'
gem 'sinatra'
gem 'puma'

最初のルート

ルートは、HTTP動詞とURLパス、そしてブロックを組み合わせたものです。ブロックの戻り値がレスポンスボディになります。

  • get、post、put、delete はHTTPメソッドに対応します
  • ブロック内の最後の式がクライアントに送信されます
require 'sinatra'

get '/hello' do
  'Hello, world!'
end

get '/bye' do
  'Goodbye!'
end

HTMLを返す

戻り値は単なる文字列なので、生のHTMLを直接返せます。

  • テンプレートエンジンを使わずに簡単なページを作る場合に便利です
  • 実際のアプリケーションではERBまたはHAMLのビューを使用してください
require 'sinatra'

get '/' do
  '<h1>Welcome</h1><p>This is my Sinatra app.</p>'
end

プレーンなRubyでレスポンスをモデル化する

HTTPと接続する前に、単純なメソッドを使ってハンドラーが返す値をモデル化できます。これはルートが呼び出すロジックです。

  • ビジネスロジックをルートブロックの外に保ちます
  • サーバーなしでコードをテストしやすくなります
def greeting(name)
  "Hello, #{name}!"
end

puts greeting('Sinatra')

HTTP動詞

Sinatraは、一般的なHTTP動詞をすべてルートメソッドとしてサポートしています。

  • get はデータを読み取ります
  • post はデータを作成します
  • put と patch はデータを更新します
  • delete はデータを削除します
require 'sinatra'

post '/users' do
  'Creating a user'
end

delete '/users/:id' do
  "Deleting user #{params['id']}"
end

ステータスコードの設定

status ヘルパーを使ってHTTPステータスコードを制御します。

  • status 404 でNot Foundを設定します
  • status 201 でリソースが作成されたことを示します
  • デフォルトは200 OKです
require 'sinatra'

get '/missing' do
  status 404
  'Not found'
end

set による設定

Sinatraは set、enable、disable で設定します。

  • set :port, 8080 でリッスンするポートを変更します
  • set :bind, '0.0.0.0' で外部からの接続を受け付けます
  • enable :logging でリクエストログを有効にします
require 'sinatra'

set :port, 8080
set :bind, '0.0.0.0'

get '/' do
  'Configured app'
end

before フィルター

before フィルターは、一致するすべてのリクエストの前に実行されます。認証やコンテンツヘッダーの設定などの準備処理に適しています。

  • ルートと同じコンテキストで実行されます
  • params とレスポンスヘッダーを読み取ったり変更したりできます
require 'sinatra'

before do
  content_type :json
end

get '/' do
  '{"ok": true}'
end

モジュール形式のアプリケーション

大規模なプロジェクトでは、Sinatra::Base をサブクラス化するモジュール形式を使用します。

  • 複数のアプリを分離して管理できます
  • Rackの下にマウントしやすくなります
  • run! を呼び出して手動で起動します
require 'sinatra/base'

class MyApp < Sinatra::Base
  get '/' do
    'Modular Sinatra'
  end
end

MyApp.run!

ローカルでルーターをシミュレートする

単純なハッシュディスパッチャーを使うと、Sinatraのルーティングロジックを再現して概念を理解できます。

  • キーはパス、値はハンドラーのprocです
  • 検索するとレスポンスボディが返されます
routes = {
  '/' => -> { 'Home' },
  '/about' => -> { 'About us' }
}

puts routes['/'].call
puts routes['/about'].call

理解度チェック

Sinatraの基本についての理解度を確認します。

まとめ

Sinatraの基本を学びました:

  • Sinatraはgemとしてインストールする軽量なWeb DSLです
  • ルートはHTTP動詞、パス、ブロックを組み合わせたものです
  • ブロックの戻り値がレスポンスボディになります
  • status、set、before フィルターで動作を制御します
  • モジュール形式のアプリケーションは Sinatra::Base をサブクラス化します

次は、動的なルートとparamsを扱います。

よくある質問

「Sinatra の基礎」レッスンは無料ですか?

はい。「Sinatra の基礎」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。

「Sinatra の基礎」で何を学びますか?

軽量な Web アプリです。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ruby Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Sinatra の基礎」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このRuby Academyレッスンでコードを書いて実行できますか?

はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Sinatra の基礎
  2. ルートとパラメーター
  3. JSON API
  4. ミドルウェアと Rack
← Ruby Academyに戻る