Sinatra Sapporoに参加した
まずは簡易的なレポートから。 途中で離席していたところはスライドを見つつ補完した。 実際のところ、このレポートの正確性に自信はない。
自動化のあれこれ (@sinatrasapporoさん)
Vagrant
- VirtualBoxを含む。
- Vagrantfile
- vmなので簡単に再生・破壊可能。
- もちろんミスってもロールバック可能。
Chef
Capistrano
- deployの自動化。
- Capfile
cap install
gem install capistrano-rvm
etc..
rvm
Bundler
- ライブラリをバンドルする。
gem 'hogehoge', group: :test
,group :test do ~ end
によるgemのグループ化。bundle install --without test
bundle install --deployment
はプロジェクト直下にvendor/bundle
を作成して、そこにgemをインストール。 (追記:bundle install --path vendor/bundle
と同義ではなく、.bundle/configにBUNDLE_FROZEN=1が追加されることで、Gemfile.lockを元にgemのインストールを行うようになる)
Docker
- VMを管理するという概念とは異なり、コンテナを管理する。
- 「アプリケーション + Dockerfile => myapp」
- 一番好き。
- Dockerを最近は使っている。
- Dockerがどっか行った。
ゲーム vs. Sinatra (@myokoymさん)
スライドが公開されています。
自己紹介
- 将棋が好き。(アマ三段)
- Ruby Kaja 2013
第一部
年表
- 2013/11/24 - SinatraSapporo初の勉強会
- 2014/02/28 - 札幌市中央区Ruby会議01
- 2014/05/10 - SinatraSapporo二回目の勉強会、Gosuについて
- 2014/06/14 - OSC 2014 Hokkaido, Sinatraの帽子を使ったゲームを展示
- 2014/08/17 - SinatraSapporoSaturday#01, ArduinoでLEDをチカチカして納涼
- 2014/10/11, 2014/11/16 - SinatraSapporoSaturday#02, SinatraSapporoSunday#03 Padrinoを使い始める
Rabbit
Ruby-GNOME2
- GNOMEで使用されるGTK+などの主要なライブラリのRubyバインディング集。
- GTK+はマルチプラットフォーム対応。マルチプラットフォーム対応のGUIをRubyで。
- 迷ったらTwitterやMLへ。(ruby-gnome2-devel-ja)
Ruby/GTK2
gem install gtk2
- 開発はほぼ終了。
- Rabbitやmikutterなどで採用、安定している。
- 初めて使うならこちらがオススメ?
Ruby/GTK3
gem install gtk3
- GObject Introspection
- 新機能, 新ウィジェット。
Gosu
- 2Dゲーム開発ライブラリ
- RubyとC++向け
- マルチプラットフォーム
- SDL2ベース
- Ruby2.1対応, RubyInstaller for windows
SDL?
- Simple DirectMedia Layer
- マルチメディアライブラリ。主にゲーム向け。
- C言語で記述。
- マルチプラットフォーム。
- ライセンスはMITよりも緩いzlib license
- iOS, Android対応
第一部のまとめ:「Sinatra最高」
第二部
テーマは「VS.」
対比させる。
ポイントは
- 動作環境
- 画面構成
- 更新方法
動作環境
ネイティブアプリ vs. Webアプリという構図
ネイティブアプリ
- 動作速度が速い
- デバイスの機能をいかしたインターフェース(push通知 etc)
Webアプリ
- リリース、インストールが楽
- 他のサービスと連携しやすい。つまり使われる技術が限られる。(HTTP, JavaScript etc)
適材適所で。
画面構成
- GUIアプリ - osと紐づいたパーツを組み合わせる
- ゲーム系 - 一から形を決めて描画する
- Webアプリ - ブラウザのパーツを組み合わせる。
「誰もがデザイナー」
更新方法
- イベント駆動
- フレームレート
- HTTP
イベント駆動
- 起動すると共にイベント待機。起こったイベントにしたがって処理を行う。イベントハンドラ。
- イベントハンドラはコールバック関数。イベントが起こったときの処理を記述。クリックやアクティブ化 etc
- イベント駆動はCPUに優しい(当社比)
フレームレート
- 1秒間に一定回数の処理
- 1秒間に60回の場合、60fps
- 1フレームで状態の更新や画面への描画など。
- 例えば1秒間に約60回呼ばれるメソッドの処理が1秒を超えたらどうなるか => かたまる。自分で計算しながらやるのが肝要?
- ゲーム系。常にCPU使ってる感。
HTTP
- 「何を」「どう」したいか
- リクエスト-レスポンス型
- 「何を」 = http://<ホスト名>/[パス]
- 「どう」 = メソッド(GET, POST etc..)
- Sinatraがわかりやすい。
- いわゆるクラサバ。サーバがレスポンスを返せば一区切り。 基本的には状態を保存しない。
おわりに
Padrino Frameworkのすゝめ (@namusyaka)
- スライド資料
- 案の定喋りすぎて最後は駆け足になった。
- PadrinoやSinatraを知らない人でも、ということを念頭に置いていたつもりだったが、いくつかの部分で説明不十分な箇所が生じていたように思う。準備はしっかりすべきですね。
質疑応答
Q: Webアプリケーションフレームワークのパフォーマンスにおいて、ルーティング処理の占める割合が知りたい
A: Padrinoに関して言えばウェイトはそこまで大きくはない。速度にこだわっていたのはhttp_routerに負けたくなかったため。
LT
Railsでマップを使ったアプリを作ったり。
Sinatra風マイクロフレームワークで始めるPython (@kuroneko1988)
スライドが公開されています。
参加した感想
Ruby系の勉強会に参加するのはこれが初めてで、新鮮だった。 Sinatraを普段から使っている人はもちろんのこと、PythonistaやGUIアプリケーション、あるいはAndroidアプリをメインに開発しているが、 レスポンスのテストのために部分的にSinatraを使っている人など、Webケーの枠組みを越えて色々な話を聞けた。
懇親会, 忘年会
ジンギスカン、美味かったです。昼食も用意してもらってすみません。。 改めてありがとうございました。